Merge "Add 'error' color to color scheme based on updated bluechip resources" into main
diff --git a/AconfigFlags.bp b/AconfigFlags.bp
index 7e6c30f..2846221 100644
--- a/AconfigFlags.bp
+++ b/AconfigFlags.bp
@@ -75,6 +75,7 @@
     ":com.android.internal.pm.pkg.component.flags-aconfig-java{.generated_srcjars}",
     ":com.android.media.flags.bettertogether-aconfig-java{.generated_srcjars}",
     ":com.android.media.flags.editing-aconfig-java{.generated_srcjars}",
+    ":com.android.media.flags.projection-aconfig-java{.generated_srcjars}",
     ":com.android.net.thread.flags-aconfig-java{.generated_srcjars}",
     ":com.android.server.flags.services-aconfig-java{.generated_srcjars}",
     ":com.android.text.flags-aconfig-java{.generated_srcjars}",
@@ -566,6 +567,21 @@
     defaults: ["framework-minus-apex-aconfig-java-defaults"],
 }
 
+// MediaProjection
+aconfig_declarations {
+    name: "com.android.media.flags.projection-aconfig",
+    package: "com.android.media.projection.flags",
+    srcs: [
+        "media/java/android/media/flags/projection.aconfig",
+    ],
+}
+
+java_aconfig_library {
+    name: "com.android.media.flags.projection-aconfig-java",
+    aconfig_declarations: "com.android.media.flags.projection-aconfig",
+    defaults: ["framework-minus-apex-aconfig-java-defaults"],
+}
+
 // Media TV
 aconfig_declarations {
     name: "android.media.tv.flags-aconfig",
diff --git a/Android.bp b/Android.bp
index e12f74f..870df5a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -508,6 +508,8 @@
     lint: {
         baseline_filename: "lint-baseline.xml",
     },
+    // For jarjar repackaging
+    jarjar_prefix: "com.android.internal.hidden_from_bootclasspath",
 }
 
 java_library {
diff --git a/Ravenwood.bp b/Ravenwood.bp
index 93febca4..6337022 100644
--- a/Ravenwood.bp
+++ b/Ravenwood.bp
@@ -93,17 +93,39 @@
     ],
 }
 
+// Jars in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
+// Rename some of the dependencies to make sure they're included in the intended order.
+java_genrule {
+    name: "100-framework-minus-apex.ravenwood",
+    cmd: "cp $(in) $(out)",
+    srcs: [":framework-minus-apex.ravenwood"],
+    out: ["100-framework-minus-apex.ravenwood.jar"],
+    visibility: ["//visibility:private"],
+}
+
+java_genrule {
+    // Use 200 to make sure it comes before the mainline stub ("all-updatable...").
+    name: "200-kxml2-android",
+    cmd: "cp $(in) $(out)",
+    srcs: [":kxml2-android"],
+    out: ["200-kxml2-android.jar"],
+    visibility: ["//visibility:private"],
+}
+
 android_ravenwood_libgroup {
     name: "ravenwood-runtime",
     libs: [
-        "framework-minus-apex.ravenwood",
-        "hoststubgen-helper-runtime.ravenwood",
-        "hoststubgen-helper-framework-runtime.ravenwood",
+        "100-framework-minus-apex.ravenwood",
+        "200-kxml2-android",
         "all-updatable-modules-system-stubs",
+        "android.test.mock.ravenwood",
+        "ravenwood-helper-runtime",
+        "hoststubgen-helper-runtime.ravenwood",
+
+        // Provide runtime versions of utils linked in below
         "junit",
         "truth",
         "ravenwood-junit-impl",
-        "android.test.mock.ravenwood",
         "mockito-ravenwood-prebuilt",
         "inline-mockito-ravenwood-prebuilt",
     ],
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
index 7de6799..60eb4ac 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
@@ -124,6 +124,15 @@
     @Overridable // Aid in testing
     public static final long ENFORCE_MINIMUM_TIME_WINDOWS = 311402873L;
 
+    /**
+     * Require that minimum latencies and override deadlines are nonnegative.
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+    public static final long REJECT_NEGATIVE_DELAYS_AND_DEADLINES = 323349338L;
+
     /** @hide */
     @IntDef(prefix = { "NETWORK_TYPE_" }, value = {
             NETWORK_TYPE_NONE,
@@ -692,14 +701,14 @@
      * @see JobInfo.Builder#setMinimumLatency(long)
      */
     public long getMinLatencyMillis() {
-        return minLatencyMillis;
+        return Math.max(0, minLatencyMillis);
     }
 
     /**
      * @see JobInfo.Builder#setOverrideDeadline(long)
      */
     public long getMaxExecutionDelayMillis() {
-        return maxExecutionDelayMillis;
+        return Math.max(0, maxExecutionDelayMillis);
     }
 
     /**
@@ -1869,6 +1878,13 @@
          * Because it doesn't make sense setting this property on a periodic job, doing so will
          * throw an {@link java.lang.IllegalArgumentException} when
          * {@link android.app.job.JobInfo.Builder#build()} is called.
+         *
+         * Negative latencies also don't make sense for a job and are indicative of an error,
+         * so starting in Android version {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM},
+         * setting a negative deadline will result in
+         * {@link android.app.job.JobInfo.Builder#build()} throwing an
+         * {@link java.lang.IllegalArgumentException}.
+         *
          * @param minLatencyMillis Milliseconds before which this job will not be considered for
          *                         execution.
          * @see JobInfo#getMinLatencyMillis()
@@ -1892,6 +1908,13 @@
          * throw an {@link java.lang.IllegalArgumentException} when
          * {@link android.app.job.JobInfo.Builder#build()} is called.
          *
+         * <p>
+         * Negative deadlines also don't make sense for a job and are indicative of an error,
+         * so starting in Android version {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM},
+         * setting a negative deadline will result in
+         * {@link android.app.job.JobInfo.Builder#build()} throwing an
+         * {@link java.lang.IllegalArgumentException}.
+         *
          * <p class="note">
          * Since a job will run once the deadline has passed regardless of the status of other
          * constraints, setting a deadline of 0 (or a {@link #setMinimumLatency(long) delay} equal
@@ -2189,13 +2212,15 @@
         public JobInfo build() {
             return build(Compatibility.isChangeEnabled(DISALLOW_DEADLINES_FOR_PREFETCH_JOBS),
                     Compatibility.isChangeEnabled(REJECT_NEGATIVE_NETWORK_ESTIMATES),
-                    Compatibility.isChangeEnabled(ENFORCE_MINIMUM_TIME_WINDOWS));
+                    Compatibility.isChangeEnabled(ENFORCE_MINIMUM_TIME_WINDOWS),
+                    Compatibility.isChangeEnabled(REJECT_NEGATIVE_DELAYS_AND_DEADLINES));
         }
 
         /** @hide */
         public JobInfo build(boolean disallowPrefetchDeadlines,
                 boolean rejectNegativeNetworkEstimates,
-                boolean enforceMinimumTimeWindows) {
+                boolean enforceMinimumTimeWindows,
+                boolean rejectNegativeDelaysAndDeadlines) {
             // This check doesn't need to be inside enforceValidity. It's an unnecessary legacy
             // check that would ideally be phased out instead.
             if (mBackoffPolicySet && (mConstraintFlags & CONSTRAINT_FLAG_DEVICE_IDLE) != 0) {
@@ -2205,7 +2230,7 @@
             }
             JobInfo jobInfo = new JobInfo(this);
             jobInfo.enforceValidity(disallowPrefetchDeadlines, rejectNegativeNetworkEstimates,
-                    enforceMinimumTimeWindows);
+                    enforceMinimumTimeWindows, rejectNegativeDelaysAndDeadlines);
             return jobInfo;
         }
 
@@ -2225,7 +2250,8 @@
      */
     public final void enforceValidity(boolean disallowPrefetchDeadlines,
             boolean rejectNegativeNetworkEstimates,
-            boolean enforceMinimumTimeWindows) {
+            boolean enforceMinimumTimeWindows,
+            boolean rejectNegativeDelaysAndDeadlines) {
         // Check that network estimates require network type and are reasonable values.
         if ((networkDownloadBytes > 0 || networkUploadBytes > 0 || minimumNetworkChunkBytes > 0)
                 && networkRequest == null) {
@@ -2259,6 +2285,17 @@
             throw new IllegalArgumentException("Minimum chunk size must be positive");
         }
 
+        if (rejectNegativeDelaysAndDeadlines) {
+            if (minLatencyMillis < 0) {
+                throw new IllegalArgumentException(
+                        "Minimum latency is negative: " + minLatencyMillis);
+            }
+            if (maxExecutionDelayMillis < 0) {
+                throw new IllegalArgumentException(
+                        "Override deadline is negative: " + maxExecutionDelayMillis);
+            }
+        }
+
         final boolean hasDeadline = maxExecutionDelayMillis != 0L;
         // Check that a deadline was not set on a periodic job.
         if (isPeriodic) {
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
index a83c099..bd00c03 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -3852,7 +3852,7 @@
                     // the other jobs that will use this network.
                     if (DEBUG) {
                         Slog.d(TAG, "maybeQueueReadyJobsForExecutionLocked: piggybacking "
-                                + batchedJobs.size() + " jobs on " + network
+                                + (batchedJobs.size() - unbatchedJobCount) + " jobs on " + network
                                 + " because of unbatched job");
                     }
                     jobsToRun.addAll(batchedJobs);
@@ -3892,8 +3892,12 @@
                     // Some job is going to use the CPU anyway. Might as well run all the other
                     // CPU-only jobs.
                     if (DEBUG) {
+                        final Integer unbatchedJobCountObj = mUnbatchedJobCount.get(null);
+                        final int unbatchedJobCount =
+                                unbatchedJobCountObj == null ? 0 : unbatchedJobCountObj;
                         Slog.d(TAG, "maybeQueueReadyJobsForExecutionLocked: piggybacking "
-                                + batchedNonNetworkedJobs.size() + " non-network jobs");
+                                + (batchedNonNetworkedJobs.size() - unbatchedJobCount)
+                                + " non-network jobs");
                     }
                     jobsToRun.addAll(batchedNonNetworkedJobs);
                 } else if (batchedNonNetworkedJobs.size() >= minReadyCount) {
@@ -4850,7 +4854,7 @@
                     Slog.w(TAG, "Uid " + uid + " set bias on its job");
                     return new JobInfo.Builder(job)
                             .setBias(JobInfo.BIAS_DEFAULT)
-                            .build(false, false, false);
+                            .build(false, false, false, false);
                 }
             }
 
@@ -4874,7 +4878,9 @@
                             JobInfo.DISALLOW_DEADLINES_FOR_PREFETCH_JOBS, callingUid),
                     rejectNegativeNetworkEstimates,
                     CompatChanges.isChangeEnabled(
-                            JobInfo.ENFORCE_MINIMUM_TIME_WINDOWS, callingUid));
+                            JobInfo.ENFORCE_MINIMUM_TIME_WINDOWS, callingUid),
+                    CompatChanges.isChangeEnabled(
+                            JobInfo.REJECT_NEGATIVE_DELAYS_AND_DEADLINES, callingUid));
             if ((job.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0) {
                 getContext().enforceCallingOrSelfPermission(
                         android.Manifest.permission.CONNECTIVITY_INTERNAL, TAG);
diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
index 53b14d6..d8934d8 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java
@@ -1495,7 +1495,7 @@
                 // return value), the deadline is dropped. Periodic jobs require all constraints
                 // to be met, so there's no issue with their deadlines.
                 // The same logic applies for other target SDK-based validation checks.
-                builtJob = jobBuilder.build(false, false, false);
+                builtJob = jobBuilder.build(false, false, false, false);
             } catch (Exception e) {
                 Slog.w(TAG, "Unable to build job from XML, ignoring: " + jobBuilder.summarize(), e);
                 return null;
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
index 6ed42ec..3219f7e 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java
@@ -21,6 +21,7 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED;
 import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
 import static android.net.NetworkCapabilities.TRANSPORT_ETHERNET;
+import static android.net.NetworkCapabilities.TRANSPORT_SATELLITE;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
 import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
 
@@ -139,8 +140,9 @@
     static final SparseIntArray sNetworkTransportAffinities = new SparseIntArray();
     static {
         sNetworkTransportAffinities.put(TRANSPORT_CELLULAR, TRANSPORT_AFFINITY_AVOID);
-        sNetworkTransportAffinities.put(TRANSPORT_WIFI, TRANSPORT_AFFINITY_PREFER);
         sNetworkTransportAffinities.put(TRANSPORT_ETHERNET, TRANSPORT_AFFINITY_PREFER);
+        sNetworkTransportAffinities.put(TRANSPORT_SATELLITE, TRANSPORT_AFFINITY_AVOID);
+        sNetworkTransportAffinities.put(TRANSPORT_WIFI, TRANSPORT_AFFINITY_PREFER);
     }
 
     private final CcConfig mCcConfig;
diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
index a0b9c5f..edd86e3 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java
@@ -652,7 +652,7 @@
                     .build());
             // Don't perform validation checks at this point since we've already passed the
             // initial validation check.
-            job = builder.build(false, false, false);
+            job = builder.build(false, false, false, false);
         }
 
         this.job = job;
diff --git a/api/StubLibraries.bp b/api/StubLibraries.bp
index 852abdf..1f5b83c 100644
--- a/api/StubLibraries.bp
+++ b/api/StubLibraries.bp
@@ -225,6 +225,7 @@
     java_version: "1.8",
     compile_dex: true,
     visibility: ["//visibility:public"],
+    is_stubs_module: true,
 }
 
 java_defaults {
@@ -233,6 +234,7 @@
     system_modules: "none",
     java_version: "1.8",
     compile_dex: true,
+    is_stubs_module: true,
 }
 
 java_defaults {
@@ -716,6 +718,7 @@
         // with its own package-private android.annotation.Nullable.
         "private-stub-annotations-jar",
     ],
+    is_stubs_module: true,
 }
 
 java_genrule {
@@ -732,6 +735,10 @@
     system_modules: "none",
     static_libs: ["android_stubs_private_hjar"],
     dist: {
+        // Add to private_api_stubs dist target for easier packaging by scripts. This module is
+        // useful for creating a platform SDK, which can be packaged in ANDROID_HOME and used from
+        // Gradle, allowing for development of platform apps that make use of hidden APIs.
+        targets: ["private_api_stubs"],
         dir: "apistubs/android/private",
     },
 }
@@ -749,7 +756,12 @@
         "done && " +
         "sort -u $(genDir)/framework.aidl.merged > $(out)",
     dist: {
-        targets: ["sdk"],
+        targets: [
+            "sdk",
+            // Add to private_api_stubs dist target for easier packaging by scripts.
+            // See explanation in the "android_stubs_private" module above.
+            "private_api_stubs",
+        ],
         dir: "apistubs/android/private",
     },
 }
@@ -770,6 +782,7 @@
         // annotations found, thus should exist inside android.jar.
         "private-stub-annotations-jar",
     ],
+    is_stubs_module: true,
 }
 
 // Listing of API domains contribution and dependencies per API surfaces
diff --git a/api/api.go b/api/api.go
index c733f5b..b31a26c 100644
--- a/api/api.go
+++ b/api/api.go
@@ -79,7 +79,45 @@
 
 var PrepareForCombinedApisTest = android.FixtureRegisterWithContext(registerBuildComponents)
 
+func (a *CombinedApis) apiFingerprintStubDeps() []string {
+	ret := []string{}
+	ret = append(
+		ret,
+		transformArray(a.properties.Bootclasspath, "", ".stubs")...,
+	)
+	ret = append(
+		ret,
+		transformArray(a.properties.Bootclasspath, "", ".stubs.system")...,
+	)
+	ret = append(
+		ret,
+		transformArray(a.properties.Bootclasspath, "", ".stubs.module_lib")...,
+	)
+	ret = append(
+		ret,
+		transformArray(a.properties.System_server_classpath, "", ".stubs.system_server")...,
+	)
+	return ret
+}
+
+func (a *CombinedApis) DepsMutator(ctx android.BottomUpMutatorContext) {
+	ctx.AddDependency(ctx.Module(), nil, a.apiFingerprintStubDeps()...)
+}
+
 func (a *CombinedApis) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+	ctx.WalkDeps(func(child, parent android.Module) bool {
+		if _, ok := child.(java.AndroidLibraryDependency); ok && child.Name() != "framework-res" {
+			// Stubs of BCP and SSCP libraries should not have any dependencies on apps
+			// This check ensures that we do not run into circular dependencies when UNBUNDLED_BUILD_TARGET_SDK_WITH_API_FINGERPRINT=true
+			ctx.ModuleErrorf(
+				"Module %s is not a valid dependency of the stub library %s\n."+
+					"If this dependency has been added via `libs` of java_sdk_library, please move it to `impl_only_libs`\n",
+				child.Name(), parent.Name())
+			return false // error detected
+		}
+		return true
+	})
+
 }
 
 type genruleProps struct {
@@ -93,11 +131,12 @@
 }
 
 type libraryProps struct {
-	Name        *string
-	Sdk_version *string
-	Static_libs []string
-	Visibility  []string
-	Defaults    []string
+	Name            *string
+	Sdk_version     *string
+	Static_libs     []string
+	Visibility      []string
+	Defaults        []string
+	Is_stubs_module *bool
 }
 
 type fgProps struct {
@@ -203,6 +242,7 @@
 	props.Static_libs = transformArray(modules, "", ".stubs")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -212,6 +252,7 @@
 	props.Static_libs = transformArray(modules, "", ".stubs.exportable")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -224,6 +265,7 @@
 		props.Static_libs = transformArray(updatable_modules, "", ".stubs.system")
 		props.Sdk_version = proptools.StringPtr("module_current")
 		props.Visibility = []string{"//frameworks/base"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
 	// Now merge all-updatable-modules-system-stubs and stubs from non-updatable modules
@@ -235,6 +277,7 @@
 		props.Static_libs = append(props.Static_libs, "all-updatable-modules-system-stubs")
 		props.Sdk_version = proptools.StringPtr("module_current")
 		props.Visibility = []string{"//frameworks/base"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
 }
@@ -248,6 +291,7 @@
 		props.Static_libs = transformArray(updatable_modules, "", ".stubs.exportable.system")
 		props.Sdk_version = proptools.StringPtr("module_current")
 		props.Visibility = []string{"//frameworks/base"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
 	// Now merge all-updatable-modules-system-stubs and stubs from non-updatable modules
@@ -259,6 +303,7 @@
 		props.Static_libs = append(props.Static_libs, "all-updatable-modules-system-stubs-exportable")
 		props.Sdk_version = proptools.StringPtr("module_current")
 		props.Visibility = []string{"//frameworks/base"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
 }
@@ -269,6 +314,7 @@
 	props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.test")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -278,6 +324,7 @@
 	props.Static_libs = transformArray(non_updatable_modules, "", ".stubs.exportable.test")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -321,6 +368,7 @@
 	props.Static_libs = transformArray(modules, "", ".stubs.exportable.module_lib")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -334,6 +382,7 @@
 	props.Static_libs = transformArray(modules, "", ".stubs.module_lib")
 	props.Sdk_version = proptools.StringPtr("module_current")
 	props.Visibility = []string{"//frameworks/base"}
+	props.Is_stubs_module = proptools.BoolPtr(true)
 	ctx.CreateModule(java.LibraryFactory, &props)
 }
 
@@ -434,6 +483,7 @@
 		props.Static_libs = []string{staticLib}
 		props.Defaults = []string{"android.jar_defaults"}
 		props.Visibility = []string{"//visibility:public"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
@@ -455,6 +505,7 @@
 		props.Static_libs = []string{staticLib}
 		props.Defaults = []string{"android.jar_defaults"}
 		props.Visibility = []string{"//visibility:public"}
+		props.Is_stubs_module = proptools.BoolPtr(true)
 
 		ctx.CreateModule(java.LibraryFactory, &props)
 	}
diff --git a/boot/hiddenapi/hiddenapi-unsupported.txt b/boot/hiddenapi/hiddenapi-unsupported.txt
index 26dc700..adcc3df 100644
--- a/boot/hiddenapi/hiddenapi-unsupported.txt
+++ b/boot/hiddenapi/hiddenapi-unsupported.txt
@@ -133,8 +133,6 @@
 Landroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService;
 Landroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/location/ICountryListener$Stub;-><init>()V
-Landroid/location/IGeocodeProvider$Stub;-><init>()V
-Landroid/location/IGeocodeProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeocodeProvider;
 Landroid/location/ILocationListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/location/ILocationListener$Stub$Proxy;->mRemote:Landroid/os/IBinder;
 Landroid/location/ILocationListener$Stub;-><init>()V
diff --git a/cmds/uinput/README.md b/cmds/uinput/README.md
index b6e4e0d..f177586 100644
--- a/cmds/uinput/README.md
+++ b/cmds/uinput/README.md
@@ -154,7 +154,8 @@
 
 #### `delay`
 
-Add a delay to command processing
+Add a delay between the processing of commands. The delay will be timed from when the last delay
+ended, rather than from the current time, to allow for more precise timings to be produced.
 
 | Field         | Type          | Description                |
 |:-------------:|:-------------:|:-------------------------- |
diff --git a/cmds/uinput/jni/com_android_commands_uinput_Device.cpp b/cmds/uinput/jni/com_android_commands_uinput_Device.cpp
index a78a465..bd61000 100644
--- a/cmds/uinput/jni/com_android_commands_uinput_Device.cpp
+++ b/cmds/uinput/jni/com_android_commands_uinput_Device.cpp
@@ -166,14 +166,14 @@
     ::ioctl(mFd, UI_DEV_DESTROY);
 }
 
-void UinputDevice::injectEvent(uint16_t type, uint16_t code, int32_t value) {
+void UinputDevice::injectEvent(std::chrono::microseconds timestamp, uint16_t type, uint16_t code,
+                               int32_t value) {
     struct input_event event = {};
     event.type = type;
     event.code = code;
     event.value = value;
-    timespec ts;
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-    TIMESPEC_TO_TIMEVAL(&event.time, &ts);
+    event.time.tv_sec = timestamp.count() / 1'000'000;
+    event.time.tv_usec = timestamp.count() % 1'000'000;
 
     if (::write(mFd, &event, sizeof(input_event)) < 0) {
         ALOGE("Could not write event %" PRIu16 " %" PRIu16 " with value %" PRId32 " : %s", type,
@@ -268,12 +268,12 @@
     }
 }
 
-static void injectEvent(JNIEnv* /* env */, jclass /* clazz */, jlong ptr, jint type, jint code,
-                        jint value) {
+static void injectEvent(JNIEnv* /* env */, jclass /* clazz */, jlong ptr, jlong timestampMicros,
+                        jint type, jint code, jint value) {
     uinput::UinputDevice* d = reinterpret_cast<uinput::UinputDevice*>(ptr);
     if (d != nullptr) {
-        d->injectEvent(static_cast<uint16_t>(type), static_cast<uint16_t>(code),
-                       static_cast<int32_t>(value));
+        d->injectEvent(std::chrono::microseconds(timestampMicros), static_cast<uint16_t>(type),
+                       static_cast<uint16_t>(code), static_cast<int32_t>(value));
     } else {
         ALOGE("Could not inject event, Device* is null!");
     }
@@ -330,7 +330,7 @@
          "(Ljava/lang/String;IIIIIILjava/lang/String;"
          "Lcom/android/commands/uinput/Device$DeviceCallback;)J",
          reinterpret_cast<void*>(openUinputDevice)},
-        {"nativeInjectEvent", "(JIII)V", reinterpret_cast<void*>(injectEvent)},
+        {"nativeInjectEvent", "(JJIII)V", reinterpret_cast<void*>(injectEvent)},
         {"nativeConfigure", "(II[I)V", reinterpret_cast<void*>(configure)},
         {"nativeSetAbsInfo", "(IILandroid/os/Parcel;)V", reinterpret_cast<void*>(setAbsInfo)},
         {"nativeCloseUinputDevice", "(J)V", reinterpret_cast<void*>(closeUinputDevice)},
diff --git a/cmds/uinput/jni/com_android_commands_uinput_Device.h b/cmds/uinput/jni/com_android_commands_uinput_Device.h
index 9769a75..72c8647 100644
--- a/cmds/uinput/jni/com_android_commands_uinput_Device.h
+++ b/cmds/uinput/jni/com_android_commands_uinput_Device.h
@@ -14,13 +14,14 @@
  * limitations under the License.
  */
 
-#include <memory>
-#include <vector>
-
+#include <android-base/unique_fd.h>
 #include <jni.h>
 #include <linux/input.h>
 
-#include <android-base/unique_fd.h>
+#include <chrono>
+#include <memory>
+#include <vector>
+
 #include "src/com/android/commands/uinput/InputAbsInfo.h"
 
 namespace android {
@@ -53,7 +54,8 @@
 
     virtual ~UinputDevice();
 
-    void injectEvent(uint16_t type, uint16_t code, int32_t value);
+    void injectEvent(std::chrono::microseconds timestamp, uint16_t type, uint16_t code,
+                     int32_t value);
     int handleEvents(int events);
 
 private:
diff --git a/cmds/uinput/src/com/android/commands/uinput/Device.java b/cmds/uinput/src/com/android/commands/uinput/Device.java
index 25d3a34..b452fc7 100644
--- a/cmds/uinput/src/com/android/commands/uinput/Device.java
+++ b/cmds/uinput/src/com/android/commands/uinput/Device.java
@@ -55,7 +55,7 @@
     private final SparseArray<InputAbsInfo> mAbsInfo;
     private final OutputStream mOutputStream;
     private final Object mCond = new Object();
-    private long mTimeToSend;
+    private long mTimeToSendNanos;
 
     static {
         System.loadLibrary("uinputcommand_jni");
@@ -65,7 +65,8 @@
             int productId, int versionId, int bus, int ffEffectsMax, String port,
             DeviceCallback callback);
     private static native void nativeCloseUinputDevice(long ptr);
-    private static native void nativeInjectEvent(long ptr, int type, int code, int value);
+    private static native void nativeInjectEvent(long ptr, long timestampMicros, int type, int code,
+                                                 int value);
     private static native void nativeConfigure(int handle, int code, int[] configs);
     private static native void nativeSetAbsInfo(int handle, int axisCode, Parcel axisParcel);
     private static native int nativeGetEvdevEventTypeByLabel(String label);
@@ -101,27 +102,54 @@
         }
 
         mHandler.obtainMessage(MSG_OPEN_UINPUT_DEVICE, args).sendToTarget();
-        mTimeToSend = SystemClock.uptimeMillis();
+        mTimeToSendNanos = SystemClock.uptimeNanos();
+    }
+
+    private long getTimeToSendMillis() {
+        // Since we can only specify delays in milliseconds but evemu timestamps are in
+        // microseconds, we have to round up the delays to avoid setting event timestamps
+        // which are in the future (which the kernel would silently reject and replace with
+        // the current time).
+        //
+        // This should be the same as (long) Math.ceil(mTimeToSendNanos / 1_000_000.0), except
+        // without the precision loss that comes from converting from long to double and back.
+        return mTimeToSendNanos / 1_000_000 + ((mTimeToSendNanos % 1_000_000 > 0) ? 1 : 0);
     }
 
     /**
      * Inject uinput events to device
      *
      * @param events  Array of raw uinput events.
+     * @param offsetMicros The difference in microseconds between the timestamps of the previous
+     *                     batch of events injected and this batch. If set to -1, the current
+     *                     timestamp will be used.
      */
-    public void injectEvent(int[] events) {
+    public void injectEvent(int[] events, long offsetMicros) {
         // if two messages are sent at identical time, they will be processed in order received
-        Message msg = mHandler.obtainMessage(MSG_INJECT_EVENT, events);
-        mHandler.sendMessageAtTime(msg, mTimeToSend);
+        SomeArgs args = SomeArgs.obtain();
+        args.arg1 = events;
+        args.argl1 = offsetMicros;
+        args.argl2 = SystemClock.uptimeNanos();
+        Message msg = mHandler.obtainMessage(MSG_INJECT_EVENT, args);
+        mHandler.sendMessageAtTime(msg, getTimeToSendMillis());
     }
 
     /**
-     * Impose a delay to the device for execution.
+     * Delay subsequent device activity by the specified amount of time.
      *
-     * @param delay  Time to delay in unit of milliseconds.
+     * <p>Note that although the delay is specified in nanoseconds, due to limitations of {@link
+     * Handler}'s API, scheduling only occurs with millisecond precision. When scheduling an
+     * injection or sync, the time at which it is scheduled will be rounded up to the nearest
+     * millisecond. While this means that a particular injection cannot be scheduled precisely,
+     * rounding errors will not accumulate over time. For example, if five injections are scheduled
+     * with a delay of 1,200,000ns before each one, the total delay will be 6ms, as opposed to the
+     * 10ms it would have been if each individual delay had been rounded up (as {@link EvemuParser}
+     * would otherwise have to do to avoid sending timestamps that are in the future).
+     *
+     * @param delayNanos  Time to delay in unit of nanoseconds.
      */
-    public void addDelay(int delay) {
-        mTimeToSend = Math.max(SystemClock.uptimeMillis(), mTimeToSend) + delay;
+    public void addDelayNanos(long delayNanos) {
+        mTimeToSendNanos += delayNanos;
     }
 
     /**
@@ -131,7 +159,8 @@
      * @param syncToken  The token for this sync command.
      */
     public void syncEvent(String syncToken) {
-        mHandler.sendMessageAtTime(mHandler.obtainMessage(MSG_SYNC_EVENT, syncToken), mTimeToSend);
+        mHandler.sendMessageAtTime(
+                mHandler.obtainMessage(MSG_SYNC_EVENT, syncToken), getTimeToSendMillis());
     }
 
     /**
@@ -140,7 +169,8 @@
      */
     public void close() {
         Message msg = mHandler.obtainMessage(MSG_CLOSE_UINPUT_DEVICE);
-        mHandler.sendMessageAtTime(msg, Math.max(SystemClock.uptimeMillis(), mTimeToSend) + 1);
+        mHandler.sendMessageAtTime(
+                msg, Math.max(SystemClock.uptimeMillis(), getTimeToSendMillis()) + 1);
         try {
             synchronized (mCond) {
                 mCond.wait();
@@ -151,6 +181,7 @@
 
     private class DeviceHandler extends Handler {
         private long mPtr;
+        private long mLastInjectTimestampMicros = -1;
         private int mBarrierToken;
 
         DeviceHandler(Looper looper) {
@@ -160,7 +191,7 @@
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {
-                case MSG_OPEN_UINPUT_DEVICE:
+                case MSG_OPEN_UINPUT_DEVICE: {
                     SomeArgs args = (SomeArgs) msg.obj;
                     String name = (String) args.arg1;
                     mPtr = nativeOpenUinputDevice(name, args.argi1 /* id */,
@@ -177,15 +208,43 @@
                     }
                     args.recycle();
                     break;
-                case MSG_INJECT_EVENT:
-                    if (mPtr != 0) {
-                        int[] events = (int[]) msg.obj;
-                        for (int pos = 0; pos + 2 < events.length; pos += 3) {
-                            nativeInjectEvent(mPtr, events[pos], events[pos + 1], events[pos + 2]);
-                        }
+                }
+                case MSG_INJECT_EVENT: {
+                    SomeArgs args = (SomeArgs) msg.obj;
+                    if (mPtr == 0) {
+                        args.recycle();
+                        break;
                     }
+                    long offsetMicros = args.argl1;
+                    if (mLastInjectTimestampMicros == -1 || offsetMicros == -1) {
+                        // There's often a delay of a few milliseconds between the time specified to
+                        // Handler.sendMessageAtTime and the handler actually being called, due to
+                        // the way threads are scheduled. We don't take this into account when
+                        // calling addDelayNanos between the first batch of event injections (when
+                        // we set the "base timestamp" from which all others will be offset) and the
+                        // second batch, meaning that the actual time between the handler calls for
+                        // those batches may be less than the offset between their timestamps. When
+                        // that happens, we would pass a timestamp for the second batch that's
+                        // actually in the future. The kernel's uinput API rejects timestamps that
+                        // are in the future and uses the current time instead, making the reported
+                        // timestamps inconsistent with the recording we're replaying.
+                        //
+                        // To prevent this, we need to use the time at which we scheduled this first
+                        // batch, rather than the actual current time.
+                        mLastInjectTimestampMicros = args.argl2 / 1000;
+                    } else {
+                        mLastInjectTimestampMicros += offsetMicros;
+                    }
+
+                    int[] events = (int[]) args.arg1;
+                    for (int pos = 0; pos + 2 < events.length; pos += 3) {
+                        nativeInjectEvent(mPtr, mLastInjectTimestampMicros, events[pos],
+                                events[pos + 1], events[pos + 2]);
+                    }
+                    args.recycle();
                     break;
-                case MSG_CLOSE_UINPUT_DEVICE:
+                }
+                case MSG_CLOSE_UINPUT_DEVICE: {
                     if (mPtr != 0) {
                         nativeCloseUinputDevice(mPtr);
                         getLooper().quitSafely();
@@ -198,11 +257,14 @@
                         mCond.notify();
                     }
                     break;
-                case MSG_SYNC_EVENT:
+                }
+                case MSG_SYNC_EVENT: {
                     handleSyncEvent((String) msg.obj);
                     break;
-                default:
+                }
+                default: {
                     throw new IllegalArgumentException("Unknown device message");
+                }
             }
         }
 
diff --git a/cmds/uinput/src/com/android/commands/uinput/EvemuParser.java b/cmds/uinput/src/com/android/commands/uinput/EvemuParser.java
index 7652f24..da99162 100644
--- a/cmds/uinput/src/com/android/commands/uinput/EvemuParser.java
+++ b/cmds/uinput/src/com/android/commands/uinput/EvemuParser.java
@@ -44,7 +44,7 @@
      * recordings, this will always be the same.
      */
     private static final int DEVICE_ID = 1;
-    private static final int REGISTRATION_DELAY_MILLIS = 500;
+    private static final int REGISTRATION_DELAY_NANOS = 500_000_000;
 
     private static class CommentAwareReader {
         private final LineNumberReader mReader;
@@ -152,7 +152,7 @@
         final Event.Builder delayEb = new Event.Builder();
         delayEb.setId(DEVICE_ID);
         delayEb.setCommand(Event.Command.DELAY);
-        delayEb.setDurationMillis(REGISTRATION_DELAY_MILLIS);
+        delayEb.setDurationNanos(REGISTRATION_DELAY_NANOS);
         mQueuedEvents.add(delayEb.build());
     }
 
@@ -175,7 +175,6 @@
             throw new ParsingException(
                     "Invalid timestamp '" + parts[0] + "' (should contain a single '.')", mReader);
         }
-        // TODO(b/310958309): use timeMicros to set the timestamp on the event being sent.
         final long timeMicros =
                 parseLong(timeParts[0], 10) * 1_000_000 + parseInt(timeParts[1], 10);
         final Event.Builder eb = new Event.Builder();
@@ -192,21 +191,18 @@
             return eb.build();
         } else {
             final long delayMicros = timeMicros - mLastEventTimeMicros;
-            // The shortest delay supported by Handler.sendMessageAtTime (used for timings by the
-            // Device class) is 1ms, so ignore time differences smaller than that.
-            if (delayMicros < 1000) {
-                mLastEventTimeMicros = timeMicros;
+            eb.setTimestampOffsetMicros(delayMicros);
+            if (delayMicros == 0) {
                 return eb.build();
-            } else {
-                // Send a delay now, and queue the actual event for the next call.
-                mQueuedEvents.add(eb.build());
-                mLastEventTimeMicros = timeMicros;
-                final Event.Builder delayEb = new Event.Builder();
-                delayEb.setId(DEVICE_ID);
-                delayEb.setCommand(Event.Command.DELAY);
-                delayEb.setDurationMillis((int) (delayMicros / 1000));
-                return delayEb.build();
             }
+            // Send a delay now, and queue the actual event for the next call.
+            mQueuedEvents.add(eb.build());
+            mLastEventTimeMicros = timeMicros;
+            final Event.Builder delayEb = new Event.Builder();
+            delayEb.setId(DEVICE_ID);
+            delayEb.setCommand(Event.Command.DELAY);
+            delayEb.setDurationNanos(delayMicros * 1000);
+            return delayEb.build();
         }
     }
 
diff --git a/cmds/uinput/src/com/android/commands/uinput/Event.java b/cmds/uinput/src/com/android/commands/uinput/Event.java
index 0f16a27..9e7ee09 100644
--- a/cmds/uinput/src/com/android/commands/uinput/Event.java
+++ b/cmds/uinput/src/com/android/commands/uinput/Event.java
@@ -99,8 +99,9 @@
     private int mVersionId;
     private int mBusId;
     private int[] mInjections;
+    private long mTimestampOffsetMicros = -1;
     private SparseArray<int[]> mConfiguration;
-    private int mDurationMillis;
+    private long mDurationNanos;
     private int mFfEffectsMax = 0;
     private String mInputPort;
     private SparseArray<InputAbsInfo> mAbsInfo;
@@ -139,19 +140,28 @@
     }
 
     /**
+     * Returns the number of microseconds that should be added to the previous {@code INJECT}
+     * event's timestamp to produce the timestamp for this {@code INJECT} event. A value of -1
+     * indicates that the current timestamp should be used instead.
+     */
+    public long getTimestampOffsetMicros() {
+        return mTimestampOffsetMicros;
+    }
+
+    /**
      * Returns a {@link SparseArray} describing the event codes that should be registered for the
      * device. The keys are uinput ioctl codes (such as those returned from {@link
      * UinputControlCode#getValue()}, while the values are arrays of event codes to be enabled with
      * those ioctls. For example, key 101 (corresponding to {@link UinputControlCode#UI_SET_KEYBIT})
-     * could have values 0x110 ({@code BTN_LEFT}, 0x111 ({@code BTN_RIGHT}), and 0x112
+     * could have values 0x110 ({@code BTN_LEFT}), 0x111 ({@code BTN_RIGHT}), and 0x112
      * ({@code BTN_MIDDLE}).
      */
     public SparseArray<int[]> getConfiguration() {
         return mConfiguration;
     }
 
-    public int getDurationMillis() {
-        return mDurationMillis;
+    public long getDurationNanos() {
+        return mDurationNanos;
     }
 
     public int getFfEffectsMax() {
@@ -182,7 +192,7 @@
             + ", busId=" + mBusId
             + ", events=" + Arrays.toString(mInjections)
             + ", configuration=" + mConfiguration
-            + ", duration=" + mDurationMillis + "ms"
+            + ", duration=" + mDurationNanos + "ns"
             + ", ff_effects_max=" + mFfEffectsMax
             + ", port=" + mInputPort
             + "}";
@@ -211,6 +221,10 @@
             mEvent.mInjections = events;
         }
 
+        public void setTimestampOffsetMicros(long offsetMicros) {
+            mEvent.mTimestampOffsetMicros = offsetMicros;
+        }
+
         /**
          * Sets the event codes that should be registered with a {@code register} command.
          *
@@ -237,8 +251,8 @@
             mEvent.mBusId = busId;
         }
 
-        public void setDurationMillis(int durationMillis) {
-            mEvent.mDurationMillis = durationMillis;
+        public void setDurationNanos(long durationNanos) {
+            mEvent.mDurationNanos = durationNanos;
         }
 
         public void setFfEffectsMax(int ffEffectsMax) {
@@ -271,7 +285,7 @@
                     }
                 }
                 case DELAY -> {
-                    if (mEvent.mDurationMillis <= 0) {
+                    if (mEvent.mDurationNanos <= 0) {
                         throw new IllegalStateException("Delay has missing or invalid duration");
                     }
                 }
diff --git a/cmds/uinput/src/com/android/commands/uinput/JsonStyleParser.java b/cmds/uinput/src/com/android/commands/uinput/JsonStyleParser.java
index ed3ff33..6994f0c 100644
--- a/cmds/uinput/src/com/android/commands/uinput/JsonStyleParser.java
+++ b/cmds/uinput/src/com/android/commands/uinput/JsonStyleParser.java
@@ -71,7 +71,8 @@
                         case "configuration" -> eb.setConfiguration(readConfiguration());
                         case "ff_effects_max" -> eb.setFfEffectsMax(readInt());
                         case "abs_info" -> eb.setAbsInfo(readAbsInfoArray());
-                        case "duration" -> eb.setDurationMillis(readInt());
+                        // Duration is specified in milliseconds in the JSON-style format.
+                        case "duration" -> eb.setDurationNanos(readInt() * 1_000_000L);
                         case "port" -> eb.setInputPort(mReader.nextString());
                         case "syncToken" -> eb.setSyncToken(mReader.nextString());
                         default -> mReader.skipValue();
diff --git a/cmds/uinput/src/com/android/commands/uinput/Uinput.java b/cmds/uinput/src/com/android/commands/uinput/Uinput.java
index 04df279..760e981 100644
--- a/cmds/uinput/src/com/android/commands/uinput/Uinput.java
+++ b/cmds/uinput/src/com/android/commands/uinput/Uinput.java
@@ -134,8 +134,8 @@
         switch (Objects.requireNonNull(e.getCommand())) {
             case REGISTER ->
                     error("Device id=" + e.getId() + " is already registered. Ignoring event.");
-            case INJECT -> d.injectEvent(e.getInjections());
-            case DELAY -> d.addDelay(e.getDurationMillis());
+            case INJECT -> d.injectEvent(e.getInjections(), e.getTimestampOffsetMicros());
+            case DELAY -> d.addDelayNanos(e.getDurationNanos());
             case SYNC -> d.syncEvent(e.getSyncToken());
         }
     }
diff --git a/cmds/uinput/tests/src/com/android/commands/uinput/tests/EvemuParserTest.java b/cmds/uinput/tests/src/com/android/commands/uinput/tests/EvemuParserTest.java
index a05cc67..5239fbc 100644
--- a/cmds/uinput/tests/src/com/android/commands/uinput/tests/EvemuParserTest.java
+++ b/cmds/uinput/tests/src/com/android/commands/uinput/tests/EvemuParserTest.java
@@ -183,16 +183,22 @@
     }
 
     private void assertInjectEvent(Event event, int eventType, int eventCode, int value) {
+        assertInjectEvent(event, eventType, eventCode, value, 0);
+    }
+
+    private void assertInjectEvent(Event event, int eventType, int eventCode, int value,
+                                   long timestampOffsetMicros) {
         assertThat(event).isNotNull();
         assertThat(event.getCommand()).isEqualTo(Event.Command.INJECT);
         assertThat(event.getInjections()).asList()
                 .containsExactly(eventType, eventCode, value).inOrder();
+        assertThat(event.getTimestampOffsetMicros()).isEqualTo(timestampOffsetMicros);
     }
 
-    private void assertDelayEvent(Event event, int durationMillis) {
+    private void assertDelayEvent(Event event, int durationNanos) {
         assertThat(event).isNotNull();
         assertThat(event.getCommand()).isEqualTo(Event.Command.DELAY);
-        assertThat(event.getDurationMillis()).isEqualTo(durationMillis);
+        assertThat(event.getDurationNanos()).isEqualTo(durationNanos);
     }
 
     @Test
@@ -207,7 +213,7 @@
         EvemuParser parser = new EvemuParser(reader);
         assertThat(parser.getNextEvent().getCommand()).isEqualTo(Event.Command.REGISTER);
         assertThat(parser.getNextEvent().getCommand()).isEqualTo(Event.Command.DELAY);
-        assertInjectEvent(parser.getNextEvent(), 0x2, 0x0, 1);
+        assertInjectEvent(parser.getNextEvent(), 0x2, 0x0, 1, -1);
         assertInjectEvent(parser.getNextEvent(), 0x2, 0x1, -2);
         assertInjectEvent(parser.getNextEvent(), 0x0, 0x0, 0);
     }
@@ -228,17 +234,17 @@
         assertThat(parser.getNextEvent().getCommand()).isEqualTo(Event.Command.REGISTER);
         assertThat(parser.getNextEvent().getCommand()).isEqualTo(Event.Command.DELAY);
 
-        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 1);
+        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 1, -1);
         assertInjectEvent(parser.getNextEvent(), 0x0, 0x0, 0);
 
-        assertDelayEvent(parser.getNextEvent(), 10);
+        assertDelayEvent(parser.getNextEvent(), 10_000_000);
 
-        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 0);
+        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 0, 10_000);
         assertInjectEvent(parser.getNextEvent(), 0x0, 0x0, 0);
 
-        assertDelayEvent(parser.getNextEvent(), 1000);
+        assertDelayEvent(parser.getNextEvent(), 1_000_000_000);
 
-        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 1);
+        assertInjectEvent(parser.getNextEvent(), 0x1, 0x15, 1, 1_000_000);
         assertInjectEvent(parser.getNextEvent(), 0x0, 0x0, 0);
     }
 
@@ -477,7 +483,7 @@
 
         assertThat(parser.getNextEvent().getCommand()).isEqualTo(Event.Command.DELAY);
 
-        assertInjectEvent(parser.getNextEvent(), 0x3, 0x39, 0);
+        assertInjectEvent(parser.getNextEvent(), 0x3, 0x39, 0, -1);
         assertInjectEvent(parser.getNextEvent(), 0x3, 0x35, 891);
         assertInjectEvent(parser.getNextEvent(), 0x3, 0x36, 333);
         assertInjectEvent(parser.getNextEvent(), 0x3, 0x3a, 56);
@@ -490,8 +496,8 @@
         assertInjectEvent(parser.getNextEvent(), 0x3, 0x18, 56);
         assertInjectEvent(parser.getNextEvent(), 0x0, 0x0, 0);
 
-        assertDelayEvent(parser.getNextEvent(), 6);
+        assertDelayEvent(parser.getNextEvent(), 6_080_000);
 
-        assertInjectEvent(parser.getNextEvent(), 0x3, 0x0035, 888);
+        assertInjectEvent(parser.getNextEvent(), 0x3, 0x0035, 888, 6_080);
     }
 }
diff --git a/core/TEST_MAPPING b/core/TEST_MAPPING
index f1e4d0ee..fd571c9 100644
--- a/core/TEST_MAPPING
+++ b/core/TEST_MAPPING
@@ -20,15 +20,5 @@
         "core/tests/coretests/src/com/android/internal/inputmethod/.*"
       ]
     }
-  ],
-  "postsubmit": [
-      {
-        "name": "CtsContactKeysManagerTestCases",
-        "options": [
-          {
-            "include-filter": "android.provider.cts.contactkeys."
-          }
-        ]
-      }
-    ]
+  ]
 }
diff --git a/core/api/current.txt b/core/api/current.txt
index 1748763..0c11811 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -140,13 +140,16 @@
     field public static final String MANAGE_DEVICE_POLICY_APPS_CONTROL = "android.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL";
     field public static final String MANAGE_DEVICE_POLICY_APP_RESTRICTIONS = "android.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS";
     field public static final String MANAGE_DEVICE_POLICY_APP_USER_DATA = "android.permission.MANAGE_DEVICE_POLICY_APP_USER_DATA";
+    field @FlaggedApi("android.app.admin.flags.assist_content_user_restriction_enabled") public static final String MANAGE_DEVICE_POLICY_ASSIST_CONTENT = "android.permission.MANAGE_DEVICE_POLICY_ASSIST_CONTENT";
     field public static final String MANAGE_DEVICE_POLICY_AUDIO_OUTPUT = "android.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT";
     field public static final String MANAGE_DEVICE_POLICY_AUTOFILL = "android.permission.MANAGE_DEVICE_POLICY_AUTOFILL";
     field public static final String MANAGE_DEVICE_POLICY_BACKUP_SERVICE = "android.permission.MANAGE_DEVICE_POLICY_BACKUP_SERVICE";
+    field @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled") public static final String MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL = "android.permission.MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL";
     field public static final String MANAGE_DEVICE_POLICY_BLUETOOTH = "android.permission.MANAGE_DEVICE_POLICY_BLUETOOTH";
     field public static final String MANAGE_DEVICE_POLICY_BUGREPORT = "android.permission.MANAGE_DEVICE_POLICY_BUGREPORT";
     field public static final String MANAGE_DEVICE_POLICY_CALLS = "android.permission.MANAGE_DEVICE_POLICY_CALLS";
     field public static final String MANAGE_DEVICE_POLICY_CAMERA = "android.permission.MANAGE_DEVICE_POLICY_CAMERA";
+    field @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled") public static final String MANAGE_DEVICE_POLICY_CAMERA_TOGGLE = "android.permission.MANAGE_DEVICE_POLICY_CAMERA_TOGGLE";
     field public static final String MANAGE_DEVICE_POLICY_CERTIFICATES = "android.permission.MANAGE_DEVICE_POLICY_CERTIFICATES";
     field public static final String MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE = "android.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE";
     field @FlaggedApi("android.view.contentprotection.flags.manage_device_policy_enabled") public static final String MANAGE_DEVICE_POLICY_CONTENT_PROTECTION = "android.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION";
@@ -165,8 +168,10 @@
     field public static final String MANAGE_DEVICE_POLICY_LOCK = "android.permission.MANAGE_DEVICE_POLICY_LOCK";
     field public static final String MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS = "android.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS";
     field public static final String MANAGE_DEVICE_POLICY_LOCK_TASK = "android.permission.MANAGE_DEVICE_POLICY_LOCK_TASK";
+    field @FlaggedApi("android.app.admin.flags.esim_management_enabled") public static final String MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS = "android.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS";
     field public static final String MANAGE_DEVICE_POLICY_METERED_DATA = "android.permission.MANAGE_DEVICE_POLICY_METERED_DATA";
     field public static final String MANAGE_DEVICE_POLICY_MICROPHONE = "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE";
+    field @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled") public static final String MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE = "android.permission.MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE";
     field public static final String MANAGE_DEVICE_POLICY_MOBILE_NETWORK = "android.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK";
     field public static final String MANAGE_DEVICE_POLICY_MODIFY_USERS = "android.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS";
     field public static final String MANAGE_DEVICE_POLICY_MTE = "android.permission.MANAGE_DEVICE_POLICY_MTE";
@@ -452,6 +457,7 @@
     field public static final int allowBackup = 16843392; // 0x1010280
     field public static final int allowClearUserData = 16842757; // 0x1010005
     field public static final int allowClickWhenDisabled = 16844312; // 0x1010618
+    field @FlaggedApi("android.security.asm_restrictions_enabled") public static final int allowCrossUidActivitySwitchFromBelow;
     field public static final int allowEmbedded = 16843765; // 0x10103f5
     field public static final int allowGameAngleDriver = 16844376; // 0x1010658
     field public static final int allowGameDownscaling = 16844377; // 0x1010659
@@ -653,6 +659,7 @@
     field public static final int contentInsetRight = 16843862; // 0x1010456
     field public static final int contentInsetStart = 16843859; // 0x1010453
     field public static final int contentInsetStartWithNavigation = 16844066; // 0x1010522
+    field @FlaggedApi("android.view.flags.sensitive_content_app_protection_api") public static final int contentSensitivity;
     field public static final int contextClickable = 16844007; // 0x10104e7
     field public static final int contextDescription = 16844078; // 0x101052e
     field public static final int contextPopupMenuStyle = 16844033; // 0x1010501
@@ -684,6 +691,7 @@
     field public static final int defaultHeight = 16844021; // 0x10104f5
     field @FlaggedApi("android.content.res.default_locale") public static final int defaultLocale;
     field public static final int defaultToDeviceProtectedStorage = 16844036; // 0x1010504
+    field @FlaggedApi("android.nfc.Flags.FLAG_OBSERVE_MODE") public static final int defaultToObserveMode;
     field public static final int defaultValue = 16843245; // 0x10101ed
     field public static final int defaultWidth = 16844020; // 0x10104f4
     field public static final int delay = 16843212; // 0x10101cc
@@ -1488,6 +1496,7 @@
     field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261
     field public static final int sharedUserMaxSdkVersion = 16844365; // 0x101064d
     field public static final int shell = 16844180; // 0x1010594
+    field @FlaggedApi("com.android.text.flags.use_bounds_for_width") public static final int shiftDrawingOffsetForStartOverhang;
     field public static final int shortcutDisabledMessage = 16844075; // 0x101052b
     field public static final int shortcutId = 16844072; // 0x1010528
     field public static final int shortcutLongLabel = 16844074; // 0x101052a
@@ -1602,6 +1611,7 @@
     field public static final int supportedTypes = 16844369; // 0x1010651
     field public static final int supportsAssist = 16844016; // 0x10104f0
     field public static final int supportsBatteryGameMode = 16844374; // 0x1010656
+    field @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public static final int supportsConnectionlessStylusHandwriting;
     field public static final int supportsInlineSuggestions = 16844301; // 0x101060d
     field public static final int supportsInlineSuggestionsWithTouchExploration = 16844397; // 0x101066d
     field public static final int supportsLaunchVoiceAssistFromKeyguard = 16844017; // 0x10104f1
@@ -4419,12 +4429,14 @@
     method @Deprecated public void finishFromChild(android.app.Activity);
     method @Nullable public android.app.ActionBar getActionBar();
     method public final android.app.Application getApplication();
+    method @FlaggedApi("android.security.content_uri_permission_apis") @Nullable public android.app.ComponentCaller getCaller();
     method @Nullable public android.content.ComponentName getCallingActivity();
     method @Nullable public String getCallingPackage();
     method public int getChangingConfigurations();
     method public android.content.ComponentName getComponentName();
     method public android.transition.Scene getContentScene();
     method public android.transition.TransitionManager getContentTransitionManager();
+    method @FlaggedApi("android.security.content_uri_permission_apis") @NonNull public android.app.ComponentCaller getCurrentCaller();
     method @Nullable public android.view.View getCurrentFocus();
     method @Deprecated public android.app.FragmentManager getFragmentManager();
     method @FlaggedApi("android.security.content_uri_permission_apis") @NonNull public android.app.ComponentCaller getInitialCaller();
@@ -4517,6 +4529,7 @@
     method public boolean onNavigateUp();
     method @Deprecated public boolean onNavigateUpFromChild(android.app.Activity);
     method protected void onNewIntent(android.content.Intent);
+    method @FlaggedApi("android.security.content_uri_permission_apis") public void onNewIntent(@NonNull android.content.Intent, @NonNull android.app.ComponentCaller);
     method public boolean onOptionsItemSelected(@NonNull android.view.MenuItem);
     method public void onOptionsMenuClosed(android.view.Menu);
     method public void onPanelClosed(int, @NonNull android.view.Menu);
@@ -4604,6 +4617,7 @@
     method public void setImmersive(boolean);
     method public void setInheritShowWhenLocked(boolean);
     method public void setIntent(android.content.Intent);
+    method @FlaggedApi("android.security.content_uri_permission_apis") public void setIntent(@Nullable android.content.Intent, @Nullable android.app.ComponentCaller);
     method public void setLocusContext(@Nullable android.content.LocusId, @Nullable android.os.Bundle);
     method public final void setMediaController(android.media.session.MediaController);
     method public void setPictureInPictureParams(@NonNull android.app.PictureInPictureParams);
@@ -5325,6 +5339,7 @@
     method public int getStartType();
     method public int getStartupState();
     method @NonNull public java.util.Map<java.lang.Integer,java.lang.Long> getStartupTimestamps();
+    method @FlaggedApi("android.content.pm.stay_stopped") public boolean wasForceStopped();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationStartInfo> CREATOR;
     field public static final int LAUNCH_MODE_SINGLE_INSTANCE = 2; // 0x2
@@ -5454,11 +5469,15 @@
     method public int getDeferralPolicy();
     method @Nullable public String getDeliveryGroupMatchingKey();
     method public int getDeliveryGroupPolicy();
+    method @FlaggedApi("android.app.bcast_event_timestamps") public long getEventTriggerTimestampMillis();
+    method @FlaggedApi("android.app.bcast_event_timestamps") public long getRemoteEventTriggerTimestampMillis();
     method public boolean isShareIdentityEnabled();
     method @NonNull public static android.app.BroadcastOptions makeBasic();
     method @NonNull public android.app.BroadcastOptions setDeferralPolicy(int);
     method @NonNull public android.app.BroadcastOptions setDeliveryGroupMatchingKey(@NonNull String, @NonNull String);
     method @NonNull public android.app.BroadcastOptions setDeliveryGroupPolicy(int);
+    method @FlaggedApi("android.app.bcast_event_timestamps") public void setEventTriggerTimestampMillis(long);
+    method @FlaggedApi("android.app.bcast_event_timestamps") public void setRemoteEventTriggerTimestampMillis(long);
     method @NonNull public android.app.BroadcastOptions setShareIdentityEnabled(boolean);
     method @NonNull public android.os.Bundle toBundle();
     field public static final int DEFERRAL_POLICY_DEFAULT = 0; // 0x0
@@ -6086,6 +6105,7 @@
     method public void callActivityOnCreate(android.app.Activity, android.os.Bundle, android.os.PersistableBundle);
     method public void callActivityOnDestroy(android.app.Activity);
     method public void callActivityOnNewIntent(android.app.Activity, android.content.Intent);
+    method @FlaggedApi("android.security.content_uri_permission_apis") public void callActivityOnNewIntent(@NonNull android.app.Activity, @NonNull android.content.Intent, @NonNull android.app.ComponentCaller);
     method public void callActivityOnPause(android.app.Activity);
     method public void callActivityOnPictureInPictureRequested(@NonNull android.app.Activity);
     method public void callActivityOnPostCreate(@NonNull android.app.Activity, @Nullable android.os.Bundle);
@@ -7221,6 +7241,7 @@
 
   public final class PictureInPictureUiState implements android.os.Parcelable {
     method public int describeContents();
+    method @FlaggedApi("android.app.enable_pip_ui_state_callback_on_entering") public boolean isEnteringPip();
     method public boolean isStashed();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureUiState> CREATOR;
@@ -7950,9 +7971,11 @@
     field public static final String LOCK_TASK_POLICY = "lockTask";
     field public static final String PACKAGES_SUSPENDED_POLICY = "packagesSuspended";
     field public static final String PACKAGE_UNINSTALL_BLOCKED_POLICY = "packageUninstallBlocked";
+    field @FlaggedApi("android.app.admin.flags.policy_engine_migration_v2_enabled") public static final String PASSWORD_COMPLEXITY_POLICY = "passwordComplexity";
     field public static final String PERMISSION_GRANT_POLICY = "permissionGrant";
     field public static final String PERSISTENT_PREFERRED_ACTIVITY_POLICY = "persistentPreferredActivity";
     field public static final String RESET_PASSWORD_TOKEN_POLICY = "resetPasswordToken";
+    field @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") public static final String SECURITY_LOGGING_POLICY = "securityLogging";
     field public static final String STATUS_BAR_DISABLED_POLICY = "statusBarDisabled";
     field @FlaggedApi("android.app.admin.flags.policy_engine_migration_v2_enabled") public static final String USB_DATA_SIGNALING_POLICY = "usbDataSignaling";
     field public static final String USER_CONTROL_DISABLED_PACKAGES_POLICY = "userControlDisabledPackages";
@@ -8009,7 +8032,7 @@
     method public CharSequence getDeviceOwnerLockScreenInfo();
     method @Nullable public String getDevicePolicyManagementRoleHolderPackage();
     method public CharSequence getEndUserSessionMessage(@NonNull android.content.ComponentName);
-    method @NonNull public String getEnrollmentSpecificId();
+    method @FlaggedApi("android.app.admin.flags.permission_migration_for_zero_trust_api_enabled") @NonNull @RequiresPermission(value=android.Manifest.permission.MANAGE_DEVICE_POLICY_CERTIFICATES, conditional=true) public String getEnrollmentSpecificId();
     method @Nullable @RequiresPermission(value=android.Manifest.permission.MANAGE_DEVICE_POLICY_FACTORY_RESET, conditional=true) public android.app.admin.FactoryResetProtectionPolicy getFactoryResetProtectionPolicy(@Nullable android.content.ComponentName);
     method @Nullable public String getGlobalPrivateDnsHost(@NonNull android.content.ComponentName);
     method public int getGlobalPrivateDnsMode(@NonNull android.content.ComponentName);
@@ -8048,7 +8071,7 @@
     method @Deprecated public int getPasswordMinimumSymbols(@Nullable android.content.ComponentName);
     method @Deprecated public int getPasswordMinimumUpperCase(@Nullable android.content.ComponentName);
     method @Deprecated public int getPasswordQuality(@Nullable android.content.ComponentName);
-    method @Nullable public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@NonNull android.content.ComponentName);
+    method @FlaggedApi("android.app.admin.flags.permission_migration_for_zero_trust_api_enabled") @Nullable @RequiresPermission(value=android.Manifest.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES, conditional=true) public android.app.admin.SystemUpdateInfo getPendingSystemUpdate(@Nullable android.content.ComponentName);
     method @RequiresPermission(value=android.Manifest.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS, conditional=true) public int getPermissionGrantState(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
     method public int getPermissionPolicy(android.content.ComponentName);
     method @Nullable public java.util.List<java.lang.String> getPermittedAccessibilityServices(@NonNull android.content.ComponentName);
@@ -8065,6 +8088,7 @@
     method public CharSequence getStartUserSessionMessage(@NonNull android.content.ComponentName);
     method @Deprecated public boolean getStorageEncryption(@Nullable android.content.ComponentName);
     method public int getStorageEncryptionStatus();
+    method @FlaggedApi("android.app.admin.flags.esim_management_enabled") @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS) public java.util.Set<java.lang.Integer> getSubscriptionsIds();
     method @Nullable public android.app.admin.SystemUpdatePolicy getSystemUpdatePolicy();
     method @Nullable public android.os.PersistableBundle getTransferOwnershipBundle();
     method @Nullable public java.util.List<android.os.PersistableBundle> getTrustAgentConfiguration(@Nullable android.content.ComponentName, @NonNull android.content.ComponentName);
@@ -8104,6 +8128,7 @@
     method public boolean isLogoutEnabled();
     method public boolean isManagedProfile(@NonNull android.content.ComponentName);
     method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
+    method @FlaggedApi("android.app.admin.flags.is_mte_policy_enforced") public static boolean isMtePolicyEnforced();
     method public boolean isNetworkLoggingEnabled(@Nullable android.content.ComponentName);
     method public boolean isOrganizationOwnedDeviceWithManagedProfile();
     method public boolean isOverrideApnEnabled(@NonNull android.content.ComponentName);
@@ -10746,6 +10771,7 @@
     field public static final String PERFORMANCE_HINT_SERVICE = "performance_hint";
     field public static final String POWER_SERVICE = "power";
     field public static final String PRINT_SERVICE = "print";
+    field @FlaggedApi("android.os.telemetry_apis_framework_initialization") public static final String PROFILING_SERVICE = "profiling";
     field public static final int RECEIVER_EXPORTED = 2; // 0x2
     field public static final int RECEIVER_NOT_EXPORTED = 4; // 0x4
     field public static final int RECEIVER_VISIBLE_TO_INSTANT_APPS = 1; // 0x1
@@ -11336,10 +11362,14 @@
     field public static final String EXTRA_CHANGED_COMPONENT_NAME_LIST = "android.intent.extra.changed_component_name_list";
     field public static final String EXTRA_CHANGED_PACKAGE_LIST = "android.intent.extra.changed_package_list";
     field public static final String EXTRA_CHANGED_UID_LIST = "android.intent.extra.changed_uid_list";
+    field @FlaggedApi("android.service.chooser.chooser_payload_toggling") public static final String EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI = "android.intent.extra.CHOOSER_ADDITIONAL_CONTENT_URI";
     field @FlaggedApi("android.service.chooser.chooser_album_text") public static final String EXTRA_CHOOSER_CONTENT_TYPE_HINT = "android.intent.extra.CHOOSER_CONTENT_TYPE_HINT";
     field public static final String EXTRA_CHOOSER_CUSTOM_ACTIONS = "android.intent.extra.CHOOSER_CUSTOM_ACTIONS";
+    field @FlaggedApi("android.service.chooser.chooser_payload_toggling") public static final String EXTRA_CHOOSER_FOCUSED_ITEM_POSITION = "android.intent.extra.CHOOSER_FOCUSED_ITEM_POSITION";
     field public static final String EXTRA_CHOOSER_MODIFY_SHARE_ACTION = "android.intent.extra.CHOOSER_MODIFY_SHARE_ACTION";
     field public static final String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER = "android.intent.extra.CHOOSER_REFINEMENT_INTENT_SENDER";
+    field @FlaggedApi("android.service.chooser.enable_chooser_result") public static final String EXTRA_CHOOSER_RESULT = "android.intent.extra.CHOOSER_RESULT";
+    field @FlaggedApi("android.service.chooser.enable_chooser_result") public static final String EXTRA_CHOOSER_RESULT_INTENT_SENDER = "android.intent.extra.CHOOSER_RESULT_INTENT_SENDER";
     field public static final String EXTRA_CHOOSER_TARGETS = "android.intent.extra.CHOOSER_TARGETS";
     field public static final String EXTRA_CHOSEN_COMPONENT = "android.intent.extra.CHOSEN_COMPONENT";
     field public static final String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER = "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
@@ -12371,6 +12401,8 @@
     method @NonNull public android.graphics.drawable.Drawable getProfileSwitchingIconDrawable(@NonNull android.os.UserHandle);
     method @NonNull public CharSequence getProfileSwitchingLabel(@NonNull android.os.UserHandle);
     method @NonNull public java.util.List<android.os.UserHandle> getTargetUserProfiles();
+    method @FlaggedApi("android.app.admin.flags.allow_querying_profile_type") public boolean isManagedProfile(@NonNull android.os.UserHandle);
+    method @FlaggedApi("android.app.admin.flags.allow_querying_profile_type") public boolean isProfile(@NonNull android.os.UserHandle);
     method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity);
     method @RequiresPermission(anyOf={android.Manifest.permission.INTERACT_ACROSS_PROFILES, "android.permission.INTERACT_ACROSS_USERS"}) public void startActivity(@NonNull android.content.Intent, @NonNull android.os.UserHandle, @Nullable android.app.Activity, @Nullable android.os.Bundle);
     method public void startMainActivity(@NonNull android.content.ComponentName, @NonNull android.os.UserHandle);
@@ -12461,8 +12493,11 @@
   public class LauncherApps {
     method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(String, android.os.UserHandle);
     method @NonNull public java.util.List<android.content.pm.PackageInstaller.SessionInfo> getAllPackageInstallerSessions();
+    method @FlaggedApi("android.os.allow_private_profile") @Nullable @RequiresPermission(conditional=true, anyOf={"android.permission.ACCESS_HIDDEN_PROFILES_FULL", android.Manifest.permission.ACCESS_HIDDEN_PROFILES}) public android.content.IntentSender getAppMarketActivityIntent(@Nullable String, @NonNull android.os.UserHandle);
     method public android.content.pm.ApplicationInfo getApplicationInfo(@NonNull String, int, @NonNull android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @FlaggedApi("android.os.allow_private_profile") @Nullable @RequiresPermission(conditional=true, anyOf={"android.permission.ACCESS_HIDDEN_PROFILES_FULL", android.Manifest.permission.ACCESS_HIDDEN_PROFILES}) public final android.content.pm.LauncherUserInfo getLauncherUserInfo(@NonNull android.os.UserHandle);
     method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent);
+    method @FlaggedApi("android.os.allow_private_profile") @NonNull @RequiresPermission(conditional=true, anyOf={"android.permission.ACCESS_HIDDEN_PROFILES_FULL", android.Manifest.permission.ACCESS_HIDDEN_PROFILES}) public java.util.List<java.lang.String> getPreInstalledSystemPackages(@NonNull android.os.UserHandle);
     method public java.util.List<android.os.UserHandle> getProfiles();
     method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int);
     method @Nullable public android.content.IntentSender getShortcutConfigActivityIntent(@NonNull android.content.pm.LauncherActivityInfo);
@@ -12544,6 +12579,14 @@
     field public static final int FLAG_MATCH_PINNED_BY_ANY_LAUNCHER = 1024; // 0x400
   }
 
+  @FlaggedApi("android.os.allow_private_profile") public final class LauncherUserInfo implements android.os.Parcelable {
+    method @FlaggedApi("android.os.allow_private_profile") public int describeContents();
+    method @FlaggedApi("android.os.allow_private_profile") public int getUserSerialNumber();
+    method @FlaggedApi("android.os.allow_private_profile") @NonNull public String getUserType();
+    method @FlaggedApi("android.os.allow_private_profile") public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @FlaggedApi("android.os.allow_private_profile") @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherUserInfo> CREATOR;
+  }
+
   public final class ModuleInfo implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public CharSequence getName();
@@ -13059,6 +13102,7 @@
     field public static final String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
     field public static final String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
     field public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
+    field @FlaggedApi("android.media.audio.feature_spatial_audio_headtracking_low_latency") public static final String FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY = "android.hardware.audio.spatial.headtracking.low_latency";
     field public static final String FEATURE_AUTOFILL = "android.software.autofill";
     field public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
     field public static final String FEATURE_BACKUP = "android.software.backup";
@@ -13467,7 +13511,7 @@
     field public static final int FLAG_USE_APP_ZYGOTE = 8; // 0x8
     field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CAMERA}, anyOf={android.Manifest.permission.CAMERA}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CAMERA = 64; // 0x40
     field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE}, anyOf={android.Manifest.permission.BLUETOOTH_ADVERTISE, android.Manifest.permission.BLUETOOTH_CONNECT, android.Manifest.permission.BLUETOOTH_SCAN, android.Manifest.permission.CHANGE_NETWORK_STATE, android.Manifest.permission.CHANGE_WIFI_STATE, android.Manifest.permission.CHANGE_WIFI_MULTICAST_STATE, android.Manifest.permission.NFC, android.Manifest.permission.TRANSMIT_IR, android.Manifest.permission.UWB_RANGING}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_CONNECTED_DEVICE = 16; // 0x10
-    field @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
+    field @Deprecated @RequiresPermission(value=android.Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1; // 0x1
     field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_HEALTH}, anyOf={android.Manifest.permission.ACTIVITY_RECOGNITION, android.Manifest.permission.BODY_SENSORS, android.Manifest.permission.HIGH_SAMPLING_RATE_SENSORS}) public static final int FOREGROUND_SERVICE_TYPE_HEALTH = 256; // 0x100
     field @RequiresPermission(allOf={android.Manifest.permission.FOREGROUND_SERVICE_LOCATION}, anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}, conditional=true) public static final int FOREGROUND_SERVICE_TYPE_LOCATION = 8; // 0x8
     field public static final int FOREGROUND_SERVICE_TYPE_MANIFEST = -1; // 0xffffffff
@@ -15656,6 +15700,7 @@
     method public boolean clipOutRect(@NonNull android.graphics.Rect);
     method public boolean clipOutRect(float, float, float, float);
     method public boolean clipOutRect(int, int, int, int);
+    method @FlaggedApi("com.android.graphics.hwui.flags.clip_shader") public void clipOutShader(@NonNull android.graphics.Shader);
     method @Deprecated public boolean clipPath(@NonNull android.graphics.Path, @NonNull android.graphics.Region.Op);
     method public boolean clipPath(@NonNull android.graphics.Path);
     method @Deprecated public boolean clipRect(@NonNull android.graphics.RectF, @NonNull android.graphics.Region.Op);
@@ -15665,6 +15710,7 @@
     method @Deprecated public boolean clipRect(float, float, float, float, @NonNull android.graphics.Region.Op);
     method public boolean clipRect(float, float, float, float);
     method public boolean clipRect(int, int, int, int);
+    method @FlaggedApi("com.android.graphics.hwui.flags.clip_shader") public void clipShader(@NonNull android.graphics.Shader);
     method public void concat(@Nullable android.graphics.Matrix);
     method @FlaggedApi("com.android.graphics.hwui.flags.matrix_44") public void concat44(@Nullable android.graphics.Matrix44);
     method public void disableZ();
@@ -19215,8 +19261,7 @@
     method @Deprecated public abstract void createReprocessableCaptureSessionByConfigurations(@NonNull android.hardware.camera2.params.InputConfiguration, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull android.hardware.camera2.CameraCaptureSession.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
     method public int getCameraAudioRestriction() throws android.hardware.camera2.CameraAccessException;
     method @NonNull public abstract String getId();
-    method @FlaggedApi("com.android.internal.camera.flags.feature_combination_query") @NonNull public android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
-    method @Deprecated public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+    method public boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
     method public void setCameraAudioRestriction(int) throws android.hardware.camera2.CameraAccessException;
     field public static final int AUDIO_RESTRICTION_NONE = 0; // 0x0
     field public static final int AUDIO_RESTRICTION_VIBRATION = 1; // 0x1
@@ -19229,6 +19274,14 @@
     field public static final int TEMPLATE_ZERO_SHUTTER_LAG = 5; // 0x5
   }
 
+  @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract static class CameraDevice.CameraDeviceSetup {
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(int) throws android.hardware.camera2.CameraAccessException;
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract String getId();
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public abstract android.hardware.camera2.CameraCharacteristics getSessionCharacteristics(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public abstract boolean isSessionConfigurationSupported(@NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @RequiresPermission(android.Manifest.permission.CAMERA) public abstract void openCamera(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
+  }
+
   public abstract static class CameraDevice.StateCallback {
     ctor public CameraDevice.StateCallback();
     method public void onClosed(@NonNull android.hardware.camera2.CameraDevice);
@@ -19254,6 +19307,7 @@
     method @NonNull public java.util.List<java.lang.Integer> getSupportedExtensions();
     method public boolean isCaptureProcessProgressAvailable(int);
     method public boolean isPostviewAvailable(int);
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CameraCharacteristics.Key<android.util.Range<java.lang.Float>> EFV_PADDING_ZOOM_FACTOR_RANGE;
     field public static final int EXTENSION_AUTOMATIC = 0; // 0x0
     field @Deprecated public static final int EXTENSION_BEAUTY = 1; // 0x1
     field public static final int EXTENSION_BOKEH = 2; // 0x2
@@ -19297,14 +19351,14 @@
   }
 
   public final class CameraManager {
-    method @FlaggedApi("com.android.internal.camera.flags.feature_combination_query") @NonNull @RequiresPermission(android.Manifest.permission.CAMERA) public android.hardware.camera2.CaptureRequest.Builder createCaptureRequest(@NonNull String, int) throws android.hardware.camera2.CameraAccessException;
     method @NonNull public android.hardware.camera2.CameraCharacteristics getCameraCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") @NonNull public android.hardware.camera2.CameraDevice.CameraDeviceSetup getCameraDeviceSetup(@NonNull String) throws android.hardware.camera2.CameraAccessException;
     method @NonNull public android.hardware.camera2.CameraExtensionCharacteristics getCameraExtensionCharacteristics(@NonNull String) throws android.hardware.camera2.CameraAccessException;
     method @NonNull public String[] getCameraIdList() throws android.hardware.camera2.CameraAccessException;
     method @NonNull public java.util.Set<java.util.Set<java.lang.String>> getConcurrentCameraIds() throws android.hardware.camera2.CameraAccessException;
     method public int getTorchStrengthLevel(@NonNull String) throws android.hardware.camera2.CameraAccessException;
+    method @FlaggedApi("com.android.internal.camera.flags.camera_device_setup") public boolean isCameraDeviceSetupSupported(@NonNull String) throws android.hardware.camera2.CameraAccessException;
     method @RequiresPermission(android.Manifest.permission.CAMERA) public boolean isConcurrentSessionConfigurationSupported(@NonNull java.util.Map<java.lang.String,android.hardware.camera2.params.SessionConfiguration>) throws android.hardware.camera2.CameraAccessException;
-    method @FlaggedApi("com.android.internal.camera.flags.feature_combination_query") @RequiresPermission(android.Manifest.permission.CAMERA) public boolean isSessionConfigurationWithParametersSupported(@NonNull String, @NonNull android.hardware.camera2.params.SessionConfiguration) throws android.hardware.camera2.CameraAccessException;
     method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull android.hardware.camera2.CameraDevice.StateCallback, @Nullable android.os.Handler) throws android.hardware.camera2.CameraAccessException;
     method @RequiresPermission(android.Manifest.permission.CAMERA) public void openCamera(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraDevice.StateCallback) throws android.hardware.camera2.CameraAccessException;
     method public void registerAvailabilityCallback(@NonNull android.hardware.camera2.CameraManager.AvailabilityCallback, @Nullable android.os.Handler);
@@ -19855,6 +19909,32 @@
     field public static final int MAX_THUMBNAIL_DIMENSION = 256; // 0x100
   }
 
+  @FlaggedApi("com.android.internal.camera.flags.concert_mode") public final class ExtensionCaptureRequest {
+    ctor public ExtensionCaptureRequest();
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Boolean> EFV_AUTO_ZOOM;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> EFV_MAX_PADDING_ZOOM_FACTOR;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> EFV_PADDING_ZOOM_FACTOR;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Float> EFV_ROTATE_VIEWPORT;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<java.lang.Integer> EFV_STABILIZATION_MODE;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") public static final int EFV_STABILIZATION_MODE_GIMBAL = 1; // 0x1
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") public static final int EFV_STABILIZATION_MODE_LOCKED = 2; // 0x2
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") public static final int EFV_STABILIZATION_MODE_OFF = 0; // 0x0
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureRequest.Key<android.util.Pair<java.lang.Integer,java.lang.Integer>> EFV_TRANSLATE_VIEWPORT;
+  }
+
+  @FlaggedApi("com.android.internal.camera.flags.concert_mode") public final class ExtensionCaptureResult {
+    ctor public ExtensionCaptureResult();
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Boolean> EFV_AUTO_ZOOM;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<int[]> EFV_AUTO_ZOOM_PADDING_REGION;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> EFV_MAX_PADDING_ZOOM_FACTOR;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<int[]> EFV_PADDING_REGION;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> EFV_PADDING_ZOOM_FACTOR;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Float> EFV_ROTATE_VIEWPORT;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<java.lang.Integer> EFV_STABILIZATION_MODE;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.graphics.PointF[]> EFV_TARGET_COORDINATES;
+    field @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public static final android.hardware.camera2.CaptureResult.Key<android.util.Pair<java.lang.Integer,java.lang.Integer>> EFV_TRANSLATE_VIEWPORT;
+  }
+
   public class MultiResolutionImageReader implements java.lang.AutoCloseable {
     ctor public MultiResolutionImageReader(@NonNull java.util.Collection<android.hardware.camera2.params.MultiResolutionStreamInfo>, int, @IntRange(from=1) int);
     method public void close();
@@ -19940,11 +20020,14 @@
 
   public final class ExtensionSessionConfiguration {
     ctor public ExtensionSessionConfiguration(int, @NonNull java.util.List<android.hardware.camera2.params.OutputConfiguration>, @NonNull java.util.concurrent.Executor, @NonNull android.hardware.camera2.CameraExtensionSession.StateCallback);
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public void clearColorSpace();
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") @Nullable public android.graphics.ColorSpace getColorSpace();
     method @NonNull public java.util.concurrent.Executor getExecutor();
     method public int getExtension();
     method @NonNull public java.util.List<android.hardware.camera2.params.OutputConfiguration> getOutputConfigurations();
     method @Nullable public android.hardware.camera2.params.OutputConfiguration getPostviewOutputConfiguration();
     method @NonNull public android.hardware.camera2.CameraExtensionSession.StateCallback getStateCallback();
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public void setColorSpace(@NonNull android.graphics.ColorSpace.Named);
     method public void setPostviewOutputConfiguration(@Nullable android.hardware.camera2.params.OutputConfiguration);
   }
 
@@ -20646,6 +20729,7 @@
   @UiContext public class InputMethodService extends android.inputmethodservice.AbstractInputMethodService {
     ctor public InputMethodService();
     method @Deprecated public boolean enableHardwareAcceleration();
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public final void finishConnectionlessStylusHandwriting(@Nullable CharSequence);
     method public final void finishStylusHandwriting();
     method public int getBackDisposition();
     method public int getCandidatesHiddenVisibility();
@@ -20699,6 +20783,7 @@
     method public void onPrepareStylusHandwriting();
     method public boolean onShowInputRequested(int, boolean);
     method public void onStartCandidatesView(android.view.inputmethod.EditorInfo, boolean);
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public boolean onStartConnectionlessStylusHandwriting(int, @Nullable android.view.inputmethod.CursorAnchorInfo);
     method public void onStartInput(android.view.inputmethod.EditorInfo, boolean);
     method public void onStartInputView(android.view.inputmethod.EditorInfo, boolean);
     method public boolean onStartStylusHandwriting();
@@ -22475,6 +22560,7 @@
     method @NonNull public static android.view.Surface createPersistentInputSurface();
     method public int dequeueInputBuffer(long);
     method public int dequeueOutputBuffer(@NonNull android.media.MediaCodec.BufferInfo, long);
+    method @FlaggedApi("android.media.codec.null_output_surface") public void detachOutputSurface();
     method protected void finalize();
     method public void flush();
     method @NonNull public String getCanonicalName();
@@ -22498,6 +22584,7 @@
     method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
     method @FlaggedApi("com.android.media.codec.flags.large_audio_frame") public void queueInputBuffers(int, @NonNull java.util.ArrayDeque<android.media.MediaCodec.BufferInfo>);
     method public void queueSecureInputBuffer(int, int, @NonNull android.media.MediaCodec.CryptoInfo, long, int) throws android.media.MediaCodec.CryptoException;
+    method @FlaggedApi("com.android.media.codec.flags.large_audio_frame") public void queueSecureInputBuffers(int, @NonNull java.util.ArrayDeque<android.media.MediaCodec.BufferInfo>, @NonNull java.util.ArrayDeque<android.media.MediaCodec.CryptoInfo>);
     method public void release();
     method public void releaseOutputBuffer(int, boolean);
     method public void releaseOutputBuffer(int, long);
@@ -22522,6 +22609,7 @@
     field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
     field public static final int BUFFER_FLAG_PARTIAL_FRAME = 8; // 0x8
     field @Deprecated public static final int BUFFER_FLAG_SYNC_FRAME = 1; // 0x1
+    field @FlaggedApi("android.media.codec.null_output_surface") public static final int CONFIGURE_FLAG_DETACHED_SURFACE = 8; // 0x8
     field public static final int CONFIGURE_FLAG_ENCODE = 1; // 0x1
     field public static final int CONFIGURE_FLAG_USE_BLOCK_MODEL = 2; // 0x2
     field public static final int CONFIGURE_FLAG_USE_CRYPTO_ASYNC = 4; // 0x4
@@ -22534,6 +22622,8 @@
     field public static final String PARAMETER_KEY_HDR10_PLUS_INFO = "hdr10-plus-info";
     field public static final String PARAMETER_KEY_LOW_LATENCY = "low-latency";
     field public static final String PARAMETER_KEY_OFFSET_TIME = "time-offset-us";
+    field @FlaggedApi("android.media.codec.region_of_interest") public static final String PARAMETER_KEY_QP_OFFSET_MAP = "qp-offset-map";
+    field @FlaggedApi("android.media.codec.region_of_interest") public static final String PARAMETER_KEY_QP_OFFSET_RECTS = "qp-offset-rects";
     field public static final String PARAMETER_KEY_REQUEST_SYNC_FRAME = "request-sync";
     field public static final String PARAMETER_KEY_SUSPEND = "drop-input-frames";
     field public static final String PARAMETER_KEY_SUSPEND_TIME = "drop-start-time-us";
@@ -22662,7 +22752,6 @@
 
   public final class MediaCodec.QueueRequest {
     method public void queue();
-    method @FlaggedApi("com.android.media.codec.flags.large_audio_frame") @NonNull public android.media.MediaCodec.QueueRequest setBufferInfos(@NonNull java.util.ArrayDeque<android.media.MediaCodec.BufferInfo>);
     method @NonNull public android.media.MediaCodec.QueueRequest setByteBufferParameter(@NonNull String, @NonNull java.nio.ByteBuffer);
     method @NonNull public android.media.MediaCodec.QueueRequest setEncryptedLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int, @NonNull android.media.MediaCodec.CryptoInfo);
     method @NonNull public android.media.MediaCodec.QueueRequest setFlags(int);
@@ -22671,6 +22760,8 @@
     method @NonNull public android.media.MediaCodec.QueueRequest setIntegerParameter(@NonNull String, int);
     method @NonNull public android.media.MediaCodec.QueueRequest setLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, int, int);
     method @NonNull public android.media.MediaCodec.QueueRequest setLongParameter(@NonNull String, long);
+    method @FlaggedApi("com.android.media.codec.flags.large_audio_frame") @NonNull public android.media.MediaCodec.QueueRequest setMultiFrameEncryptedLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, @NonNull java.util.ArrayDeque<android.media.MediaCodec.BufferInfo>, @NonNull java.util.ArrayDeque<android.media.MediaCodec.CryptoInfo>);
+    method @FlaggedApi("com.android.media.codec.flags.large_audio_frame") @NonNull public android.media.MediaCodec.QueueRequest setMultiFrameLinearBlock(@NonNull android.media.MediaCodec.LinearBlock, @NonNull java.util.ArrayDeque<android.media.MediaCodec.BufferInfo>);
     method @NonNull public android.media.MediaCodec.QueueRequest setPresentationTimeUs(long);
     method @NonNull public android.media.MediaCodec.QueueRequest setStringParameter(@NonNull String, @NonNull String);
   }
@@ -22679,12 +22770,16 @@
     method @NonNull public String getCanonicalName();
     method public android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(String);
     method @NonNull public String getName();
+    method @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public int getSecurityModel();
     method public String[] getSupportedTypes();
     method public boolean isAlias();
     method public boolean isEncoder();
     method public boolean isHardwareAccelerated();
     method public boolean isSoftwareOnly();
     method public boolean isVendor();
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int SECURITY_MODEL_MEMORY_SAFE = 1; // 0x1
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int SECURITY_MODEL_SANDBOXED = 0; // 0x0
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int SECURITY_MODEL_TRUSTED_CONTENT_ONLY = 2; // 0x2
   }
 
   public static final class MediaCodecInfo.AudioCapabilities {
@@ -22765,6 +22860,7 @@
     field @Deprecated public static final int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
     field @Deprecated public static final int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
     field public static final String FEATURE_AdaptivePlayback = "adaptive-playback";
+    field @FlaggedApi("android.media.codec.null_output_surface") public static final String FEATURE_DetachedSurface = "detached-surface";
     field @FlaggedApi("android.media.codec.dynamic_color_aspects") public static final String FEATURE_DynamicColorAspects = "dynamic-color-aspects";
     field public static final String FEATURE_DynamicTimestamp = "dynamic-timestamp";
     field public static final String FEATURE_EncodingStatistics = "encoding-statistics";
@@ -22776,6 +22872,7 @@
     field public static final String FEATURE_MultipleFrames = "multiple-frames";
     field public static final String FEATURE_PartialFrame = "partial-frame";
     field public static final String FEATURE_QpBounds = "qp-bounds";
+    field @FlaggedApi("android.media.codec.region_of_interest") public static final String FEATURE_Roi = "region-of-interest";
     field public static final String FEATURE_SecurePlayback = "secure-playback";
     field public static final String FEATURE_TunneledPlayback = "tunneled-playback";
     field public int[] colorFormats;
@@ -23511,6 +23608,9 @@
     field public static final int COLOR_TRANSFER_LINEAR = 1; // 0x1
     field public static final int COLOR_TRANSFER_SDR_VIDEO = 3; // 0x3
     field public static final int COLOR_TRANSFER_ST2084 = 6; // 0x6
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int FLAG_SECURITY_MODEL_MEMORY_SAFE = 2; // 0x2
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int FLAG_SECURITY_MODEL_SANDBOXED = 1; // 0x1
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final int FLAG_SECURITY_MODEL_TRUSTED_CONTENT_ONLY = 4; // 0x4
     field public static final String KEY_AAC_DRC_ALBUM_MODE = "aac-drc-album-mode";
     field public static final String KEY_AAC_DRC_ATTENUATION_FACTOR = "aac-drc-cut-level";
     field public static final String KEY_AAC_DRC_BOOST_FACTOR = "aac-drc-boost-level";
@@ -23592,6 +23692,7 @@
     field public static final String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
     field public static final String KEY_ROTATION = "rotation-degrees";
     field public static final String KEY_SAMPLE_RATE = "sample-rate";
+    field @FlaggedApi("android.media.codec.in_process_sw_audio_codec") public static final String KEY_SECURITY_MODEL = "security-model";
     field public static final String KEY_SLICE_HEIGHT = "slice-height";
     field public static final String KEY_SLOW_MOTION_MARKERS = "slow-motion-markers";
     field public static final String KEY_STRIDE = "stride";
@@ -25904,8 +26005,11 @@
   @FlaggedApi("com.android.media.editing.flags.add_media_metrics_editing") public final class EditingEndedEvent extends android.media.metrics.Event implements android.os.Parcelable {
     method public int describeContents();
     method public int getErrorCode();
+    method @Nullable public String getExporterName();
+    method public float getFinalProgressPercent();
     method public int getFinalState();
     method @NonNull public java.util.List<android.media.metrics.MediaItemInfo> getInputMediaItemInfos();
+    method @Nullable public String getMuxerName();
     method public long getOperationTypes();
     method @Nullable public android.media.metrics.MediaItemInfo getOutputMediaItemInfo();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -25940,6 +26044,7 @@
     field public static final long OPERATION_TYPE_VIDEO_EDIT = 4L; // 0x4L
     field public static final long OPERATION_TYPE_VIDEO_TRANSCODE = 1L; // 0x1L
     field public static final long OPERATION_TYPE_VIDEO_TRANSMUX = 16L; // 0x10L
+    field public static final int PROGRESS_PERCENT_UNKNOWN = -1; // 0xffffffff
     field public static final int TIME_SINCE_CREATED_UNKNOWN = -1; // 0xffffffff
   }
 
@@ -25949,7 +26054,10 @@
     method @NonNull public android.media.metrics.EditingEndedEvent.Builder addOperationType(long);
     method @NonNull public android.media.metrics.EditingEndedEvent build();
     method @NonNull public android.media.metrics.EditingEndedEvent.Builder setErrorCode(int);
+    method @NonNull public android.media.metrics.EditingEndedEvent.Builder setExporterName(@NonNull String);
+    method @NonNull public android.media.metrics.EditingEndedEvent.Builder setFinalProgressPercent(@FloatRange(from=0, to=100) float);
     method @NonNull public android.media.metrics.EditingEndedEvent.Builder setMetricsBundle(@NonNull android.os.Bundle);
+    method @NonNull public android.media.metrics.EditingEndedEvent.Builder setMuxerName(@NonNull String);
     method @NonNull public android.media.metrics.EditingEndedEvent.Builder setOutputMediaItemInfo(@NonNull android.media.metrics.MediaItemInfo);
     method @NonNull public android.media.metrics.EditingEndedEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=android.media.metrics.EditingEndedEvent.TIME_SINCE_CREATED_UNKNOWN) long);
   }
@@ -26884,6 +26992,67 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SectionResponse> CREATOR;
   }
 
+  @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataInfo implements android.os.Parcelable {
+    ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int);
+    ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int, @NonNull String);
+    method public int describeContents();
+    method @NonNull public String getEncoding();
+    method public int getGroup();
+    method @NonNull public String getSignalingDataType();
+    method @NonNull public String getTable();
+    method public int getVersion();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final String CONTENT_ENCODING_BASE64 = "Base64";
+    field public static final String CONTENT_ENCODING_UTF_8 = "UTF-8";
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataInfo> CREATOR;
+    field public static final int LLS_NO_GROUP_ID = -1; // 0xffffffff
+  }
+
+  @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable {
+    ctor public SignalingDataRequest(int, int, int, @NonNull java.util.List<java.lang.String>);
+    method public int getGroup();
+    method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes();
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataRequest> CREATOR;
+    field public static final int SIGNALING_DATA_NO_GROUP_ID = -1; // 0xffffffff
+    field public static final String SIGNALING_METADATA_AEAT = "AEAT";
+    field public static final String SIGNALING_METADATA_AEI = "AEI";
+    field public static final String SIGNALING_METADATA_APD = "APD";
+    field public static final String SIGNALING_METADATA_ASD = "ASD";
+    field public static final String SIGNALING_METADATA_ASPD = "ASPD";
+    field public static final String SIGNALING_METADATA_CAD = "CAD";
+    field public static final String SIGNALING_METADATA_CDT = "CDT";
+    field public static final String SIGNALING_METADATA_CRIT = "CRIT";
+    field public static final String SIGNALING_METADATA_DCIT = "DCIT";
+    field public static final String SIGNALING_METADATA_DWD = "DWD";
+    field public static final String SIGNALING_METADATA_EMSG = "EMSG";
+    field public static final String SIGNALING_METADATA_EVTI = "EVTI";
+    field public static final String SIGNALING_METADATA_HELD = "HELD";
+    field public static final String SIGNALING_METADATA_IED = "IED";
+    field public static final String SIGNALING_METADATA_MPD = "MPD";
+    field public static final String SIGNALING_METADATA_MPIT = "MPIT";
+    field public static final String SIGNALING_METADATA_MPT = "MPT";
+    field public static final String SIGNALING_METADATA_OSN = "OSN";
+    field public static final String SIGNALING_METADATA_PAT = "PAT";
+    field public static final String SIGNALING_METADATA_RDT = "RDT";
+    field public static final String SIGNALING_METADATA_RRT = "RRT";
+    field public static final String SIGNALING_METADATA_RSAT = "RSAT";
+    field public static final String SIGNALING_METADATA_SLT = "SLT";
+    field public static final String SIGNALING_METADATA_SMT = "SMT";
+    field public static final String SIGNALING_METADATA_SSD = "SSD";
+    field public static final String SIGNALING_METADATA_STSID = "STSID";
+    field public static final String SIGNALING_METADATA_STT = "STT";
+    field public static final String SIGNALING_METADATA_USBD = "USBD";
+    field public static final String SIGNALING_METADATA_USD = "USD";
+    field public static final String SIGNALING_METADATA_VSPD = "VSPD";
+  }
+
+  @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataResponse extends android.media.tv.BroadcastInfoResponse implements android.os.Parcelable {
+    ctor public SignalingDataResponse(int, int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<android.media.tv.SignalingDataInfo>);
+    method @NonNull public java.util.List<android.media.tv.SignalingDataInfo> getSignalingDataInfoList();
+    method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes();
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataResponse> CREATOR;
+  }
+
   public final class StreamEventRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable {
     ctor public StreamEventRequest(int, int, @NonNull android.net.Uri, @NonNull String);
     method @NonNull public String getEventName();
@@ -27827,7 +27996,7 @@
 
 package android.media.tv.ad {
 
-  @FlaggedApi("android.media.tv.flags.enable_ad_service_fw") public class TvAdManager {
+  @FlaggedApi("android.media.tv.flags.enable_ad_service_fw") public final class TvAdManager {
     method @NonNull public java.util.List<android.media.tv.ad.TvAdServiceInfo> getTvAdServiceList();
     method public void registerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.ad.TvAdManager.TvAdServiceCallback);
     method public void sendAppLinkCommand(@NonNull String, @NonNull android.os.Bundle);
@@ -27838,6 +28007,14 @@
     field public static final String APP_LINK_KEY_COMMAND_TYPE = "command_type";
     field public static final String APP_LINK_KEY_PACKAGE_NAME = "package_name";
     field public static final String APP_LINK_KEY_SERVICE_ID = "service_id";
+    field public static final int ERROR_BLOCKED = 5; // 0x5
+    field public static final int ERROR_ENCRYPTED = 6; // 0x6
+    field public static final int ERROR_NONE = 0; // 0x0
+    field public static final int ERROR_NOT_SUPPORTED = 2; // 0x2
+    field public static final int ERROR_RESOURCE_UNAVAILABLE = 4; // 0x4
+    field public static final int ERROR_UNKNOWN = 1; // 0x1
+    field public static final int ERROR_UNKNOWN_CHANNEL = 7; // 0x7
+    field public static final int ERROR_WEAK_SIGNAL = 3; // 0x3
     field public static final String INTENT_KEY_AD_SERVICE_ID = "ad_service_id";
     field public static final String INTENT_KEY_CHANNEL_URI = "channel_uri";
     field public static final String INTENT_KEY_COMMAND_TYPE = "command_type";
@@ -27850,6 +28027,9 @@
     field public static final String SESSION_DATA_TYPE_AD_REQUEST = "ad_request";
     field public static final String SESSION_DATA_TYPE_BROADCAST_INFO_REQUEST = "broadcast_info_request";
     field public static final String SESSION_DATA_TYPE_REMOVE_BROADCAST_INFO_REQUEST = "remove_broadcast_info_request";
+    field public static final int SESSION_STATE_ERROR = 3; // 0x3
+    field public static final int SESSION_STATE_RUNNING = 2; // 0x2
+    field public static final int SESSION_STATE_STOPPED = 1; // 0x1
   }
 
   public abstract static class TvAdManager.TvAdServiceCallback {
@@ -27872,7 +28052,12 @@
     ctor public TvAdService.Session(@NonNull android.content.Context);
     method public boolean isMediaViewEnabled();
     method @CallSuper public void layoutSurface(int, int, int, int);
+    method @CallSuper public void notifySessionStateChanged(int, int);
     method @Nullable public android.view.View onCreateMediaView();
+    method public void onCurrentChannelUri(@Nullable android.net.Uri);
+    method public void onCurrentTvInputId(@Nullable String);
+    method public void onCurrentVideoBounds(@NonNull android.graphics.Rect);
+    method public void onError(@NonNull String, @NonNull android.os.Bundle);
     method public boolean onGenericMotionEvent(@NonNull android.view.MotionEvent);
     method public boolean onKeyDown(int, @Nullable android.view.KeyEvent);
     method public boolean onKeyLongPress(int, @Nullable android.view.KeyEvent);
@@ -27882,12 +28067,20 @@
     method public abstract void onRelease();
     method public void onResetAdService();
     method public abstract boolean onSetSurface(@Nullable android.view.Surface);
+    method public void onSigningResult(@NonNull String, @NonNull byte[]);
     method public void onStartAdService();
     method public void onStopAdService();
     method public void onSurfaceChanged(int, int, int);
     method public boolean onTouchEvent(@NonNull android.view.MotionEvent);
+    method public void onTrackInfoList(@NonNull java.util.List<android.media.tv.TvTrackInfo>);
     method public boolean onTrackballEvent(@NonNull android.view.MotionEvent);
     method public void onTvInputSessionData(@NonNull String, @NonNull android.os.Bundle);
+    method public void onTvMessage(int, @NonNull android.os.Bundle);
+    method @CallSuper public void requestCurrentChannelUri();
+    method @CallSuper public void requestCurrentTvInputId();
+    method @CallSuper public void requestCurrentVideoBounds();
+    method @CallSuper public void requestSigning(@NonNull String, @NonNull String, @NonNull String, @NonNull byte[]);
+    method @CallSuper public void requestTrackInfoList();
     method public void sendTvAdSessionData(@NonNull String, @NonNull android.os.Bundle);
     method @CallSuper public void setMediaViewEnabled(boolean);
   }
@@ -27906,9 +28099,12 @@
     ctor public TvAdView(@NonNull android.content.Context);
     ctor public TvAdView(@NonNull android.content.Context, @Nullable android.util.AttributeSet);
     ctor public TvAdView(@NonNull android.content.Context, @Nullable android.util.AttributeSet, int);
+    method public void clearCallback();
     method public void clearOnUnhandledInputEventListener();
     method public boolean dispatchUnhandledInputEvent(@NonNull android.view.InputEvent);
     method @Nullable public android.media.tv.ad.TvAdView.OnUnhandledInputEventListener getOnUnhandledInputEventListener();
+    method public void notifyError(@NonNull String, @NonNull android.os.Bundle);
+    method public void notifyTvMessage(@NonNull int, @NonNull android.os.Bundle);
     method public void onAttachedToWindow();
     method public void onDetachedFromWindow();
     method public void onLayout(boolean, int, int, int, int);
@@ -27918,16 +28114,34 @@
     method public void prepareAdService(@NonNull String, @NonNull String);
     method public void reset();
     method public void resetAdService();
+    method public void sendCurrentChannelUri(@Nullable android.net.Uri);
+    method public void sendCurrentTvInputId(@Nullable String);
+    method public void sendCurrentVideoBounds(@NonNull android.graphics.Rect);
+    method public void sendSigningResult(@NonNull String, @NonNull byte[]);
+    method public void sendTrackInfoList(@Nullable java.util.List<android.media.tv.TvTrackInfo>);
+    method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.ad.TvAdView.TvAdCallback);
     method public void setOnUnhandledInputEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.ad.TvAdView.OnUnhandledInputEventListener);
     method public boolean setTvView(@Nullable android.media.tv.TvView);
     method public void startAdService();
     method public void stopAdService();
+    field public static final String ERROR_KEY_ERROR_CODE = "error_code";
+    field public static final String ERROR_KEY_METHOD_NAME = "method_name";
   }
 
   public static interface TvAdView.OnUnhandledInputEventListener {
     method public boolean onUnhandledInputEvent(@NonNull android.view.InputEvent);
   }
 
+  public abstract static class TvAdView.TvAdCallback {
+    ctor public TvAdView.TvAdCallback();
+    method public void onRequestCurrentChannelUri(@NonNull String);
+    method public void onRequestCurrentTvInputId(@NonNull String);
+    method public void onRequestCurrentVideoBounds(@NonNull String);
+    method public void onRequestSigning(@NonNull String, @NonNull String, @NonNull String, @NonNull String, @NonNull byte[]);
+    method public void onRequestTrackInfoList(@NonNull String);
+    method public void onStateChanged(@NonNull String, int, int);
+  }
+
 }
 
 package android.media.tv.interactive {
@@ -33818,6 +34032,7 @@
     field public static final String DISALLOW_AIRPLANE_MODE = "no_airplane_mode";
     field public static final String DISALLOW_AMBIENT_DISPLAY = "no_ambient_display";
     field public static final String DISALLOW_APPS_CONTROL = "no_control_apps";
+    field @FlaggedApi("android.app.admin.flags.assist_content_user_restriction_enabled") public static final String DISALLOW_ASSIST_CONTENT = "no_assist_content";
     field public static final String DISALLOW_AUTOFILL = "no_autofill";
     field public static final String DISALLOW_BLUETOOTH = "no_bluetooth";
     field public static final String DISALLOW_BLUETOOTH_SHARING = "no_bluetooth_sharing";
@@ -33890,6 +34105,9 @@
     field public static final int USER_OPERATION_ERROR_MAX_USERS = 6; // 0x6
     field public static final int USER_OPERATION_ERROR_UNKNOWN = 1; // 0x1
     field public static final int USER_OPERATION_SUCCESS = 0; // 0x0
+    field @FlaggedApi("android.os.allow_private_profile") public static final String USER_TYPE_PROFILE_CLONE = "android.os.usertype.profile.CLONE";
+    field @FlaggedApi("android.os.allow_private_profile") public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
+    field @FlaggedApi("android.os.allow_private_profile") public static final String USER_TYPE_PROFILE_PRIVATE = "android.os.usertype.profile.PRIVATE";
   }
 
   public static class UserManager.UserOperationException extends java.lang.RuntimeException {
@@ -35501,6 +35719,7 @@
     ctor public CallLog.Calls();
     method public static String getLastOutgoingCall(android.content.Context);
     field public static final int ANSWERED_EXTERNALLY_TYPE = 7; // 0x7
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String ASSERTED_DISPLAY_NAME = "asserted_display_name";
     field public static final long AUTO_MISSED_EMERGENCY_CALL = 1L; // 0x1L
     field public static final long AUTO_MISSED_MAXIMUM_DIALING = 4L; // 0x4L
     field public static final long AUTO_MISSED_MAXIMUM_RINGING = 2L; // 0x2L
@@ -35547,6 +35766,7 @@
     field public static final int FEATURES_WIFI = 8; // 0x8
     field public static final String GEOCODED_LOCATION = "geocoded_location";
     field public static final int INCOMING_TYPE = 1; // 0x1
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String IS_BUSINESS_CALL = "is_business_call";
     field public static final String IS_READ = "is_read";
     field public static final String LAST_MODIFIED = "last_modified";
     field public static final String LIMIT_PARAM_KEY = "limit";
@@ -37055,6 +37275,7 @@
     field public static final String ACTION_APP_USAGE_SETTINGS = "android.settings.action.APP_USAGE_SETTINGS";
     field @FlaggedApi("android.app.modes_api") public static final String ACTION_AUTOMATIC_ZEN_RULE_SETTINGS = "android.settings.AUTOMATIC_ZEN_RULE_SETTINGS";
     field public static final String ACTION_AUTO_ROTATE_SETTINGS = "android.settings.AUTO_ROTATE_SETTINGS";
+    field @FlaggedApi("android.app.app_restrictions_api") public static final String ACTION_BACKGROUND_RESTRICTIONS_SETTINGS = "android.settings.BACKGROUND_RESTRICTIONS_SETTINGS";
     field public static final String ACTION_BATTERY_SAVER_SETTINGS = "android.settings.BATTERY_SAVER_SETTINGS";
     field public static final String ACTION_BIOMETRIC_ENROLL = "android.settings.BIOMETRIC_ENROLL";
     field public static final String ACTION_BLUETOOTH_SETTINGS = "android.settings.BLUETOOTH_SETTINGS";
@@ -39507,7 +39728,7 @@
     method @Nullable public java.util.Date getKeyValidityStart();
     method @NonNull public String getKeystoreAlias();
     method public int getMaxUsageCount();
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public java.util.Set<java.lang.String> getMgf1Digests();
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public java.util.Set<java.lang.String> getMgf1Digests();
     method public int getPurposes();
     method @NonNull public String[] getSignaturePaddings();
     method public int getUserAuthenticationType();
@@ -39515,7 +39736,7 @@
     method public boolean isDevicePropertiesAttestationIncluded();
     method @NonNull public boolean isDigestsSpecified();
     method public boolean isInvalidatedByBiometricEnrollment();
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public boolean isMgf1DigestsSpecified();
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public boolean isMgf1DigestsSpecified();
     method public boolean isRandomizedEncryptionRequired();
     method public boolean isStrongBoxBacked();
     method public boolean isUnlockedDeviceRequired();
@@ -39547,7 +39768,7 @@
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityForOriginationEnd(java.util.Date);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setKeyValidityStart(java.util.Date);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setMaxUsageCount(int);
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setMgf1Digests(@NonNull java.lang.String...);
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setMgf1Digests(@NonNull java.lang.String...);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setRandomizedEncryptionRequired(boolean);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setSignaturePaddings(java.lang.String...);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUnlockedDeviceRequired(boolean);
@@ -39652,14 +39873,14 @@
     method @Nullable public java.util.Date getKeyValidityForOriginationEnd();
     method @Nullable public java.util.Date getKeyValidityStart();
     method public int getMaxUsageCount();
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public java.util.Set<java.lang.String> getMgf1Digests();
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public java.util.Set<java.lang.String> getMgf1Digests();
     method public int getPurposes();
     method @NonNull public String[] getSignaturePaddings();
     method public int getUserAuthenticationType();
     method public int getUserAuthenticationValidityDurationSeconds();
     method public boolean isDigestsSpecified();
     method public boolean isInvalidatedByBiometricEnrollment();
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public boolean isMgf1DigestsSpecified();
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public boolean isMgf1DigestsSpecified();
     method public boolean isRandomizedEncryptionRequired();
     method public boolean isUnlockedDeviceRequired();
     method public boolean isUserAuthenticationRequired();
@@ -39681,7 +39902,7 @@
     method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityForOriginationEnd(java.util.Date);
     method @NonNull public android.security.keystore.KeyProtection.Builder setKeyValidityStart(java.util.Date);
     method @NonNull public android.security.keystore.KeyProtection.Builder setMaxUsageCount(int);
-    method @FlaggedApi("android.security.mgf1_digest_setter") @NonNull public android.security.keystore.KeyProtection.Builder setMgf1Digests(@Nullable java.lang.String...);
+    method @FlaggedApi("android.security.mgf1_digest_setter_v2") @NonNull public android.security.keystore.KeyProtection.Builder setMgf1Digests(@Nullable java.lang.String...);
     method @NonNull public android.security.keystore.KeyProtection.Builder setRandomizedEncryptionRequired(boolean);
     method @NonNull public android.security.keystore.KeyProtection.Builder setSignaturePaddings(java.lang.String...);
     method @NonNull public android.security.keystore.KeyProtection.Builder setUnlockedDeviceRequired(boolean);
@@ -40246,6 +40467,21 @@
 
 package android.service.chooser {
 
+  @FlaggedApi("android.service.chooser.chooser_payload_toggling") public interface AdditionalContentContract {
+  }
+
+  public static interface AdditionalContentContract.Columns {
+    field public static final String URI = "uri";
+  }
+
+  public static interface AdditionalContentContract.CursorExtraKeys {
+    field public static final String POSITION = "position";
+  }
+
+  public static interface AdditionalContentContract.MethodNames {
+    field public static final String ON_SELECTION_CHANGED = "onSelectionChanged";
+  }
+
   public final class ChooserAction implements android.os.Parcelable {
     method public int describeContents();
     method @NonNull public android.app.PendingIntent getAction();
@@ -40260,6 +40496,19 @@
     method @NonNull public android.service.chooser.ChooserAction build();
   }
 
+  @FlaggedApi("android.service.chooser.enable_chooser_result") public final class ChooserResult implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public android.content.ComponentName getSelectedComponent();
+    method public int getType();
+    method public boolean isShortcut();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int CHOOSER_RESULT_COPY = 1; // 0x1
+    field public static final int CHOOSER_RESULT_EDIT = 2; // 0x2
+    field public static final int CHOOSER_RESULT_SELECTED_COMPONENT = 0; // 0x0
+    field public static final int CHOOSER_RESULT_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserResult> CREATOR;
+  }
+
   @Deprecated public final class ChooserTarget implements android.os.Parcelable {
     ctor @Deprecated public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
     method @Deprecated public int describeContents();
@@ -42024,8 +42273,10 @@
     field @Deprecated public static final String AVAILABLE_PHONE_ACCOUNTS = "selectPhoneAccountAccounts";
     field public static final String EVENT_CLEAR_DIAGNOSTIC_MESSAGE = "android.telecom.event.CLEAR_DIAGNOSTIC_MESSAGE";
     field public static final String EVENT_DISPLAY_DIAGNOSTIC_MESSAGE = "android.telecom.event.DISPLAY_DIAGNOSTIC_MESSAGE";
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String EXTRA_ASSERTED_DISPLAY_NAME = "android.telecom.extra.ASSERTED_DISPLAY_NAME";
     field public static final String EXTRA_DIAGNOSTIC_MESSAGE = "android.telecom.extra.DIAGNOSTIC_MESSAGE";
     field public static final String EXTRA_DIAGNOSTIC_MESSAGE_ID = "android.telecom.extra.DIAGNOSTIC_MESSAGE_ID";
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String EXTRA_IS_BUSINESS_CALL = "android.telecom.extra.IS_BUSINESS_CALL";
     field public static final String EXTRA_IS_SUPPRESSED_BY_DO_NOT_DISTURB = "android.telecom.extra.IS_SUPPRESSED_BY_DO_NOT_DISTURB";
     field public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS";
     field public static final String EXTRA_SILENT_RINGING_REQUESTED = "android.telecom.extra.SILENT_RINGING_REQUESTED";
@@ -42168,6 +42419,7 @@
     field public static final int SUPPORTS_SET_INACTIVE = 2; // 0x2
     field public static final int SUPPORTS_STREAM = 4; // 0x4
     field public static final int SUPPORTS_TRANSFER = 8; // 0x8
+    field @FlaggedApi("com.android.server.telecom.flags.transactional_video_state") public static final int SUPPORTS_VIDEO_CALLING = 16; // 0x10
     field public static final int VIDEO_CALL = 2; // 0x2
   }
 
@@ -42203,6 +42455,7 @@
     method @NonNull public android.os.ParcelUuid getCallId();
     method public void requestCallEndpointChange(@NonNull android.telecom.CallEndpoint, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
     method @FlaggedApi("com.android.server.telecom.flags.set_mute_state") public void requestMuteState(boolean, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
+    method @FlaggedApi("com.android.server.telecom.flags.transactional_video_state") public void requestVideoState(int, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
     method public void sendEvent(@NonNull String, @NonNull android.os.Bundle);
     method public void setActive(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
     method public void setInactive(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<java.lang.Void,android.telecom.CallException>);
@@ -42251,6 +42504,7 @@
     method public void onCallStreamingFailed(int);
     method public void onEvent(@NonNull String, @NonNull android.os.Bundle);
     method public void onMuteStateChanged(boolean);
+    method @FlaggedApi("com.android.server.telecom.flags.transactional_video_state") public default void onVideoStateChanged(int);
   }
 
   public final class CallException extends java.lang.RuntimeException implements android.os.Parcelable {
@@ -43653,6 +43907,7 @@
     field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
     field public static final String KEY_SUBSCRIPTION_GROUP_UUID_STRING = "subscription_group_uuid_string";
     field public static final String KEY_SUPPORTED_PREMIUM_CAPABILITIES_INT_ARRAY = "supported_premium_capabilities_int_array";
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String KEY_SUPPORTS_BUSINESS_CALL_COMPOSER_BOOL = "supports_business_call_composer_bool";
     field public static final String KEY_SUPPORTS_CALL_COMPOSER_BOOL = "supports_call_composer_bool";
     field public static final String KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL = "supports_device_to_device_communication_using_dtmf_bool";
     field public static final String KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL = "supports_device_to_device_communication_using_rtp_bool";
@@ -45553,6 +45808,7 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public java.util.List<android.telephony.SubscriptionInfo> getSubscriptionsInGroup(@NonNull android.os.ParcelUuid);
     method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isActiveSubscriptionId(int);
     method public boolean isNetworkRoaming(int);
+    method @FlaggedApi("com.android.internal.telephony.flags.subscription_user_association_query") @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isSubscriptionAssociatedWithUser(int);
     method public static boolean isUsableSubscriptionId(int);
     method public static boolean isValidSubscriptionId(int);
     method public void removeOnOpportunisticSubscriptionsChangedListener(@NonNull android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
@@ -45918,6 +46174,7 @@
     field public static final int AUTHTYPE_EAP_SIM = 128; // 0x80
     field public static final int AUTHTYPE_GBA_BOOTSTRAP = 132; // 0x84
     field public static final int AUTHTYPE_GBA_NAF_KEY_EXTERNAL = 133; // 0x85
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final int CALL_COMPOSER_STATUS_BUSINESS_ONLY = 2; // 0x2
     field public static final int CALL_COMPOSER_STATUS_OFF = 0; // 0x0
     field public static final int CALL_COMPOSER_STATUS_ON = 1; // 0x1
     field public static final int CALL_STATE_IDLE = 0; // 0x0
@@ -46470,8 +46727,8 @@
 
   public class EuiccManager {
     method @NonNull public android.telephony.euicc.EuiccManager createForCardId(int);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void deleteSubscription(int, android.app.PendingIntent);
-    method @RequiresPermission("android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS") public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
+    method @RequiresPermission(anyOf={"android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", android.Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS}) public void deleteSubscription(int, android.app.PendingIntent);
+    method @RequiresPermission(anyOf={"android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS", android.Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS}) public void downloadSubscription(android.telephony.euicc.DownloadableSubscription, boolean, android.app.PendingIntent);
     method @FlaggedApi("com.android.internal.telephony.flags.esim_available_memory") @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, "android.permission.READ_PRIVILEGED_PHONE_STATE", "carrier privileges"}) public long getAvailableMemoryInBytes();
     method @Nullable public String getEid();
     method @Nullable public android.telephony.euicc.EuiccInfo getEuiccInfo();
@@ -46954,6 +47211,7 @@
   public static class MmTelFeature.MmTelCapabilities {
     method public final boolean isCapable(int);
     field public static final int CAPABILITY_TYPE_CALL_COMPOSER = 16; // 0x10
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final int CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY = 32; // 0x20
     field public static final int CAPABILITY_TYPE_SMS = 8; // 0x8
     field public static final int CAPABILITY_TYPE_UT = 4; // 0x4
     field public static final int CAPABILITY_TYPE_VIDEO = 2; // 0x2
@@ -47300,6 +47558,7 @@
     method @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") @NonNull public android.text.DynamicLayout.Builder setLineBreakConfig(@NonNull android.graphics.text.LineBreakConfig);
     method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
     method @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") @NonNull public android.text.DynamicLayout.Builder setMinimumFontMetrics(@Nullable android.graphics.Paint.FontMetrics);
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.DynamicLayout.Builder setShiftDrawingOffsetForStartOverhang(boolean);
     method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
     method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.DynamicLayout.Builder setUseBoundsForWidth(boolean);
     method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean);
@@ -47503,6 +47762,7 @@
     method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @Nullable public final int[] getRightIndents();
     method public float getSecondaryHorizontal(int);
     method public void getSelectionPath(int, int, android.graphics.Path);
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public boolean getShiftDrawingOffsetForStartOverhang();
     method public final float getSpacingAdd();
     method public final float getSpacingMultiplier();
     method @NonNull public final CharSequence getText();
@@ -47559,6 +47819,7 @@
     method @NonNull public android.text.Layout.Builder setMaxLines(@IntRange(from=1) int);
     method @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") @NonNull public android.text.Layout.Builder setMinimumFontMetrics(@Nullable android.graphics.Paint.FontMetrics);
     method @NonNull public android.text.Layout.Builder setRightIndents(@Nullable int[]);
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.Layout.Builder setShiftDrawingOffsetForStartOverhang(boolean);
     method @NonNull public android.text.Layout.Builder setTextDirectionHeuristic(@NonNull android.text.TextDirectionHeuristic);
     method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.Layout.Builder setUseBoundsForWidth(boolean);
   }
@@ -47830,6 +48091,7 @@
     method @NonNull public android.text.StaticLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float);
     method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int);
     method @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") @NonNull public android.text.StaticLayout.Builder setMinimumFontMetrics(@Nullable android.graphics.Paint.FontMetrics);
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.StaticLayout.Builder setShiftDrawingOffsetForStartOverhang(boolean);
     method public android.text.StaticLayout.Builder setText(CharSequence);
     method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic);
     method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.StaticLayout.Builder setUseBoundsForWidth(boolean);
@@ -50335,11 +50597,10 @@
     method public boolean applyTransactionOnDraw(@NonNull android.view.SurfaceControl.Transaction);
     method @Nullable public android.view.SurfaceControl.Transaction buildReparentTransaction(@NonNull android.view.SurfaceControl);
     method public default int getBufferTransformHint();
-    method @FlaggedApi("com.android.window.flags.get_host_token_api") @Nullable public default android.os.IBinder getHostToken();
+    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken getInputTransferToken();
     method public default void removeOnBufferTransformHintChangedListener(@NonNull android.view.AttachedSurfaceControl.OnBufferTransformHintChangedListener);
     method public default void setChildBoundingInsets(@NonNull android.graphics.Rect);
     method public default void setTouchableRegion(@Nullable android.graphics.Region);
-    method @FlaggedApi("com.android.window.flags.transfer_gesture_to_embedded") public default boolean transferHostTouchGestureToEmbedded(@NonNull android.view.SurfaceControlViewHost.SurfacePackage);
   }
 
   @UiThread public static interface AttachedSurfaceControl.OnBufferTransformHintChangedListener {
@@ -52045,6 +52306,7 @@
 
   public class SurfaceControlViewHost {
     ctor public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.os.IBinder);
+    ctor @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public SurfaceControlViewHost(@NonNull android.content.Context, @NonNull android.view.Display, @Nullable android.window.InputTransferToken);
     method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage getSurfacePackage();
     method @Nullable public android.view.View getView();
     method public void relayout(int, int);
@@ -52056,6 +52318,7 @@
   public static final class SurfaceControlViewHost.SurfacePackage implements android.os.Parcelable {
     ctor public SurfaceControlViewHost.SurfacePackage(@NonNull android.view.SurfaceControlViewHost.SurfacePackage);
     method public int describeContents();
+    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @Nullable public android.window.InputTransferToken getInputTransferToken();
     method @NonNull public android.view.SurfaceControl getSurfaceControl();
     method public void notifyConfigurationChanged(@NonNull android.content.res.Configuration);
     method public void notifyDetachedFromWindow();
@@ -52246,6 +52509,7 @@
     method public final void cancelPendingInputEvents();
     method public boolean checkInputConnectionProxy(android.view.View);
     method public void clearAnimation();
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") public void clearCredentialManagerRequest();
     method public void clearFocus();
     method public void clearViewTranslationCallback();
     method public static int combineMeasuredStates(int, int);
@@ -52355,6 +52619,8 @@
     method @FlaggedApi("android.view.flags.sensitive_content_app_protection_api") public final int getContentSensitivity();
     method @UiContext public final android.content.Context getContext();
     method protected android.view.ContextMenu.ContextMenuInfo getContextMenuInfo();
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") @Nullable public final android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.GetCredentialException> getCredentialManagerCallback();
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") @Nullable public final android.credentials.GetCredentialRequest getCredentialManagerRequest();
     method public final boolean getDefaultFocusHighlightEnabled();
     method public static int getDefaultSize(int, int);
     method public android.view.Display getDisplay();
@@ -52739,6 +53005,7 @@
     method public void setContentDescription(CharSequence);
     method @FlaggedApi("android.view.flags.sensitive_content_app_protection_api") public final void setContentSensitivity(int);
     method public void setContextClickable(boolean);
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") public void setCredentialManagerRequest(@NonNull android.credentials.GetCredentialRequest, @NonNull android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.GetCredentialException>);
     method public void setDefaultFocusHighlightEnabled(boolean);
     method @Deprecated public void setDrawingCacheBackgroundColor(@ColorInt int);
     method @Deprecated public void setDrawingCacheEnabled(boolean);
@@ -53012,7 +53279,7 @@
     field protected static final int[] PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET;
     field protected static final int[] PRESSED_STATE_SET;
     field protected static final int[] PRESSED_WINDOW_FOCUSED_STATE_SET;
-    field @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") public static final float REQUESTED_FRAME_RATE_CATEGORY_DEFAULT = 0.0f;
+    field @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") public static final float REQUESTED_FRAME_RATE_CATEGORY_DEFAULT = (0.0f/0.0f);
     field @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") public static final float REQUESTED_FRAME_RATE_CATEGORY_HIGH = -4.0f;
     field @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") public static final float REQUESTED_FRAME_RATE_CATEGORY_LOW = -2.0f;
     field @FlaggedApi("android.view.flags.toolkit_set_frame_rate_read_only") public static final float REQUESTED_FRAME_RATE_CATEGORY_NORMAL = -3.0f;
@@ -53617,8 +53884,11 @@
     method public abstract int addChildCount(int);
     method public abstract void asyncCommit();
     method public abstract android.view.ViewStructure asyncNewChild(int);
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") public void clearCredentialManagerRequest();
     method @Nullable public abstract android.view.autofill.AutofillId getAutofillId();
     method public abstract int getChildCount();
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") @Nullable public android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.GetCredentialException> getCredentialManagerCallback();
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") @Nullable public android.credentials.GetCredentialRequest getCredentialManagerRequest();
     method public abstract android.os.Bundle getExtras();
     method public abstract CharSequence getHint();
     method public abstract CharSequence getText();
@@ -53643,6 +53913,7 @@
     method public abstract void setClickable(boolean);
     method public abstract void setContentDescription(CharSequence);
     method public abstract void setContextClickable(boolean);
+    method @FlaggedApi("android.service.autofill.autofill_credman_dev_integration") public void setCredentialManagerRequest(@NonNull android.credentials.GetCredentialRequest, @NonNull android.os.OutcomeReceiver<android.credentials.GetCredentialResponse,android.credentials.GetCredentialException>);
     method public abstract void setDataIsSensitive(boolean);
     method public abstract void setDimens(int, int, int, int, int, int);
     method public abstract void setElevation(float);
@@ -54023,8 +54294,11 @@
     method @Deprecated @NonNull public android.view.WindowInsets consumeDisplayCutout();
     method @Deprecated @NonNull public android.view.WindowInsets consumeStableInsets();
     method @Deprecated @NonNull public android.view.WindowInsets consumeSystemWindowInsets();
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public java.util.List<android.graphics.Rect> getBoundingRects(int);
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public java.util.List<android.graphics.Rect> getBoundingRectsIgnoringVisibility(int);
     method @Nullable public android.view.DisplayCutout getDisplayCutout();
     method @Nullable public android.view.DisplayShape getDisplayShape();
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public android.util.Size getFrame();
     method @NonNull public android.graphics.Insets getInsets(int);
     method @NonNull public android.graphics.Insets getInsetsIgnoringVisibility(int);
     method @Deprecated @NonNull public android.graphics.Insets getMandatorySystemGestureInsets();
@@ -54059,8 +54333,11 @@
     ctor public WindowInsets.Builder();
     ctor public WindowInsets.Builder(@NonNull android.view.WindowInsets);
     method @NonNull public android.view.WindowInsets build();
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public android.view.WindowInsets.Builder setBoundingRects(int, @NonNull java.util.List<android.graphics.Rect>);
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public android.view.WindowInsets.Builder setBoundingRectsIgnoringVisibility(int, @NonNull java.util.List<android.graphics.Rect>);
     method @NonNull public android.view.WindowInsets.Builder setDisplayCutout(@Nullable android.view.DisplayCutout);
     method @NonNull public android.view.WindowInsets.Builder setDisplayShape(@NonNull android.view.DisplayShape);
+    method @FlaggedApi("android.view.flags.customizable_window_headers") @NonNull public android.view.WindowInsets.Builder setFrame(int, int);
     method @NonNull public android.view.WindowInsets.Builder setInsets(int, @NonNull android.graphics.Insets);
     method @NonNull public android.view.WindowInsets.Builder setInsetsIgnoringVisibility(int, @NonNull android.graphics.Insets) throws java.lang.IllegalArgumentException;
     method @Deprecated @NonNull public android.view.WindowInsets.Builder setMandatorySystemGestureInsets(@NonNull android.graphics.Insets);
@@ -54154,8 +54431,10 @@
     method public void setSystemBarsAppearance(int, int);
     method public void setSystemBarsBehavior(int);
     method public void show(int);
+    field @FlaggedApi("android.view.flags.customizable_window_headers") public static final int APPEARANCE_LIGHT_CAPTION_BARS = 256; // 0x100
     field public static final int APPEARANCE_LIGHT_NAVIGATION_BARS = 16; // 0x10
     field public static final int APPEARANCE_LIGHT_STATUS_BARS = 8; // 0x8
+    field @FlaggedApi("android.view.flags.customizable_window_headers") public static final int APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND = 128; // 0x80
     field public static final int BEHAVIOR_DEFAULT = 1; // 0x1
     field @Deprecated public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
     field @Deprecated public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
@@ -54175,15 +54454,17 @@
     method @Deprecated public android.view.Display getDefaultDisplay();
     method @NonNull public default android.view.WindowMetrics getMaximumWindowMetrics();
     method public default boolean isCrossWindowBlurEnabled();
-    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public default void registerBatchedSurfaceControlInputReceiver(int, @NonNull android.os.IBinder, @NonNull android.view.SurfaceControl, @NonNull android.view.Choreographer, @NonNull android.view.SurfaceControlInputReceiver);
+    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerBatchedSurfaceControlInputReceiver(int, @NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.view.Choreographer, @NonNull android.view.SurfaceControlInputReceiver);
     method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public default void registerTrustedPresentationListener(@NonNull android.os.IBinder, @NonNull android.window.TrustedPresentationThresholds, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public default void registerUnbatchedSurfaceControlInputReceiver(int, @NonNull android.os.IBinder, @NonNull android.view.SurfaceControl, @NonNull android.os.Looper, @NonNull android.view.SurfaceControlInputReceiver);
+    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") @NonNull public default android.window.InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int, @NonNull android.window.InputTransferToken, @NonNull android.view.SurfaceControl, @NonNull android.os.Looper, @NonNull android.view.SurfaceControlInputReceiver);
     method public default void removeCrossWindowBlurEnabledListener(@NonNull java.util.function.Consumer<java.lang.Boolean>);
     method public default void removeProposedRotationListener(@NonNull java.util.function.IntConsumer);
     method @FlaggedApi("com.android.window.flags.screen_recording_callbacks") @RequiresPermission(android.Manifest.permission.DETECT_SCREEN_RECORDING) public default void removeScreenRecordingCallback(@NonNull java.util.function.Consumer<java.lang.Integer>);
     method public void removeViewImmediate(android.view.View);
+    method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public default boolean transferTouchGesture(@NonNull android.window.InputTransferToken, @NonNull android.window.InputTransferToken);
     method @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public default void unregisterSurfaceControlInputReceiver(@NonNull android.view.SurfaceControl);
     method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public default void unregisterTrustedPresentationListener(@NonNull java.util.function.Consumer<java.lang.Boolean>);
+    field @FlaggedApi("com.android.window.flags.cover_display_opt_in") public static final int COMPAT_SMALL_COVER_SCREEN_OPT_IN = 1; // 0x1
     field public static final String PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE = "android.window.PROPERTY_ACTIVITY_EMBEDDING_ALLOW_SYSTEM_OVERRIDE";
     field public static final String PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED = "android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED";
     field @FlaggedApi("com.android.window.flags.untrusted_embedding_state_sharing") public static final String PROPERTY_ALLOW_UNTRUSTED_ACTIVITY_EMBEDDING_STATE_SHARING = "android.window.PROPERTY_ALLOW_UNTRUSTED_ACTIVITY_EMBEDDING_STATE_SHARING";
@@ -54196,6 +54477,7 @@
     field public static final String PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE";
     field @FlaggedApi("com.android.window.flags.app_compat_properties_api") public static final String PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES = "android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES";
     field public static final String PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS = "android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS";
+    field @FlaggedApi("com.android.window.flags.cover_display_opt_in") public static final String PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN = "android.window.PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN";
     field @FlaggedApi("com.android.window.flags.app_compat_properties_api") public static final String PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE";
     field @FlaggedApi("com.android.window.flags.app_compat_properties_api") public static final String PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE = "android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE";
     field public static final String PROPERTY_COMPAT_ENABLE_FAKE_FOCUS = "android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS";
@@ -55008,6 +55290,7 @@
     field public static final int TYPE_MAGNIFICATION_OVERLAY = 6; // 0x6
     field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
     field public static final int TYPE_SYSTEM = 3; // 0x3
+    field @FlaggedApi("android.view.accessibility.add_type_window_control") public static final int TYPE_WINDOW_CONTROL = 7; // 0x7
   }
 
   public class CaptioningManager {
@@ -55622,6 +55905,14 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.view.inputmethod.CompletionInfo> CREATOR;
   }
 
+  @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public interface ConnectionlessHandwritingCallback {
+    method public void onError(int);
+    method public void onResult(@NonNull CharSequence);
+    field public static final int CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED = 0; // 0x0
+    field public static final int CONNECTIONLESS_HANDWRITING_ERROR_OTHER = 2; // 0x2
+    field public static final int CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED = 1; // 0x1
+  }
+
   public final class CorrectionInfo implements android.os.Parcelable {
     ctor public CorrectionInfo(int, CharSequence, CharSequence);
     method public int describeContents();
@@ -56033,6 +56324,7 @@
     method public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
     method public CharSequence loadLabel(android.content.pm.PackageManager);
     method public boolean shouldShowInInputMethodPicker();
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public boolean supportsConnectionlessStylusHandwriting();
     method public boolean supportsStylusHandwriting();
     method public boolean suppressesSpellChecker();
     method public void writeToParcel(android.os.Parcel, int);
@@ -56062,6 +56354,7 @@
     method public boolean isAcceptingText();
     method public boolean isActive(android.view.View);
     method public boolean isActive();
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public boolean isConnectionlessStylusHandwritingAvailable();
     method public boolean isFullscreenMode();
     method public boolean isInputMethodSuppressingSpellChecker();
     method public boolean isStylusHandwritingAvailable();
@@ -56082,6 +56375,9 @@
     method public boolean showSoftInput(android.view.View, int, android.os.ResultReceiver);
     method @Deprecated public void showSoftInputFromInputMethod(android.os.IBinder, int);
     method @Deprecated public void showStatusIcon(android.os.IBinder, String, @DrawableRes int);
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public void startConnectionlessStylusHandwriting(@NonNull android.view.View, @Nullable android.view.inputmethod.CursorAnchorInfo, @NonNull java.util.concurrent.Executor, @NonNull android.view.inputmethod.ConnectionlessHandwritingCallback);
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public void startConnectionlessStylusHandwritingForDelegation(@NonNull android.view.View, @Nullable android.view.inputmethod.CursorAnchorInfo, @NonNull java.util.concurrent.Executor, @NonNull android.view.inputmethod.ConnectionlessHandwritingCallback);
+    method @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public void startConnectionlessStylusHandwritingForDelegation(@NonNull android.view.View, @Nullable android.view.inputmethod.CursorAnchorInfo, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.view.inputmethod.ConnectionlessHandwritingCallback);
     method public void startStylusHandwriting(@NonNull android.view.View);
     method @Deprecated public boolean switchToLastInputMethod(android.os.IBinder);
     method @Deprecated public boolean switchToNextInputMethod(android.os.IBinder, boolean);
@@ -60615,6 +60911,7 @@
     method public float getShadowDx();
     method public float getShadowDy();
     method public float getShadowRadius();
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public boolean getShiftDrawingOffsetForStartOverhang();
     method public final boolean getShowSoftInputOnFocus();
     method public CharSequence getText();
     method @NonNull public android.view.textclassifier.TextClassifier getTextClassifier();
@@ -60751,6 +61048,7 @@
     method public void setSearchResultHighlights(@Nullable int...);
     method public void setSelectAllOnFocus(boolean);
     method public void setShadowLayer(float, float, float, int);
+    method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public void setShiftDrawingOffsetForStartOverhang(boolean);
     method public final void setShowSoftInputOnFocus(boolean);
     method public void setSingleLine();
     method public void setSingleLine(boolean);
@@ -61145,6 +61443,12 @@
     field public static final int EDGE_RIGHT = 1; // 0x1
   }
 
+  @FlaggedApi("com.android.window.flags.surface_control_input_receiver") public final class InputTransferToken implements android.os.Parcelable {
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.window.InputTransferToken> CREATOR;
+  }
+
   public interface OnBackAnimationCallback extends android.window.OnBackInvokedCallback {
     method public default void onBackCancelled();
     method public default void onBackProgressed(@NonNull android.window.BackEvent);
@@ -61192,11 +61496,11 @@
   @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public final class TrustedPresentationThresholds implements android.os.Parcelable {
     ctor @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public TrustedPresentationThresholds(@FloatRange(from=0.0f, fromInclusive=false, to=1.0f) float, @FloatRange(from=0.0f, fromInclusive=false, to=1.0f) float, @IntRange(from=1) int);
     method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public int describeContents();
+    method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @FloatRange(from=0.0f, fromInclusive=false, to=1.0f) public float getMinAlpha();
+    method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @FloatRange(from=0.0f, fromInclusive=false, to=1.0f) public float getMinFractionRendered();
+    method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @IntRange(from=1) public int getStabilityRequirementMillis();
     method @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") public void writeToParcel(@NonNull android.os.Parcel, int);
     field @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @NonNull public static final android.os.Parcelable.Creator<android.window.TrustedPresentationThresholds> CREATOR;
-    field @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @FloatRange(from=0.0f, fromInclusive=false, to=1.0f) public final float minAlpha;
-    field @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @FloatRange(from=0.0f, fromInclusive=false, to=1.0f) public final float minFractionRendered;
-    field @FlaggedApi("com.android.window.flags.trusted_presentation_listener_for_window") @IntRange(from=1) public final int stabilityRequirementMs;
   }
 
 }
diff --git a/core/api/lint-baseline.txt b/core/api/lint-baseline.txt
index b36b963f..1b0da05 100644
--- a/core/api/lint-baseline.txt
+++ b/core/api/lint-baseline.txt
@@ -245,6 +245,14 @@
     Field 'ACTION_NOTIFY_CARRIER_SETUP_INCOMPLETE' is missing @BroadcastBehavior
 
 
+CompileTimeConstant: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_GIMBAL:
+    All constants must be defined at compile time: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_GIMBAL
+CompileTimeConstant: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED:
+    All constants must be defined at compile time: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED
+CompileTimeConstant: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_OFF:
+    All constants must be defined at compile time: android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_OFF
+
+
 DeprecationMismatch: android.accounts.AccountManager#newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle):
     Method android.accounts.AccountManager.newChooseAccountIntent(android.accounts.Account, java.util.ArrayList<android.accounts.Account>, String[], boolean, String, String, String[], android.os.Bundle): @Deprecated annotation (present) and @deprecated doc tag (not present) do not match
 DeprecationMismatch: android.app.Activity#enterPictureInPictureMode():
@@ -1087,6 +1095,14 @@
     Method 'setGeolocationEnabled' documentation mentions permissions without declaring @RequiresPermission
 
 
+StaticUtils: ExtensionCaptureRequest:
+    Fully-static utility classes must not have constructor
+StaticUtils: android.hardware.camera2.ExtensionCaptureRequest:
+    Fully-static utility classes must not have constructor
+StaticUtils: android.hardware.camera2.ExtensionCaptureResult:
+    Fully-static utility classes must not have constructor
+
+
 Todo: android.hardware.camera2.params.StreamConfigurationMap:
     Documentation mentions 'TODO'
 Todo: android.provider.ContactsContract.RawContacts#newEntityIterator(android.database.Cursor):
@@ -1445,6 +1461,15 @@
     New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getItalicOverride(int)
 UnflaggedApi: android.graphics.text.PositionedGlyphs#getWeightOverride(int):
     New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getWeightOverride(int)
+
+UnflaggedApi: android.hardware.camera2.ExtensionCaptureRequest:
+    New API must be flagged with @FlaggedApi: class android.hardware.camera2.ExtensionCaptureRequest
+UnflaggedApi: android.hardware.camera2.ExtensionCaptureRequest#ExtensionCaptureRequest():
+    New API must be flagged with @FlaggedApi: constructor android.hardware.camera2.ExtensionCaptureRequest()
+UnflaggedApi: android.hardware.camera2.ExtensionCaptureResult:
+    New API must be flagged with @FlaggedApi: class android.hardware.camera2.ExtensionCaptureResult
+UnflaggedApi: android.hardware.camera2.ExtensionCaptureResult#ExtensionCaptureResult():
+    New API must be flagged with @FlaggedApi: constructor android.hardware.camera2.ExtensionCaptureResult()
 UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_CAR:
     New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_CAR
 UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_COMPUTER:
diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt
index 1273da7..7c4df28 100644
--- a/core/api/module-lib-current.txt
+++ b/core/api/module-lib-current.txt
@@ -102,6 +102,7 @@
     method @NonNull public android.os.UserHandle getUser();
     field public static final String PAC_PROXY_SERVICE = "pac_proxy";
     field public static final String TEST_NETWORK_SERVICE = "test_network";
+    field @FlaggedApi("android.webkit.update_service_ipc_wrapper") public static final String WEBVIEW_UPDATE_SERVICE = "webviewupdate";
   }
 
   public class Intent implements java.lang.Cloneable android.os.Parcelable {
@@ -317,17 +318,6 @@
 
 }
 
-package android.net.wifi {
-
-  public final class WifiKeystore {
-    method @NonNull public static byte[] get(@NonNull String);
-    method @NonNull public static String[] list(@NonNull String);
-    method public static boolean put(@NonNull String, @NonNull byte[]);
-    method public static boolean remove(@NonNull String);
-  }
-
-}
-
 package android.nfc {
 
   public class NfcServiceManager {
@@ -412,6 +402,19 @@
     field public static final int VPN_UID = 1016; // 0x3f8
   }
 
+  @FlaggedApi("android.os.telemetry_apis_framework_initialization") public class ProfilingServiceManager {
+    method @NonNull public android.os.ProfilingServiceManager.ServiceRegisterer getProfilingServiceRegisterer();
+  }
+
+  public static class ProfilingServiceManager.ServiceNotFoundException extends java.lang.Exception {
+    ctor public ProfilingServiceManager.ServiceNotFoundException(@NonNull String);
+  }
+
+  public static final class ProfilingServiceManager.ServiceRegisterer {
+    method @Nullable public android.os.IBinder get();
+    method @Nullable public android.os.IBinder getOrThrow() throws android.os.ProfilingServiceManager.ServiceNotFoundException;
+  }
+
   public final class ServiceManager {
     method @NonNull public static String[] getDeclaredInstances(@NonNull String);
     method public static boolean isDeclared(@NonNull String);
@@ -637,3 +640,34 @@
 
 }
 
+package android.webkit {
+
+  @FlaggedApi("android.webkit.update_service_ipc_wrapper") public class WebViewBootstrapFrameworkInitializer {
+    method public static void registerServiceWrappers();
+  }
+
+  @FlaggedApi("android.webkit.update_service_ipc_wrapper") public final class WebViewProviderResponse implements android.os.Parcelable {
+    ctor public WebViewProviderResponse(@Nullable android.content.pm.PackageInfo, int);
+    method public int describeContents();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.webkit.WebViewProviderResponse> CREATOR;
+    field public static final int STATUS_FAILED_LISTING_WEBVIEW_PACKAGES = 4; // 0x4
+    field public static final int STATUS_FAILED_WAITING_FOR_RELRO = 3; // 0x3
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+    field @Nullable public final android.content.pm.PackageInfo packageInfo;
+    field public final int status;
+  }
+
+  @FlaggedApi("android.webkit.update_service_ipc_wrapper") public final class WebViewUpdateManager {
+    method @Nullable @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public String changeProviderAndSetting(@NonNull String);
+    method @NonNull public android.webkit.WebViewProviderInfo[] getAllWebViewPackages();
+    method @Nullable public android.content.pm.PackageInfo getCurrentWebViewPackage();
+    method @Nullable public String getCurrentWebViewPackageName();
+    method @FlaggedApi("android.webkit.update_service_v2") @NonNull public android.webkit.WebViewProviderInfo getDefaultWebViewPackage();
+    method @Nullable public static android.webkit.WebViewUpdateManager getInstance();
+    method @NonNull public android.webkit.WebViewProviderInfo[] getValidWebViewPackages();
+    method @NonNull public android.webkit.WebViewProviderResponse waitForAndGetProvider();
+  }
+
+}
+
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 0f1da41..15de42a 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -100,6 +100,7 @@
     field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED";
     field @FlaggedApi("com.android.internal.camera.flags.camera_hsum_permission") public static final String CAMERA_HEADLESS_SYSTEM_USER = "android.permission.CAMERA_HEADLESS_SYSTEM_USER";
     field public static final String CAMERA_OPEN_CLOSE_LISTENER = "android.permission.CAMERA_OPEN_CLOSE_LISTENER";
+    field @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") public static final String CAMERA_PRIVACY_ALLOWLIST = "android.permission.CAMERA_PRIVACY_ALLOWLIST";
     field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD";
     field public static final String CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD = "android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD";
     field public static final String CAPTURE_MEDIA_OUTPUT = "android.permission.CAPTURE_MEDIA_OUTPUT";
@@ -194,6 +195,8 @@
     field public static final String MANAGE_DEFAULT_APPLICATIONS = "android.permission.MANAGE_DEFAULT_APPLICATIONS";
     field public static final String MANAGE_DEVICE_ADMINS = "android.permission.MANAGE_DEVICE_ADMINS";
     field public static final String MANAGE_DEVICE_POLICY_APP_EXEMPTIONS = "android.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS";
+    field @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") public static final String MANAGE_DEVICE_POLICY_AUDIT_LOGGING = "android.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING";
+    field @FlaggedApi("android.app.admin.flags.device_theft_api_enabled") public static final String MANAGE_DEVICE_POLICY_THEFT_DETECTION = "android.permission.MANAGE_DEVICE_POLICY_THEFT_DETECTION";
     field @FlaggedApi("android.permission.flags.enhanced_confirmation_mode_apis_enabled") public static final String MANAGE_ENHANCED_CONFIRMATION_STATES = "android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES";
     field public static final String MANAGE_ETHERNET_NETWORKS = "android.permission.MANAGE_ETHERNET_NETWORKS";
     field public static final String MANAGE_FACTORY_RESET_PROTECTION = "android.permission.MANAGE_FACTORY_RESET_PROTECTION";
@@ -282,6 +285,7 @@
     field public static final String RADIO_SCAN_WITHOUT_LOCATION = "android.permission.RADIO_SCAN_WITHOUT_LOCATION";
     field public static final String READ_ACTIVE_EMERGENCY_SESSION = "android.permission.READ_ACTIVE_EMERGENCY_SESSION";
     field public static final String READ_APP_SPECIFIC_LOCALES = "android.permission.READ_APP_SPECIFIC_LOCALES";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String READ_BLOCKED_NUMBERS = "android.permission.READ_BLOCKED_NUMBERS";
     field public static final String READ_CARRIER_APP_INFO = "android.permission.READ_CARRIER_APP_INFO";
     field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
     field public static final String READ_CLIPBOARD_IN_BACKGROUND = "android.permission.READ_CLIPBOARD_IN_BACKGROUND";
@@ -331,7 +335,6 @@
     field @FlaggedApi("android.app.usage.report_usage_stats_permission") public static final String REPORT_USAGE_STATS = "android.permission.REPORT_USAGE_STATS";
     field @Deprecated public static final String REQUEST_NETWORK_SCORES = "android.permission.REQUEST_NETWORK_SCORES";
     field public static final String REQUEST_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE";
-    field @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public static final String RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT = "android.permission.RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT";
     field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD";
     field public static final String RESTART_WIFI_SUBSYSTEM = "android.permission.RESTART_WIFI_SUBSYSTEM";
     field public static final String RESTORE_RUNTIME_PERMISSIONS = "android.permission.RESTORE_RUNTIME_PERMISSIONS";
@@ -409,6 +412,7 @@
     field public static final String WIFI_UPDATE_COEX_UNSAFE_CHANNELS = "android.permission.WIFI_UPDATE_COEX_UNSAFE_CHANNELS";
     field public static final String WIFI_UPDATE_USABILITY_STATS_SCORE = "android.permission.WIFI_UPDATE_USABILITY_STATS_SCORE";
     field public static final String WRITE_ALLOWLISTED_DEVICE_CONFIG = "android.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String WRITE_BLOCKED_NUMBERS = "android.permission.WRITE_BLOCKED_NUMBERS";
     field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG";
     field public static final String WRITE_DREAM_STATE = "android.permission.WRITE_DREAM_STATE";
     field public static final String WRITE_EMBEDDED_SUBSCRIPTIONS = "android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS";
@@ -591,6 +595,7 @@
     field public static final int FOREGROUND_SERVICE_API_TYPE_MICROPHONE = 6; // 0x6
     field public static final int FOREGROUND_SERVICE_API_TYPE_PHONE_CALL = 7; // 0x7
     field public static final int FOREGROUND_SERVICE_API_TYPE_USB = 8; // 0x8
+    field @FlaggedApi("android.media.audio.foreground_audio_control") public static final int PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL = 64; // 0x40
     field public static final int PROCESS_CAPABILITY_FOREGROUND_CAMERA = 2; // 0x2
     field public static final int PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1; // 0x1
     field public static final int PROCESS_CAPABILITY_FOREGROUND_MICROPHONE = 4; // 0x4
@@ -621,6 +626,8 @@
     method public static String[] getOpStrs();
     method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getOpsForPackage(int, @NonNull String, @Nullable java.lang.String...);
     method @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[]);
+    method @FlaggedApi("android.permission.flags.device_aware_permission_apis_enabled") @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.app.AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[], @NonNull String);
+    method @FlaggedApi("android.permission.flags.device_aware_permission_apis_enabled") @NonNull @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) public java.util.List<android.permission.PermissionGroupUsage> getPermissionGroupUsageForPrivacyIndicator(boolean);
     method public static int opToDefaultMode(@NonNull String);
     method @Nullable public static String opToPermission(@NonNull String);
     method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(@NonNull String, int, @Nullable String, int);
@@ -654,6 +661,7 @@
     field public static final String OPSTR_CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD = "android:capture_consentless_bugreport_on_userdebug_build";
     field public static final String OPSTR_CHANGE_WIFI_STATE = "android:change_wifi_state";
     field @FlaggedApi("android.view.contentprotection.flags.create_accessibility_overlay_app_op_enabled") public static final String OPSTR_CREATE_ACCESSIBILITY_OVERLAY = "android:create_accessibility_overlay";
+    field @FlaggedApi("android.location.flags.location_bypass") public static final String OPSTR_EMERGENCY_LOCATION = "android:emergency_location";
     field @FlaggedApi("android.permission.flags.op_enable_mobile_data_by_user") public static final String OPSTR_ENABLE_MOBILE_DATA_BY_USER = "android:enable_mobile_data_by_user";
     field public static final String OPSTR_ESTABLISH_VPN_MANAGER = "android:establish_vpn_manager";
     field public static final String OPSTR_ESTABLISH_VPN_SERVICE = "android:establish_vpn_service";
@@ -1038,13 +1046,20 @@
     method @Nullable public android.content.ComponentName getAllowedNotificationAssistant();
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_NOTIFICATION_LISTENERS) public java.util.List<android.content.ComponentName> getEnabledNotificationListeners();
     method public boolean isNotificationAssistantAccessGranted(@NonNull android.content.ComponentName);
+    method @FlaggedApi("android.service.notification.callstyle_callback_api") @RequiresPermission(allOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.ACCESS_NOTIFICATIONS}) public void registerCallNotificationEventListener(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull android.app.NotificationManager.CallNotificationEventListener);
     method public void setNotificationAssistantAccessGranted(@Nullable android.content.ComponentName, boolean);
     method @RequiresPermission(android.Manifest.permission.MANAGE_NOTIFICATION_LISTENERS) public void setNotificationListenerAccessGranted(@NonNull android.content.ComponentName, boolean, boolean);
+    method @FlaggedApi("android.service.notification.callstyle_callback_api") @RequiresPermission(allOf={android.Manifest.permission.INTERACT_ACROSS_USERS, android.Manifest.permission.ACCESS_NOTIFICATIONS}) public void unregisterCallNotificationEventListener(@NonNull android.app.NotificationManager.CallNotificationEventListener);
     field @RequiresPermission(android.Manifest.permission.STATUS_BAR_SERVICE) public static final String ACTION_CLOSE_NOTIFICATION_HANDLER_PANEL = "android.app.action.CLOSE_NOTIFICATION_HANDLER_PANEL";
     field @RequiresPermission(android.Manifest.permission.STATUS_BAR_SERVICE) public static final String ACTION_OPEN_NOTIFICATION_HANDLER_PANEL = "android.app.action.OPEN_NOTIFICATION_HANDLER_PANEL";
     field @RequiresPermission(android.Manifest.permission.STATUS_BAR_SERVICE) public static final String ACTION_TOGGLE_NOTIFICATION_HANDLER_PANEL = "android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL";
   }
 
+  @FlaggedApi("android.service.notification.callstyle_callback_api") public static interface NotificationManager.CallNotificationEventListener {
+    method @FlaggedApi("android.service.notification.callstyle_callback_api") public void onCallNotificationPosted(@NonNull String, @NonNull android.os.UserHandle);
+    method @FlaggedApi("android.service.notification.callstyle_callback_api") public void onCallNotificationRemoved(@NonNull String, @NonNull android.os.UserHandle);
+  }
+
   public final class RemoteLockscreenValidationResult implements android.os.Parcelable {
     method public int describeContents();
     method public int getResultCode();
@@ -1125,13 +1140,17 @@
     field public static final int NAV_BAR_MODE_KIDS = 1; // 0x1
   }
 
-  public static final class StatusBarManager.DisableInfo {
+  public static final class StatusBarManager.DisableInfo implements android.os.Parcelable {
     method public boolean areAllComponentsEnabled();
+    method public int describeContents();
+    method public boolean isBackDisabled();
     method public boolean isNavigateToHomeDisabled();
     method public boolean isNotificationPeekingDisabled();
     method public boolean isRecentsDisabled();
     method public boolean isSearchDisabled();
     method public boolean isStatusBarExpansionDisabled();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.app.StatusBarManager.DisableInfo> CREATOR;
   }
 
   public final class SystemServiceRegistry {
@@ -1273,6 +1292,10 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.app.admin.DevicePolicyDrawableResource> CREATOR;
   }
 
+  public final class DevicePolicyIdentifiers {
+    field @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") public static final String AUDIT_LOGGING_POLICY = "auditLogging";
+  }
+
   public class DevicePolicyKeyguardService extends android.app.Service {
     ctor public DevicePolicyKeyguardService();
     method @Nullable public void dismiss();
@@ -1294,18 +1317,21 @@
     method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public android.os.UserHandle getDeviceOwnerUser();
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public android.app.admin.DevicePolicyState getDevicePolicyState();
     method @Nullable @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public String getFinancedDeviceKioskRoleHolder();
+    method @FlaggedApi("android.app.admin.flags.device_policy_size_tracking_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public int getMaxPolicyStorageLimit();
     method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.QUERY_ADMIN_POLICY}) public java.util.List<java.lang.String> getPermittedAccessibilityServices(int);
     method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.QUERY_ADMIN_POLICY}) public java.util.List<java.lang.String> getPermittedInputMethodsForCurrentUser();
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public java.util.List<android.os.UserHandle> getPolicyManagedProfiles(@NonNull android.os.UserHandle);
     method @Nullable public android.content.ComponentName getProfileOwner() throws java.lang.IllegalArgumentException;
     method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public String getProfileOwnerNameAsUser(int) throws java.lang.IllegalArgumentException;
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public int getUserProvisioningState();
+    method @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING) public boolean isAuditLogEnabled();
     method public boolean isDeviceManaged();
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioned();
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isDeviceProvisioningConfigApplied();
     method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public boolean isDpcDownloaded();
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public boolean isManagedKiosk();
     method public boolean isSecondaryLockscreenEnabled(@NonNull android.os.UserHandle);
+    method @FlaggedApi("android.app.admin.flags.device_theft_api_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_THEFT_DETECTION) public boolean isTheftDetectionTriggered();
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS}) public boolean isUnattendedManagedKiosk();
     method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long);
     method @RequiresPermission("android.permission.NOTIFY_PENDING_SYSTEM_UPDATE") public void notifyPendingSystemUpdate(long, boolean);
@@ -1314,8 +1340,11 @@
     method @RequiresPermission(android.Manifest.permission.TRIGGER_LOST_MODE) public void sendLostModeLocationUpdate(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_ADMINS) public boolean setActiveProfileOwner(@NonNull android.content.ComponentName, String) throws java.lang.IllegalArgumentException;
     method @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_APP_EXEMPTIONS) public void setApplicationExemptions(@NonNull String, @NonNull java.util.Set<java.lang.Integer>) throws android.content.pm.PackageManager.NameNotFoundException;
+    method @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING) public void setAuditLogEnabled(boolean);
+    method @FlaggedApi("android.app.admin.flags.security_log_v2_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING) public void setAuditLogEventCallback(@NonNull java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.util.List<android.app.admin.SecurityLog.SecurityEvent>>);
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setDeviceProvisioningConfigApplied();
     method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public void setDpcDownloaded(boolean);
+    method @FlaggedApi("android.app.admin.flags.device_policy_size_tracking_enabled") @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public void setMaxPolicyStorageLimit(int);
     method @Deprecated @RequiresPermission(value=android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS, conditional=true) public void setProfileOwnerCanAccessDeviceIds(@NonNull android.content.ComponentName);
     method public void setSecondaryLockscreenEnabled(@NonNull android.content.ComponentName, boolean);
     method @RequiresPermission(android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS) public void setUserProvisioningState(int, @NonNull android.os.UserHandle);
@@ -3178,6 +3207,8 @@
     method @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void provideDataStream(@NonNull android.os.ParcelFileDescriptor, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("android.app.wearable.enable_provide_wearable_connection_api") @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void provideWearableConnection(@NonNull android.os.ParcelFileDescriptor, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("android.app.wearable.enable_data_request_observer_api") @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void registerDataRequestObserver(int, @NonNull android.app.PendingIntent, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void startHotwordRecognition(@Nullable android.content.ComponentName, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void stopHotwordRecognition(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @FlaggedApi("android.app.wearable.enable_data_request_observer_api") @RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE) public void unregisterDataRequestObserver(int, @NonNull android.app.PendingIntent, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     field public static final int STATUS_ACCESS_DENIED = 5; // 0x5
     field @FlaggedApi("android.app.wearable.enable_provide_wearable_connection_api") public static final int STATUS_CHANNEL_ERROR = 7; // 0x7
@@ -3664,6 +3695,7 @@
     field public static final String ACTION_INSTANT_APP_RESOLVER_SETTINGS = "android.intent.action.INSTANT_APP_RESOLVER_SETTINGS";
     field @Deprecated public static final String ACTION_INTENT_FILTER_NEEDS_VERIFICATION = "android.intent.action.INTENT_FILTER_NEEDS_VERIFICATION";
     field public static final String ACTION_LOAD_DATA = "android.intent.action.LOAD_DATA";
+    field @FlaggedApi("android.security.frp_enforcement") public static final String ACTION_MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED = "android.intent.action.MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED";
     field @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS) public static final String ACTION_MANAGE_APP_PERMISSION = "android.intent.action.MANAGE_APP_PERMISSION";
     field @Deprecated public static final String ACTION_MANAGE_APP_PERMISSIONS = "android.intent.action.MANAGE_APP_PERMISSIONS";
     field @RequiresPermission(android.Manifest.permission.MANAGE_ROLE_HOLDERS) public static final String ACTION_MANAGE_DEFAULT_APP = "android.intent.action.MANAGE_DEFAULT_APP";
@@ -4483,6 +4515,7 @@
     ctor public FailureResult(int, @Nullable String);
     method public int getErrorCode();
     method @Nullable public String getErrorMessage();
+    method public static void sendFailureResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.FailureResult);
     field public static final int ERROR_CODE_CANCELED_AND_LAUNCHED_SETTINGS = 2; // 0x2
     field public static final int ERROR_CODE_DIALOG_CANCELED_BY_USER = 1; // 0x1
     field public static final int ERROR_CODE_UI_FAILURE = 0; // 0x0
@@ -4544,17 +4577,13 @@
   @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class RequestToken {
   }
 
-  @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class ResultHelper {
-    method public static void sendFailureResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.FailureResult);
-    method public static void sendUserSelectionResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.UserSelectionResult);
-  }
-
   @FlaggedApi("android.credentials.flags.configurable_selector_ui_enabled") public final class UserSelectionResult {
     ctor public UserSelectionResult(@NonNull String, @NonNull String, @NonNull String, @Nullable android.credentials.selection.ProviderPendingIntentResponse);
     method @NonNull public String getEntryKey();
     method @NonNull public String getEntrySubkey();
     method @Nullable public android.credentials.selection.ProviderPendingIntentResponse getPendingIntentProviderResponse();
     method @NonNull public String getProviderId();
+    method public static void sendUserSelectionResult(@NonNull android.os.ResultReceiver, @NonNull android.credentials.selection.UserSelectionResult);
   }
 
 }
@@ -4660,11 +4689,15 @@
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void addSensorPrivacyListener(@NonNull java.util.concurrent.Executor, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean areAnySensorPrivacyTogglesEnabled(int);
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") @NonNull @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public java.util.Map<java.lang.String,java.lang.Boolean> getCameraPrivacyAllowlist();
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public int getSensorPrivacyState(int, int);
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isCameraPrivacyEnabled(@NonNull String);
     method @Deprecated @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(int);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public boolean isSensorPrivacyEnabled(int, int);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(int, @NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener);
     method @RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) public void removeSensorPrivacyListener(@NonNull android.hardware.SensorPrivacyManager.OnSensorPrivacyChangedListener);
     method @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacy(int, boolean);
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacyState(int, int);
   }
 
   public static interface SensorPrivacyManager.OnSensorPrivacyChangedListener {
@@ -4674,6 +4707,7 @@
 
   public static class SensorPrivacyManager.OnSensorPrivacyChangedListener.SensorPrivacyChangedParams {
     method public int getSensor();
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") public int getState();
     method public int getToggleType();
     method public boolean isEnabled();
   }
@@ -4734,9 +4768,13 @@
 
   @FlaggedApi("com.android.internal.camera.flags.concert_mode") public final class CameraOutputSurface {
     ctor @FlaggedApi("com.android.internal.camera.flags.concert_mode") public CameraOutputSurface(@NonNull android.view.Surface, @NonNull android.util.Size);
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public int getColorSpace();
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public long getDynamicRangeProfile();
     method @FlaggedApi("com.android.internal.camera.flags.concert_mode") public int getImageFormat();
     method @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public android.util.Size getSize();
     method @FlaggedApi("com.android.internal.camera.flags.concert_mode") @NonNull public android.view.Surface getSurface();
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public void setColorSpace(int);
+    method @FlaggedApi("com.android.internal.camera.flags.extension_10_bit") public void setDynamicRangeProfile(long);
   }
 
   @FlaggedApi("com.android.internal.camera.flags.concert_mode") public class CharacteristicsMap {
@@ -6642,6 +6680,7 @@
     method public int getSupportedRoleCombinations();
     method public int getUsbDataStatus();
     method public boolean isConnected();
+    method @FlaggedApi("android.hardware.usb.flags.enable_is_pd_compliant_api") public boolean isPdCompliant();
     method public boolean isPowerTransferLimited();
     method public boolean isRoleCombinationSupported(int, int);
     method public void writeToParcel(android.os.Parcel, int);
@@ -9767,6 +9806,13 @@
 
 package android.net.wifi {
 
+  public final class WifiKeystore {
+    method @NonNull public static byte[] get(@NonNull String);
+    method @NonNull public static String[] list(@NonNull String);
+    method public static boolean put(@NonNull String, @NonNull byte[]);
+    method public static boolean remove(@NonNull String);
+  }
+
   public final class WifiMigration {
     method @Nullable public static java.io.InputStream convertAndRetrieveSharedConfigStoreFile(int);
     method @Nullable public static java.io.InputStream convertAndRetrieveUserConfigStoreFile(int, @NonNull android.os.UserHandle);
@@ -10209,6 +10255,7 @@
     ctor @FlaggedApi("android.nfc.enable_nfc_mainline") public ApduServiceInfo(@NonNull android.content.pm.PackageManager, @NonNull android.content.pm.ResolveInfo, boolean) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
     method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void addPollingLoopFilter(@NonNull String);
     method @FlaggedApi("android.nfc.nfc_read_polling_loop") public void addPollingLoopFilterToAutoTransact(@NonNull String);
+    method @FlaggedApi("android.nfc.nfc_observe_mode") public boolean defaultToObserveMode();
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public int describeContents();
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void dump(@NonNull android.os.ParcelFileDescriptor, @NonNull java.io.PrintWriter, @NonNull String[]);
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void dumpDebug(@NonNull android.util.proto.ProtoOutputStream);
@@ -10238,6 +10285,7 @@
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public boolean requiresUnlock();
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void resetOffHostSecureElement();
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void setCategoryOtherServiceEnabled(boolean);
+    method @FlaggedApi("android.nfc.nfc_observe_mode") public void setDefaultToObserveMode(boolean);
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void setDynamicAidGroup(@NonNull android.nfc.cardemulation.AidGroup);
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void setOffHostSecureElement(@NonNull String);
     method @FlaggedApi("android.nfc.enable_nfc_mainline") public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -10412,9 +10460,11 @@
     method public int getFlags();
     method public int getMode();
     field public static final int BUGREPORT_FLAG_DEFER_CONSENT = 2; // 0x2
+    field @FlaggedApi("android.app.admin.flags.onboarding_bugreport_v2_enabled") public static final int BUGREPORT_FLAG_KEEP_BUGREPORT_ON_RETRIEVAL = 4; // 0x4
     field public static final int BUGREPORT_FLAG_USE_PREDUMPED_UI_DATA = 1; // 0x1
     field public static final int BUGREPORT_MODE_FULL = 0; // 0x0
     field public static final int BUGREPORT_MODE_INTERACTIVE = 1; // 0x1
+    field @FlaggedApi("android.app.admin.flags.onboarding_bugreport_v2_enabled") public static final int BUGREPORT_MODE_ONBOARDING = 7; // 0x7
     field public static final int BUGREPORT_MODE_REMOTE = 2; // 0x2
     field public static final int BUGREPORT_MODE_TELEPHONY = 4; // 0x4
     field public static final int BUGREPORT_MODE_WEAR = 3; // 0x3
@@ -11064,9 +11114,6 @@
     field public static final String USER_TYPE_FULL_GUEST = "android.os.usertype.full.GUEST";
     field public static final String USER_TYPE_FULL_SECONDARY = "android.os.usertype.full.SECONDARY";
     field public static final String USER_TYPE_FULL_SYSTEM = "android.os.usertype.full.SYSTEM";
-    field public static final String USER_TYPE_PROFILE_CLONE = "android.os.usertype.profile.CLONE";
-    field public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
-    field @FlaggedApi("android.os.allow_private_profile") public static final String USER_TYPE_PROFILE_PRIVATE = "android.os.usertype.profile.PRIVATE";
     field public static final String USER_TYPE_SYSTEM_HEADLESS = "android.os.usertype.system.HEADLESS";
   }
 
@@ -11304,6 +11351,7 @@
     method public long getLastAccessTimeMillis();
     method @NonNull public String getPackageName();
     method @NonNull public String getPermissionGroupName();
+    method @FlaggedApi("android.permission.flags.device_aware_permission_apis_enabled") @NonNull public String getPersistentDeviceId();
     method @Nullable public CharSequence getProxyLabel();
     method public int getUid();
     method public boolean isActive();
@@ -11457,6 +11505,29 @@
 
 package android.provider {
 
+  public static class BlockedNumberContract.BlockedNumbers {
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void endBlockSuppression(@NonNull android.content.Context);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @NonNull @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static android.provider.BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus getBlockSuppressionStatus(@NonNull android.content.Context);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static boolean getBlockedNumberSetting(@NonNull android.content.Context, @NonNull String);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void notifyEmergencyContact(@NonNull android.content.Context);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static void setBlockedNumberSetting(@NonNull android.content.Context, @NonNull String, boolean);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static boolean shouldShowEmergencyCallNotification(@NonNull android.content.Context);
+    method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_BLOCKED_NUMBERS, android.Manifest.permission.WRITE_BLOCKED_NUMBERS}) public static int shouldSystemBlockNumber(@NonNull android.content.Context, @NonNull String, int, boolean);
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED = "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE = "block_payphone_calls_setting";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE = "block_private_number_calls_setting";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE = "block_unavailable_calls_setting";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN = "block_unknown_calls_setting";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED = "block_numbers_not_in_contacts_setting";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION = "show_emergency_call_notification";
+  }
+
+  @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final class BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus {
+    ctor public BlockedNumberContract.BlockedNumbers.BlockSuppressionStatus(boolean, long);
+    method public boolean getIsSuppressed();
+    method public long getUntilTimestampMillis();
+  }
+
   public class CallLog {
     method @RequiresPermission(allOf={android.Manifest.permission.WRITE_CALL_LOG, android.Manifest.permission.INTERACT_ACROSS_USERS}) public static void storeCallComposerPicture(@NonNull android.content.Context, @NonNull java.io.InputStream, @NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.net.Uri,android.provider.CallLog.CallComposerLoggingException>);
   }
@@ -13147,6 +13218,7 @@
     method @Nullable public android.service.voice.HotwordDetectedResult getHotwordDetectedResult();
     method @NonNull public java.util.List<android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra> getKeyphraseRecognitionExtras();
     method @Deprecated @Nullable public byte[] getTriggerAudio();
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") public boolean isRecognitionStopped();
     field public static final int DATA_FORMAT_RAW = 0; // 0x0
     field public static final int DATA_FORMAT_TRIGGER_AUDIO = 1; // 0x1
   }
@@ -13253,13 +13325,13 @@
     method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer);
     field @Deprecated public static final int INITIALIZATION_STATUS_SUCCESS = 0; // 0x0
     field @Deprecated public static final int INITIALIZATION_STATUS_UNKNOWN = 100; // 0x64
+    field @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") public static final String KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK = "android.service.voice.HotwordDetectionService.KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK";
     field public static final String SERVICE_INTERFACE = "android.service.voice.HotwordDetectionService";
   }
 
   public static final class HotwordDetectionService.Callback {
     method public void onDetected(@NonNull android.service.voice.HotwordDetectedResult);
     method public void onRejected(@NonNull android.service.voice.HotwordRejectedResult);
-    method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public void onTrainingData(@NonNull android.service.voice.HotwordTrainingData);
   }
 
   public final class HotwordDetectionServiceFailure implements android.os.Parcelable {
@@ -13275,8 +13347,6 @@
     field public static final int ERROR_CODE_DETECT_TIMEOUT = 4; // 0x4
     field public static final int ERROR_CODE_ON_DETECTED_SECURITY_EXCEPTION = 5; // 0x5
     field public static final int ERROR_CODE_ON_DETECTED_STREAM_COPY_FAILURE = 6; // 0x6
-    field @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public static final int ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED = 8; // 0x8
-    field @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public static final int ERROR_CODE_ON_TRAINING_DATA_SECURITY_EXCEPTION = 9; // 0x9
     field public static final int ERROR_CODE_REMOTE_EXCEPTION = 7; // 0x7
     field @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public static final int ERROR_CODE_SHUTDOWN_HDS_ON_VOICE_ACTIVATION_OP_DISABLED = 10; // 0xa
     field public static final int ERROR_CODE_UNKNOWN = 0; // 0x0
@@ -13299,7 +13369,6 @@
     method public void onRecognitionPaused();
     method public void onRecognitionResumed();
     method public void onRejected(@NonNull android.service.voice.HotwordRejectedResult);
-    method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") public default void onTrainingData(@NonNull android.service.voice.HotwordTrainingData);
     method public default void onUnknownFailure(@NonNull String);
   }
 
@@ -13378,6 +13447,23 @@
     field public static final int ERROR_CODE_UNKNOWN = 0; // 0x0
   }
 
+  @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final class VisualQueryAttentionResult implements android.os.Parcelable {
+    method public int describeContents();
+    method @IntRange(from=1, to=100) public int getEngagementLevel();
+    method public int getInteractionIntention();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.service.voice.VisualQueryAttentionResult> CREATOR;
+    field public static final int INTERACTION_INTENTION_AUDIO_VISUAL = 0; // 0x0
+    field public static final int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY = 1; // 0x1
+  }
+
+  public static final class VisualQueryAttentionResult.Builder {
+    ctor public VisualQueryAttentionResult.Builder();
+    method @NonNull public android.service.voice.VisualQueryAttentionResult build();
+    method @NonNull public android.service.voice.VisualQueryAttentionResult.Builder setEngagementLevel(@IntRange(from=1, to=100) int);
+    method @NonNull public android.service.voice.VisualQueryAttentionResult.Builder setInteractionIntention(int);
+  }
+
   @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public final class VisualQueryDetectedResult implements android.os.Parcelable {
     method public int describeContents();
     method public static int getMaxSpeakerId();
@@ -13398,7 +13484,9 @@
     ctor public VisualQueryDetectionService();
     method public final void finishQuery() throws java.lang.IllegalStateException;
     method public final void gainedAttention();
+    method @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final void gainedAttention(@NonNull android.service.voice.VisualQueryAttentionResult);
     method public final void lostAttention();
+    method @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final void lostAttention(int);
     method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
     method public void onStartDetection();
     method public void onStopDetection();
@@ -13451,7 +13539,6 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.HotwordDetector createHotwordDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.HotwordDetector.Callback);
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_VOICE_KEYPHRASES) public final android.media.voice.KeyphraseModelManager createKeyphraseModelManager();
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.VisualQueryDetector createVisualQueryDetector(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.VisualQueryDetector.Callback);
-    method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public void setShouldReceiveSandboxedTrainingData(boolean);
   }
 
 }
@@ -13523,7 +13610,11 @@
     method @BinderThread public abstract void onQueryServiceStatus(@NonNull java.util.Set<java.lang.Integer>, @NonNull String, @NonNull java.util.function.Consumer<android.service.ambientcontext.AmbientContextDetectionServiceStatus>);
     method @FlaggedApi("android.app.wearable.enable_provide_wearable_connection_api") @BinderThread public void onSecureWearableConnectionProvided(@NonNull android.os.ParcelFileDescriptor, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @BinderThread public abstract void onStartDetection(@NonNull android.app.ambientcontext.AmbientContextEventRequest, @NonNull String, @NonNull java.util.function.Consumer<android.service.ambientcontext.AmbientContextDetectionServiceStatus>, @NonNull java.util.function.Consumer<android.service.ambientcontext.AmbientContextDetectionResult>);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @BinderThread public void onStartHotwordRecognition(@NonNull java.util.function.Consumer<android.service.voice.HotwordAudioStream>, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method public abstract void onStopDetection(@NonNull String);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @BinderThread public void onStopHotwordAudioStream();
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @BinderThread public void onStopHotwordRecognition(@NonNull java.util.function.Consumer<java.lang.Integer>);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @BinderThread public void onValidatedByHotwordDetectionService();
     field public static final String SERVICE_INTERFACE = "android.service.wearable.WearableSensingService";
   }
 
@@ -13840,6 +13931,7 @@
     field public static final int CAPABILITY_EMERGENCY_VIDEO_CALLING = 512; // 0x200
     field public static final int CAPABILITY_MULTI_USER = 32; // 0x20
     field public static final String EXTRA_PLAY_CALL_RECORDING_TONE = "android.telecom.extra.PLAY_CALL_RECORDING_TONE";
+    field @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") public static final String EXTRA_SKIP_CALL_FILTERING = "android.telecom.extra.SKIP_CALL_FILTERING";
     field public static final String EXTRA_SORT_ORDER = "android.telecom.extra.SORT_ORDER";
   }
 
@@ -14278,9 +14370,9 @@
 
   @FlaggedApi("com.android.internal.telephony.flags.use_oem_domain_selection_service") public abstract class DomainSelectionService extends android.app.Service {
     ctor public DomainSelectionService();
+    method @NonNull public java.util.concurrent.Executor getCreateExecutor();
     method public void onBarringInfoUpdated(int, int, @NonNull android.telephony.BarringInfo);
     method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @NonNull public java.util.concurrent.Executor onCreateExecutor();
     method public abstract void onDomainSelection(@NonNull android.telephony.DomainSelectionService.SelectionAttributes, @NonNull android.telephony.TransportSelectorCallback);
     method public void onServiceStateUpdated(int, int, @NonNull android.telephony.ServiceState);
     field public static final int SCAN_TYPE_FULL_SERVICE = 2; // 0x2
@@ -15060,6 +15152,7 @@
     method @Deprecated public boolean getDataEnabled(int);
     method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getDefaultRespondViaMessageApplication();
     method @Nullable @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getDeviceSoftwareVersion(int);
+    method @FlaggedApi("android.permission.flags.get_emergency_role_holder_api_enabled") @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getEmergencyAssistancePackage();
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode();
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEmergencyNumberDbVersion();
     method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain();
@@ -16118,6 +16211,7 @@
     field public static final int DIALSTRING_USSD = 2; // 0x2
     field public static final String EXTRA_ADDITIONAL_CALL_INFO = "AdditionalCallInfo";
     field public static final String EXTRA_ADDITIONAL_SIP_INVITE_FIELDS = "android.telephony.ims.extra.ADDITIONAL_SIP_INVITE_FIELDS";
+    field @FlaggedApi("com.android.server.telecom.flags.business_call_composer") public static final String EXTRA_ASSERTED_DISPLAY_NAME = "android.telephony.ims.extra.ASSERTED_DISPLAY_NAME";
     field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telephony.ims.extra.CALL_DISCONNECT_CAUSE";
     field public static final String EXTRA_CALL_NETWORK_TYPE = "android.telephony.ims.extra.CALL_NETWORK_TYPE";
     field @Deprecated public static final String EXTRA_CALL_RAT_TYPE = "CallRadioTech";
diff --git a/core/api/system-lint-baseline.txt b/core/api/system-lint-baseline.txt
index 8a485d2..ca9fab8 100644
--- a/core/api/system-lint-baseline.txt
+++ b/core/api/system-lint-baseline.txt
@@ -535,6 +535,10 @@
     Listeners should always be at end of argument list (method `stopSatelliteTransmissionUpdates`)
 
 
+MethodNameUnits: android.hardware.camera2.extension.CameraOutputSurface#getColorSpace():
+    Expected method name units to be `Bytes`, was `Space` in `getColorSpace`
+
+
 MissingGetterMatchingBuilder: android.service.voice.HotwordTrainingData.Builder#addTrainingAudio(android.service.voice.HotwordTrainingAudio):
     android.service.voice.HotwordTrainingData does not declare a `getTrainingAudios()` method matching method android.service.voice.HotwordTrainingData.Builder.addTrainingAudio(android.service.voice.HotwordTrainingAudio)
 MissingGetterMatchingBuilder: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallViaAudioProcessing(boolean):
@@ -1927,6 +1931,10 @@
     New API must be flagged with @FlaggedApi: method android.app.ActivityManager.getExternalHistoricalProcessStartReasons(String,int)
 UnflaggedApi: android.app.AppOpsManager#OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO:
     New API must be flagged with @FlaggedApi: field android.app.AppOpsManager.OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO
+UnflaggedApi: android.app.StatusBarManager.DisableInfo#CREATOR:
+    New API must be flagged with @FlaggedApi: field android.app.StatusBarManager.DisableInfo.CREATOR
+UnflaggedApi: android.app.StatusBarManager.DisableInfo#isBackDisabled():
+    New API must be flagged with @FlaggedApi: method android.app.StatusBarManager.DisableInfo.isBackDisabled()
 UnflaggedApi: android.companion.virtual.VirtualDeviceManager.VirtualDevice#getPersistentDeviceId():
     New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDeviceManager.VirtualDevice.getPersistentDeviceId()
 UnflaggedApi: android.content.Context#THREAD_NETWORK_SERVICE:
diff --git a/core/api/test-current.txt b/core/api/test-current.txt
index a7f80dd..f6366a2 100644
--- a/core/api/test-current.txt
+++ b/core/api/test-current.txt
@@ -463,7 +463,7 @@
     method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void togglePanel();
   }
 
-  public static final class StatusBarManager.DisableInfo {
+  public static final class StatusBarManager.DisableInfo implements android.os.Parcelable {
     method public boolean isRotationSuggestionDisabled();
   }
 
@@ -921,7 +921,33 @@
 package android.companion.virtual {
 
   public final class VirtualDeviceManager {
+    method public int getAudioPlaybackSessionId(int);
+    method public int getAudioRecordingSessionId(int);
+    method public int getDeviceIdForDisplayId(int);
+    method public int getDevicePolicy(int, int);
     method @FlaggedApi("android.companion.virtual.flags.interactive_screen_mirror") public boolean isVirtualDeviceOwnedMirrorDisplay(int);
+    method public void playSoundEffect(int, int);
+  }
+
+}
+
+package android.companion.virtual.camera {
+
+  @FlaggedApi("android.companion.virtual.flags.virtual_camera") public final class VirtualCamera implements java.io.Closeable {
+    method @NonNull public String getId();
+  }
+
+}
+
+package android.companion.virtual.sensor {
+
+  public final class VirtualSensor implements android.os.Parcelable {
+    ctor public VirtualSensor(int, int, @NonNull String);
+    method public int getHandle();
+  }
+
+  public final class VirtualSensorConfig implements android.os.Parcelable {
+    method public int getFlags();
   }
 
 }
@@ -988,6 +1014,7 @@
     method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
     method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
     method public void updateDeviceId(int);
+    method public abstract void updateDisplay(int);
     field public static final String ATTENTION_SERVICE = "attention";
     field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
     field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
@@ -1001,6 +1028,7 @@
 
   public class ContextWrapper extends android.content.Context {
     method public int getDisplayId();
+    method public void updateDisplay(int);
   }
 
   public class Intent implements java.lang.Cloneable android.os.Parcelable {
@@ -1491,6 +1519,7 @@
 
   public final class SensorPrivacyManager {
     method @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacy(int, int, boolean);
+    method @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist") @RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY) public void setSensorPrivacyState(int, int, int);
   }
 
   public static class SensorPrivacyManager.Sources {
@@ -1812,6 +1841,14 @@
 
 }
 
+package android.hardware.usb {
+
+  public final class UsbPort {
+    method @FlaggedApi("android.hardware.usb.flags.enable_is_mode_change_supported_api") @RequiresPermission(android.Manifest.permission.MANAGE_USB) public boolean isModeChangeSupported();
+  }
+
+}
+
 package android.inputmethodservice {
 
   public abstract class AbstractInputMethodService extends android.window.WindowProviderService implements android.view.KeyEvent.Callback {
@@ -2089,7 +2126,7 @@
 package android.media.projection {
 
   public final class MediaProjectionManager {
-    method @NonNull public android.content.Intent createScreenCaptureIntent(@Nullable android.app.ActivityOptions.LaunchCookie);
+    method @NonNull public android.content.Intent createScreenCaptureIntent(@NonNull android.app.ActivityOptions.LaunchCookie);
   }
 
 }
@@ -2241,9 +2278,7 @@
   }
 
   public final class BugreportParams {
-    field @FlaggedApi("android.app.admin.flags.onboarding_bugreport_v2_enabled") public static final int BUGREPORT_FLAG_KEEP_BUGREPORT_ON_RETRIEVAL = 4; // 0x4
     field @FlaggedApi("android.os.bugreport_mode_max_value") public static final int BUGREPORT_MODE_MAX_VALUE = 7; // 0x7
-    field @FlaggedApi("android.app.admin.flags.onboarding_bugreport_v2_enabled") public static final int BUGREPORT_MODE_ONBOARDING = 7; // 0x7
   }
 
   public class Build {
@@ -2707,17 +2742,17 @@
 
 package android.os.vibrator.persistence {
 
-  @FlaggedApi("android.os.vibrator.enable_vibration_serialization_apis") public class ParsedVibration {
+  public class ParsedVibration {
     method @NonNull public java.util.List<android.os.VibrationEffect> getVibrationEffects();
     method @Nullable public android.os.VibrationEffect resolve(@NonNull android.os.Vibrator);
   }
 
-  @FlaggedApi("android.os.vibrator.enable_vibration_serialization_apis") public final class VibrationXmlParser {
+  public final class VibrationXmlParser {
     method @Nullable public static android.os.vibrator.persistence.ParsedVibration parseDocument(@NonNull java.io.Reader) throws java.io.IOException;
     method @Nullable public static android.os.VibrationEffect parseVibrationEffect(@NonNull java.io.Reader) throws java.io.IOException;
   }
 
-  @FlaggedApi("android.os.vibrator.enable_vibration_serialization_apis") public final class VibrationXmlSerializer {
+  public final class VibrationXmlSerializer {
     method public static void serialize(@NonNull android.os.VibrationEffect, @NonNull java.io.Writer) throws java.io.IOException, android.os.vibrator.persistence.VibrationXmlSerializer.SerializationFailedException;
   }
 
@@ -3056,6 +3091,14 @@
     method @Deprecated public boolean isBound();
   }
 
+  @FlaggedApi("android.app.modes_api") public final class ZenDeviceEffects implements android.os.Parcelable {
+    method @NonNull public java.util.Set<java.lang.String> getExtraEffects();
+  }
+
+  @FlaggedApi("android.app.modes_api") public static final class ZenDeviceEffects.Builder {
+    method @NonNull public android.service.notification.ZenDeviceEffects.Builder setExtraEffects(@NonNull java.util.Set<java.lang.String>);
+  }
+
   public final class ZenPolicy implements android.os.Parcelable {
     method @FlaggedApi("android.app.modes_api") @NonNull public android.service.notification.ZenPolicy overwrittenWith(@Nullable android.service.notification.ZenPolicy);
   }
@@ -3128,6 +3171,7 @@
     method @NonNull public android.service.voice.AlwaysOnHotwordDetector.EventPayload.Builder setDataFormat(int);
     method @NonNull public android.service.voice.AlwaysOnHotwordDetector.EventPayload.Builder setHalEventReceivedMillis(long);
     method @NonNull public android.service.voice.AlwaysOnHotwordDetector.EventPayload.Builder setHotwordDetectedResult(@NonNull android.service.voice.HotwordDetectedResult);
+    method @FlaggedApi("android.app.wearable.enable_hotword_wearable_sensing_api") @NonNull public android.service.voice.AlwaysOnHotwordDetector.EventPayload.Builder setIsRecognitionStopped(boolean);
     method @NonNull public android.service.voice.AlwaysOnHotwordDetector.EventPayload.Builder setKeyphraseRecognitionExtras(@NonNull java.util.List<android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra>);
   }
 
@@ -3155,7 +3199,6 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetectorForTest(@NonNull String, @NonNull java.util.Locale, @NonNull android.hardware.soundtrigger.SoundTrigger.ModuleProperties, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.AlwaysOnHotwordDetector.Callback);
     method @NonNull @RequiresPermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION) public final android.service.voice.AlwaysOnHotwordDetector createAlwaysOnHotwordDetectorForTest(@NonNull String, @NonNull java.util.Locale, @Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, @NonNull android.hardware.soundtrigger.SoundTrigger.ModuleProperties, @NonNull java.util.concurrent.Executor, @NonNull android.service.voice.AlwaysOnHotwordDetector.Callback);
     method @NonNull public final java.util.List<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> listModuleProperties();
-    method @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds") @RequiresPermission(android.Manifest.permission.RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT) public final void resetHotwordTrainingDataEgressCountForTest();
     method public final void setTestModuleForAlwaysOnHotwordDetectorEnabled(boolean);
   }
 
@@ -3537,6 +3580,7 @@
   public final class Display {
     method @RequiresPermission(android.Manifest.permission.MODIFY_USER_PREFERRED_DISPLAY_MODE) public void clearUserPreferredDisplayMode();
     method @NonNull public android.view.Display.Mode getDefaultMode();
+    method public int getRemoveMode();
     method @NonNull public int[] getReportedHdrTypes();
     method @NonNull public android.graphics.ColorSpace[] getSupportedWideColorGamut();
     method @Nullable public android.view.Display.Mode getSystemPreferredDisplayMode();
@@ -3901,7 +3945,7 @@
   }
 
   public final class InputMethodInfo implements android.os.Parcelable {
-    ctor public InputMethodInfo(@NonNull String, @NonNull String, @NonNull CharSequence, @NonNull String, @NonNull String, boolean, @NonNull String);
+    ctor @FlaggedApi("android.view.inputmethod.connectionless_handwriting") public InputMethodInfo(@NonNull String, @NonNull String, @NonNull CharSequence, @NonNull String, @NonNull String, boolean, boolean, @NonNull String);
     ctor public InputMethodInfo(@NonNull String, @NonNull String, @NonNull CharSequence, @NonNull String, int);
     field public static final int COMPONENT_NAME_MAX_LENGTH = 1000; // 0x3e8
     field public static final int MAX_IMES_PER_PACKAGE = 20; // 0x14
diff --git a/core/java/android/adaptiveauth/flags.aconfig b/core/java/android/adaptiveauth/flags.aconfig
index 39e46bb..de4e607 100644
--- a/core/java/android/adaptiveauth/flags.aconfig
+++ b/core/java/android/adaptiveauth/flags.aconfig
@@ -1,6 +1,13 @@
 package: "android.adaptiveauth"
 
 flag {
+  name: "enable_adaptive_auth"
+  namespace: "biometrics"
+  description: "Feature flag for enabling the new adaptive auth service"
+  bug: "285053096"
+}
+
+flag {
   name: "report_biometric_auth_attempts"
   namespace: "biometrics"
   description: "Control the usage of the biometric auth signal in adaptive auth"
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index ab9a4ec..fae9f83 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -844,7 +844,28 @@
     private IBinder mToken;
     private IBinder mAssistToken;
     private IBinder mShareableActivityToken;
+
+    /** Initial caller of the activity. Can be retrieved from {@link #getInitialCaller} */
     private ComponentCaller mInitialCaller;
+    /**
+     * Caller associated with the Intent from {@link #getIntent}. Can be retrieved from
+     * {@link #getCaller}.
+     *
+     * <p>The value of this field depends on how the activity set its intent:
+     * - If via {@link #setIntent(Intent)}, the caller will be {@code null}.
+     * - If via {@link #setIntent(Intent, ComponentCaller)}, the caller will be set to the passed
+     *   caller.
+     */
+    private ComponentCaller mCaller;
+    /**
+     * Caller associated with an Intent within {@link #onNewIntent}. Can be retrieved from
+     * {@link #getCurrentCaller}, or by overriding {@link #onNewIntent(Intent, ComponentCaller)} and
+     * getting the second argument.
+     *
+     * <p>The value of this field will be {@code null} outside of {@link #onNewIntent}.
+     */
+    private ComponentCaller mCurrentCaller;
+
     @UnsupportedAppUsage
     private int mIdent;
     @UnsupportedAppUsage
@@ -1117,23 +1138,71 @@
 
     private static native String getDlWarning();
 
-    /** Return the intent that started this activity. */
+    /**
+     * Returns the intent that started this activity.
+     *
+     * <p>To keep the Intent instance for future use, call {@link #setIntent(Intent)}, and use
+     * this method to retrieve it.
+     */
     public Intent getIntent() {
         return mIntent;
     }
 
     /**
-     * Change the intent returned by {@link #getIntent}.  This holds a
-     * reference to the given intent; it does not copy it.  Often used in
-     * conjunction with {@link #onNewIntent}.
+     * Changes the intent returned by {@link #getIntent}. This holds a
+     * reference to the given intent; it does not copy it. Often used in
+     * conjunction with {@link #onNewIntent(Intent)}.
      *
-     * @param newIntent The new Intent object to return from getIntent
+     * @param newIntent The new Intent object to return from {@link #getIntent}
      *
      * @see #getIntent
-     * @see #onNewIntent
+     * @see #onNewIntent(Intent)
      */
     public void setIntent(Intent newIntent) {
+        internalSetIntent(newIntent, /* newCaller */ null);
+    }
+
+    /**
+     * Returns the ComponentCaller instance of the app that launched this activity with the intent
+     * from {@link #getIntent()}. To keep the value of the ComponentCaller instance for new intents,
+     * call {@link #setIntent(Intent, ComponentCaller)} instead of {@link #setIntent(Intent)}.
+     *
+     * @return {@link ComponentCaller} instance corresponding to the intent from
+     *         {@link #getIntent()}, or {@code null} if the activity was not launched with that
+     *         intent
+     *
+     * @see ComponentCaller
+     * @see #getIntent
+     * @see #setIntent(Intent, ComponentCaller)
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public @Nullable ComponentCaller getCaller() {
+        return mCaller;
+    }
+
+    /**
+     * Changes the intent returned by {@link #getIntent}, and ComponentCaller returned by
+     * {@link #getCaller}. This holds references to the given intent, and ComponentCaller; it does
+     * not copy them. Often used in conjunction with {@link #onNewIntent(Intent)}. To retrieve the
+     * caller from {@link #onNewIntent(Intent)}, use {@link #getCurrentCaller}, otherwise override
+     * {@link #onNewIntent(Intent, ComponentCaller)}.
+     *
+     * @param newIntent The new Intent object to return from {@link #getIntent}
+     * @param newCaller The new {@link ComponentCaller} object to return from
+     *                  {@link #getCaller}
+     *
+     * @see #getIntent
+     * @see #onNewIntent(Intent, ComponentCaller)
+     * @see #getCaller
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public void setIntent(@Nullable Intent newIntent, @Nullable ComponentCaller newCaller) {
+        internalSetIntent(newIntent, newCaller);
+    }
+
+    private void internalSetIntent(Intent newIntent, ComponentCaller newCaller) {
         mIntent = newIntent;
+        mCaller = newCaller;
     }
 
     /**
@@ -2284,18 +2353,42 @@
      * sometime later when activity becomes active again.
      *
      * <p>Note that {@link #getIntent} still returns the original Intent.  You
-     * can use {@link #setIntent} to update it to this new Intent.
+     * can use {@link #setIntent(Intent)} to update it to this new Intent.
      *
-     * @param intent The new intent that was started for the activity.
+     * @param intent The new intent that was used to start the activity
      *
      * @see #getIntent
-     * @see #setIntent
+     * @see #setIntent(Intent)
      * @see #onResume
      */
     protected void onNewIntent(Intent intent) {
     }
 
     /**
+     * Same as {@link #onNewIntent(Intent)}, but with an extra parameter for the ComponentCaller
+     * instance associated with the app that sent the intent.
+     *
+     * <p>If you want to retrieve the caller without overriding this method, call
+     * {@link #getCurrentCaller} inside your existing {@link #onNewIntent(Intent)}.
+     *
+     * <p>Note that you should only override one {@link #onNewIntent} method.
+     *
+     * @param intent The new intent that was used to start the activity
+     * @param caller The {@link ComponentCaller} instance associated with the app that sent the
+     *               intent
+     *
+     * @see ComponentCaller
+     * @see #onNewIntent(Intent)
+     * @see #getCurrentCaller
+     * @see #setIntent(Intent, ComponentCaller)
+     * @see #getCaller
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public void onNewIntent(@NonNull Intent intent, @NonNull ComponentCaller caller) {
+        onNewIntent(intent);
+    }
+
+    /**
      * The hook for {@link ActivityThread} to save the state of this activity.
      *
      * Calls {@link #onSaveInstanceState(android.os.Bundle)}
@@ -3927,6 +4020,7 @@
 
         if (keyCode == KeyEvent.KEYCODE_ESCAPE && mWindow.shouldCloseOnTouchOutside()) {
             event.startTracking();
+            finish();
             return true;
         }
 
@@ -4027,10 +4121,7 @@
         }
 
         if (keyCode == KeyEvent.KEYCODE_ESCAPE
-                && mWindow.shouldCloseOnTouchOutside()
-                && event.isTracking()
-                && !event.isCanceled()) {
-            finish();
+                && event.isTracking()) {
             return true;
         }
 
@@ -7046,6 +7137,35 @@
     }
 
     /**
+     * Returns the ComponentCaller instance of the app that re-launched this activity with a new
+     * intent via {@link #onNewIntent}.
+     *
+     * <p>Note that this method only works within the {@link #onNewIntent} method. If you call this
+     * method outside {@link #onNewIntent}, it will throw an {@link IllegalStateException}.
+     *
+     * <p>You can also retrieve the caller if you override
+     * {@link #onNewIntent(Intent, ComponentCaller)}.
+     *
+     * <p>To keep the ComponentCaller instance for future use, call
+     * {@link #setIntent(Intent, ComponentCaller)}, and use {@link #getCaller} to retrieve it.
+     *
+     * @return {@link ComponentCaller} instance
+     * @throws IllegalStateException if the caller is {@code null}, indicating the method was called
+     *                               outside {@link #onNewIntent}
+     * @see ComponentCaller
+     * @see #setIntent(Intent, ComponentCaller)
+     * @see #getCaller
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public @NonNull ComponentCaller getCurrentCaller() {
+        if (mCurrentCaller == null) {
+            throw new IllegalStateException("The caller is null because #getCurrentCaller should be"
+                    + " called within #onNewIntent method");
+        }
+        return mCurrentCaller;
+    }
+
+    /**
      * Control whether this activity's main window is visible.  This is intended
      * only for the special case of an activity that is not going to show a
      * UI itself, but can't just finish prior to onResume() because it needs
@@ -8742,6 +8862,7 @@
 
         if (android.security.Flags.contentUriPermissionApis()) {
             mInitialCaller = new ComponentCaller(getActivityToken(), initialCallerInfoAccessToken);
+            mCaller = mInitialCaller;
         }
     }
 
@@ -8817,6 +8938,16 @@
         Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
     }
 
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    final void performNewIntent(@NonNull Intent intent, @NonNull ComponentCaller caller) {
+        Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "performNewIntent");
+        mCanEnterPictureInPicture = true;
+        mCurrentCaller = caller;
+        onNewIntent(intent, caller);
+        mCurrentCaller = null;
+        Trace.traceEnd(Trace.TRACE_TAG_WINDOW_MANAGER);
+    }
+
     final void performStart(String reason) {
         if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) {
             Trace.traceBegin(Trace.TRACE_TAG_WINDOW_MANAGER, "performStart:"
diff --git a/core/java/android/app/ActivityClient.java b/core/java/android/app/ActivityClient.java
index a59f04b..10dc3c6 100644
--- a/core/java/android/app/ActivityClient.java
+++ b/core/java/android/app/ActivityClient.java
@@ -299,6 +299,26 @@
         }
     }
 
+    /** Returns the uid of the app that launched the activity. */
+    public int getActivityCallerUid(IBinder activityToken, IBinder callerToken) {
+        try {
+            return getActivityClientController().getActivityCallerUid(activityToken,
+                    callerToken);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /** Returns the package of the app that launched the activity. */
+    public String getActivityCallerPackage(IBinder activityToken, IBinder callerToken) {
+        try {
+            return getActivityClientController().getActivityCallerPackage(activityToken,
+                    callerToken);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
     /** Checks if the app that launched the activity has access to the URI. */
     public int checkActivityCallerContentUriPermission(IBinder activityToken, IBinder callerToken,
             Uri uri, int modeFlags) {
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index a8d183a..237d31c 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -20,6 +20,7 @@
 import static android.app.WindowConfiguration.windowingModeToString;
 import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
 import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
+import static android.media.audio.Flags.FLAG_FOREGROUND_AUDIO_CONTROL;
 
 import android.Manifest;
 import android.annotation.ColorInt;
@@ -794,6 +795,7 @@
             PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK,
             PROCESS_CAPABILITY_BFSL,
             PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK,
+            PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface ProcessCapability {}
@@ -943,6 +945,14 @@
     public static final int PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK = 1 << 5;
 
     /**
+     * @hide
+     * Process can access volume APIs and can request audio focus with GAIN.
+     */
+    @FlaggedApi(FLAG_FOREGROUND_AUDIO_CONTROL)
+    @SystemApi
+    public static final int PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL = 1 << 6;
+
+    /**
      * @hide all capabilities, the ORing of all flags in {@link ProcessCapability}.
      *
      * Don't expose it as TestApi -- we may add new capabilities any time, which could
@@ -953,7 +963,8 @@
             | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE
             | PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
             | PROCESS_CAPABILITY_BFSL
-            | PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK;
+            | PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK
+            | PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL;
 
     /**
      * All implicit capabilities. There are capabilities that process automatically have.
@@ -975,6 +986,7 @@
         pw.print((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-');
         pw.print((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
         pw.print((caps & PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK) != 0 ? 'U' : '-');
+        pw.print((caps & PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL) != 0 ? 'A' : '-');
     }
 
     /** @hide */
@@ -986,6 +998,7 @@
         sb.append((caps & PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK) != 0 ? 'N' : '-');
         sb.append((caps & PROCESS_CAPABILITY_BFSL) != 0 ? 'F' : '-');
         sb.append((caps & PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK) != 0 ? 'U' : '-');
+        sb.append((caps & PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL) != 0 ? 'A' : '-');
     }
 
     /**
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index e14bf68..2a2c5f0 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -20,6 +20,7 @@
 import static android.Manifest.permission.START_TASKS_FROM_RECENTS;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.content.Intent.FLAG_RECEIVER_FOREGROUND;
 import static android.view.Display.INVALID_DISPLAY;
@@ -1849,7 +1850,7 @@
     public int getPendingIntentLaunchFlags() {
         // b/243794108: Ignore all flags except the new task flag, to be reconsidered in b/254490217
         return mPendingIntentLaunchFlags &
-                (FLAG_ACTIVITY_NEW_TASK | FLAG_RECEIVER_FOREGROUND);
+                (FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_RECEIVER_FOREGROUND);
     }
 
     /**
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index de6a848..00ccd04 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -146,6 +146,8 @@
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.Process;
+import android.os.ProfilingFrameworkInitializer;
+import android.os.ProfilingServiceManager;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -4201,7 +4203,12 @@
             intent.prepareToEnterProcess(isProtectedComponent(r.activityInfo),
                     r.activity.getAttributionSource());
             r.activity.mFragments.noteStateNotSaved();
-            mInstrumentation.callActivityOnNewIntent(r.activity, intent);
+            if (android.security.Flags.contentUriPermissionApis()) {
+                ComponentCaller caller = new ComponentCaller(r.token, intent.mCallerToken);
+                mInstrumentation.callActivityOnNewIntent(r.activity, intent, caller);
+            } else {
+                mInstrumentation.callActivityOnNewIntent(r.activity, intent);
+            }
         }
     }
 
@@ -8588,6 +8595,9 @@
         NfcFrameworkInitializer.setNfcServiceManager(new NfcServiceManager());
         DeviceConfigInitializer.setDeviceConfigServiceManager(new DeviceConfigServiceManager());
         SeFrameworkInitializer.setSeServiceManager(new SeServiceManager());
+        if (android.server.Flags.telemetryApisService()) {
+            ProfilingFrameworkInitializer.setProfilingServiceManager(new ProfilingServiceManager());
+        }
     }
 
     private void purgePendingResources() {
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 5074ed7..16c7753 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -16,6 +16,9 @@
 
 package android.app;
 
+
+import static android.location.flags.Flags.FLAG_LOCATION_BYPASS;
+import static android.media.audio.Flags.foregroundAudioControl;
 import static android.permission.flags.Flags.FLAG_OP_ENABLE_MOBILE_DATA_BY_USER;
 import static android.view.contentprotection.flags.Flags.FLAG_CREATE_ACCESSIBILITY_OVERLAY_APP_OP_ENABLED;
 import static android.view.contentprotection.flags.Flags.FLAG_RAPID_CLEAR_NOTIFICATIONS_BY_LISTENER_APP_OP_ENABLED;
@@ -69,6 +72,8 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.permission.PermissionGroupUsage;
+import android.permission.PermissionUsageHelper;
 import android.provider.DeviceConfig;
 import android.util.ArrayMap;
 import android.util.ArraySet;
@@ -223,6 +228,7 @@
     private static Boolean sFullLog = null;
 
     final Context mContext;
+    private PermissionUsageHelper mUsageHelper;
 
     @UnsupportedAppUsage
     final IAppOpsService mService;
@@ -1571,9 +1577,17 @@
     public static final int OP_UNARCHIVAL_CONFIRMATION =
             AppProtoEnums.APP_OP_UNARCHIVAL_CONFIRMATION;
 
+    /**
+     * Allows an app to access location without the traditional location permissions and while the
+     * user location setting is off, but only during pre-defined emergency sessions.
+     *
+     * @hide
+     */
+    public static final int OP_EMERGENCY_LOCATION = AppProtoEnums.APP_OP_EMERGENCY_LOCATION;
+
     /** @hide */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
-    public static final int _NUM_OP = 147;
+    public static final int _NUM_OP = 148;
 
     /**
      * All app ops represented as strings.
@@ -1726,6 +1740,7 @@
             OPSTR_RUN_BACKUP_JOBS,
             OPSTR_ARCHIVE_ICON_OVERLAY,
             OPSTR_UNARCHIVAL_CONFIRMATION,
+            OPSTR_EMERGENCY_LOCATION,
     })
     public @interface AppOpString {}
 
@@ -2439,6 +2454,16 @@
      */
     public static final String OPSTR_RUN_BACKUP_JOBS = "android:run_backup_jobs";
 
+    /**
+     * Allows an app to access location without the traditional location permissions and while the
+     * user location setting is off, but only during pre-defined emergency sessions.
+     *
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(FLAG_LOCATION_BYPASS)
+    public static final String OPSTR_EMERGENCY_LOCATION = "android:emergency_location";
+
     /** {@link #sAppOpsToNote} not initialized yet for this op */
     private static final byte SHOULD_COLLECT_NOTE_OP_NOT_INITIALIZED = 0;
     /** Should not collect noting of this app-op in {@link #sAppOpsToNote} */
@@ -3019,6 +3044,9 @@
         new AppOpInfo.Builder(OP_UNARCHIVAL_CONFIRMATION, OPSTR_UNARCHIVAL_CONFIRMATION,
                 "UNARCHIVAL_CONFIRMATION")
                 .setDefaultMode(MODE_ALLOWED).build(),
+        // TODO(b/301150056): STOPSHIP determine how this appop should work with the permission
+        new AppOpInfo.Builder(OP_EMERGENCY_LOCATION, OPSTR_EMERGENCY_LOCATION, "EMERGENCY_LOCATION")
+                .setPermission(Manifest.permission.LOCATION_BYPASS).build(),
     };
 
     // The number of longs needed to form a full bitmask of app ops
@@ -3206,6 +3234,10 @@
      * @hide
      */
     public static @Mode int opToDefaultMode(int op) {
+        if (op == OP_TAKE_AUDIO_FOCUS && foregroundAudioControl()) {
+            // when removing the flag, change the entry in sAppOpInfos for OP_TAKE_AUDIO_FOCUS
+            return AppOpsManager.MODE_FOREGROUND;
+        }
         return sAppOpInfos[op].defaultMode;
     }
 
@@ -7736,6 +7768,44 @@
     }
 
     /**
+     * Retrieve current operation state for all applications for a device.
+     *
+     * The mode of the ops returned are set for the package but may not reflect their effective
+     * state due to UID policy or because it's controlled by a different global op.
+     *
+     * Use {@link #unsafeCheckOp(String, int, String)}} or
+     * {@link #noteOp(String, int, String, String, String)} if the effective mode is needed.
+     *
+     * @param ops The set of operations you are interested in, or null if you want all of them.
+     * @param persistentDeviceId The device that the ops are attributed to.
+     *
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(android.permission.flags.Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED)
+    @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS)
+    public @NonNull List<AppOpsManager.PackageOps> getPackagesForOps(@Nullable String[] ops,
+            @NonNull String persistentDeviceId) {
+        final int[] opCodes;
+        if (ops != null) {
+            final int opCount = ops.length;
+            opCodes = new int[opCount];
+            for (int i = 0; i < opCount; i++) {
+                opCodes[i] = sOpStrToOp.get(ops[i]);
+            }
+        } else {
+            opCodes = null;
+        }
+        final List<AppOpsManager.PackageOps> result;
+        try {
+            result =  mService.getPackagesForOpsForDevice(opCodes, persistentDeviceId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return (result != null) ? result : Collections.emptyList();
+    }
+
+    /**
      * Retrieve current operation state for all applications.
      *
      * The mode of the ops returned are set for the package but may not reflect their effective
@@ -7751,7 +7821,8 @@
     @UnsupportedAppUsage
     public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) {
         try {
-            return mService.getPackagesForOps(ops);
+            return mService.getPackagesForOpsForDevice(ops,
+                    VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -9917,6 +9988,30 @@
         appOpsNotedForAttribution.set(op);
     }
 
+    /**
+     * Get recent op usage data for CAMERA, MICROPHONE and LOCATION from all connected devices
+     * to power privacy indicator.
+     *
+     * @param includeMicrophoneUsage whether to retrieve microphone usage
+     * @return A list of permission groups currently or recently used by all apps by all users in
+     * the current profile group.
+     *
+     * @hide
+     */
+    @SystemApi
+    @NonNull
+    @FlaggedApi(android.permission.flags.Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED)
+    @RequiresPermission(Manifest.permission.GET_APP_OPS_STATS)
+    public List<PermissionGroupUsage> getPermissionGroupUsageForPrivacyIndicator(
+            boolean includeMicrophoneUsage) {
+        // Lazily initialize the usage helper
+        if (mUsageHelper == null) {
+            mUsageHelper = new PermissionUsageHelper(mContext);
+        }
+
+        return mUsageHelper.getOpUsageDataForAllDevices(includeMicrophoneUsage);
+    }
+
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(value = {
diff --git a/core/java/android/app/ApplicationStartInfo.java b/core/java/android/app/ApplicationStartInfo.java
index c6712c0..3715c6e 100644
--- a/core/java/android/app/ApplicationStartInfo.java
+++ b/core/java/android/app/ApplicationStartInfo.java
@@ -22,6 +22,7 @@
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.icu.text.SimpleDateFormat;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -249,7 +250,7 @@
     private @StartType int mStartType;
 
     /**
-     * @see #getStartIntent
+     * @see #getIntent
      */
     private Intent mStartIntent;
 
@@ -259,6 +260,11 @@
     private @LaunchMode int mLaunchMode;
 
     /**
+     * @see #wasForceStopped()
+     */
+    private boolean mWasForceStopped;
+
+    /**
      * @hide *
      */
     @IntDef(
@@ -427,6 +433,15 @@
     }
 
     /**
+     * @see #wasForceStopped()
+     * @param wasForceStopped whether the app had been force-stopped in the past
+     * @hide
+     */
+    public void setForceStopped(boolean wasForceStopped) {
+        mWasForceStopped = wasForceStopped;
+    }
+
+    /**
      * Current state of startup.
      *
      * Can be used to determine whether the object will have additional fields added as it may be
@@ -578,6 +593,20 @@
         return mLaunchMode;
     }
 
+    /**
+     * Informs whether this is the first process launch for an app since it was
+     * {@link ApplicationInfo#FLAG_STOPPED force-stopped} for some reason.
+     * This allows the app to know if it should re-register for any alarms, jobs and other callbacks
+     * that were cleared when the app was force-stopped.
+     *
+     * @return {@code true} if this is the first process launch of the app after having been
+     *      stopped, {@code false} otherwise.
+     */
+    @FlaggedApi(android.content.pm.Flags.FLAG_STAY_STOPPED)
+    public boolean wasForceStopped() {
+        return mWasForceStopped;
+    }
+
     @Override
     public int describeContents() {
         return 0;
@@ -603,6 +632,7 @@
         dest.writeInt(mStartType);
         dest.writeParcelable(mStartIntent, flags);
         dest.writeInt(mLaunchMode);
+        dest.writeBoolean(mWasForceStopped);
     }
 
     /** @hide */
@@ -622,6 +652,7 @@
         mStartType = other.mStartType;
         mStartIntent = other.mStartIntent;
         mLaunchMode = other.mLaunchMode;
+        mWasForceStopped = other.mWasForceStopped;
     }
 
     private ApplicationStartInfo(@NonNull Parcel in) {
@@ -643,6 +674,7 @@
         mStartIntent =
                 in.readParcelable(Intent.class.getClassLoader(), android.content.Intent.class);
         mLaunchMode = in.readInt();
+        mWasForceStopped = in.readBoolean();
     }
 
     private static String intern(@Nullable String source) {
@@ -720,6 +752,7 @@
             intentOut.close();
         }
         proto.write(ApplicationStartInfoProto.LAUNCH_MODE, mLaunchMode);
+        proto.write(ApplicationStartInfoProto.WAS_FORCE_STOPPED, mWasForceStopped);
         proto.end(token);
     }
 
@@ -799,6 +832,10 @@
                 case (int) ApplicationStartInfoProto.LAUNCH_MODE:
                     mLaunchMode = proto.readInt(ApplicationStartInfoProto.LAUNCH_MODE);
                     break;
+                case (int) ApplicationStartInfoProto.WAS_FORCE_STOPPED:
+                    mWasForceStopped = proto.readBoolean(
+                            ApplicationStartInfoProto.WAS_FORCE_STOPPED);
+                    break;
             }
         }
         proto.end(token);
@@ -823,6 +860,7 @@
                 .append(" reason=").append(reasonToString(mReason))
                 .append(" startType=").append(startTypeToString(mStartType))
                 .append(" launchMode=").append(mLaunchMode)
+                .append(" wasForceStopped=").append(mWasForceStopped)
                 .append('\n');
         if (mStartIntent != null) {
             sb.append(" intent=").append(mStartIntent.toString())
@@ -878,7 +916,7 @@
             && mDefiningUid == o.mDefiningUid && mReason == o.mReason
             && mStartupState == o.mStartupState && mStartType == o.mStartType
             && mLaunchMode == o.mLaunchMode && TextUtils.equals(mProcessName, o.mProcessName)
-            && timestampsEquals(o);
+            && timestampsEquals(o) && mWasForceStopped == o.mWasForceStopped;
     }
 
     @Override
diff --git a/core/java/android/app/AutomaticZenRule.java b/core/java/android/app/AutomaticZenRule.java
index d57a4e5..f6373d6 100644
--- a/core/java/android/app/AutomaticZenRule.java
+++ b/core/java/android/app/AutomaticZenRule.java
@@ -487,6 +487,9 @@
     public void validate() {
         if (Flags.modesApi()) {
             checkValidType(mType);
+            if (mDeviceEffects != null) {
+                mDeviceEffects.validate();
+            }
         }
     }
 
diff --git a/core/java/android/app/BroadcastOptions.java b/core/java/android/app/BroadcastOptions.java
index f727ee5..1b5b0fc 100644
--- a/core/java/android/app/BroadcastOptions.java
+++ b/core/java/android/app/BroadcastOptions.java
@@ -16,6 +16,8 @@
 
 package android.app;
 
+import android.annotation.CurrentTimeMillisLong;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -65,6 +67,8 @@
     private @Nullable BundleMerger mDeliveryGroupExtrasMerger;
     private @Nullable IntentFilter mDeliveryGroupMatchingFilter;
     private @DeferralPolicy int mDeferralPolicy;
+    private @CurrentTimeMillisLong long mEventTriggerTimestampMillis;
+    private @CurrentTimeMillisLong long mRemoteEventTriggerTimestampMillis;
 
     /** @hide */
     @IntDef(flag = true, prefix = { "FLAG_" }, value = {
@@ -190,6 +194,18 @@
             "android:broadcast.idForResponseEvent";
 
     /**
+     * Corresponds to {@link #setEventTriggerTimestampMillis(long)}.
+     */
+    private static final String KEY_EVENT_TRIGGER_TIMESTAMP =
+            "android:broadcast.eventTriggerTimestamp";
+
+    /**
+     * Corresponds to {@link #setRemoteEventTriggerTimestampMillis(long)}.
+     */
+    private static final String KEY_REMOTE_EVENT_TRIGGER_TIMESTAMP =
+            "android:broadcast.remoteEventTriggerTimestamp";
+
+    /**
      * Corresponds to {@link #setDeliveryGroupPolicy(int)}.
      */
     private static final String KEY_DELIVERY_GROUP_POLICY =
@@ -341,6 +357,8 @@
         mRequireNoneOfPermissions = opts.getStringArray(KEY_REQUIRE_NONE_OF_PERMISSIONS);
         mRequireCompatChangeId = opts.getLong(KEY_REQUIRE_COMPAT_CHANGE_ID, CHANGE_INVALID);
         mIdForResponseEvent = opts.getLong(KEY_ID_FOR_RESPONSE_EVENT);
+        mEventTriggerTimestampMillis = opts.getLong(KEY_EVENT_TRIGGER_TIMESTAMP);
+        mRemoteEventTriggerTimestampMillis = opts.getLong(KEY_REMOTE_EVENT_TRIGGER_TIMESTAMP);
         mDeliveryGroupPolicy = opts.getInt(KEY_DELIVERY_GROUP_POLICY,
                 DELIVERY_GROUP_POLICY_ALL);
         mDeliveryGroupMatchingNamespaceFragment = opts.getString(KEY_DELIVERY_GROUP_NAMESPACE);
@@ -787,6 +805,60 @@
     }
 
     /**
+     * Set the timestamp for the event that triggered this broadcast, in
+     * {@link System#currentTimeMillis()} timebase.
+     *
+     * <p> For instance, if this broadcast is for a push message, then this timestamp
+     * could correspond to when the device received the message.
+     *
+     * @param timestampMillis the timestamp in {@link System#currentTimeMillis()} timebase that
+     *                        correspond to the event that triggered this broadcast.
+     */
+    @FlaggedApi(android.app.Flags.FLAG_BCAST_EVENT_TIMESTAMPS)
+    public void setEventTriggerTimestampMillis(@CurrentTimeMillisLong long timestampMillis) {
+        mEventTriggerTimestampMillis = timestampMillis;
+    }
+
+    /**
+     * Return the timestamp for the event that triggered this broadcast, in
+     * {@link System#currentTimeMillis()} timebase.
+     *
+     * @return the timestamp in {@link System#currentTimeMillis()} timebase that was previously
+     *         set using {@link #setEventTriggerTimestampMillis(long)}.
+     */
+    @FlaggedApi(android.app.Flags.FLAG_BCAST_EVENT_TIMESTAMPS)
+    public @CurrentTimeMillisLong long getEventTriggerTimestampMillis() {
+        return mEventTriggerTimestampMillis;
+    }
+
+    /**
+     * Set the timestamp for the remote event, if any, that triggered this broadcast, in
+     * {@link System#currentTimeMillis()} timebase.
+     *
+     * <p> For instance, if this broadcast is for a push message, then this timestamp
+     * could correspond to when the message originated remotely.
+     *
+     * @param timestampMillis the timestamp in {@link System#currentTimeMillis()} timebase that
+     *                        correspond to the remote event that triggered this broadcast.
+     */
+    @FlaggedApi(android.app.Flags.FLAG_BCAST_EVENT_TIMESTAMPS)
+    public void setRemoteEventTriggerTimestampMillis(@CurrentTimeMillisLong long timestampMillis) {
+        mRemoteEventTriggerTimestampMillis = timestampMillis;
+    }
+
+    /**
+     * Return the timestamp for the remote event that triggered this broadcast, in
+     * {@link System#currentTimeMillis()} timebase.
+     *
+     * @return the timestamp in {@link System#currentTimeMillis()} timebase that was previously
+     *         set using {@link #setRemoteEventTriggerTimestampMillis(long)}}.
+     */
+    @FlaggedApi(android.app.Flags.FLAG_BCAST_EVENT_TIMESTAMPS)
+    public @CurrentTimeMillisLong long getRemoteEventTriggerTimestampMillis() {
+        return mRemoteEventTriggerTimestampMillis;
+    }
+
+    /**
      * Sets deferral policy for this broadcast that specifies how this broadcast
      * can be deferred for delivery at some future point.
      */
@@ -1120,6 +1192,12 @@
         if (mIdForResponseEvent != 0) {
             b.putLong(KEY_ID_FOR_RESPONSE_EVENT, mIdForResponseEvent);
         }
+        if (mEventTriggerTimestampMillis > 0) {
+            b.putLong(KEY_EVENT_TRIGGER_TIMESTAMP, mEventTriggerTimestampMillis);
+        }
+        if (mRemoteEventTriggerTimestampMillis > 0) {
+            b.putLong(KEY_REMOTE_EVENT_TRIGGER_TIMESTAMP, mRemoteEventTriggerTimestampMillis);
+        }
         if (mDeliveryGroupPolicy != DELIVERY_GROUP_POLICY_ALL) {
             b.putInt(KEY_DELIVERY_GROUP_POLICY, mDeliveryGroupPolicy);
         }
diff --git a/core/java/android/app/ComponentCaller.java b/core/java/android/app/ComponentCaller.java
index 44e8a0a..14bc003 100644
--- a/core/java/android/app/ComponentCaller.java
+++ b/core/java/android/app/ComponentCaller.java
@@ -17,6 +17,7 @@
 package android.app;
 
 import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -24,8 +25,6 @@
 import android.os.IBinder;
 import android.os.Process;
 
-import androidx.annotation.NonNull;
-
 import java.util.Objects;
 
 /**
@@ -45,7 +44,7 @@
     /**
      * @hide
      */
-    public ComponentCaller(@NonNull IBinder activityToken, @Nullable IBinder callerToken) {
+    public ComponentCaller(@Nullable IBinder activityToken, @Nullable IBinder callerToken) {
         mActivityToken = activityToken;
         mCallerToken = callerToken;
     }
@@ -83,7 +82,7 @@
      * @see Activity#getLaunchedFromUid()
      */
     public int getUid() {
-        return ActivityClient.getInstance().getLaunchedFromUid(mActivityToken);
+        return ActivityClient.getInstance().getActivityCallerUid(mActivityToken, mCallerToken);
     }
 
     /**
@@ -121,7 +120,7 @@
      */
     @Nullable
     public String getPackage() {
-        return ActivityClient.getInstance().getLaunchedFromPackage(mActivityToken);
+        return ActivityClient.getInstance().getActivityCallerPackage(mActivityToken, mCallerToken);
     }
 
     /**
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index d0d76a4..0e20138 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -672,7 +672,16 @@
      */
     @Override
     public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            event.startTracking();
+            return true;
+        }
+        if (keyCode == KeyEvent.KEYCODE_ESCAPE) {
+            if (mCancelable) {
+                cancel();
+            } else {
+                dismiss();
+            }
             event.startTracking();
             return true;
         }
@@ -712,11 +721,6 @@
                     }
                     break;
                 case KeyEvent.KEYCODE_ESCAPE:
-                    if (mCancelable) {
-                        cancel();
-                    } else {
-                        dismiss();
-                    }
                     return true;
             }
         }
diff --git a/core/java/android/app/ForegroundServiceTypePolicy.java b/core/java/android/app/ForegroundServiceTypePolicy.java
index d1e517b..7e06735 100644
--- a/core/java/android/app/ForegroundServiceTypePolicy.java
+++ b/core/java/android/app/ForegroundServiceTypePolicy.java
@@ -62,6 +62,7 @@
 import android.hardware.usb.UsbAccessory;
 import android.hardware.usb.UsbDevice;
 import android.hardware.usb.UsbManager;
+import android.os.Build;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -127,10 +128,14 @@
      * The FGS type enforcement:
      * deprecating the {@link android.content.pm.ServiceInfo#FOREGROUND_SERVICE_TYPE_DATA_SYNC}.
      *
+     * <p>Starting a FGS with this type from apps with targetSdkVersion
+     * {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} or later will result in a warning
+     * in the log.
+     *
      * @hide
      */
     @ChangeId
-    @Disabled
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
     @Overridable
     public static final long FGS_TYPE_DATA_SYNC_DEPRECATION_CHANGE_ID = 255039210L;
 
diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl
index 05fee72..9c8fea1 100644
--- a/core/java/android/app/IActivityClientController.aidl
+++ b/core/java/android/app/IActivityClientController.aidl
@@ -90,7 +90,9 @@
     ComponentName getCallingActivity(in IBinder token);
     String getCallingPackage(in IBinder token);
     int getLaunchedFromUid(in IBinder token);
+    int getActivityCallerUid(in IBinder activityToken, in IBinder callerToken);
     String getLaunchedFromPackage(in IBinder token);
+    String getActivityCallerPackage(in IBinder activityToken, in IBinder callerToken);
 
     int checkActivityCallerContentUriPermission(in IBinder activityToken, in IBinder callerToken,
             in Uri uri, int modeFlags, int userId);
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl
index e2e2f1d..08636ae 100644
--- a/core/java/android/app/IActivityTaskManager.aidl
+++ b/core/java/android/app/IActivityTaskManager.aidl
@@ -332,8 +332,10 @@
 
     /**
      * When the Picture-in-picture state has changed.
+     * @param pipState the {@link PictureInPictureUiState} is sent to current pip task if there is
+     * any -or- the top most task (state like entering PiP does not require a pinned task).
      */
-    void onPictureInPictureStateChanged(in PictureInPictureUiState pipState);
+    void onPictureInPictureUiStateChanged(in PictureInPictureUiState pipState);
 
     /**
      * Re-attach navbar to the display during a recents transition.
diff --git a/core/java/android/app/ICallNotificationEventCallback.aidl b/core/java/android/app/ICallNotificationEventCallback.aidl
new file mode 100644
index 0000000..ba34829
--- /dev/null
+++ b/core/java/android/app/ICallNotificationEventCallback.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2024, 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 android.app;
+
+import android.os.UserHandle;
+
+/**
+ * Callback to be called when a call notification is posted or removed
+ *
+ * @hide
+ */
+oneway interface ICallNotificationEventCallback {
+    void onCallNotificationPosted(String packageName, in UserHandle userHandle);
+    void onCallNotificationRemoved(String packageName, in UserHandle userHandle);
+}
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 578105f..b5e3556 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -24,6 +24,7 @@
 import android.app.NotificationChannelGroup;
 import android.app.NotificationHistory;
 import android.app.NotificationManager;
+import android.app.ICallNotificationEventCallback;
 import android.content.AttributionSource;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -247,4 +248,10 @@
 
     @EnforcePermission("MANAGE_TOAST_RATE_LIMITING")
     void setToastRateLimitingEnabled(boolean enable);
+
+    @EnforcePermission(allOf={"INTERACT_ACROSS_USERS", "ACCESS_NOTIFICATIONS"})
+    void registerCallNotificationEventListener(String packageName, in UserHandle userHandle, in ICallNotificationEventCallback listener);
+    @EnforcePermission(allOf={"INTERACT_ACROSS_USERS", "ACCESS_NOTIFICATIONS"})
+    void unregisterCallNotificationEventListener(String packageName, in UserHandle userHandle, in ICallNotificationEventCallback listener);
+
 }
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index 454d605..be7199b 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -16,6 +16,7 @@
 
 package android.app;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -1624,7 +1625,51 @@
      * @param intent The new intent being received.
      */
     public void callActivityOnNewIntent(Activity activity, Intent intent) {
-        activity.performNewIntent(intent);
+        if (android.security.Flags.contentUriPermissionApis()) {
+            activity.performNewIntent(intent, new ComponentCaller(activity.getActivityToken(),
+                    /* callerToken */ null));
+        } else {
+            activity.performNewIntent(intent);
+        }
+    }
+
+    /**
+     * Same as {@link #callActivityOnNewIntent(Activity, Intent)}, but with an extra parameter for
+     * the {@link ComponentCaller} instance associated with the app that sent the intent.
+     *
+     * @param activity The activity receiving a new Intent.
+     * @param intent The new intent being received.
+     * @param caller The {@link ComponentCaller} instance that launched the activity with the new
+     *               intent.
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public void callActivityOnNewIntent(@NonNull Activity activity, @NonNull Intent intent,
+            @NonNull ComponentCaller caller) {
+        activity.performNewIntent(intent, caller);
+    }
+
+    /**
+     * @hide
+     */
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    public void callActivityOnNewIntent(Activity activity, ReferrerIntent intent,
+            @NonNull ComponentCaller caller) {
+        internalCallActivityOnNewIntent(activity, intent, caller);
+    }
+
+    @FlaggedApi(android.security.Flags.FLAG_CONTENT_URI_PERMISSION_APIS)
+    private void internalCallActivityOnNewIntent(Activity activity, ReferrerIntent intent,
+            @NonNull ComponentCaller caller) {
+        final String oldReferrer = activity.mReferrer;
+        try {
+            if (intent != null) {
+                activity.mReferrer = intent.mReferrer;
+            }
+            Intent newIntent = intent != null ? new Intent(intent) : null;
+            callActivityOnNewIntent(activity, newIntent, caller);
+        } finally {
+            activity.mReferrer = oldReferrer;
+        }
     }
 
     /**
@@ -1632,14 +1677,19 @@
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
     public void callActivityOnNewIntent(Activity activity, ReferrerIntent intent) {
-        final String oldReferrer = activity.mReferrer;
-        try {
-            if (intent != null) {
-                activity.mReferrer = intent.mReferrer;
+        if (android.security.Flags.contentUriPermissionApis()) {
+            internalCallActivityOnNewIntent(activity, intent, new ComponentCaller(
+                    activity.getActivityToken(), /* callerToken */ null));
+        } else {
+            final String oldReferrer = activity.mReferrer;
+            try {
+                if (intent != null) {
+                    activity.mReferrer = intent.mReferrer;
+                }
+                callActivityOnNewIntent(activity, intent != null ? new Intent(intent) : null);
+            } finally {
+                activity.mReferrer = oldReferrer;
             }
-            callActivityOnNewIntent(activity, intent != null ? new Intent(intent) : null);
-        } finally {
-            activity.mReferrer = oldReferrer;
         }
     }
 
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index aa9de81..d6e8ae3 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3020,6 +3020,43 @@
     }
 
     /**
+     * @hide
+     */
+    public String loadHeaderAppName(Context context) {
+        CharSequence name = null;
+        // Check if there is a non-empty substitute app name and return that.
+        if (extras.containsKey(EXTRA_SUBSTITUTE_APP_NAME)) {
+            name = extras.getString(EXTRA_SUBSTITUTE_APP_NAME);
+            if (!TextUtils.isEmpty(name)) {
+                return name.toString();
+            }
+        }
+        // If not, try getting the app info from extras.
+        if (context == null) {
+            return null;
+        }
+        final PackageManager pm = context.getPackageManager();
+        if (TextUtils.isEmpty(name)) {
+            if (extras.containsKey(EXTRA_BUILDER_APPLICATION_INFO)) {
+                final ApplicationInfo info = extras.getParcelable(EXTRA_BUILDER_APPLICATION_INFO,
+                        ApplicationInfo.class);
+                if (info != null) {
+                    name = pm.getApplicationLabel(info);
+                }
+            }
+        }
+        // If that's still empty, use the one from the context directly.
+        if (TextUtils.isEmpty(name)) {
+            name = pm.getApplicationLabel(context.getApplicationInfo());
+        }
+        // If there's still nothing, ¯\_(ツ)_/¯
+        if (TextUtils.isEmpty(name)) {
+            return null;
+        }
+        return name.toString();
+    }
+
+    /**
      * Removes heavyweight parts of the Notification object for archival or for sending to
      * listeners when the full contents are not necessary.
      * @hide
@@ -5769,34 +5806,7 @@
          */
         @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
         public String loadHeaderAppName() {
-            CharSequence name = null;
-            final PackageManager pm = mContext.getPackageManager();
-            if (mN.extras.containsKey(EXTRA_SUBSTITUTE_APP_NAME)) {
-                // only system packages which lump together a bunch of unrelated stuff
-                // may substitute a different name to make the purpose of the
-                // notification more clear. the correct package label should always
-                // be accessible via SystemUI.
-                final String pkg = mContext.getPackageName();
-                final String subName = mN.extras.getString(EXTRA_SUBSTITUTE_APP_NAME);
-                if (PackageManager.PERMISSION_GRANTED == pm.checkPermission(
-                        android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME, pkg)) {
-                    name = subName;
-                } else {
-                    Log.w(TAG, "warning: pkg "
-                            + pkg + " attempting to substitute app name '" + subName
-                            + "' without holding perm "
-                            + android.Manifest.permission.SUBSTITUTE_NOTIFICATION_APP_NAME);
-                }
-            }
-            if (TextUtils.isEmpty(name)) {
-                name = pm.getApplicationLabel(mContext.getApplicationInfo());
-            }
-            if (TextUtils.isEmpty(name)) {
-                // still nothing?
-                return null;
-            }
-
-            return String.valueOf(name);
+            return mN.loadHeaderAppName(mContext);
         }
 
         /**
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 8c886fe..9dfb5b0 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -16,6 +16,7 @@
 
 package android.app;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -69,6 +70,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.Executor;
 
 /**
  * Class to notify the user of events that happen.  This is how you tell
@@ -627,6 +629,9 @@
      */
     public static int MAX_SERVICE_COMPONENT_NAME_LENGTH = 500;
 
+    private final Map<CallNotificationEventListener, CallNotificationEventCallbackStub>
+            mCallNotificationEventCallbacks = new HashMap<>();
+
     @UnsupportedAppUsage
     private static INotificationManager sService;
 
@@ -2848,4 +2853,126 @@
             default: return defValue;
         }
     }
+
+    /**
+     * Callback to receive updates when a call notification has been posted or removed
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public interface CallNotificationEventListener {
+        /**
+         *  Called when a call notification was posted by a package this listener
+         *  has registered for.
+         * @param packageName package name of the app that posted the removed notification
+         */
+        @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+        void onCallNotificationPosted(@NonNull String packageName, @NonNull UserHandle userHandle);
+
+        /**
+         *  Called when a call notification was removed by a package this listener
+         *  has registered for.
+         * @param packageName package name of the app that removed notification
+         */
+        @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+        void onCallNotificationRemoved(@NonNull String packageName, @NonNull UserHandle userHandle);
+    }
+
+    private static class CallNotificationEventCallbackStub extends
+            ICallNotificationEventCallback.Stub {
+        final String mPackageName;
+        final UserHandle mUserHandle;
+        final Executor mExecutor;
+        final CallNotificationEventListener mListener;
+
+        CallNotificationEventCallbackStub(@NonNull String packageName,
+                @NonNull UserHandle userHandle, @NonNull @CallbackExecutor Executor executor,
+                @NonNull CallNotificationEventListener listener) {
+            mPackageName = packageName;
+            mUserHandle = userHandle;
+            mExecutor = executor;
+            mListener = listener;
+        }
+
+        @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+        @Override
+        public void onCallNotificationPosted(String packageName, UserHandle userHandle) {
+            mExecutor.execute(() -> mListener.onCallNotificationPosted(packageName, userHandle));
+        }
+
+        @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+        @Override
+        public void onCallNotificationRemoved(String packageName, UserHandle userHandle) {
+            mExecutor.execute(() -> mListener.onCallNotificationRemoved(packageName, userHandle));
+        }
+    }
+
+    /**
+     * Register a listener to be notified when a call notification is posted or removed
+     * for a specific package and user.
+     *
+     * @param packageName Which package to monitor
+     * @param userHandle Which user to monitor
+     * @param executor Callback will run on this executor
+     * @param listener Listener to register
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(allOf = {
+        android.Manifest.permission.INTERACT_ACROSS_USERS,
+        android.Manifest.permission.ACCESS_NOTIFICATIONS})
+    @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public void registerCallNotificationEventListener(@NonNull String packageName,
+            @NonNull UserHandle userHandle, @NonNull @CallbackExecutor Executor executor,
+            @NonNull CallNotificationEventListener listener) {
+        checkRequired("packageName", packageName);
+        checkRequired("userHandle", userHandle);
+        checkRequired("executor", executor);
+        checkRequired("listener", listener);
+        INotificationManager service = getService();
+        try {
+            synchronized (mCallNotificationEventCallbacks) {
+                CallNotificationEventCallbackStub callbackStub =
+                        new CallNotificationEventCallbackStub(packageName, userHandle,
+                                executor, listener);
+                mCallNotificationEventCallbacks.put(listener, callbackStub);
+
+                service.registerCallNotificationEventListener(packageName, userHandle,
+                        callbackStub);
+            }
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Unregister a listener that was previously
+     * registered with {@link #registerCallNotificationEventListener}
+     *
+     * @param listener Listener to unregister
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    @RequiresPermission(allOf = {
+        android.Manifest.permission.INTERACT_ACROSS_USERS,
+        android.Manifest.permission.ACCESS_NOTIFICATIONS})
+    public void unregisterCallNotificationEventListener(
+            @NonNull CallNotificationEventListener listener) {
+        checkRequired("listener", listener);
+        INotificationManager service = getService();
+        try {
+            synchronized (mCallNotificationEventCallbacks) {
+                CallNotificationEventCallbackStub callbackStub =
+                        mCallNotificationEventCallbacks.remove(listener);
+                if (callbackStub != null) {
+                    service.unregisterCallNotificationEventListener(callbackStub.mPackageName,
+                            callbackStub.mUserHandle, callbackStub);
+                }
+            }
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
 }
diff --git a/core/java/android/app/OWNERS b/core/java/android/app/OWNERS
index f92ff83..da0cc01 100644
--- a/core/java/android/app/OWNERS
+++ b/core/java/android/app/OWNERS
@@ -31,6 +31,7 @@
 per-file SystemServiceRegistry.java = file:/services/core/java/com/android/server/am/OWNERS
 per-file *UserSwitchObserver* = file:/services/core/java/com/android/server/am/OWNERS
 per-file *UiAutomation* = file:/services/accessibility/OWNERS
+per-file *UiAutomation* = file:/core/java/android/permission/OWNERS
 per-file GameManager* = file:/GAME_MANAGER_OWNERS
 per-file GameMode* = file:/GAME_MANAGER_OWNERS
 per-file GameState* = file:/GAME_MANAGER_OWNERS
diff --git a/core/java/android/app/PictureInPictureUiState.java b/core/java/android/app/PictureInPictureUiState.java
index 32ce89a..39ba54c 100644
--- a/core/java/android/app/PictureInPictureUiState.java
+++ b/core/java/android/app/PictureInPictureUiState.java
@@ -16,8 +16,10 @@
 
 package android.app;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.TestApi;
+import android.content.res.Configuration;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,23 +30,30 @@
  */
 public final class PictureInPictureUiState implements Parcelable {
 
-    private boolean mIsStashed;
+    private final boolean mIsStashed;
+    private final boolean mIsEnteringPip;
 
     /** {@hide} */
     PictureInPictureUiState(Parcel in) {
         mIsStashed = in.readBoolean();
+        mIsEnteringPip = in.readBoolean();
     }
 
     /** {@hide} */
     @TestApi
     public PictureInPictureUiState(boolean isStashed) {
+        this(isStashed, false /* isEnteringPip */);
+    }
+
+    private PictureInPictureUiState(boolean isStashed, boolean isEnteringPip) {
         mIsStashed = isStashed;
+        mIsEnteringPip = isEnteringPip;
     }
 
     /**
      * Returns whether Picture-in-Picture is stashed or not. A stashed PiP means it is only
-     * partially visible to the user, with some parts of it being off-screen. This is usually
-     * an UI state that is triggered by the user, such as flinging the PiP to the edge or letting go
+     * partially visible to the user, with some parts of it being off-screen. This is usually a
+     * UI state that is triggered by the user, such as flinging the PiP to the edge or letting go
      * of PiP while dragging partially off-screen.
      *
      * Developers can use this in conjunction with
@@ -52,7 +61,7 @@
      * when the PiP stash state has changed. For example, if the state changed from {@code false} to
      * {@code true}, developers can choose to temporarily pause video playback if PiP is of video
      * content. Vice versa, if changing from {@code true} to {@code false} and video content is
-     * paused, developers can resumevideo playback.
+     * paused, developers can resume video playback.
      *
      * @see <a href="http://developer.android.com/about/versions/12/features/pip-improvements">
      *     Picture in Picture (PiP) improvements</a>
@@ -61,17 +70,44 @@
         return mIsStashed;
     }
 
+    /**
+     * Returns {@code true} if the app is going to enter Picture-in-Picture (PiP) mode.
+     *
+     * This state is associated with the entering PiP animation. When that animation starts,
+     * whether via auto enter PiP or calling
+     * {@link Activity#enterPictureInPictureMode(PictureInPictureParams)} explicitly, app can expect
+     * {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)} callback with
+     * {@link #isEnteringPip()} to be {@code true} first,
+     * followed by {@link Activity#onPictureInPictureModeChanged(boolean, Configuration)} when it
+     * fully settles in PiP mode.
+     *
+     * When app receives the
+     * {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)} callback with
+     * {@link #isEnteringPip()} being {@code true}, it's recommended to hide certain UI elements,
+     * such as video controls, to archive a clean entering PiP animation.
+     *
+     * In case an application wants to restore the previously hidden UI elements when exiting
+     * PiP, it is recommended to do that in
+     * {@code onPictureInPictureModeChanged(isInPictureInPictureMode=false)} callback rather
+     * than the beginning of exit PiP animation.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_PIP_UI_STATE_CALLBACK_ON_ENTERING)
+    public boolean isEnteringPip() {
+        return mIsEnteringPip;
+    }
+
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
         if (!(o instanceof PictureInPictureUiState)) return false;
         PictureInPictureUiState that = (PictureInPictureUiState) o;
-        return Objects.equals(mIsStashed, that.mIsStashed);
+        return mIsStashed == that.mIsStashed
+                && mIsEnteringPip == that.mIsEnteringPip;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mIsStashed);
+        return Objects.hash(mIsStashed, mIsEnteringPip);
     }
 
     @Override
@@ -82,6 +118,7 @@
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
         out.writeBoolean(mIsStashed);
+        out.writeBoolean(mIsEnteringPip);
     }
 
     public static final @android.annotation.NonNull Creator<PictureInPictureUiState> CREATOR =
@@ -93,4 +130,43 @@
                     return new PictureInPictureUiState[size];
                 }
             };
+
+    /**
+     * Builder class for {@link PictureInPictureUiState}.
+     * @hide
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_PIP_UI_STATE_CALLBACK_ON_ENTERING)
+    public static final class Builder {
+        private boolean mIsStashed;
+        private boolean mIsEnteringPip;
+
+        /** Empty constructor. */
+        public Builder() {
+        }
+
+        /**
+         * Sets the {@link #mIsStashed} state.
+         * @return The same {@link Builder} instance.
+         */
+        public Builder setStashed(boolean isStashed) {
+            mIsStashed = isStashed;
+            return this;
+        }
+
+        /**
+         * Sets the {@link #mIsEnteringPip} state.
+         * @return The same {@link Builder} instance.
+         */
+        public Builder setEnteringPip(boolean isEnteringPip) {
+            mIsEnteringPip = isEnteringPip;
+            return this;
+        }
+
+        /**
+         * @return The constructed {@link PictureInPictureUiState} instance.
+         */
+        public PictureInPictureUiState build() {
+            return new PictureInPictureUiState(mIsStashed, mIsEnteringPip);
+        }
+    }
 }
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 6255260..24a5157 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -550,7 +550,7 @@
     @UnsupportedAppUsage
     protected @Nullable AssetManager createAssetManager(@NonNull final ResourcesKey key,
             @Nullable ApkAssetsSupplier apkSupplier) {
-        final AssetManager.Builder builder = new AssetManager.Builder().setNoInit();
+        final AssetManager.Builder builder = new AssetManager.Builder();
 
         final ArrayList<ApkKey> apkKeys = extractApkKeys(key);
         for (int i = 0, n = apkKeys.size(); i < n; i++) {
@@ -1555,7 +1555,7 @@
         } else if(overlayPaths == null) {
             return ArrayUtils.cloneOrNull(resourceDirs);
         } else {
-            final var paths = new ArrayList<String>(overlayPaths.length + resourceDirs.length);
+            final ArrayList<String> paths = new ArrayList<>();
             for (final String path : overlayPaths) {
                 paths.add(path);
             }
diff --git a/location/java/android/location/GeocoderParams.aidl b/core/java/android/app/StatusBarManager.aidl
similarity index 81%
rename from location/java/android/location/GeocoderParams.aidl
rename to core/java/android/app/StatusBarManager.aidl
index 2484e20..687678c 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/core/java/android/app/StatusBarManager.aidl
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2010, The Android Open Source Project
+/**
+ * Copyright (c) 2024, 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.
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.app;
 
-parcelable GeocoderParams;
+parcelable StatusBarManager.DisableInfo;
\ No newline at end of file
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index 14195c4..e6e46dd 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -21,6 +21,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
@@ -43,6 +44,7 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.Parcelable;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -57,6 +59,7 @@
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.internal.statusbar.IUndoMediaTransferCallback;
 import com.android.internal.statusbar.NotificationVisibility;
+import com.android.internal.util.DataClass;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -629,38 +632,49 @@
     }
 
     /**
-     * Disable some features in the status bar.  Pass the bitwise-or of the DISABLE_* flags.
-     * To re-enable everything, pass {@link #DISABLE_NONE}.
+     * @deprecated
+     * Disable some features in the status bar.  Pass the bitwise-or of the DISABLE_*
+     * flags. To re-enable everything, pass {@link #DISABLE_NONE}.
+     *
+     * This method is deprecated and callers should use
+     * {@link #requestDisabledComponent(DisableInfo, String)}
+     *
+     * @hide
+     */
+    @Deprecated
+    @UnsupportedAppUsage
+    public void disable(int what) {
+        requestDisabledComponent(new DisableInfo(what & DISABLE_MASK, what & DISABLE2_MASK), null);
+    }
+
+    /**
+     * @deprecated
+     * Disable some features in the status bar.  Pass the bitwise-or of the DISABLE_2*
+     * flags. To re-enable everything, pass {@link #DISABLE2_NONE}.
+     *
+     * This method is deprecated and callers should use
+     * {@link #requestDisabledComponent(DisableInfo, String)}
+     *
+     * @hide
+     */
+    @Deprecated
+    @UnsupportedAppUsage
+    public void disable2(int what) {
+        requestDisabledComponent(new DisableInfo(what & DISABLE_MASK, what & DISABLE2_MASK), null);
+    }
+
+    /**
+     * Disable some features in the status bar. Pass a DisableInfo object with the required flags.
      *
      * @hide
      */
     @UnsupportedAppUsage
-    public void disable(int what) {
+    public void requestDisabledComponent(DisableInfo disableInfo, String reason) {
         try {
             final int userId = Binder.getCallingUserHandle().getIdentifier();
             final IStatusBarService svc = getService();
             if (svc != null) {
-                svc.disableForUser(what, mToken, mContext.getPackageName(), userId);
-            }
-        } catch (RemoteException ex) {
-            throw ex.rethrowFromSystemServer();
-        }
-    }
-
-    /**
-     * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags.
-     * To re-enable everything, pass {@link #DISABLE_NONE}.
-     *
-     * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
-     *
-     * @hide
-     */
-    public void disable2(@Disable2Flags int what) {
-        try {
-            final int userId = Binder.getCallingUserHandle().getIdentifier();
-            final IStatusBarService svc = getService();
-            if (svc != null) {
-                svc.disable2ForUser(what, mToken, mContext.getPackageName(), userId);
+                svc.disableForUser(disableInfo, mToken, mContext.getPackageName(), userId, reason);
             }
         } catch (RemoteException ex) {
             throw ex.rethrowFromSystemServer();
@@ -888,18 +902,9 @@
     @SystemApi
     @RequiresPermission(android.Manifest.permission.STATUS_BAR)
     public void setDisabledForSetup(boolean disabled) {
-        try {
-            final int userId = Binder.getCallingUserHandle().getIdentifier();
-            final IStatusBarService svc = getService();
-            if (svc != null) {
-                svc.disableForUser(disabled ? DEFAULT_SETUP_DISABLE_FLAGS : DISABLE_NONE,
-                        mToken, mContext.getPackageName(), userId);
-                svc.disable2ForUser(disabled ? DEFAULT_SETUP_DISABLE2_FLAGS : DISABLE2_NONE,
-                        mToken, mContext.getPackageName(), userId);
-            }
-        } catch (RemoteException ex) {
-            throw ex.rethrowFromSystemServer();
-        }
+        int flags1 = disabled ? DEFAULT_SETUP_DISABLE_FLAGS : DISABLE_NONE;
+        DisableInfo info = new DisableInfo(flags1, DISABLE2_NONE);
+        requestDisabledComponent(info, "setDisabledForSetup");
     }
 
     /**
@@ -914,16 +919,9 @@
     @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     @RequiresPermission(android.Manifest.permission.STATUS_BAR)
     public void setExpansionDisabledForSimNetworkLock(boolean disabled) {
-        try {
-            final int userId = Binder.getCallingUserHandle().getIdentifier();
-            final IStatusBarService svc = getService();
-            if (svc != null) {
-                svc.disableForUser(disabled ? DEFAULT_SIM_LOCKED_DISABLED_FLAGS : DISABLE_NONE,
-                        mToken, mContext.getPackageName(), userId);
-            }
-        } catch (RemoteException ex) {
-            throw ex.rethrowFromSystemServer();
-        }
+        int flags1 = disabled ? DEFAULT_SIM_LOCKED_DISABLED_FLAGS : DISABLE_NONE;
+        DisableInfo info = new DisableInfo(flags1, DISABLE2_NONE);
+        requestDisabledComponent(info, "setExpansionDisabledForSimNetworkLock");
     }
 
     /**
@@ -1315,33 +1313,75 @@
      * @hide
      */
     @SystemApi
-    public static final class DisableInfo {
+    @DataClass
+    public static final class DisableInfo implements Parcelable {
 
+        /**
+         * @hide
+         */
         private boolean mStatusBarExpansion;
+        /**
+         * @hide
+         */
         private boolean mNavigateHome;
+        /**
+         * @hide
+         */
         private boolean mNotificationPeeking;
+        /**
+         * @hide
+         */
         private boolean mRecents;
+        /**
+         * @hide
+         */
+        private boolean mBack;
+        /**
+         * @hide
+         */
         private boolean mSearch;
+        /**
+         * @hide
+         */
         private boolean mSystemIcons;
+        /**
+         * @hide
+         */
         private boolean mClock;
+        /**
+         * @hide
+         */
         private boolean mNotificationIcons;
+        /**
+         * @hide
+         */
         private boolean mRotationSuggestion;
+        /**
+         * @hide
+         */
+        private boolean mNotificationTicker;
 
         /** @hide */
+        @SuppressLint("UnflaggedApi")
         public DisableInfo(int flags1, int flags2) {
             mStatusBarExpansion = (flags1 & DISABLE_EXPAND) != 0;
             mNavigateHome = (flags1 & DISABLE_HOME) != 0;
             mNotificationPeeking = (flags1 & DISABLE_NOTIFICATION_ALERTS) != 0;
             mRecents = (flags1 & DISABLE_RECENT) != 0;
+            mBack = (flags1 & DISABLE_BACK) != 0;
             mSearch = (flags1 & DISABLE_SEARCH) != 0;
             mSystemIcons = (flags1 & DISABLE_SYSTEM_INFO) != 0;
             mClock = (flags1 & DISABLE_CLOCK) != 0;
             mNotificationIcons = (flags1 & DISABLE_NOTIFICATION_ICONS) != 0;
+            mNotificationTicker = (flags1 & DISABLE_NOTIFICATION_TICKER) != 0;
             mRotationSuggestion = (flags2 & DISABLE2_ROTATE_SUGGESTIONS) != 0;
         }
 
         /** @hide */
-        public DisableInfo() {}
+        @SuppressLint("UnflaggedApi")
+        public DisableInfo() {
+            setEnableAll();
+        }
 
         /**
          * @return {@code true} if expanding the notification shade is disabled
@@ -1369,7 +1409,7 @@
         }
 
         /** * @hide */
-        public void setNagivationHomeDisabled(boolean disabled) {
+        public void setNavigationHomeDisabled(boolean disabled) {
             mNavigateHome = disabled;
         }
 
@@ -1404,6 +1444,21 @@
         }
 
         /**
+         * @return {@code true} if mBack is disabled
+         *
+         * @hide
+         */
+        @SystemApi
+        public boolean isBackDisabled() {
+            return mBack;
+        }
+
+        /**  @hide */
+        public void setBackDisabled(boolean disabled) {
+            mBack = disabled;
+        }
+
+        /**
          * @return {@code true} if mSearch is disabled
          *
          * @hide
@@ -1461,6 +1516,20 @@
         }
 
         /**
+         * @return {@code true} if notification ticker is disabled
+         *
+         * @hide
+         */
+        public boolean isNotificationTickerDisabled() {
+            return mNotificationTicker;
+        }
+
+        /** * @hide */
+        public void setNotificationTickerDisabled(boolean disabled) {
+            mNotificationTicker = disabled;
+        }
+
+        /**
          * Returns whether the rotation suggestion is disabled.
          *
          * @hide
@@ -1470,6 +1539,11 @@
             return mRotationSuggestion;
         }
 
+        /** * @hide */
+        public void setRotationSuggestionDisabled(boolean disabled) {
+            mNotificationIcons = disabled;
+        }
+
         /**
          * @return {@code true} if no components are disabled (default state)
          * @hide
@@ -1477,8 +1551,8 @@
         @SystemApi
         public boolean areAllComponentsEnabled() {
             return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
-                    && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons
-                    && !mRotationSuggestion;
+                    && !mBack && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons
+                    && !mNotificationTicker && !mRotationSuggestion;
         }
 
         /** @hide */
@@ -1487,10 +1561,12 @@
             mNavigateHome = false;
             mNotificationPeeking = false;
             mRecents = false;
+            mBack = false;
             mSearch = false;
             mSystemIcons = false;
             mClock = false;
             mNotificationIcons = false;
+            mNotificationTicker = false;
             mRotationSuggestion = false;
         }
 
@@ -1500,9 +1576,9 @@
          * @hide
          */
         public boolean areAllComponentsDisabled() {
-            return mStatusBarExpansion && mNavigateHome && mNotificationPeeking
-                    && mRecents && mSearch && mSystemIcons && mClock && mNotificationIcons
-                    && mRotationSuggestion;
+            return mStatusBarExpansion && mNavigateHome && mNotificationPeeking && mRecents && mBack
+                    && mSearch && mSystemIcons && mClock && mNotificationIcons
+                    && mNotificationTicker && mRotationSuggestion;
         }
 
         /** @hide */
@@ -1511,10 +1587,12 @@
             mNavigateHome = true;
             mNotificationPeeking = true;
             mRecents = true;
+            mBack = true;
             mSearch = true;
             mSystemIcons = true;
             mClock = true;
             mNotificationIcons = true;
+            mNotificationTicker = true;
             mRotationSuggestion = true;
         }
 
@@ -1522,16 +1600,19 @@
         @Override
         public String toString() {
             StringBuilder sb = new StringBuilder();
-            sb.append("DisableInfo: ");
+
+            sb.append("Disable Info: ");
             sb.append(" mStatusBarExpansion=").append(mStatusBarExpansion ? "disabled" : "enabled");
             sb.append(" mNavigateHome=").append(mNavigateHome ? "disabled" : "enabled");
             sb.append(" mNotificationPeeking=")
                     .append(mNotificationPeeking ? "disabled" : "enabled");
             sb.append(" mRecents=").append(mRecents ? "disabled" : "enabled");
+            sb.append(" mBack=").append(mBack ? "disabled" : "enabled");
             sb.append(" mSearch=").append(mSearch ? "disabled" : "enabled");
             sb.append(" mSystemIcons=").append(mSystemIcons ? "disabled" : "enabled");
             sb.append(" mClock=").append(mClock ? "disabled" : "enabled");
             sb.append(" mNotificationIcons=").append(mNotificationIcons ? "disabled" : "enabled");
+            sb.append(" mNotificationTicker=").append(mNotificationTicker ? "disabled" : "enabled");
             sb.append(" mRotationSuggestion=").append(mRotationSuggestion ? "disabled" : "enabled");
 
             return sb.toString();
@@ -1539,7 +1620,7 @@
         }
 
         /**
-         * Convert a DisableInfo to equivalent flags
+         * Convert a DisableInfo to equivalent flags.
          * @return a pair of equivalent disable flags
          *
          * @hide
@@ -1552,14 +1633,278 @@
             if (mNavigateHome) disable1 |= DISABLE_HOME;
             if (mNotificationPeeking) disable1 |= DISABLE_NOTIFICATION_ALERTS;
             if (mRecents) disable1 |= DISABLE_RECENT;
+            if (mBack) disable1 |= DISABLE_BACK;
             if (mSearch) disable1 |= DISABLE_SEARCH;
             if (mSystemIcons) disable1 |= DISABLE_SYSTEM_INFO;
             if (mClock) disable1 |= DISABLE_CLOCK;
             if (mNotificationIcons) disable1 |= DISABLE_NOTIFICATION_ICONS;
+            if (mNotificationTicker) disable1 |= DISABLE_NOTIFICATION_TICKER;
             if (mRotationSuggestion) disable2 |= DISABLE2_ROTATE_SUGGESTIONS;
 
             return new Pair<Integer, Integer>(disable1, disable2);
         }
+
+
+
+        // Code below generated by codegen v1.0.23.
+        //
+        // DO NOT MODIFY!
+        // CHECKSTYLE:OFF Generated code
+        //
+        // To regenerate run:
+        // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/app/StatusBarManager.java
+        //
+        // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+        //   Settings > Editor > Code Style > Formatter Control
+        //@formatter:off
+
+
+        /**
+         * Creates a new DisableInfo.
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public DisableInfo(
+                boolean statusBarExpansion,
+                boolean navigateHome,
+                boolean notificationPeeking,
+                boolean recents,
+                boolean back,
+                boolean search,
+                boolean systemIcons,
+                boolean clock,
+                boolean notificationIcons,
+                boolean rotationSuggestion,
+                boolean notificationTicker) {
+            this.mStatusBarExpansion = statusBarExpansion;
+            this.mNavigateHome = navigateHome;
+            this.mNotificationPeeking = notificationPeeking;
+            this.mRecents = recents;
+            this.mBack = back;
+            this.mSearch = search;
+            this.mSystemIcons = systemIcons;
+            this.mClock = clock;
+            this.mNotificationIcons = notificationIcons;
+            this.mRotationSuggestion = rotationSuggestion;
+            this.mNotificationTicker = notificationTicker;
+
+            // onConstructed(); // You can define this method to get a callback
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isStatusBarExpansion() {
+            return mStatusBarExpansion;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isNavigateHome() {
+            return mNavigateHome;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isNotificationPeeking() {
+            return mNotificationPeeking;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isRecents() {
+            return mRecents;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isBack() {
+            return mBack;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isSearch() {
+            return mSearch;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isSystemIcons() {
+            return mSystemIcons;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isClock() {
+            return mClock;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isNotificationIcons() {
+            return mNotificationIcons;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isRotationSuggestion() {
+            return mRotationSuggestion;
+        }
+
+        /**
+         * @hide
+         */
+        @DataClass.Generated.Member
+        public boolean isNotificationTicker() {
+            return mNotificationTicker;
+        }
+
+        /**
+         * @hide
+         */
+        @SuppressLint("UnflaggedApi")
+        @Override
+        @DataClass.Generated.Member
+        public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
+            // You can override field parcelling by defining methods like:
+            // void parcelFieldName(Parcel dest, int flags) { ... }
+
+            int flg = 0;
+            if (mStatusBarExpansion) flg |= 0x1;
+            if (mNavigateHome) flg |= 0x2;
+            if (mNotificationPeeking) flg |= 0x4;
+            if (mRecents) flg |= 0x8;
+            if (mBack) flg |= 0x10;
+            if (mSearch) flg |= 0x20;
+            if (mSystemIcons) flg |= 0x40;
+            if (mClock) flg |= 0x80;
+            if (mNotificationIcons) flg |= 0x100;
+            if (mRotationSuggestion) flg |= 0x200;
+            if (mNotificationTicker) flg |= 0x400;
+            dest.writeInt(flg);
+        }
+
+        /**
+         * @hide
+         */
+        @SuppressLint("UnflaggedApi")
+        @Override
+        @DataClass.Generated.Member
+        public int describeContents() { return 0; }
+
+        /** @hide */
+        @SuppressWarnings({"unchecked", "RedundantCast"})
+        @DataClass.Generated.Member
+        /* package-private */ DisableInfo(@NonNull android.os.Parcel in) {
+            // You can override field unparcelling by defining methods like:
+            // static FieldType unparcelFieldName(Parcel in) { ... }
+
+            int flg = in.readInt();
+            boolean statusBarExpansion = (flg & 0x1) != 0;
+            boolean navigateHome = (flg & 0x2) != 0;
+            boolean notificationPeeking = (flg & 0x4) != 0;
+            boolean recents = (flg & 0x8) != 0;
+            boolean back = (flg & 0x10) != 0;
+            boolean search = (flg & 0x20) != 0;
+            boolean systemIcons = (flg & 0x40) != 0;
+            boolean clock = (flg & 0x80) != 0;
+            boolean notificationIcons = (flg & 0x100) != 0;
+            boolean rotationSuggestion = (flg & 0x200) != 0;
+            boolean notificationTicker = (flg & 0x400) != 0;
+
+            this.mStatusBarExpansion = statusBarExpansion;
+            this.mNavigateHome = navigateHome;
+            this.mNotificationPeeking = notificationPeeking;
+            this.mRecents = recents;
+            this.mBack = back;
+            this.mSearch = search;
+            this.mSystemIcons = systemIcons;
+            this.mClock = clock;
+            this.mNotificationIcons = notificationIcons;
+            this.mRotationSuggestion = rotationSuggestion;
+            this.mNotificationTicker = notificationTicker;
+
+            // onConstructed(); // You can define this method to get a callback
+        }
+
+        @DataClass.Generated.Member
+        public static final @NonNull Parcelable.Creator<DisableInfo> CREATOR
+                = new Parcelable.Creator<DisableInfo>() {
+            @Override
+            public DisableInfo[] newArray(int size) {
+                return new DisableInfo[size];
+            }
+
+            @Override
+            public DisableInfo createFromParcel(@NonNull android.os.Parcel in) {
+                return new DisableInfo(in);
+            }
+        };
+
+        @DataClass.Generated(
+                time = 1707345957771L,
+                codegenVersion = "1.0.23",
+                sourceFile = "frameworks/base/core/java/android/app/StatusBarManager.java",
+                inputSignatures = "private  boolean mStatusBarExpansion\nprivate  "
+                        + "boolean mNavigateHome\nprivate  boolean mNotificationPeeking\nprivate  "
+                        + "boolean mRecents\nprivate  boolean mBack\nprivate  boolean "
+                        + "mSearch\nprivate  boolean mSystemIcons\nprivate  boolean mClock\nprivate"
+                        + "  boolean mNotificationIcons\nprivate  boolean mRotationSuggestion\n"
+                        + "private  boolean mNotificationTicker\npublic "
+                        + "@android.annotation.SystemApi boolean isStatusBarExpansionDisabled()\n"
+                        + "public  void setStatusBarExpansionDisabled(boolean)\npublic "
+                        + "@android.annotation.SystemApi boolean isNavigateToHomeDisabled()\n"
+                        + "public  void setNavigationHomeDisabled(boolean)\npublic "
+                        + "@android.annotation.SystemApi boolean isNotificationPeekingDisabled()\n"
+                        + "public  void setNotificationPeekingDisabled(boolean)\npublic "
+                        + "@android.annotation.SystemApi boolean isRecentsDisabled()\npublic  "
+                        + "void setRecentsDisabled(boolean)\npublic @android.annotation.SystemApi "
+                        + "boolean isBackDisabled()\npublic  void setBackDisabled(boolean)\npublic "
+                        + "@android.annotation.SystemApi boolean isSearchDisabled()\npublic  "
+                        + "void setSearchDisabled(boolean)\npublic  boolean "
+                        + "areSystemIconsDisabled()\npublic  void setSystemIconsDisabled(boolean)"
+                        + "\npublic  boolean isClockDisabled()\npublic  "
+                        + "void setClockDisabled(boolean)\npublic  "
+                        + "boolean areNotificationIconsDisabled()\npublic  "
+                        + "void setNotificationIconsDisabled(boolean)\npublic  boolean "
+                        + "isNotificationTickerDisabled()\npublic  void "
+                        + "setNotificationTickerDisabled(boolean)\npublic "
+                        + "@android.annotation.TestApi boolean isRotationSuggestionDisabled()\n"
+                        + "public  void setRotationSuggestionDisabled(boolean)\npublic "
+                        + "@android.annotation.SystemApi boolean areAllComponentsEnabled()\n"
+                        + "public  void setEnableAll()\npublic  boolean areAllComponentsDisabled()"
+                        + "\npublic  void setDisableAll()\npublic @android.annotation.NonNull "
+                        + "@java.lang.Override java.lang.String toString()\npublic  "
+                        + "android.util.Pair<java.lang.Integer,java.lang.Integer> toFlags()\n"
+                        + "class DisableInfo extends java.lang.Object implements "
+                        + "[android.os.Parcelable]\n@com.android.internal.util.DataClass")
+        @Deprecated
+        private void __metadata() {}
+
+
+        //@formatter:on
+        // End of generated code
+
     }
 
     /**
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index ba9c895..08c193f 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -186,6 +186,7 @@
 import android.os.PerformanceHintManager;
 import android.os.PermissionEnforcer;
 import android.os.PowerManager;
+import android.os.ProfilingFrameworkInitializer;
 import android.os.RecoverySystem;
 import android.os.SecurityStateManager;
 import android.os.ServiceManager;
@@ -250,6 +251,7 @@
 import android.view.translation.ITranslationManager;
 import android.view.translation.TranslationManager;
 import android.view.translation.UiTranslationManager;
+import android.webkit.WebViewBootstrapFrameworkInitializer;
 
 import com.android.internal.R;
 import com.android.internal.app.IAppOpsService;
@@ -1659,9 +1661,17 @@
             OnDevicePersonalizationFrameworkInitializer.registerServiceWrappers();
             DeviceLockFrameworkInitializer.registerServiceWrappers();
             VirtualizationFrameworkInitializer.registerServiceWrappers();
+            // This code is executed on zygote during preload, where only read-only
+            // flags can be used. Do not use mutable flags.
             if (android.permission.flags.Flags.enhancedConfirmationModeApisEnabled()) {
                 EnhancedConfirmationFrameworkInitializer.registerServiceWrappers();
             }
+            if (android.server.Flags.telemetryApisService()) {
+                ProfilingFrameworkInitializer.registerServiceWrappers();
+            }
+            if (android.webkit.Flags.updateServiceIpcWrapper()) {
+                WebViewBootstrapFrameworkInitializer.registerServiceWrappers();
+            }
         } finally {
             // If any of the above code throws, we're in a pretty bad shape and the process
             // will likely crash, but we'll reset it just in case there's an exception handler...
diff --git a/core/java/android/app/activity_manager.aconfig b/core/java/android/app/activity_manager.aconfig
index ff23f09..350b1ed 100644
--- a/core/java/android/app/activity_manager.aconfig
+++ b/core/java/android/app/activity_manager.aconfig
@@ -34,3 +34,10 @@
      description: "Add a new callback in Service to indicate a FGS has reached its timeout."
      bug: "317799821"
 }
+
+flag {
+    name: "bcast_event_timestamps"
+    namespace: "backstage_power"
+    description: "Add APIs for clients to provide broadcast event trigger timestamps"
+    bug: "325136414"
+}
diff --git a/core/java/android/app/admin/AccountTypePolicyKey.java b/core/java/android/app/admin/AccountTypePolicyKey.java
index 9e376a7..d81eb20 100644
--- a/core/java/android/app/admin/AccountTypePolicyKey.java
+++ b/core/java/android/app/admin/AccountTypePolicyKey.java
@@ -19,6 +19,7 @@
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_ACCOUNT_TYPE;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -53,6 +54,9 @@
     @TestApi
     public AccountTypePolicyKey(@NonNull String key, @NonNull String accountType) {
         super(key);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxStringLength(accountType, "accountType");
+        }
         mAccountType = Objects.requireNonNull((accountType));
     }
 
diff --git a/core/java/android/app/admin/BundlePolicyValue.java b/core/java/android/app/admin/BundlePolicyValue.java
index f9653a4..cc5e75f 100644
--- a/core/java/android/app/admin/BundlePolicyValue.java
+++ b/core/java/android/app/admin/BundlePolicyValue.java
@@ -16,6 +16,8 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Bundle;
@@ -30,6 +32,9 @@
 
     public BundlePolicyValue(Bundle value) {
         super(value);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxParcelableFieldsLength(value);
+        }
     }
 
     private BundlePolicyValue(Parcel source) {
diff --git a/core/java/android/app/admin/ComponentNamePolicyValue.java b/core/java/android/app/admin/ComponentNamePolicyValue.java
index 635e582..4d36195 100644
--- a/core/java/android/app/admin/ComponentNamePolicyValue.java
+++ b/core/java/android/app/admin/ComponentNamePolicyValue.java
@@ -16,6 +16,8 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.ComponentName;
@@ -30,6 +32,9 @@
 
     public ComponentNamePolicyValue(@NonNull ComponentName value) {
         super(value);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxComponentNameLength(value);
+        }
     }
 
     private ComponentNamePolicyValue(Parcel source) {
diff --git a/core/java/android/app/admin/DevicePolicyIdentifiers.java b/core/java/android/app/admin/DevicePolicyIdentifiers.java
index d7aafa0..3c56aaf 100644
--- a/core/java/android/app/admin/DevicePolicyIdentifiers.java
+++ b/core/java/android/app/admin/DevicePolicyIdentifiers.java
@@ -16,8 +16,11 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.FLAG_SECURITY_LOG_V2_ENABLED;
+
 import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
+import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.admin.flags.Flags;
 import android.os.UserManager;
@@ -45,6 +48,21 @@
     public static final String PERMISSION_GRANT_POLICY = "permissionGrant";
 
     /**
+     * String identifier for {@link DevicePolicyManager#setSecurityLoggingEnabled}.
+     */
+    @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
+    public static final String SECURITY_LOGGING_POLICY = "securityLogging";
+
+    /**
+     * String identifier for {@link DevicePolicyManager#setAuditLogEnabled}.
+     *
+     * @hide
+     */
+    @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
+    @SystemApi
+    public static final String AUDIT_LOGGING_POLICY = "auditLogging";
+
+    /**
      * String identifier for {@link DevicePolicyManager#setLockTaskPackages}.
      */
     public static final String LOCK_TASK_POLICY = "lockTask";
@@ -174,6 +192,12 @@
     public static final String USB_DATA_SIGNALING_POLICY = "usbDataSignaling";
 
     /**
+     * String identifier for {@link DevicePolicyManager#setRequiredPasswordComplexity}.
+     */
+    @FlaggedApi(Flags.FLAG_POLICY_ENGINE_MIGRATION_V2_ENABLED)
+    public static final String PASSWORD_COMPLEXITY_POLICY = "passwordComplexity";
+
+    /**
      * @hide
      */
     public static final String USER_RESTRICTION_PREFIX = "userRestriction_";
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index c649e62..a6fda9d 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -37,6 +37,7 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_PACKAGE_STATE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SCREEN_CAPTURE;
@@ -44,6 +45,7 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_STATUS_BAR;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_THEFT_DETECTION;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_WIFI;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_WIPE_DATA;
@@ -51,7 +53,11 @@
 import static android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY;
 import static android.Manifest.permission.SET_TIME;
 import static android.Manifest.permission.SET_TIME_ZONE;
+import static android.app.admin.flags.Flags.FLAG_ESIM_MANAGEMENT_ENABLED;
+import static android.app.admin.flags.Flags.FLAG_DEVICE_POLICY_SIZE_TRACKING_ENABLED;
+import static android.app.admin.flags.Flags.FLAG_SECURITY_LOG_V2_ENABLED;
 import static android.app.admin.flags.Flags.onboardingBugreportV2Enabled;
+import static android.app.admin.flags.Flags.FLAG_IS_MTE_POLICY_ENFORCED;
 import static android.content.Intent.LOCAL_FLAG_FROM_SYSTEM;
 import static android.net.NetworkCapabilities.NET_ENTERPRISE_ID_1;
 import static android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
@@ -150,6 +156,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.Preconditions;
 import com.android.org.conscrypt.TrustedCertificateStore;
+import com.android.internal.os.Zygote;
 
 import java.io.ByteArrayInputStream;
 import java.io.FileNotFoundException;
@@ -227,7 +234,6 @@
     private final boolean mParentInstance;
     private final DevicePolicyResourcesManager mResourcesManager;
 
-
     /** @hide */
     public DevicePolicyManager(Context context, IDevicePolicyManager service) {
         this(context, service, false);
@@ -4114,6 +4120,19 @@
         return MTE_NOT_CONTROLLED_BY_POLICY;
     }
 
+    /**
+     * Get the current MTE state of the device.
+     *
+     * <a href="https://source.android.com/docs/security/test/memory-safety/arm-mte">
+     * Learn more about MTE</a>
+     *
+     * @return whether MTE is currently enabled on the device.
+     */
+    @FlaggedApi(FLAG_IS_MTE_POLICY_ENFORCED)
+    public static boolean isMtePolicyEnforced() {
+        return Zygote.nativeSupportsMemoryTagging();
+    }
+
     /** Indicates that content protection is not controlled by policy, allowing user to choose. */
     @FlaggedApi(android.view.contentprotection.flags.Flags.FLAG_MANAGE_DEVICE_POLICY_ENABLED)
     public static final int CONTENT_PROTECTION_NOT_CONTROLLED_BY_POLICY = 0;
@@ -13414,17 +13433,25 @@
     }
 
     /**
-     * Called by device or profile owners to get information about a pending system update.
+     * Get information about a pending system update.
+     *
+     * Can be called by device or profile owners, and starting from Android
+     * {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM}, holders of the permission
+     * {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES}.
      *
      * @param admin Which profile or device owner this request is associated with.
      * @return Information about a pending system update or {@code null} if no update pending.
-     * @throws SecurityException if {@code admin} is not a device or profile owner.
+     * @throws SecurityException if {@code admin} is not a device, profile owner or holders of
+     * {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES}.
      * @see DeviceAdminReceiver#onSystemUpdatePending(Context, Intent, long)
      */
-    public @Nullable SystemUpdateInfo getPendingSystemUpdate(@NonNull ComponentName admin) {
+    @RequiresPermission(value = MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES, conditional = true)
+    @SuppressLint("RequiresPermission")
+    @FlaggedApi(Flags.FLAG_PERMISSION_MIGRATION_FOR_ZERO_TRUST_API_ENABLED)
+    public @Nullable SystemUpdateInfo getPendingSystemUpdate(@Nullable ComponentName admin) {
         throwIfParentInstance("getPendingSystemUpdate");
         try {
-            return mService.getPendingSystemUpdate(admin);
+            return mService.getPendingSystemUpdate(admin, mContext.getPackageName());
         } catch (RemoteException re) {
             throw re.rethrowFromSystemServer();
         }
@@ -13975,6 +14002,24 @@
      * privacy-sensitive events happening outside the managed profile would have been redacted
      * already.
      *
+     * Starting from {@link Build.VERSION_CODES#VANILLA_ICE_CREAM}, after the security logging
+     * policy has been set, {@link PolicyUpdateReceiver#onPolicySetResult(Context, String,
+     * Bundle, TargetUser, PolicyUpdateResult)} will notify the admin on whether the policy was
+     * successfully set or not. This callback will contain:
+     * <ul>
+     * <li> The policy identifier {@link DevicePolicyIdentifiers#SECURITY_LOGGING_POLICY}
+     * <li> The {@link TargetUser} that this policy relates to
+     * <li> The {@link PolicyUpdateResult}, which will be
+     * {@link PolicyUpdateResult#RESULT_POLICY_SET} if the policy was successfully set or the
+     * reason the policy failed to be set
+     * e.g. {@link PolicyUpdateResult#RESULT_FAILURE_CONFLICTING_ADMIN_POLICY})
+     * </ul>
+     * If there has been a change to the policy,
+     * {@link PolicyUpdateReceiver#onPolicyChanged(Context, String, Bundle, TargetUser,
+     * PolicyUpdateResult)} will notify the admin of this change. This callback will contain the
+     * same parameters as PolicyUpdateReceiver#onPolicySetResult and the {@link PolicyUpdateResult}
+     * will contain the reason why the policy changed.
+     *
      * @param admin Which device admin this request is associated with, or {@code null}
      *              if called by a delegated app.
      * @param enabled whether security logging should be enabled or not.
@@ -14014,6 +14059,74 @@
     }
 
     /**
+     * Controls whether audit logging is enabled.
+     *
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
+    @RequiresPermission(permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING)
+    public void setAuditLogEnabled(boolean enabled) {
+        throwIfParentInstance("setAuditLogEnabled");
+        try {
+            mService.setAuditLogEnabled(mContext.getPackageName(), true);
+        } catch (RemoteException re) {
+            re.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * @return Whether audit logging is enabled.
+     *
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
+    @RequiresPermission(permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING)
+    public boolean isAuditLogEnabled() {
+        throwIfParentInstance("isAuditLogEnabled");
+        try {
+            return mService.isAuditLogEnabled(mContext.getPackageName());
+        } catch (RemoteException re) {
+            re.rethrowFromSystemServer();
+            // unreachable
+            return false;
+        }
+    }
+
+    /**
+     * Sets audit log event callback. Only one callback per UID is active at any time, when a new
+     * callback is set, the previous one is forgotten. Should only be called when audit log policy
+     * is enforced by the caller. Disabling the policy clears the callback. Each time a new callback
+     * is set, it will first be invoked with all the audit log events available at the time.
+     *
+     * @param callback callback to invoke when new audit log events become available or {@code null}
+     *                 to clear the callback.
+     * @hide
+     */
+    @SystemApi
+    @FlaggedApi(FLAG_SECURITY_LOG_V2_ENABLED)
+    @RequiresPermission(permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING)
+    public void setAuditLogEventCallback(
+            @NonNull @CallbackExecutor Executor executor,
+            @Nullable Consumer<List<SecurityEvent>> callback) {
+        throwIfParentInstance("setAuditLogEventCallback");
+        final IAuditLogEventsCallback wrappedCallback = callback == null
+                ? null
+                : new IAuditLogEventsCallback.Stub() {
+                    @Override
+                    public void onNewAuditLogEvents(List<SecurityEvent> events) {
+                        executor.execute(() -> callback.accept(events));
+                    }
+                };
+        try {
+            mService.setAuditLogEventsCallback(mContext.getPackageName(), wrappedCallback);
+        } catch (RemoteException re) {
+            re.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Called by device owner or profile owner of an organization-owned managed profile to retrieve
      * all new security logging entries since the last call to this API after device boots.
      *
@@ -16475,8 +16588,9 @@
      * The identifier would be consistent even if the work profile is removed and enrolled again
      * (to the same organization), or the device is factory reset and re-enrolled.
      *
-     * Can only be called by the Profile Owner or Device Owner, if the
-     * {@link #setOrganizationId(String)} was previously called.
+     * Can only be called by the Profile Owner and Device Owner, and starting from Android
+     * {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM}, holders of the permission
+     * {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_CERTIFICATES}.
      * If {@link #setOrganizationId(String)} was not called, then the returned value will be an
      * empty string.
      *
@@ -16489,8 +16603,12 @@
      * and must switch to using this method.
      *
      * @return A stable, enrollment-specific identifier.
-     * @throws SecurityException if the caller is not a profile owner or device owner.
+     * @throws SecurityException if the caller is not a profile owner, device owner or holding the
+     * {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_CERTIFICATES} permission
      */
+    @RequiresPermission(value = MANAGE_DEVICE_POLICY_CERTIFICATES, conditional = true)
+    @SuppressLint("RequiresPermission")
+    @FlaggedApi(Flags.FLAG_PERMISSION_MIGRATION_FOR_ZERO_TRUST_API_ENABLED)
     @NonNull public String getEnrollmentSpecificId() {
         throwIfParentInstance("getEnrollmentSpecificId");
         if (mService == null) {
@@ -17010,6 +17128,26 @@
     }
 
     /**
+     *
+     * Returns whether the device considers itself to be potentially stolen.
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(value = MANAGE_DEVICE_POLICY_THEFT_DETECTION)
+    @FlaggedApi(Flags.FLAG_DEVICE_THEFT_API_ENABLED)
+    public boolean isTheftDetectionTriggered() {
+        throwIfParentInstance("isTheftDetectionTriggered");
+        if (mService == null) {
+            return false;
+        }
+        try {
+            return mService.isTheftDetectionTriggered(mContext.getPackageName());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Returns a {@link DevicePolicyResourcesManager} containing the required APIs to set, reset,
      * and get device policy related resources.
      */
@@ -17300,4 +17438,75 @@
     public boolean isOnboardingBugreportV2FlagEnabled() {
         return onboardingBugreportV2Enabled();
     }
+
+    /**
+     * Returns the subscription ids of all subscriptions which was downloaded by the calling
+     * admin.
+     *
+     * <p> This returns only the subscriptions which were downloaded by the calling admin via
+     *      {@link android.telephony.euicc.EuiccManager#downloadSubscription}.
+     *      If a susbcription is returned by this method then in it subject to management controls
+     *      and cannot be removed by users.
+     *
+     * <p> Callable by device owners and profile owners.
+     *
+     * @throws SecurityException if the caller is not authorized to call this method
+     * @return ids of all managed subscriptions currently downloaded by an admin on the device
+     */
+    @FlaggedApi(FLAG_ESIM_MANAGEMENT_ENABLED)
+    @RequiresPermission(android.Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS)
+    @NonNull
+    public Set<Integer> getSubscriptionsIds() {
+        throwIfParentInstance("getSubscriptionsIds");
+        if (mService != null) {
+            try {
+                return intArrayToSet(mService.getSubscriptionIds(mContext.getPackageName()));
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+        return new HashSet<>();
+    }
+
+    /**
+     * Controls the maximum storage size allowed for policies associated with an admin.
+     * Setting a limit of -1 effectively removes any storage restrictions.
+     *
+     * @param storageLimit Maximum storage allowed in bytes. Use -1 to disable limits.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    @FlaggedApi(FLAG_DEVICE_POLICY_SIZE_TRACKING_ENABLED)
+    public void setMaxPolicyStorageLimit(int storageLimit) {
+        if (mService != null) {
+            try {
+                mService.setMaxPolicyStorageLimit(mContext.getPackageName(), storageLimit);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
+     * Retrieves the current maximum storage limit for policies associated with an admin.
+     *
+     * @return The maximum storage limit in bytes, or -1 if no limit is enforced.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    @FlaggedApi(FLAG_DEVICE_POLICY_SIZE_TRACKING_ENABLED)
+    public int getMaxPolicyStorageLimit() {
+        if (mService != null) {
+            try {
+                return mService.getMaxPolicyStorageLimit(mContext.getPackageName());
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+        return -1;
+    }
 }
\ No newline at end of file
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index 304359b..1aee9fe 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -333,4 +333,14 @@
      */
     public abstract List<EnforcingUser> getUserRestrictionSources(String restriction,
                 @UserIdInt int userId);
+
+    /**
+     * Enforces resolved security logging policy, should only be invoked from device policy engine.
+     */
+    public abstract void enforceSecurityLoggingPolicy(boolean enabled);
+
+    /**
+     * Enforces resolved audit logging policy, should only be invoked from device policy engine.
+     */
+    public abstract void enforceAuditLoggingPolicy(boolean enabled);
 }
diff --git a/location/java/android/location/IGeocodeListener.aidl b/core/java/android/app/admin/IAuditLogEventsCallback.aidl
similarity index 66%
copy from location/java/android/location/IGeocodeListener.aidl
copy to core/java/android/app/admin/IAuditLogEventsCallback.aidl
index 8e10411..ab87117 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/core/java/android/app/admin/IAuditLogEventsCallback.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,11 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.app.admin;
 
-import android.location.Address;
+import android.app.admin.SecurityLog;
 
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
-}
+/** @hide */
+oneway interface IAuditLogEventsCallback {
+    void onNewAuditLogEvents(in List<SecurityLog.SecurityEvent> events);
+}
\ No newline at end of file
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index efcf563..3a7a891c 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -32,6 +32,7 @@
 import android.app.admin.PackagePolicy;
 import android.app.admin.PasswordMetrics;
 import android.app.admin.FactoryResetProtectionPolicy;
+import android.app.admin.IAuditLogEventsCallback;
 import android.app.admin.ManagedProfileProvisioningParams;
 import android.app.admin.FullyManagedDeviceProvisioningParams;
 import android.app.admin.ManagedSubscriptionsPolicy;
@@ -392,7 +393,7 @@
     boolean getDoNotAskCredentialsOnBoot();
 
     void notifyPendingSystemUpdate(in SystemUpdateInfo info);
-    SystemUpdateInfo getPendingSystemUpdate(in ComponentName admin);
+    SystemUpdateInfo getPendingSystemUpdate(in ComponentName admin, in String callerPackage);
 
     void setPermissionPolicy(in ComponentName admin, in String callerPackage, int policy);
     int  getPermissionPolicy(in ComponentName admin);
@@ -441,6 +442,10 @@
     long forceNetworkLogs();
     long forceSecurityLogs();
 
+    void setAuditLogEnabled(String callerPackage, boolean enabled);
+    boolean isAuditLogEnabled(String callerPackage);
+    void setAuditLogEventsCallback(String callerPackage, in IAuditLogEventsCallback callback);
+
     boolean isUninstallInQueue(String packageName);
     void uninstallPackageWithActiveAdmins(String packageName);
 
@@ -576,6 +581,8 @@
     void setWifiSsidPolicy(String callerPackageName, in WifiSsidPolicy policy);
     WifiSsidPolicy getWifiSsidPolicy(String callerPackageName);
 
+    boolean isTheftDetectionTriggered(String callerPackageName);
+
     List<UserHandle> listForegroundAffiliatedUsers();
     void setDrawables(in List<DevicePolicyDrawableResource> drawables);
     void resetDrawables(in List<String> drawableIds);
@@ -613,4 +620,9 @@
 
     void setContentProtectionPolicy(in ComponentName who, String callerPackageName, int policy);
     int getContentProtectionPolicy(in ComponentName who, String callerPackageName);
+
+    int[] getSubscriptionIds(String callerPackageName);
+
+    void setMaxPolicyStorageLimit(String packageName, int storageLimit);
+    int getMaxPolicyStorageLimit(String packageName);
 }
diff --git a/core/java/android/app/admin/IntentFilterPolicyKey.java b/core/java/android/app/admin/IntentFilterPolicyKey.java
index 7526a7b..de7ff9f 100644
--- a/core/java/android/app/admin/IntentFilterPolicyKey.java
+++ b/core/java/android/app/admin/IntentFilterPolicyKey.java
@@ -19,6 +19,7 @@
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_INTENT_FILTER;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -59,6 +60,9 @@
     @TestApi
     public IntentFilterPolicyKey(@NonNull String identifier, @NonNull IntentFilter filter) {
         super(identifier);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxParcelableFieldsLength(filter);
+        }
         mFilter = Objects.requireNonNull(filter);
     }
 
diff --git a/core/java/android/app/admin/LockTaskPolicy.java b/core/java/android/app/admin/LockTaskPolicy.java
index b671d57..9d6ce24 100644
--- a/core/java/android/app/admin/LockTaskPolicy.java
+++ b/core/java/android/app/admin/LockTaskPolicy.java
@@ -16,6 +16,8 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
@@ -75,7 +77,7 @@
      */
     public LockTaskPolicy(@Nullable Set<String> packages) {
         if (packages != null) {
-            mPackages.addAll(packages);
+            setPackagesInternal(packages);
         }
         setValue(this);
     }
@@ -93,7 +95,7 @@
      */
     public LockTaskPolicy(@Nullable Set<String> packages, int flags) {
         if (packages != null) {
-            mPackages.addAll(packages);
+            setPackagesInternal(packages);
         }
         mFlags = flags;
         setValue(this);
@@ -123,7 +125,7 @@
      */
     public void setPackages(@NonNull Set<String> packages) {
         Objects.requireNonNull(packages);
-        mPackages = new HashSet<>(packages);
+        setPackagesInternal(packages);
     }
 
     /**
@@ -133,6 +135,15 @@
         mFlags = flags;
     }
 
+    private void setPackagesInternal(Set<String> packages) {
+        if (devicePolicySizeTrackingEnabled()) {
+            for (String p : packages) {
+                PolicySizeVerifier.enforceMaxPackageNameLength(p);
+            }
+        }
+        mPackages = new HashSet<>(packages);
+    }
+
     @Override
     public boolean equals(@Nullable Object o) {
         if (this == o) return true;
diff --git a/core/java/android/app/admin/PackagePermissionPolicyKey.java b/core/java/android/app/admin/PackagePermissionPolicyKey.java
index 7fd514c..2241fdd 100644
--- a/core/java/android/app/admin/PackagePermissionPolicyKey.java
+++ b/core/java/android/app/admin/PackagePermissionPolicyKey.java
@@ -20,6 +20,7 @@
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_PERMISSION_NAME;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -58,6 +59,10 @@
     public PackagePermissionPolicyKey(@NonNull String identifier, @NonNull String packageName,
             @NonNull String permissionName) {
         super(identifier);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxPackageNameLength(packageName);
+            PolicySizeVerifier.enforceMaxStringLength(permissionName, "permissionName");
+        }
         mPackageName = Objects.requireNonNull((packageName));
         mPermissionName = Objects.requireNonNull((permissionName));
     }
diff --git a/core/java/android/app/admin/PackagePolicyKey.java b/core/java/android/app/admin/PackagePolicyKey.java
index 2ab00bc..2ea17a1 100644
--- a/core/java/android/app/admin/PackagePolicyKey.java
+++ b/core/java/android/app/admin/PackagePolicyKey.java
@@ -19,6 +19,7 @@
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_PACKAGE_NAME;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_BUNDLE_KEY;
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -54,6 +55,9 @@
     @TestApi
     public PackagePolicyKey(@NonNull String key, @NonNull String packageName) {
         super(key);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxPackageNameLength(packageName);
+        }
         mPackageName = Objects.requireNonNull((packageName));
     }
 
diff --git a/core/java/android/app/admin/PolicySizeVerifier.java b/core/java/android/app/admin/PolicySizeVerifier.java
new file mode 100644
index 0000000..d5e8ea4
--- /dev/null
+++ b/core/java/android/app/admin/PolicySizeVerifier.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2024 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 android.app.admin;
+
+import android.content.ComponentName;
+import android.os.Parcelable;
+import android.os.PersistableBundle;
+
+import com.android.internal.util.Preconditions;
+
+import java.lang.reflect.Field;
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+/**
+ * Utility class containing methods to verify the max allowed size of certain policy types.
+ *
+ * @hide
+ */
+public class PolicySizeVerifier {
+
+    // Binary XML serializer doesn't support longer strings
+    public static final int MAX_POLICY_STRING_LENGTH = 65535;
+    // FrameworkParsingPackageUtils#MAX_FILE_NAME_SIZE, Android packages are used in dir names.
+    public static final int MAX_PACKAGE_NAME_LENGTH = 223;
+
+    public static final int MAX_PROFILE_NAME_LENGTH = 200;
+    public static final int MAX_LONG_SUPPORT_MESSAGE_LENGTH = 20000;
+    public static final int MAX_SHORT_SUPPORT_MESSAGE_LENGTH = 200;
+    public static final int MAX_ORG_NAME_LENGTH = 200;
+
+    /**
+     * Throw if string argument is too long to be serialized.
+     */
+    public static void enforceMaxStringLength(String str, String argName) {
+        Preconditions.checkArgument(
+                str.length() <= MAX_POLICY_STRING_LENGTH, argName + " loo long");
+    }
+
+    /**
+     * Throw if package name exceeds max size allowed by the system.
+     */
+    public static void enforceMaxPackageNameLength(String pkg) {
+        Preconditions.checkArgument(
+                pkg.length() <= MAX_PACKAGE_NAME_LENGTH, "Package name too long");
+    }
+
+    /**
+     * Throw if persistable bundle contains any string that's too long to be serialized.
+     */
+    public static void enforceMaxStringLength(PersistableBundle bundle, String argName) {
+        // Persistable bundles can have other persistable bundles as values, traverse with a queue.
+        Queue<PersistableBundle> queue = new ArrayDeque<>();
+        queue.add(bundle);
+        while (!queue.isEmpty()) {
+            PersistableBundle current = queue.remove();
+            for (String key : current.keySet()) {
+                enforceMaxStringLength(key, "key in " + argName);
+                Object value = current.get(key);
+                if (value instanceof String) {
+                    enforceMaxStringLength((String) value, "string value in " + argName);
+                } else if (value instanceof String[]) {
+                    for (String str : (String[]) value) {
+                        enforceMaxStringLength(str, "string value in " + argName);
+                    }
+                } else if (value instanceof PersistableBundle) {
+                    queue.add((PersistableBundle) value);
+                }
+            }
+        }
+    }
+
+    /**
+     * Throw if Parcelable contains any string that's too long to be serialized.
+     */
+    public static void enforceMaxParcelableFieldsLength(Parcelable parcelable) {
+        Class<?> clazz = parcelable.getClass();
+
+        Field[] fields = clazz.getDeclaredFields();
+        for (Field field : fields) {
+            field.setAccessible(true);
+            try {
+                Object value = field.get(parcelable);
+                if (value instanceof String) {
+                    String stringValue = (String) value;
+                    enforceMaxStringLength(stringValue, field.getName());
+                }
+
+                if (value instanceof Parcelable) {
+                    enforceMaxParcelableFieldsLength((Parcelable) value);
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * Throw if ComponentName contains any string that's too long to be serialized.
+     */
+    public static void enforceMaxComponentNameLength(ComponentName componentName) {
+        enforceMaxPackageNameLength(componentName.getPackageName());
+        enforceMaxStringLength(componentName.flattenToString(), "componentName");
+    }
+
+    /**
+     * Truncates char sequence to maximum length, nulls are ignored.
+     */
+    public static CharSequence truncateIfLonger(CharSequence input, int maxLength) {
+        return input == null || input.length() <= maxLength
+                ? input
+                : input.subSequence(0, maxLength);
+    }
+}
diff --git a/location/java/android/location/GeocoderParams.aidl b/core/java/android/app/admin/SecurityLog.aidl
similarity index 73%
copy from location/java/android/location/GeocoderParams.aidl
copy to core/java/android/app/admin/SecurityLog.aidl
index 2484e20..e5ae2df 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/core/java/android/app/admin/SecurityLog.aidl
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2010, The Android Open Source Project
+ * Copyright (C) 2024 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
+ *      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,
@@ -14,6 +14,7 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.app.admin;
 
-parcelable GeocoderParams;
+/** @hide */
+parcelable SecurityLog.SecurityEvent;
\ No newline at end of file
diff --git a/core/java/android/app/admin/StringPolicyValue.java b/core/java/android/app/admin/StringPolicyValue.java
index 14b6dab..f4d4adc 100644
--- a/core/java/android/app/admin/StringPolicyValue.java
+++ b/core/java/android/app/admin/StringPolicyValue.java
@@ -16,6 +16,8 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Parcel;
@@ -29,6 +31,9 @@
 
     public StringPolicyValue(@NonNull String value) {
         super(value);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxStringLength(value, "policyValue");
+        }
     }
 
     private StringPolicyValue(Parcel source) {
diff --git a/core/java/android/app/admin/StringSetPolicyValue.java b/core/java/android/app/admin/StringSetPolicyValue.java
index cbfc604..82fe761 100644
--- a/core/java/android/app/admin/StringSetPolicyValue.java
+++ b/core/java/android/app/admin/StringSetPolicyValue.java
@@ -16,6 +16,8 @@
 
 package android.app.admin;
 
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Parcel;
@@ -31,6 +33,11 @@
 
     public StringSetPolicyValue(@NonNull Set<String> value) {
         super(value);
+        if (devicePolicySizeTrackingEnabled()) {
+            for (String str : value) {
+                PolicySizeVerifier.enforceMaxStringLength(str, "policyValue");
+            }
+        }
     }
 
     public StringSetPolicyValue(Parcel source) {
diff --git a/core/java/android/app/admin/UserRestrictionPolicyKey.java b/core/java/android/app/admin/UserRestrictionPolicyKey.java
index aeb2380..d69a5f0 100644
--- a/core/java/android/app/admin/UserRestrictionPolicyKey.java
+++ b/core/java/android/app/admin/UserRestrictionPolicyKey.java
@@ -17,6 +17,7 @@
 package android.app.admin;
 
 import static android.app.admin.PolicyUpdateReceiver.EXTRA_POLICY_KEY;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
@@ -44,6 +45,9 @@
     @TestApi
     public UserRestrictionPolicyKey(@NonNull String identifier, @NonNull String restriction) {
         super(identifier);
+        if (devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxStringLength(restriction, "restriction");
+        }
         mRestriction = Objects.requireNonNull(restriction);
     }
 
diff --git a/core/java/android/app/admin/flags/flags.aconfig b/core/java/android/app/admin/flags/flags.aconfig
index 3c98ef9..cbd8e5b 100644
--- a/core/java/android/app/admin/flags/flags.aconfig
+++ b/core/java/android/app/admin/flags/flags.aconfig
@@ -36,6 +36,48 @@
 }
 
 flag {
+  name: "dedicated_device_control_api_enabled"
+  namespace: "enterprise"
+  description: "(API) Allow the device management role holder to control which platform features are available on dedicated devices."
+  bug: "281964214"
+}
+
+flag {
+  name: "permission_migration_for_zero_trust_api_enabled"
+  namespace: "enterprise"
+  description: "(API) Migrate existing APIs to permission based, and enable DMRH to call them to collect Zero Trust signals."
+  bug: "289520697"
+}
+
+flag {
+  name: "permission_migration_for_zero_trust_impl_enabled"
+  namespace: "enterprise"
+  description: "(Implementation) Migrate existing APIs to permission based, and enable DMRH to call them to collect Zero Trust signals."
+  bug: "289520697"
+}
+
+flag {
+  name: "device_theft_api_enabled"
+  namespace: "enterprise"
+  description: "Add new API for theft detection."
+  bug: "325073410"
+}
+
+flag {
+  name: "device_theft_impl_enabled"
+  namespace: "enterprise"
+  description: "Implementing new API for theft detection."
+  bug: "325073410"
+}
+
+flag {
+  name: "coexistence_migration_for_non_emm_management_enabled"
+  namespace: "enterprise"
+  description: "Migrate existing APIs to be coexistable, and enable DMRH to call them to support non-EMM device management."
+  bug: "289520697"
+}
+
+flag {
   name: "security_log_v2_enabled"
   namespace: "enterprise"
   description: "Improve access to security logging in the context of Zero Trust."
@@ -50,6 +92,13 @@
 }
 
 flag {
+    name: "allow_querying_profile_type"
+    namespace: "enterprise"
+    description: "Public APIs to query if a user is a profile and what kind of profile type it is."
+    bug: "323001115"
+}
+
+flag {
   name: "quiet_mode_credential_bug_fix"
   namespace: "enterprise"
   description: "Guards a bugfix that ends the credential input flow if the managed user has not stopped."
@@ -57,6 +106,13 @@
 }
 
 flag {
+  name: "assist_content_user_restriction_enabled"
+  namespace: "enterprise"
+  description: "Prevent work data leakage by sending assist content to privileged apps."
+  bug: "322975406"
+}
+
+flag {
     name: "default_sms_personal_app_suspension_fix_enabled"
     namespace: "enterprise"
     description: "Exempt the default sms app of the context user for suspension when calling setPersonalAppsSuspended"
@@ -83,3 +139,10 @@
   description: "Add Headless DO support."
   bug: "289515470"
 }
+
+flag {
+  name: "is_mte_policy_enforced"
+  namespace: "enterprise"
+  description: "Allow to query whether MTE is enabled or not to check for compliance for enterprise policy"
+  bug: "322777918"
+}
diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java
index e268968..9fa7362 100644
--- a/core/java/android/app/assist/AssistStructure.java
+++ b/core/java/android/app/assist/AssistStructure.java
@@ -1,5 +1,8 @@
 package android.app.assist;
 
+import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION;
+
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
@@ -7,6 +10,9 @@
 import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
+import android.credentials.GetCredentialException;
+import android.credentials.GetCredentialRequest;
+import android.credentials.GetCredentialResponse;
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.net.Uri;
@@ -15,6 +21,7 @@
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.LocaleList;
+import android.os.OutcomeReceiver;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PooledStringReader;
@@ -637,6 +644,12 @@
         AutofillId mAutofillId;
         @View.AutofillType int mAutofillType = View.AUTOFILL_TYPE_NONE;
         @Nullable String[] mAutofillHints;
+
+        @Nullable GetCredentialRequest mGetCredentialRequest;
+
+        @Nullable OutcomeReceiver<GetCredentialResponse, GetCredentialException>
+                mGetCredentialCallback;
+
         AutofillValue mAutofillValue;
         CharSequence[] mAutofillOptions;
         boolean mSanitized;
@@ -1262,6 +1275,32 @@
         }
 
         /**
+         * Returns the request associated with this node
+         * @return
+         *
+         * @hide
+         */
+        @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+        @Nullable
+        public GetCredentialRequest getCredentialManagerRequest() {
+            return mGetCredentialRequest;
+        }
+
+        /**
+         *
+         * @return
+         *
+         * @hide
+         *
+         */
+        @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+        @Nullable
+        public OutcomeReceiver<GetCredentialResponse,
+                GetCredentialException> getCredentialManagerCallback() {
+            return mGetCredentialCallback;
+        }
+
+        /**
          * Gets the {@link android.text.InputType} bits of this structure.
          *
          * @return bits as defined by {@link android.text.InputType}.
@@ -2139,6 +2178,19 @@
             }
         }
 
+        @Nullable
+        @Override
+        public GetCredentialRequest getCredentialManagerRequest() {
+            return mNode.mGetCredentialRequest;
+        }
+
+        @Nullable
+        @Override
+        public OutcomeReceiver<
+                GetCredentialResponse, GetCredentialException> getCredentialManagerCallback() {
+            return mNode.mGetCredentialCallback;
+        }
+
         @Override
         public void asyncCommit() {
             synchronized (mAssist) {
@@ -2204,6 +2256,13 @@
         }
 
         @Override
+        public void setCredentialManagerRequest(@NonNull GetCredentialRequest request,
+                @NonNull OutcomeReceiver<GetCredentialResponse, GetCredentialException> callback) {
+            mNode.mGetCredentialRequest = request;
+            mNode.mGetCredentialCallback = callback;
+        }
+
+        @Override
         public void setReceiveContentMimeTypes(@Nullable String[] mimeTypes) {
             mNode.mReceiveContentMimeTypes = mimeTypes;
         }
@@ -2523,6 +2582,14 @@
                     + ", isCredential=" + node.isCredential()
             );
         }
+        GetCredentialRequest getCredentialRequest = node.getCredentialManagerRequest();
+        if (getCredentialRequest == null) {
+            Log.i(TAG, prefix + " NO Credential Manager Request");
+        } else {
+            Log.i(TAG, prefix + "  GetCredentialRequest: no. of options= "
+                    + getCredentialRequest.getCredentialOptions().size()
+            );
+        }
 
         final int NCHILDREN = node.getChildCount();
         if (NCHILDREN > 0) {
diff --git a/core/java/android/app/ondeviceintelligence/OWNERS b/core/java/android/app/ondeviceintelligence/OWNERS
new file mode 100644
index 0000000..6932ba2
--- /dev/null
+++ b/core/java/android/app/ondeviceintelligence/OWNERS
@@ -0,0 +1,7 @@
+# Bug component: 1363385
+
+sandeepbandaru@google.com
+shivanker@google.com
+hackz@google.com
+volnov@google.com
+
diff --git a/core/java/android/app/wearable/IWearableSensingManager.aidl b/core/java/android/app/wearable/IWearableSensingManager.aidl
index 3cbc8a2..f678022 100644
--- a/core/java/android/app/wearable/IWearableSensingManager.aidl
+++ b/core/java/android/app/wearable/IWearableSensingManager.aidl
@@ -17,6 +17,7 @@
 package android.app.wearable;
 
 import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.RemoteCallback;
@@ -38,4 +39,8 @@
      void registerDataRequestObserver(int dataType, in PendingIntent dataRequestPendingIntent, in RemoteCallback statusCallback);
      @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE)")
      void unregisterDataRequestObserver(int dataType, in PendingIntent dataRequestPendingIntent, in RemoteCallback statusCallback);
+     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE)")
+     void startHotwordRecognition(in ComponentName targetVisComponentName, in RemoteCallback statusCallback);
+     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE)")
+     void stopHotwordRecognition(in RemoteCallback statusCallback);
 }
\ No newline at end of file
diff --git a/core/java/android/app/wearable/WearableSensingManager.java b/core/java/android/app/wearable/WearableSensingManager.java
index 3b281e9..637f677 100644
--- a/core/java/android/app/wearable/WearableSensingManager.java
+++ b/core/java/android/app/wearable/WearableSensingManager.java
@@ -28,6 +28,7 @@
 import android.app.PendingIntent;
 import android.app.ambientcontext.AmbientContextEvent;
 import android.companion.CompanionDeviceManager;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Binder;
@@ -92,9 +93,13 @@
     public static final int STATUS_SUCCESS = 1;
 
     /**
-     * The value of the status code that indicates one or more of the
-     * requested events are not supported.
+     * The value of the status code that indicates one or more of the requested events are not
+     * supported.
      */
+    // TODO(b/324635656): Deprecate this status code. Update Javadoc:
+    // @deprecated WearableSensingManager does not deal with events. Use {@link
+    // STATUS_UNSUPPORTED_OPERATION} instead for operations not supported by the implementation of
+    // {@link WearableSensingService}.
     public static final int STATUS_UNSUPPORTED = 2;
 
     /**
@@ -382,6 +387,83 @@
         }
     }
 
+    /**
+     * Requests the wearable to start hotword recognition.
+     *
+     * <p>When this method is called, the system will attempt to provide a {@link
+     * android.service.wearable.WearableHotwordAudioConsumer} to {@link WearableSensingService}.
+     * After first-stage hotword is detected on a wearable, {@link WearableSensingService} should
+     * send the hotword audio to the {@link android.service.wearable.WearableHotwordAudioConsumer},
+     * which will forward the data to the {@link android.service.voice.HotwordDetectionService} for
+     * second-stage hotword validation. If hotword is detected there, the audio data will be
+     * forwarded to the {@link android.service.voice.VoiceInteractionService}.
+     *
+     * <p>If the {@code targetVisComponentName} provided here is not null, when {@link
+     * WearableSensingService} sends hotword audio to the {@link
+     * android.service.wearable.WearableHotwordAudioConsumer}, the system will check whether the
+     * {@link android.service.voice.VoiceInteractionService} at that time is {@code
+     * targetVisComponentName}. If not, the system will call {@link
+     * WearableSensingService#onActiveHotwordAudioStopRequested()} and will not forward the audio
+     * data to the current {@link android.service.voice.HotwordDetectionService} nor {@link
+     * android.service.voice.VoiceInteractionService}. The system will not send a status code to
+     * {@code statusConsumer} regarding the {@code targetVisComponentName} check. The caller is
+     * responsible for determining whether the system's {@link
+     * android.service.voice.VoiceInteractionService} is the same as {@code targetVisComponentName}.
+     * The check here is just a protection against race conditions.
+     *
+     * <p>Calling this method again will send a new {@link
+     * android.service.wearable.WearableHotwordAudioConsumer} to {@link WearableSensingService}. For
+     * audio data sent to the new consumer, the system will perform the above check using the newly
+     * provided {@code targetVisComponentName}. The {@link WearableSensingService} should not
+     * continue to use the previous consumers after receiving a new one.
+     *
+     * <p>If the {@code statusConsumer} returns {@link STATUS_SUCCESS}, the caller should call
+     * {@link #stopListeningForHotword(Executor, Consumer)} when it wants the wearable to stop
+     * listening for hotword. If the {@code statusConsumer} returns any other status code, a failure
+     * has occurred and calling {@link #stopListeningForHotword(Executor, Consumer)} is not
+     * required. The system will not retry listening automatically. The caller should call this
+     * method again if they want to retry.
+     *
+     * <p>If a failure occurred after the {@link statusConsumer} returns {@link STATUS_SUCCESS},
+     * {@link statusConsumer} will be invoked again with a status code other than {@link
+     * STATUS_SUCCESS}.
+     *
+     * @param targetVisComponentName The ComponentName of the target VoiceInteractionService.
+     * @param executor Executor on which to run the consumer callback.
+     * @param statusConsumer A consumer that handles the status codes.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @RequiresPermission(Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE)
+    public void startHotwordRecognition(
+            @Nullable ComponentName targetVisComponentName,
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull @StatusCode Consumer<Integer> statusConsumer) {
+        try {
+            mService.startHotwordRecognition(
+                    targetVisComponentName, createStatusCallback(executor, statusConsumer));
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Requests the wearable to stop hotword recognition.
+     *
+     * @param executor Executor on which to run the consumer callback.
+     * @param statusConsumer A consumer that handles the status codes.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @RequiresPermission(Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE)
+    public void stopHotwordRecognition(
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull @StatusCode Consumer<Integer> statusConsumer) {
+        try {
+            mService.stopHotwordRecognition(createStatusCallback(executor, statusConsumer));
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
     private static RemoteCallback createStatusCallback(
             Executor executor, Consumer<Integer> statusConsumer) {
         return new RemoteCallback(
diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java
index a16e94a..3304475 100644
--- a/core/java/android/companion/virtual/VirtualDeviceManager.java
+++ b/core/java/android/companion/virtual/VirtualDeviceManager.java
@@ -26,6 +26,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
@@ -333,6 +334,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public @VirtualDeviceParams.DevicePolicy int getDevicePolicy(
             int deviceId, @VirtualDeviceParams.PolicyType int policyType) {
         if (mService == null) {
@@ -351,6 +354,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getDeviceIdForDisplayId(int displayId) {
         if (mService == null) {
             Log.w(TAG, "Failed to retrieve virtual devices; no virtual device manager service.");
@@ -446,6 +451,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getAudioPlaybackSessionId(int deviceId) {
         if (mService == null) {
             return AUDIO_SESSION_ID_GENERATE;
@@ -470,6 +477,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getAudioRecordingSessionId(int deviceId) {
         if (mService == null) {
             return AUDIO_SESSION_ID_GENERATE;
@@ -491,6 +500,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public void playSoundEffect(int deviceId, @AudioManager.SystemSoundEffect int effectType) {
         if (mService == null) {
             Log.w(TAG, "Failed to dispatch sound effect; no virtual device manager service.");
diff --git a/core/java/android/companion/virtual/camera/VirtualCamera.java b/core/java/android/companion/virtual/camera/VirtualCamera.java
index 9d6c14b..f727589 100644
--- a/core/java/android/companion/virtual/camera/VirtualCamera.java
+++ b/core/java/android/companion/virtual/camera/VirtualCamera.java
@@ -18,7 +18,9 @@
 
 import android.annotation.FlaggedApi;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.companion.virtual.IVirtualDevice;
 import android.companion.virtual.VirtualDeviceManager;
 import android.companion.virtual.VirtualDeviceParams;
@@ -84,6 +86,8 @@
      * Returns the id of this virtual camera instance.
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     @NonNull
     public String getId() {
         return mCameraId;
diff --git a/core/java/android/companion/virtual/sensor/VirtualSensor.java b/core/java/android/companion/virtual/sensor/VirtualSensor.java
index 14c7997..37e494b 100644
--- a/core/java/android/companion/virtual/sensor/VirtualSensor.java
+++ b/core/java/android/companion/virtual/sensor/VirtualSensor.java
@@ -18,7 +18,9 @@
 
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.companion.virtual.IVirtualDevice;
 import android.hardware.Sensor;
 import android.os.IBinder;
@@ -54,6 +56,15 @@
         mToken = token;
     }
 
+    /**
+     * @hide
+     */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
+    public VirtualSensor(int handle, int type, @NonNull String name) {
+        this(handle, type, name, /*virtualDevice=*/null, /*token=*/null);
+    }
+
     private VirtualSensor(Parcel parcel) {
         mHandle = parcel.readInt();
         mType = parcel.readInt();
@@ -67,6 +78,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getHandle() {
         return mHandle;
     }
diff --git a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
index 0dbe411..21ad914 100644
--- a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
+++ b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java
@@ -20,7 +20,9 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.hardware.Sensor;
 import android.hardware.SensorDirectChannel;
 import android.os.Parcel;
@@ -217,6 +219,8 @@
      *
      * @hide
      */
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getFlags() {
         return mFlags;
     }
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index b8d7543..9e192a0 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -6553,6 +6553,28 @@
     public static final String CONTACT_KEYS_SERVICE = "contact_keys";
 
     /**
+     * Use with {@link #getSystemService(String)} to retrieve an
+     * {@link android.os.ProfilingManager}.
+     *
+     * @see #getSystemService(String)
+     */
+    @FlaggedApi(android.os.Flags.FLAG_TELEMETRY_APIS_FRAMEWORK_INITIALIZATION)
+    public static final String PROFILING_SERVICE = "profiling";
+
+    /**
+     * Use with {@link #getSystemService(String)} to retrieve a {@link
+     * android.webkit.WebViewUpdateManager} for accessing the WebView update service.
+     *
+     * @see #getSystemService(String)
+     * @see android.webkit.WebViewUpdateManager
+     * @hide
+     */
+    @FlaggedApi(android.webkit.Flags.FLAG_UPDATE_SERVICE_IPC_WRAPPER)
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SuppressLint("ServiceName")
+    public static final String WEBVIEW_UPDATE_SERVICE = "webviewupdate";
+
+    /**
      * Determine whether the given permission is allowed for a particular
      * process and user ID running in the system.
      *
@@ -7706,9 +7728,13 @@
     }
 
     /**
+     * Updates the display association of this Context with the display with the given ID.
+     *
      * @hide
      */
     @SuppressWarnings("HiddenAbstractMethod")
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public abstract void updateDisplay(int displayId);
 
     /**
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index 333c363..0bcbb8e 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -19,6 +19,7 @@
 import static android.app.sdksandbox.SdkSandboxManager.ACTION_START_SANDBOXED_ACTIVITY;
 import static android.content.ContentProvider.maybeAddUserId;
 import static android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE;
+import static android.security.Flags.FLAG_FRP_ENFORCEMENT;
 import static android.service.chooser.Flags.FLAG_ENABLE_SHARESHEET_METADATA_EXTRA;
 
 import android.Manifest;
@@ -56,6 +57,7 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.BundleMerger;
+import android.os.CancellationSignal;
 import android.os.IBinder;
 import android.os.IncidentManager;
 import android.os.Parcel;
@@ -73,7 +75,9 @@
 import android.provider.DocumentsProvider;
 import android.provider.MediaStore;
 import android.provider.OpenableColumns;
+import android.service.chooser.AdditionalContentContract;
 import android.service.chooser.ChooserAction;
+import android.service.chooser.ChooserResult;
 import android.telecom.PhoneAccount;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
@@ -1060,7 +1064,7 @@
         }
 
         if (sender != null) {
-            intent.putExtra(EXTRA_CHOSEN_COMPONENT_INTENT_SENDER, sender);
+            intent.putExtra(EXTRA_CHOOSER_RESULT_INTENT_SENDER, sender);
         }
 
         // Migrate any clip data and flags from target.
@@ -3899,6 +3903,26 @@
             "android.intent.action.ACTION_IDLE_MAINTENANCE_END";
 
     /**
+     * Broadcast Action: A broadcast sent to the main user when the main user changes their
+     * Lock Screen Knowledge Factor, either because they changed the current value, or because
+     * they added or removed it.
+     *
+     * <p class="note">At present, this intent is only broadcast to listeners with the
+     * CONFIGURE_FACTORY_RESET_PROTECTION signature|privileged permiession.</p>
+     *
+     * <p class="note">This is a protected intent that can only be sent by the system.</p>
+     *
+     * @hide
+     */
+    @FlaggedApi(FLAG_FRP_ENFORCEMENT)
+    @SystemApi
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    @BroadcastBehavior(protectedBroadcast = true)
+    public static final String
+            ACTION_MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED =
+            "android.intent.action.MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED";
+
+    /**
      * Broadcast Action: a remote intent is to be broadcasted.
      *
      * A remote intent is used for remote RPC between devices. The remote intent
@@ -6065,6 +6089,62 @@
     public static final int CHOOSER_CONTENT_TYPE_ALBUM = 1;
 
     /**
+     * Optional argument used to provide a {@link ContentProvider} {@link Uri} to an
+     * {@link #ACTION_CHOOSER} Intent which allows additional toggleable items to be included
+     * in the sharing UI.
+     * <p>
+     * For example, this could be  used to show photos being shared in the context of the user's
+     * entire photo roll, with the option to change the set of photos being shared.
+     * <p>
+     * When this is provided in an {@link #ACTION_CHOOSER} Intent with an {@link #ACTION_SEND} or
+     * {@link #ACTION_SEND_MULTIPLE} target Intent, the sharesheet will query (see
+     * {@link ContentProvider#query(Uri, String[], Bundle, CancellationSignal)}) this URI to
+     * retrieve a set of additional items available for selection. The set of items returned by the
+     * content provider is expected to contain all the items from the {@link #EXTRA_STREAM}
+     * argument, in their relative order, which will be marked as selected. The URI's authority
+     * must be different from any shared items URI provided in {@link #EXTRA_STREAM} or returned by
+     * the provider.
+     *
+     * <p>The {@link Bundle} argument of the
+     * {@link ContentProvider#query(Uri, String[], Bundle, CancellationSignal)}
+     * method will contains the original intent Chooser has been launched with under the
+     * {@link #EXTRA_INTENT} key as a context for the current sharing session. The returned
+     * {@link android.database.Cursor} should contain
+     * {@link android.service.chooser.AdditionalContentContract.Columns#URI} column for the item URI
+     * and, optionally, {@link AdditionalContentContract.CursorExtraKeys#POSITION} extra that
+     * specifies the cursor starting position; the item at this position is expected to match the
+     * item specified by {@link #EXTRA_CHOOSER_FOCUSED_ITEM_POSITION}.</p>
+     *
+     * <p>When the user makes a selection change,
+     * {@link ContentProvider#call(String, String, Bundle)} method will be invoked with the "method"
+     * argument set to
+     * {@link android.service.chooser.AdditionalContentContract.MethodNames#ON_SELECTION_CHANGED},
+     * the "arg" argument set to this argument's value, and the "extras" {@link Bundle} argument
+     * containing {@link #EXTRA_INTENT} key containing the original intent Chooser has been launched
+     * with but with the modified target intent --Chooser will modify the target intent according to
+     * the selection changes made by the user.
+     * Applications may implement this method to change any of the following Chooser arguments by
+     * returning new values in the result bundle:
+     * {@link #EXTRA_CHOOSER_TARGETS}, {@link #EXTRA_ALTERNATE_INTENTS},
+     * {@link #EXTRA_CHOOSER_CUSTOM_ACTIONS},
+     * {@link #EXTRA_CHOOSER_MODIFY_SHARE_ACTION},
+     * {@link #EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER}.</p>
+     */
+    @FlaggedApi(android.service.chooser.Flags.FLAG_CHOOSER_PAYLOAD_TOGGLING)
+    public static final String EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI =
+            "android.intent.extra.CHOOSER_ADDITIONAL_CONTENT_URI";
+
+    /**
+     * Optional argument to be used with {@link #EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI}, used in
+     * combination with {@link #EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI}.
+     * An integer, zero-based index into {@link #EXTRA_STREAM} argument indicating the item that
+     * should be focused by the Chooser in preview.
+     */
+    @FlaggedApi(android.service.chooser.Flags.FLAG_CHOOSER_PAYLOAD_TOGGLING)
+    public static final String EXTRA_CHOOSER_FOCUSED_ITEM_POSITION =
+            "android.intent.extra.CHOOSER_FOCUSED_ITEM_POSITION";
+
+    /**
      * An {@code ArrayList} of {@code String} annotations describing content for
      * {@link #ACTION_CHOOSER}.
      *
@@ -6308,6 +6388,25 @@
             "android.intent.extra.CHOSEN_COMPONENT_INTENT_SENDER";
 
     /**
+     * An {@link IntentSender} that will be notified when a user successfully chooses a target
+     * component or initiates an action such as copy or edit within an {@link #ACTION_CHOOSER}
+     * activity. The IntentSender will have the extra {@link #EXTRA_CHOOSER_RESULT} describing
+     * the result.
+     */
+    @FlaggedApi(android.service.chooser.Flags.FLAG_ENABLE_CHOOSER_RESULT)
+    public static final String EXTRA_CHOOSER_RESULT_INTENT_SENDER =
+            "android.intent.extra.CHOOSER_RESULT_INTENT_SENDER";
+
+    /**
+     * A {@link ChooserResult} which describes how the sharing session completed.
+     * <p>
+     * An instance is supplied to the optional IntentSender provided to
+     * {@link #createChooser(Intent, CharSequence, IntentSender)} when the session completes.
+     */
+    @FlaggedApi(android.service.chooser.Flags.FLAG_ENABLE_CHOOSER_RESULT)
+    public static final String EXTRA_CHOOSER_RESULT = "android.intent.extra.CHOOSER_RESULT";
+
+    /**
      * The {@link ComponentName} chosen by the user to complete an action.
      *
      * @see #EXTRA_CHOSEN_COMPONENT_INTENT_SENDER
diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java
index d913581..e290722 100644
--- a/core/java/android/content/IntentFilter.java
+++ b/core/java/android/content/IntentFilter.java
@@ -677,7 +677,7 @@
      * has at least one HTTP or HTTPS data URI pattern defined, and optionally
      * does not define any non-http/https data URI patterns.
      *
-     * This will check if if the Intent action is {@link android.content.Intent#ACTION_VIEW} and
+     * This will check if the Intent action is {@link android.content.Intent#ACTION_VIEW} and
      * the Intent category is {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent
      * data scheme is "http" or "https".
      *
@@ -718,7 +718,7 @@
         }
 
         // We get here if:
-        //   1) onlyWebSchemes and no non-web schemes were found, i.e success; or
+        //   1) onlyWebSchemes and no non-web schemes were found, i.e. success; or
         //   2) !onlyWebSchemes and no http/https schemes were found, i.e. failure.
         return onlyWebSchemes;
     }
@@ -728,7 +728,7 @@
      *
      * @return True if the filter needs to be automatically verified. False otherwise.
      *
-     * This will check if if the Intent action is {@link android.content.Intent#ACTION_VIEW} and
+     * This will check if the Intent action is {@link android.content.Intent#ACTION_VIEW} and
      * the Intent category is {@link android.content.Intent#CATEGORY_BROWSABLE} and the Intent
      * data scheme is "http" or "https".
      *
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index a8dba51..cae4fab 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -1565,6 +1565,14 @@
     private Boolean requestRawExternalStorageAccess;
 
     /**
+     * If {@code false}, this app does not allow its activities to be replaced by another app.
+     * Is set from application manifest application tag's allowCrossUidActivitySwitchFromBelow
+     * attribute.
+     * @hide
+     */
+    public boolean allowCrossUidActivitySwitchFromBelow = true;
+
+    /**
      * Represents the default policy. The actual policy used will depend on other properties of
      * the application, e.g. the target SDK version.
      * @hide
@@ -1760,6 +1768,9 @@
                         + Integer.toHexString(localeConfigRes));
             }
             pw.println(prefix + "enableOnBackInvokedCallback=" + isOnBackInvokedCallbackEnabled());
+            pw.println(prefix + "allowCrossUidActivitySwitchFromBelow="
+                    + allowCrossUidActivitySwitchFromBelow);
+
         }
         pw.println(prefix + "createTimestamp=" + createTimestamp);
         if (mKnownActivityEmbeddingCerts != null) {
@@ -1877,6 +1888,8 @@
                 proto.write(ApplicationInfoProto.Detail.NATIVE_HEAP_ZERO_INIT,
                         nativeHeapZeroInitialized);
             }
+            proto.write(ApplicationInfoProto.Detail.ALLOW_CROSS_UID_ACTIVITY_SWITCH_FROM_BELOW,
+                    allowCrossUidActivitySwitchFromBelow);
             proto.end(detailToken);
         }
         if (!ArrayUtils.isEmpty(mKnownActivityEmbeddingCerts)) {
@@ -2002,6 +2015,7 @@
         nativeHeapZeroInitialized = orig.nativeHeapZeroInitialized;
         requestRawExternalStorageAccess = orig.requestRawExternalStorageAccess;
         localeConfigRes = orig.localeConfigRes;
+        allowCrossUidActivitySwitchFromBelow = orig.allowCrossUidActivitySwitchFromBelow;
         createTimestamp = SystemClock.uptimeMillis();
     }
 
@@ -2106,6 +2120,8 @@
             }
         }
         dest.writeInt(localeConfigRes);
+        dest.writeInt(allowCrossUidActivitySwitchFromBelow ? 1 : 0);
+
         sForStringSet.parcel(mKnownActivityEmbeddingCerts, dest, flags);
     }
 
@@ -2204,6 +2220,8 @@
             }
         }
         localeConfigRes = source.readInt();
+        allowCrossUidActivitySwitchFromBelow = source.readInt() != 0;
+
         mKnownActivityEmbeddingCerts = sForStringSet.unparcel(source);
         if (mKnownActivityEmbeddingCerts.isEmpty()) {
             mKnownActivityEmbeddingCerts = null;
diff --git a/core/java/android/content/pm/CrossProfileApps.java b/core/java/android/content/pm/CrossProfileApps.java
index 529363f..8220313 100644
--- a/core/java/android/content/pm/CrossProfileApps.java
+++ b/core/java/android/content/pm/CrossProfileApps.java
@@ -19,7 +19,9 @@
 import static android.app.admin.DevicePolicyResources.Strings.Core.SWITCH_TO_PERSONAL_LABEL;
 import static android.app.admin.DevicePolicyResources.Strings.Core.SWITCH_TO_WORK_LABEL;
 import static android.content.pm.PackageManager.MATCH_DEFAULT_ONLY;
+import static android.app.admin.flags.Flags.FLAG_ALLOW_QUERYING_PROFILE_TYPE;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
@@ -314,6 +316,41 @@
         }
     }
 
+
+    /**
+     * Checks if the specified user is a profile, i.e. not the parent user.
+     *
+     * @param userHandle The UserHandle of the target profile, must be one of the users returned by
+     *        {@link #getTargetUserProfiles()}, otherwise a {@link SecurityException} will
+     *        be thrown.
+     * @return whether the specified user is a profile.
+     */
+    @FlaggedApi(FLAG_ALLOW_QUERYING_PROFILE_TYPE)
+    public boolean isProfile(@NonNull UserHandle userHandle) {
+        // Note that this is not a security check, but rather a check for correct use.
+        // The actual security check is performed by UserManager.
+        verifyCanAccessUser(userHandle);
+
+        return mUserManager.isProfile(userHandle.getIdentifier());
+    }
+
+    /**
+     * Checks if the specified user is a managed profile.
+     *
+     * @param userHandle The UserHandle of the target profile, must be one of the users returned by
+     *        {@link #getTargetUserProfiles()}, otherwise a {@link SecurityException} will
+     *        be thrown.
+     * @return whether the specified user is a managed profile.
+     */
+    @FlaggedApi(FLAG_ALLOW_QUERYING_PROFILE_TYPE)
+    public boolean isManagedProfile(@NonNull UserHandle userHandle) {
+        // Note that this is not a security check, but rather a check for correct use.
+        // The actual security check is performed by UserManager.
+        verifyCanAccessUser(userHandle);
+
+        return mUserManager.isManagedProfile(userHandle.getIdentifier());
+    }
+
     /**
      * Return a label that calling app can show to user for the semantic of profile switching --
      * launching its own activity in specified user profile. For example, it may return
@@ -677,6 +714,11 @@
         }
     }
 
+    /**
+     * A validation method to check that the methods in this class are only being applied to user
+     * handles returned by {@link #getTargetUserProfiles()}. As this is run client-side for
+     * input validation purposes, this should never replace a real security check service-side.
+     */
     private void verifyCanAccessUser(UserHandle userHandle) {
         if (!getTargetUserProfiles().contains(userHandle)) {
             throw new SecurityException("Not allowed to access " + userHandle);
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 7c264f6..9c859c4 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -17,6 +17,8 @@
 package android.content.pm;
 
 import static android.Manifest.permission;
+import static android.Manifest.permission.ACCESS_HIDDEN_PROFILES;
+import static android.Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL;
 import static android.Manifest.permission.READ_FRAME_BUFFER;
 
 import android.annotation.CallbackExecutor;
@@ -779,15 +781,20 @@
 
     /**
      * Returns information related to a user which is useful for displaying UI elements
-     * to distinguish it from other users (eg, badges). Only system launchers should
-     * call this API.
+     * to distinguish it from other users (eg, badges).
      *
-     * @param userHandle user handle of the user for which LauncherUserInfo is requested
-     * @return the LauncherUserInfo object related to the user specified.
-     * @hide
+     * <p>If the user in question is a hidden profile like
+     * {@link UserManager.USER_TYPE_PROFILE_PRIVATE}, caller should have
+     * {@link android.app.role.RoleManager.ROLE_HOME} and either of the permissions required.
+     *
+     * @param userHandle user handle of the user for which LauncherUserInfo is requested.
+     * @return the {@link LauncherUserInfo} object related to the user specified, null in case
+     * the user is inaccessible.
      */
     @Nullable
     @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
+    @RequiresPermission(conditional = true,
+            anyOf = {ACCESS_HIDDEN_PROFILES_FULL, ACCESS_HIDDEN_PROFILES})
     public final LauncherUserInfo getLauncherUserInfo(@NonNull UserHandle userHandle) {
         if (DEBUG) {
             Log.i(TAG, "getLauncherUserInfo " + userHandle);
@@ -823,17 +830,20 @@
      * </ul>
      * </p>
      *
-     *
+     * <p>If the user in question is a hidden profile
+     * {@link UserManager.USER_TYPE_PROFILE_PRIVATE}, caller should have
+     * {@link android.app.role.RoleManager.ROLE_HOME} and either of the permissions required.
      *
      * @param packageName the package for which intent sender to launch App Market Activity is
      *                    required.
      * @param user the profile for which intent sender to launch App Market Activity is required.
      * @return {@link IntentSender} object which launches the App Market Activity, null in case
      *         there is no such activity.
-     * @hide
      */
     @Nullable
     @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
+    @RequiresPermission(conditional = true,
+            anyOf = {ACCESS_HIDDEN_PROFILES_FULL, ACCESS_HIDDEN_PROFILES})
     public IntentSender getAppMarketActivityIntent(@Nullable String packageName,
             @NonNull UserHandle user) {
         if (DEBUG) {
@@ -851,15 +861,21 @@
     /**
      * Returns the list of the system packages that are installed at user creation.
      *
-     * <p>An empty list denotes that all system packages are installed for that user at creation.
-     * This behaviour is inherited from the underlining UserManager API.
+     * <p>An empty list denotes that all system packages should be treated as pre-installed for that
+     * user at creation.
+     *
+     * <p>If the user in question is a hidden profile like
+     * {@link UserManager.USER_TYPE_PROFILE_PRIVATE}, caller should have
+     * {@link android.app.role.RoleManager.ROLE_HOME} and either of the permissions required.
      *
      * @param userHandle the user for which installed system packages are required.
      * @return {@link List} of {@link String}, representing the package name of the installed
      *        package. Can be empty but not null.
-     * @hide
      */
     @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
+    @NonNull
+    @RequiresPermission(conditional = true,
+            anyOf = {ACCESS_HIDDEN_PROFILES_FULL, ACCESS_HIDDEN_PROFILES})
     public List<String> getPreInstalledSystemPackages(@NonNull UserHandle userHandle) {
         if (DEBUG) {
             Log.i(TAG, "getPreInstalledSystemPackages for user: " + userHandle);
diff --git a/core/java/android/content/pm/LauncherUserInfo.java b/core/java/android/content/pm/LauncherUserInfo.java
index 214c3e4..8426f54 100644
--- a/core/java/android/content/pm/LauncherUserInfo.java
+++ b/core/java/android/content/pm/LauncherUserInfo.java
@@ -27,8 +27,6 @@
 /**
  * The LauncherUserInfo object holds information about an Android user that is required to display
  * the Launcher related UI elements specific to the user (like badges).
- *
- * @hide
  */
 @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
 public final class LauncherUserInfo implements Parcelable {
@@ -41,11 +39,9 @@
     /**
      * Returns type of the user as defined in {@link UserManager}. e.g.,
      * {@link UserManager.USER_TYPE_PROFILE_MANAGED} or {@link UserManager.USER_TYPE_PROFILE_ClONE}
-     * TODO(b/303812736): Make the return type public and update javadoc here once the linked bug
-     * is resolved.
+     * or {@link UserManager.USER_TYPE_PROFILE_PRIVATE}
      *
      * @return the userType for the user whose LauncherUserInfo this is
-     * @hide
      */
     @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
     @NonNull
@@ -58,7 +54,6 @@
      * {@link UserManager#getSerialNumberForUser(UserHandle)}
      *
      * @return the serial number associated with the user
-     * @hide
      */
     @FlaggedApi(Flags.FLAG_ALLOW_PRIVATE_PROFILE)
     public int getUserSerialNumber() {
diff --git a/core/java/android/content/pm/OWNERS b/core/java/android/content/pm/OWNERS
index fb95608895..c6f5220 100644
--- a/core/java/android/content/pm/OWNERS
+++ b/core/java/android/content/pm/OWNERS
@@ -3,11 +3,22 @@
 file:/PACKAGE_MANAGER_OWNERS
 
 per-file PackageParser.java = set noparent
-per-file PackageParser.java = chiuwinson@google.com,patb@google.com
+per-file PackageParser.java = file:/PACKAGE_MANAGER_OWNERS
+
+# Bug component: 166829 = per-file *Capability*
 per-file *Capability* = file:/core/java/android/content/pm/SHORTCUT_OWNERS
+# Bug component: 166829 = per-file *Shortcut*
 per-file *Shortcut* = file:/core/java/android/content/pm/SHORTCUT_OWNERS
+
+# Bug component: 860423 = per-file *Launcher*
 per-file *Launcher* = file:/core/java/android/content/pm/LAUNCHER_OWNERS
+
+# Bug component: 578329 = per-file *UserInfo*
 per-file UserInfo* = file:/MULTIUSER_OWNERS
+# Bug component: 578329 = per-file *UserProperties*
 per-file *UserProperties* = file:/MULTIUSER_OWNERS
+# Bug component: 578329 = per-file *multiuser*
 per-file *multiuser* = file:/MULTIUSER_OWNERS
-per-file IBackgroundInstallControlService.aidl = file:/services/core/java/com/android/server/pm/BACKGROUND_INSTALL_OWNERS
+
+# Bug component: 1219020 = per-file *BackgroundInstallControl*
+per-file *BackgroundInstallControl* = file:/services/core/java/com/android/server/pm/BACKGROUND_INSTALL_OWNERS
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 407ffbb..2a67353 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -16,6 +16,8 @@
 
 package android.content.pm;
 
+import static android.media.audio.Flags.FLAG_FEATURE_SPATIAL_AUDIO_HEADTRACKING_LOW_LATENCY;
+
 import static com.android.internal.pm.pkg.parsing.ParsingPackageUtils.PARSE_COLLECT_CERTIFICATES;
 
 import android.Manifest;
@@ -2552,6 +2554,15 @@
     public static final int INSTALL_FAILED_SHARED_LIBRARY_BAD_CERTIFICATE_DIGEST = -130;
 
     /**
+     * Installation failed return code: if the system failed to install the package that
+     * {@link android.R.attr#multiArch} is true in its manifest because its packaged
+     * native code did not match all of the natively ABIs supported by the system.
+     *
+     * @hide
+     */
+    public static final int INSTALL_FAILED_MULTI_ARCH_NOT_MATCH_ALL_NATIVE_ABIS = -131;
+
+    /**
      * App minimum aspect ratio set by the user which will override app-defined aspect ratio.
      *
      * @hide
@@ -3065,6 +3076,17 @@
     public static final String FEATURE_AUDIO_PRO = "android.hardware.audio.pro";
 
     /**
+     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}
+     * which indicates whether head tracking for spatial audio operates with low-latency,
+     * as defined by the CDD criteria for the feature.
+     *
+     */
+    @SdkConstant(SdkConstantType.FEATURE)
+    @FlaggedApi(FLAG_FEATURE_SPATIAL_AUDIO_HEADTRACKING_LOW_LATENCY)
+    public static final String FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY =
+            "android.hardware.audio.spatial.headtracking.low_latency";
+
+    /**
      * Feature for {@link #getSystemAvailableFeatures} and
      * {@link #hasSystemFeature}: The device is capable of communicating with
      * other devices via Bluetooth.
@@ -10439,6 +10461,8 @@
             case INSTALL_FAILED_SESSION_INVALID: return "INSTALL_FAILED_SESSION_INVALID";
             case INSTALL_FAILED_SHARED_LIBRARY_BAD_CERTIFICATE_DIGEST:
                 return "INSTALL_FAILED_SHARED_LIBRARY_BAD_CERTIFICATE_DIGEST";
+            case INSTALL_FAILED_MULTI_ARCH_NOT_MATCH_ALL_NATIVE_ABIS:
+                return "INSTALL_FAILED_MULTI_ARCH_NOT_MATCH_ALL_NATIVE_ABIS";
             default: return Integer.toString(status);
         }
     }
diff --git a/core/java/android/content/pm/ServiceInfo.java b/core/java/android/content/pm/ServiceInfo.java
index 5b0cee7..9c6aab4 100644
--- a/core/java/android/content/pm/ServiceInfo.java
+++ b/core/java/android/content/pm/ServiceInfo.java
@@ -163,12 +163,25 @@
      * Because of this, developers must make sure to stop the foreground service even if
      * {@link android.app.Service#onTimeout(int, int)} is not called on such versions.
      *
-     * @see android.app.Service#onTimeout(int, int)
+     * <p>Apps targeting API level {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} and
+     * later should <b>NOT</b> use this type: calling
+     * {@link android.app.Service#startForeground(int, android.app.Notification, int)} with
+     * this type on devices running {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} is
+     * still allowed, but it may throw an {@link android.app.InvalidForegroundServiceTypeException}
+     * in future platform releases.
+     *
+     * <p class="note">
+     * Use the {@link android.app.job.JobInfo.Builder#setUserInitiated(boolean)} API for
+     * user-initiated, network data transfers.
+     *
+     * @deprecated Use {@link android.app.job.JobInfo.Builder} APIs or alternate FGS types
+     * (like {@link #FOREGROUND_SERVICE_TYPE_MEDIA_PROCESSING}) applicable to your use-case.
      */
     @RequiresPermission(
             value = Manifest.permission.FOREGROUND_SERVICE_DATA_SYNC,
             conditional = true
     )
+    @Deprecated
     public static final int FOREGROUND_SERVICE_TYPE_DATA_SYNC = 1 << 0;
 
     /**
diff --git a/core/java/android/content/pm/multiuser.aconfig b/core/java/android/content/pm/multiuser.aconfig
index 4b890fa..6696ba0 100644
--- a/core/java/android/content/pm/multiuser.aconfig
+++ b/core/java/android/content/pm/multiuser.aconfig
@@ -135,3 +135,24 @@
     description: "Allow the use of a profileApiAvailability user property to exclude HIDDEN profiles in API results"
     bug: "316362775"
 }
+
+flag {
+    name: "enable_launcher_apps_hidden_profile_checks"
+    namespace: "profile_experiences"
+    description: "Enable extra check to limit access to hidden profiles data in Launcher apps APIs."
+    bug: "321988638"
+}
+
+flag {
+    name: "reorder_wallpaper_during_user_switch"
+    namespace: "multiuser"
+    description: "Reorder loading home and lock screen wallpapers during a user switch."
+    bug: "324911115"
+}
+
+flag {
+    name: "set_power_mode_during_user_switch"
+    namespace: "multiuser"
+    description: "Set power mode during a user switch."
+    bug: "325249845"
+}
diff --git a/core/java/android/content/pm/overlay/OverlayPaths.java b/core/java/android/content/pm/overlay/OverlayPaths.java
index a4db733..bd74b0b 100644
--- a/core/java/android/content/pm/overlay/OverlayPaths.java
+++ b/core/java/android/content/pm/overlay/OverlayPaths.java
@@ -49,6 +49,13 @@
     public static class Builder {
         final OverlayPaths mPaths = new OverlayPaths();
 
+        public Builder() {}
+
+        public Builder(@NonNull OverlayPaths base) {
+            mPaths.mResourceDirs.addAll(base.getResourceDirs());
+            mPaths.mOverlayPaths.addAll(base.getOverlayPaths());
+        }
+
         /**
          * Adds a non-APK path to the contents of {@link OverlayPaths#getOverlayPaths()}.
          */
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index d259e97..23b9d0b 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -137,8 +137,6 @@
         private ArrayList<ApkAssets> mUserApkAssets = new ArrayList<>();
         private ArrayList<ResourcesLoader> mLoaders = new ArrayList<>();
 
-        private boolean mNoInit = false;
-
         public Builder addApkAssets(ApkAssets apkAssets) {
             mUserApkAssets.add(apkAssets);
             return this;
@@ -149,11 +147,6 @@
             return this;
         }
 
-        public Builder setNoInit() {
-            mNoInit = true;
-            return this;
-        }
-
         public AssetManager build() {
             // Retrieving the system ApkAssets forces their creation as well.
             final ApkAssets[] systemApkAssets = getSystem().getApkAssets();
@@ -195,7 +188,7 @@
             final AssetManager assetManager = new AssetManager(false /*sentinel*/);
             assetManager.mApkAssets = apkAssets;
             AssetManager.nativeSetApkAssets(assetManager.mObject, apkAssets,
-                    false /*invalidateCaches*/, mNoInit /*preset*/);
+                    false /*invalidateCaches*/);
             assetManager.mLoaders = mLoaders.isEmpty() ? null
                     : mLoaders.toArray(new ResourcesLoader[0]);
 
@@ -336,7 +329,7 @@
         synchronized (this) {
             ensureOpenLocked();
             mApkAssets = newApkAssets;
-            nativeSetApkAssets(mObject, mApkAssets, invalidateCaches, false);
+            nativeSetApkAssets(mObject, mApkAssets, invalidateCaches);
             if (invalidateCaches) {
                 // Invalidate all caches.
                 invalidateCachesLocked(-1);
@@ -503,7 +496,7 @@
 
             mApkAssets = Arrays.copyOf(mApkAssets, count + 1);
             mApkAssets[count] = assets;
-            nativeSetApkAssets(mObject, mApkAssets, true, false);
+            nativeSetApkAssets(mObject, mApkAssets, true);
             invalidateCachesLocked(-1);
             return count + 1;
         }
@@ -1510,29 +1503,12 @@
             int navigation, int screenWidth, int screenHeight, int smallestScreenWidthDp,
             int screenWidthDp, int screenHeightDp, int screenLayout, int uiMode, int colorMode,
             int grammaticalGender, int majorVersion) {
-        setConfigurationInternal(mcc, mnc, defaultLocale, locales, orientation,
-                touchscreen, density, keyboard, keyboardHidden, navigation, screenWidth,
-                screenHeight, smallestScreenWidthDp, screenWidthDp, screenHeightDp,
-                screenLayout, uiMode, colorMode, grammaticalGender, majorVersion, false);
-    }
-
-    /**
-     * Change the configuration used when retrieving resources, and potentially force a refresh of
-     * the state.  Not for use by applications.
-     * @hide
-     */
-    void setConfigurationInternal(int mcc, int mnc, String defaultLocale, String[] locales,
-            int orientation, int touchscreen, int density, int keyboard, int keyboardHidden,
-            int navigation, int screenWidth, int screenHeight, int smallestScreenWidthDp,
-            int screenWidthDp, int screenHeightDp, int screenLayout, int uiMode, int colorMode,
-            int grammaticalGender, int majorVersion, boolean forceRefresh) {
         synchronized (this) {
             ensureValidLocked();
             nativeSetConfiguration(mObject, mcc, mnc, defaultLocale, locales, orientation,
                     touchscreen, density, keyboard, keyboardHidden, navigation, screenWidth,
                     screenHeight, smallestScreenWidthDp, screenWidthDp, screenHeightDp,
-                    screenLayout, uiMode, colorMode, grammaticalGender, majorVersion,
-                    forceRefresh);
+                    screenLayout, uiMode, colorMode, grammaticalGender, majorVersion);
         }
     }
 
@@ -1617,13 +1593,13 @@
     private static native long nativeCreate();
     private static native void nativeDestroy(long ptr);
     private static native void nativeSetApkAssets(long ptr, @NonNull ApkAssets[] apkAssets,
-            boolean invalidateCaches, boolean preset);
+            boolean invalidateCaches);
     private static native void nativeSetConfiguration(long ptr, int mcc, int mnc,
             @Nullable String defaultLocale, @NonNull String[] locales, int orientation,
             int touchscreen, int density, int keyboard, int keyboardHidden, int navigation,
             int screenWidth, int screenHeight, int smallestScreenWidthDp, int screenWidthDp,
             int screenHeightDp, int screenLayout, int uiMode, int colorMode, int grammaticalGender,
-            int majorVersion, boolean forceRefresh);
+            int majorVersion);
     private static native @NonNull SparseArray<String> nativeGetAssignedPackageIdentifiers(
             long ptr, boolean includeOverlays, boolean includeLoaders);
 
diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java
index 079c2c1..5e442b8 100644
--- a/core/java/android/content/res/ResourcesImpl.java
+++ b/core/java/android/content/res/ResourcesImpl.java
@@ -200,7 +200,7 @@
         mMetrics.setToDefaults();
         mDisplayAdjustments = displayAdjustments;
         mConfiguration.setToDefaults();
-        updateConfigurationImpl(config, metrics, displayAdjustments.getCompatibilityInfo(), true);
+        updateConfiguration(config, metrics, displayAdjustments.getCompatibilityInfo());
     }
 
     public DisplayAdjustments getDisplayAdjustments() {
@@ -402,12 +402,7 @@
     }
 
     public void updateConfiguration(Configuration config, DisplayMetrics metrics,
-            CompatibilityInfo compat) {
-        updateConfigurationImpl(config, metrics, compat, false);
-    }
-
-    private void updateConfigurationImpl(Configuration config, DisplayMetrics metrics,
-                                    CompatibilityInfo compat, boolean forceAssetsRefresh) {
+                                    CompatibilityInfo compat) {
         Trace.traceBegin(Trace.TRACE_TAG_RESOURCES, "ResourcesImpl#updateConfiguration");
         try {
             synchronized (mAccessLock) {
@@ -533,7 +528,7 @@
                     keyboardHidden = mConfiguration.keyboardHidden;
                 }
 
-                mAssets.setConfigurationInternal(mConfiguration.mcc, mConfiguration.mnc,
+                mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc,
                         defaultLocale,
                         selectedLocales,
                         mConfiguration.orientation,
@@ -544,7 +539,7 @@
                         mConfiguration.screenWidthDp, mConfiguration.screenHeightDp,
                         mConfiguration.screenLayout, mConfiguration.uiMode,
                         mConfiguration.colorMode, mConfiguration.getGrammaticalGender(),
-                        Build.VERSION.RESOURCES_SDK_INT, forceAssetsRefresh);
+                        Build.VERSION.RESOURCES_SDK_INT);
 
                 if (DEBUG_CONFIG) {
                     Slog.i(TAG, "**** Updating config of " + this + ": final config is "
diff --git a/core/java/android/credentials/GetCredentialResponse.java b/core/java/android/credentials/GetCredentialResponse.java
index 4f8b026..ea699b9 100644
--- a/core/java/android/credentials/GetCredentialResponse.java
+++ b/core/java/android/credentials/GetCredentialResponse.java
@@ -21,6 +21,8 @@
 import android.annotation.NonNull;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.service.credentials.CredentialProviderService;
+import android.view.autofill.AutofillId;
 
 import com.android.internal.util.AnnotationValidations;
 
@@ -35,6 +37,7 @@
     @NonNull
     private final Credential mCredential;
 
+
     /**
      * Returns the credential that can be used to authenticate the user, or {@code null} if no
      * credential is available.
@@ -60,6 +63,18 @@
     }
 
     /**
+     *
+     * @return
+     *
+     * @hide
+     */
+    public AutofillId getAutofillId() {
+        return mCredential.getData().getParcelable(
+                CredentialProviderService.EXTRA_AUTOFILL_ID,
+                AutofillId.class);
+    }
+
+    /**
      * Constructs a {@link GetCredentialResponse}.
      *
      * @param credential the credential successfully retrieved from the user.
diff --git a/core/java/android/credentials/selection/FailureResult.java b/core/java/android/credentials/selection/FailureResult.java
index 93ba671..91f7013 100644
--- a/core/java/android/credentials/selection/FailureResult.java
+++ b/core/java/android/credentials/selection/FailureResult.java
@@ -23,6 +23,9 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.ResultReceiver;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -35,6 +38,24 @@
 @SystemApi
 @FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED)
 public final class FailureResult {
+
+    /**
+     * Sends the {@code failureResult} that caused the UI to stop back to the CredentialManager
+     * service.
+     *
+     * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted
+     *                      from the launch intent via
+     *                      {@link IntentHelper#extractResultReceiver(Intent)}
+     */
+    public static void sendFailureResult(@NonNull ResultReceiver resultReceiver,
+            @NonNull FailureResult failureResult) {
+        FailureDialogResult result = failureResult.toFailureDialogResult();
+        Bundle resultData = new Bundle();
+        FailureDialogResult.addToBundle(result, resultData);
+        resultReceiver.send(failureResult.errorCodeToResultCode(),
+                resultData);
+    }
+
     @Nullable
     private final String mErrorMessage;
     @NonNull
@@ -53,6 +74,9 @@
     /**
      * The UI was stopped due to a failure, e.g. because it failed to parse the incoming data,
      * or it encountered an irrecoverable internal issue.
+     *
+     * This code also serves as a default value to use for failures that do not fall into any other
+     * error code category or for backward compatibility.
      */
     public static final int ERROR_CODE_UI_FAILURE = 0;
     /** The user intentionally canceled the dialog. */
diff --git a/core/java/android/credentials/selection/ResultHelper.java b/core/java/android/credentials/selection/ResultHelper.java
deleted file mode 100644
index d6347b0..0000000
--- a/core/java/android/credentials/selection/ResultHelper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2024 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 android.credentials.selection;
-
-import static android.credentials.flags.Flags.FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED;
-
-import android.annotation.FlaggedApi;
-import android.annotation.NonNull;
-import android.annotation.SystemApi;
-import android.content.Intent;
-import android.os.Bundle;
-import android.os.ResultReceiver;
-
-/**
- * Utilities for sending the UI results back to the system service.
- *
- * @hide
- */
-@SystemApi
-@FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED)
-public final class ResultHelper {
-    /**
-     * Sends the {@code failureResult} that caused the UI to stop back to the CredentialManager
-     * service.
-     *
-     * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted
-     *                      from the launch intent via
-     *                      {@link IntentHelper#extractResultReceiver(Intent)}
-     */
-    public static void sendFailureResult(@NonNull ResultReceiver resultReceiver,
-            @NonNull FailureResult failureResult) {
-        FailureDialogResult result = failureResult.toFailureDialogResult();
-        Bundle resultData = new Bundle();
-        FailureDialogResult.addToBundle(result, resultData);
-        resultReceiver.send(failureResult.errorCodeToResultCode(),
-                resultData);
-    }
-
-    /**
-     * Sends the completed {@code userSelectionResult} back to the CredentialManager service.
-     *
-     * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted
-     *                       from the launch intent via
-     *                       {@link IntentHelper#extractResultReceiver(Intent)}
-     */
-    public static void sendUserSelectionResult(@NonNull ResultReceiver resultReceiver,
-            @NonNull UserSelectionResult userSelectionResult) {
-        UserSelectionDialogResult result = userSelectionResult.toUserSelectionDialogResult();
-        Bundle resultData = new Bundle();
-        UserSelectionDialogResult.addToBundle(result, resultData);
-        resultReceiver.send(BaseDialogResult.RESULT_CODE_DIALOG_COMPLETE_WITH_SELECTION,
-                resultData);
-    }
-
-    private ResultHelper() {}
-}
diff --git a/core/java/android/credentials/selection/UserSelectionResult.java b/core/java/android/credentials/selection/UserSelectionResult.java
index 235a5d5..140640e 100644
--- a/core/java/android/credentials/selection/UserSelectionResult.java
+++ b/core/java/android/credentials/selection/UserSelectionResult.java
@@ -22,6 +22,9 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.ResultReceiver;
 
 import com.android.internal.util.Preconditions;
 
@@ -34,6 +37,22 @@
 @SystemApi
 @FlaggedApi(FLAG_CONFIGURABLE_SELECTOR_UI_ENABLED)
 public final class UserSelectionResult {
+    /**
+     * Sends the completed {@code userSelectionResult} back to the CredentialManager service.
+     *
+     * @param resultReceiver the ResultReceiver sent from the system service, that can be extracted
+     *                       from the launch intent via
+     *                       {@link IntentHelper#extractResultReceiver(Intent)}
+     */
+    public static void sendUserSelectionResult(@NonNull ResultReceiver resultReceiver,
+            @NonNull UserSelectionResult userSelectionResult) {
+        UserSelectionDialogResult result = userSelectionResult.toUserSelectionDialogResult();
+        Bundle resultData = new Bundle();
+        UserSelectionDialogResult.addToBundle(result, resultData);
+        resultReceiver.send(BaseDialogResult.RESULT_CODE_DIALOG_COMPLETE_WITH_SELECTION,
+                resultData);
+    }
+
     @NonNull
     private final String mProviderId;
     @NonNull
diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java
index 870546a..ba356bb 100644
--- a/core/java/android/database/CursorWindow.java
+++ b/core/java/android/database/CursorWindow.java
@@ -40,7 +40,7 @@
  */
 @android.ravenwood.annotation.RavenwoodKeepWholeClass
 @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-        "com.android.hoststubgen.nativesubstitution.CursorWindow_host")
+        "com.android.platform.test.ravenwood.nativesubstitution.CursorWindow_host")
 public class CursorWindow extends SQLiteClosable implements Parcelable {
     private static final String STATS_TAG = "CursorWindowStats";
 
diff --git a/location/java/android/location/GeocoderParams.aidl b/core/java/android/hardware/CameraPrivacyAllowlistEntry.aidl
similarity index 74%
copy from location/java/android/location/GeocoderParams.aidl
copy to core/java/android/hardware/CameraPrivacyAllowlistEntry.aidl
index 2484e20..838e41e 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/core/java/android/hardware/CameraPrivacyAllowlistEntry.aidl
@@ -1,5 +1,5 @@
-/*
- * Copyright (C) 2010, The Android Open Source Project
+/**
+ * Copyright (c) 2024, 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.
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.hardware;
 
-parcelable GeocoderParams;
+/** @hide */
+parcelable CameraPrivacyAllowlistEntry {
+    String packageName;
+    boolean isMandatory;
+}
+
diff --git a/core/java/android/hardware/ISensorPrivacyListener.aidl b/core/java/android/hardware/ISensorPrivacyListener.aidl
index 2ac21d2..19ae302 100644
--- a/core/java/android/hardware/ISensorPrivacyListener.aidl
+++ b/core/java/android/hardware/ISensorPrivacyListener.aidl
@@ -25,5 +25,6 @@
     //   frameworks/native/libs/sensorprivacy/aidl/android/hardware/ISensorPrivacyListener.aidl
     // =============== Beginning of transactions used on native side as well ======================
     void onSensorPrivacyChanged(int toggleType, int sensor, boolean enabled);
+    void onSensorPrivacyStateChanged(int toggleType, int sensor, int state);
     // =============== End of transactions used on native side as well ============================
 }
diff --git a/core/java/android/hardware/ISensorPrivacyManager.aidl b/core/java/android/hardware/ISensorPrivacyManager.aidl
index 9cf329c..851ce2a 100644
--- a/core/java/android/hardware/ISensorPrivacyManager.aidl
+++ b/core/java/android/hardware/ISensorPrivacyManager.aidl
@@ -16,6 +16,7 @@
 
 package android.hardware;
 
+import android.hardware.CameraPrivacyAllowlistEntry;
 import android.hardware.ISensorPrivacyListener;
 
 /** @hide */
@@ -45,6 +46,22 @@
     void setToggleSensorPrivacy(int userId, int source, int sensor, boolean enable);
 
     void setToggleSensorPrivacyForProfileGroup(int userId, int source, int sensor, boolean enable);
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY)")
+    List<CameraPrivacyAllowlistEntry> getCameraPrivacyAllowlist();
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY)")
+    int getToggleSensorPrivacyState(int toggleType, int sensor);
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY)")
+    void setToggleSensorPrivacyState(int userId, int source, int sensor, int state);
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY)")
+    void setToggleSensorPrivacyStateForProfileGroup(int userId, int source, int sensor, int  state);
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY)")
+    boolean isCameraPrivacyEnabled(String packageName);
+
     // =============== End of transactions used on native side as well ============================
 
     void suppressToggleSensorPrivacyReminders(int userId, int sensor, IBinder token,
@@ -53,4 +70,4 @@
     boolean requiresAuthentication();
 
     void showSensorUseDialog(int sensor);
-}
\ No newline at end of file
+}
diff --git a/core/java/android/hardware/SensorPrivacyManager.java b/core/java/android/hardware/SensorPrivacyManager.java
index 18c95bfb..6294a8d 100644
--- a/core/java/android/hardware/SensorPrivacyManager.java
+++ b/core/java/android/hardware/SensorPrivacyManager.java
@@ -17,6 +17,7 @@
 package android.hardware;
 
 import android.Manifest;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
@@ -38,9 +39,11 @@
 import android.util.Pair;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.camera.flags.Flags;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.Executor;
 
@@ -215,13 +218,41 @@
         public static final int DISABLED = SensorPrivacyIndividualEnabledSensorProto.DISABLED;
 
         /**
+         * Constant indicating privacy is enabled except for the automotive driver assistance apps
+         * which are helpful for driving.
+         */
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        public static final int AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS =
+                SensorPrivacyIndividualEnabledSensorProto.AUTO_DRIVER_ASSISTANCE_HELPFUL_APPS;
+
+         /**
+         * Constant indicating privacy is enabled except for the automotive driver assistance apps
+         * which are required by car manufacturer for driving.
+         */
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        public static final int AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS =
+                SensorPrivacyIndividualEnabledSensorProto.AUTO_DRIVER_ASSISTANCE_REQUIRED_APPS;
+
+        /**
+         * Constant indicating privacy is enabled except for the automotive driver assistance apps
+         * which are both helpful for driving and also apps required by car manufacturer for
+         * driving.
+         */
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        public static final int AUTOMOTIVE_DRIVER_ASSISTANCE_APPS =
+                SensorPrivacyIndividualEnabledSensorProto.AUTO_DRIVER_ASSISTANCE_APPS;
+
+        /**
          * Types of state which can exist for a sensor privacy toggle
          *
          * @hide
          */
         @IntDef(value = {
                 ENABLED,
-                DISABLED
+                DISABLED,
+                AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS,
+                AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS,
+                AUTOMOTIVE_DRIVER_ASSISTANCE_APPS
         })
         @Retention(RetentionPolicy.SOURCE)
         public @interface StateType {}
@@ -266,6 +297,19 @@
             private int mToggleType;
             private int mSensor;
             private boolean mEnabled;
+            private int mState;
+
+            @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+            private SensorPrivacyChangedParams(int toggleType, int sensor, int state) {
+                mToggleType = toggleType;
+                mSensor = sensor;
+                mState = state;
+                if (state == StateTypes.ENABLED) {
+                    mEnabled = true;
+                } else {
+                    mEnabled = false;
+                }
+            }
 
             private SensorPrivacyChangedParams(int toggleType, int sensor, boolean enabled) {
                 mToggleType = toggleType;
@@ -284,6 +328,12 @@
             public boolean isEnabled() {
                 return mEnabled;
             }
+
+            @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+            public @StateTypes.StateType int getState() {
+                return mState;
+            }
+
         }
     }
 
@@ -319,6 +369,9 @@
     private final ArrayMap<Pair<Integer, OnSensorPrivacyChangedListener>,
             OnSensorPrivacyChangedListener> mLegacyToggleListeners = new ArrayMap<>();
 
+    @GuardedBy("mLock")
+    private ArrayMap<String, Boolean> mCameraPrivacyAllowlist = null;
+
     /** The singleton ISensorPrivacyListener for IPC which will be used to dispatch to local
      * listeners */
     @NonNull
@@ -328,12 +381,33 @@
             synchronized (mLock) {
                 for (int i = 0; i < mToggleListeners.size(); i++) {
                     OnSensorPrivacyChangedListener listener = mToggleListeners.keyAt(i);
-                    mToggleListeners.valueAt(i).execute(() -> listener
-                            .onSensorPrivacyChanged(new OnSensorPrivacyChangedListener
-                                    .SensorPrivacyChangedParams(toggleType, sensor, enabled)));
+                    if (Flags.cameraPrivacyAllowlist()) {
+                        int state = enabled ?  StateTypes.ENABLED : StateTypes.DISABLED;
+                        mToggleListeners.valueAt(i).execute(() -> listener
+                                .onSensorPrivacyChanged(new OnSensorPrivacyChangedListener
+                                        .SensorPrivacyChangedParams(toggleType, sensor, state)));
+                    } else {
+                        mToggleListeners.valueAt(i).execute(() -> listener
+                                .onSensorPrivacyChanged(new OnSensorPrivacyChangedListener
+                                        .SensorPrivacyChangedParams(toggleType, sensor, enabled)));
+                    }
                 }
             }
         }
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        public void onSensorPrivacyStateChanged(int toggleType, int sensor, int state) {
+            synchronized (mLock) {
+                for (int i = 0; i < mToggleListeners.size(); i++) {
+                    OnSensorPrivacyChangedListener listener = mToggleListeners.keyAt(i);
+                    mToggleListeners.valueAt(i).execute(() -> listener
+                            .onSensorPrivacyChanged(new OnSensorPrivacyChangedListener
+                                    .SensorPrivacyChangedParams(toggleType, sensor, state)));
+                }
+            }
+        }
+
     };
 
     /** Whether the singleton ISensorPrivacyListener has been registered */
@@ -649,6 +723,73 @@
     }
 
     /**
+     * Returns sensor privacy state for a specific sensor.
+     *
+     * @return int sensor privacy state.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public @StateTypes.StateType int getSensorPrivacyState(@ToggleType int toggleType,
+            @Sensors.Sensor int sensor) {
+        try {
+            return mService.getToggleSensorPrivacyState(toggleType, sensor);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+  /**
+     * Returns if camera privacy is enabled for a specific package.
+     *
+     * @return boolean sensor privacy state.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public boolean isCameraPrivacyEnabled(@NonNull String packageName) {
+        try {
+            return mService.isCameraPrivacyEnabled(packageName);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Returns camera privacy allowlist.
+     *
+     * @return List of automotive driver assistance packages for
+     * privacy allowlisting. The returned map includes the package
+     * name as key and the value is a Boolean which tells if that package
+     * is required by the car manufacturer as mandatory package for driving.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public @NonNull Map<String, Boolean>  getCameraPrivacyAllowlist() {
+        synchronized (mLock) {
+            if (mCameraPrivacyAllowlist == null) {
+                mCameraPrivacyAllowlist = new ArrayMap<>();
+                try {
+                    for (CameraPrivacyAllowlistEntry entry :
+                            mService.getCameraPrivacyAllowlist()) {
+                        mCameraPrivacyAllowlist.put(entry.packageName, entry.isMandatory);
+                    }
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
+                }
+            }
+            return mCameraPrivacyAllowlist;
+        }
+    }
+
+    /**
      * Sets sensor privacy to the specified state for an individual sensor.
      *
      * @param sensor the sensor which to change the state for
@@ -677,6 +818,22 @@
      * Sets sensor privacy to the specified state for an individual sensor.
      *
      * @param sensor the sensor which to change the state for
+     * @param state the state to which sensor privacy should be set.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public void setSensorPrivacyState(@Sensors.Sensor int sensor,
+            @StateTypes.StateType int state) {
+        setSensorPrivacyState(resolveSourceFromCurrentContext(), sensor, state);
+    }
+
+    /**
+     * Sets sensor privacy to the specified state for an individual sensor.
+     *
+     * @param sensor the sensor which to change the state for
      * @param enable the state to which sensor privacy should be set.
      *
      * @hide
@@ -708,6 +865,27 @@
     }
 
     /**
+     * Sets sensor privacy to the specified state for an individual sensor.
+     *
+     * @param sensor the sensor which to change the state for
+     * @param state the state to which sensor privacy should be set.
+     *
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public void setSensorPrivacyState(@Sources.Source int source, @Sensors.Sensor int sensor,
+            @StateTypes.StateType int state) {
+        try {
+            mService.setToggleSensorPrivacyState(mContext.getUserId(), source, sensor, state);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+
+    }
+
+    /**
      * Sets sensor privacy to the specified state for an individual sensor for the profile group of
      * context's user.
      *
@@ -745,6 +923,28 @@
     }
 
     /**
+     * Sets sensor privacy to the specified state for an individual sensor for the profile group of
+     * context's user.
+     *
+     * @param source the source using which the sensor is toggled.
+     * @param sensor the sensor which to change the state for
+     * @param state the state to which sensor privacy should be set.
+     *
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    public void setSensorPrivacyStateForProfileGroup(@Sources.Source int source,
+            @Sensors.Sensor int sensor, @StateTypes.StateType int state) {
+        try {
+            mService.setToggleSensorPrivacyStateForProfileGroup(mContext.getUserId(), source,
+                    sensor, state);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Don't show dialogs to turn off sensor privacy for this package.
      *
      * @param suppress Whether to suppress or re-enable.
@@ -865,6 +1065,12 @@
                             boolean enabled) {
                         listener.onAllSensorPrivacyChanged(enabled);
                     }
+
+                    @Override
+                    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+                    public void onSensorPrivacyStateChanged(int toggleType, int sensor,
+                            int state) {
+                    }
                 };
                 mListeners.put(listener, iListener);
             }
diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java
index 451d6fb..2add77e 100644
--- a/core/java/android/hardware/camera2/CameraCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraCharacteristics.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.ExtensionKey;
 import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.impl.SyntheticKey;
 import android.hardware.camera2.params.DeviceStateSensorOrientationMap;
@@ -6076,6 +6077,28 @@
     public static final Key<android.hardware.camera2.params.StreamConfigurationDuration[]> JPEGR_AVAILABLE_JPEG_R_STALL_DURATIONS_MAXIMUM_RESOLUTION =
             new Key<android.hardware.camera2.params.StreamConfigurationDuration[]>("android.jpegr.availableJpegRStallDurationsMaximumResolution", android.hardware.camera2.params.StreamConfigurationDuration[].class);
 
+    /**
+     * <p>Minimum and maximum padding zoom factors supported by this camera device for
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } used for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension.</p>
+     * <p>The minimum and maximum padding zoom factors supported by the device for
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } used as part of the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension feature. This extension specific camera characteristic can be queried using
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#get }.</p>
+     * <p><b>Units</b>: A pair of padding zoom factors in floating-points:
+     * (minPaddingZoomFactor, maxPaddingZoomFactor)</p>
+     * <p><b>Range of valid values:</b><br></p>
+     * <p>1.0 &lt; minPaddingZoomFactor &lt;= maxPaddingZoomFactor</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Range<Float>> EFV_PADDING_ZOOM_FACTOR_RANGE =
+            new Key<android.util.Range<Float>>("android.efv.paddingZoomFactorRange", new TypeReference<android.util.Range<Float>>() {{ }});
+
     /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
      * End generated code
      *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java
index 3835c52..1a0074f 100644
--- a/core/java/android/hardware/camera2/CameraDevice.java
+++ b/core/java/android/hardware/camera2/CameraDevice.java
@@ -16,10 +16,12 @@
 
 package android.hardware.camera2;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.hardware.camera2.params.ExtensionSessionConfiguration;
 import android.hardware.camera2.params.InputConfiguration;
@@ -35,6 +37,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.Executor;
 
 /**
  * <p>The CameraDevice class is a representation of a single camera connected to an
@@ -897,7 +900,7 @@
      * supported sizes.
      * Camera clients that register a Jpeg/R output within a stream combination that doesn't fit
      * in the mandatory stream table above can call
-     * {@link CameraManager#isSessionConfigurationWithParametersSupported} to ensure that this particular
+     * {@link #isSessionConfigurationSupported} to ensure that this particular
      * configuration is supported.</p>
      *
      * <h5>STREAM_USE_CASE capability additional guaranteed configurations</h5>
@@ -970,7 +973,7 @@
      *
      * <p>Since the capabilities of camera devices vary greatly, a given camera device may support
      * target combinations with sizes outside of these guarantees, but this can only be tested for
-     * by calling {@link CameraManager#isSessionConfigurationWithParametersSupported} or attempting
+     * by calling {@link #isSessionConfigurationSupported} or attempting
      * to create a session with such targets.</p>
      *
      * <p>Exception on 176x144 (QCIF) resolution:
@@ -1395,8 +1398,12 @@
      * {@link android.hardware.camera2.params.MandatoryStreamCombination} are better suited for this
      * purpose.</p>
      *
-     * <p>Note that session parameters will be ignored and calls to
-     * {@link SessionConfiguration#setSessionParameters} are not required.</p>
+     * <p><b>NOTE:</b>
+     * For apps targeting {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} and above,
+     * this method will ensure session parameters set through calls to
+     * {@link SessionConfiguration#setSessionParameters} are also supported if the Camera Device
+     * supports it. For apps targeting {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE} and
+     * below, session parameters will be ignored.</p>
      *
      * @return {@code true} if the given session configuration is supported by the camera device
      *         {@code false} otherwise.
@@ -1406,44 +1413,14 @@
      * @throws CameraAccessException if the camera device is no longer connected or has
      *                               encountered a fatal error
      * @throws IllegalStateException if the camera device has been closed
-     * @deprecated Please use {@link CameraManager#isSessionConfigurationWithParametersSupported}
-     * to check whether a SessionConfiguration is supported by the device.
+     *
      */
-    @Deprecated
     public boolean isSessionConfigurationSupported(
             @NonNull SessionConfiguration sessionConfig) throws CameraAccessException {
         throw new UnsupportedOperationException("Subclasses must override this method");
     }
 
-  /**
-   * <p>Get camera characteristics for a particular session configuration by the camera device.</p>
-   *
-   * <p>The camera characteristics returned here is typically more limited than the characteristics
-   * returned from {@link CameraManager#getCameraCharacteristics}. The keys that have more limited
-   * values are listed in
-   * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}. </p>
-   *
-   * <p>Other than that, the characteristics returned here can be used in the same way as those
-   * returned from {@link CameraManager#getCameraCharacteristics}.</p>
-   *
-   * @param sessionConfig : The session configuration for which characteristics are fetched.
-   * @return CameraCharacteristics specific to a given session configuration.
-   * @throws UnsupportedOperationException if the query operation is not supported by the camera
-   *                                       device
-   * @throws IllegalArgumentException if the session configuration is invalid
-   * @throws CameraAccessException if the camera device is no longer connected or has
-   *                               encountered a fatal error
-   * @throws IllegalStateException if the camera device has been closed
-   * @see android.hardware.camera2.CameraCharacteristics#getAvailableSessionCharacteristicsKeys
-   */
-    @NonNull
-    @FlaggedApi(Flags.FLAG_FEATURE_COMBINATION_QUERY)
-    public CameraCharacteristics getSessionCharacteristics(
-            @NonNull SessionConfiguration sessionConfig) throws CameraAccessException {
-        throw new UnsupportedOperationException("Subclasses must override this method");
-    }
-
-  /**
+    /**
      * A callback objects for receiving updates about the state of a camera device.
      *
      * <p>A callback instance must be provided to the {@link CameraManager#openCamera} method to
@@ -1627,6 +1604,182 @@
     }
 
     /**
+     * CameraDeviceSetup is a limited representation of {@link CameraDevice} that can be used to
+     * query device specific information which would otherwise need a CameraDevice instance.
+     * This class can be constructed without calling {@link CameraManager#openCamera} and paying
+     * the latency cost of CameraDevice creation. Use {@link CameraManager#getCameraDeviceSetup}
+     * to get an instance of this class.
+     *
+     * <p>Can only be instantiated for camera devices for which
+     * {@link CameraManager#isCameraDeviceSetupSupported} returns true.</p>
+     *
+     * @see CameraManager#isCameraDeviceSetupSupported(String)
+     * @see CameraManager#getCameraDeviceSetup(String)
+     */
+    @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+    public abstract static class CameraDeviceSetup {
+        /**
+         * Create a {@link CaptureRequest.Builder} for new capture requests,
+         * initialized with a template for target use case.
+         *
+         * <p>The settings are chosen to be the best options for the specific camera device,
+         * so it is not recommended to reuse the same request for a different camera device;
+         * create a builder specific for that device and template and override the
+         * settings as desired, instead.</p>
+         *
+         * <p>Supported if {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION}
+         * is at least {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM}. If less or equal to
+         * {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, this function throws an
+         * {@link UnsupportedOperationException}.</p>
+         *
+         * @param templateType An enumeration selecting the use case for this request. Not all
+         *                     template types are supported on every device. See the documentation
+         *                     for each template type for details.
+         *
+         * @return a builder for a capture request, initialized with default settings for that
+         * template, and no output streams
+         *
+         * @throws CameraAccessException if the querying the camera device failed or there has been
+         * a fatal error
+         * @throws IllegalArgumentException if the templateType is not supported by this device
+         */
+        @NonNull
+        @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+        public abstract CaptureRequest.Builder createCaptureRequest(
+                @RequestTemplate int templateType) throws CameraAccessException;
+
+        /**
+         * Checks whether a particular {@link SessionConfiguration} is supported by the camera
+         * device.
+         *
+         * <p>This method performs a runtime check of a given {@link SessionConfiguration}. The
+         * result confirms whether or not the {@code SessionConfiguration}, <b>including the
+         * parameters specified via {@link SessionConfiguration#setSessionParameters}</b>, can
+         * be used to create a camera capture session using
+         * {@link CameraDevice#createCaptureSession(SessionConfiguration)}.</p>
+         *
+         * <p>This method is supported if the
+         * {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION}
+         * is at least {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM}. If less or equal
+         * to {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, this function throws
+         * {@link UnsupportedOperationException}.</p>
+         *
+         * <p>Although this method is much faster than creating a new capture session, it can still
+         * take a few milliseconds per call. Applications should therefore not use this method to
+         * explore the entire space of supported session combinations.</p>
+         *
+         * <p>Instead, applications should use this method to query whether combinations of
+         * certain features are supported. {@link
+         * CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION} provides the list of
+         * feature combinations the camera device will reliably report.</p>
+         *
+         * <p><b>IMPORTANT:</b></p>
+         * <ul>
+         * <li>If a feature support can be queried via
+         * {@link CameraCharacteristics#SCALER_MANDATORY_STREAM_COMBINATIONS} or
+         * {@link CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP}, applications should
+         * directly use it rather than calling this function as: (1) using
+         * {@code CameraCharacteristics} is more efficient, and (2) calling this function with on
+         * non-supported devices will throw a {@link UnsupportedOperationException}.
+         *
+         * <li>To minimize latency of {@link SessionConfiguration} creation, applications can
+         * use deferred surfaces for SurfaceView and SurfaceTexture to avoid waiting for UI
+         * creation before setting up the camera. For {@link android.media.MediaRecorder} and
+         * {@link android.media.MediaCodec} uses, applications can use {@code ImageReader} with
+         * {@link android.hardware.HardwareBuffer#USAGE_VIDEO_ENCODE}. The lightweight nature of
+         * {@code ImageReader} helps minimize the latency cost.
+         * </ul>
+         *
+         * @return {@code true} if the given session configuration is supported by the camera
+         * device, {@code false} otherwise.
+         *
+         * @throws CameraAccessException if the camera device is no longer connected or has
+         * encountered a fatal error
+         * @throws IllegalArgumentException if the session configuration is invalid
+         *
+         * @see CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
+         * @see SessionConfiguration
+         * @see android.media.ImageReader
+         */
+        @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+        public abstract boolean isSessionConfigurationSupported(
+                @NonNull SessionConfiguration config) throws CameraAccessException;
+
+        /**
+         * <p>Get camera characteristics for a particular session configuration for this camera
+         * device</p>
+         *
+         * <p>The camera characteristics returned by this method are different from those returned
+         * from {@link CameraManager#getCameraCharacteristics}. The characteristics returned here
+         * reflect device capabilities more accurately if the device were to be configured with
+         * {@code sessionConfig}. The keys that may get updated are listed in
+         * {@link CameraCharacteristics#getAvailableSessionCharacteristicsKeys}.</p>
+         *
+         * <p>Other than that, the characteristics returned here can be used in the same way as
+         * those returned from {@link CameraManager#getCameraCharacteristics}.</p>
+         *
+         * @param sessionConfig : The session configuration for which characteristics are fetched.
+         * @return CameraCharacteristics specific to a given session configuration.
+         *
+         * @throws IllegalArgumentException      if the session configuration is invalid
+         * @throws CameraAccessException         if the camera device is no longer connected or has
+         *                                       encountered a fatal error
+         *
+         * @see CameraCharacteristics#getAvailableSessionCharacteristicsKeys
+         */
+        @NonNull
+        @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+        public abstract CameraCharacteristics getSessionCharacteristics(
+                @NonNull SessionConfiguration sessionConfig) throws CameraAccessException;
+
+        /**
+         * Utility function to forward the call to
+         * {@link CameraManager#openCamera(String, Executor, StateCallback)}. This function simply
+         * calls {@code CameraManager.openCamera} for the cameraId for which this class was
+         * constructed. All semantics are consistent with {@code CameraManager.openCamera}.
+         *
+         * @param executor The executor which will be used when invoking the callback.
+         * @param callback The callback which is invoked once the camera is opened
+         *
+         * @throws CameraAccessException if the camera is disabled by device policy,
+         * has been disconnected, or is being used by a higher-priority camera API client.
+         *
+         * @throws IllegalArgumentException if cameraId, the callback or the executor was null,
+         * or the cameraId does not match any currently or previously available
+         * camera device.
+         *
+         * @throws SecurityException if the application does not have permission to
+         * access the camera
+         *
+         * @see CameraManager#openCamera(String, Executor, StateCallback)
+         */
+        @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+        @RequiresPermission(android.Manifest.permission.CAMERA)
+        public abstract void openCamera(@NonNull @CallbackExecutor Executor executor,
+                @NonNull StateCallback callback) throws CameraAccessException;
+
+        /**
+         * Get the ID of this camera device.
+         *
+         * <p>This matches the ID given to {@link CameraManager#getCameraDeviceSetup} to instantiate
+         * this object.</p>
+         *
+         * @return the ID for this camera device
+         *
+         * @see CameraManager#getCameraIdList
+         */
+        @NonNull
+        @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+        public abstract String getId();
+
+        /**
+         * To be implemented by camera2 classes only.
+         * @hide
+         */
+        public CameraDeviceSetup() {}
+    }
+
+    /**
      * Set audio restriction mode when this CameraDevice is being used.
      *
      * <p>Some camera hardware (e.g. devices with optical image stabilization support)
diff --git a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java
index 3b10e0d..f6b22ed 100644
--- a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java
+++ b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java
@@ -26,6 +26,7 @@
 import android.content.Intent;
 import android.content.ServiceConnection;
 import android.graphics.ImageFormat;
+import android.hardware.camera2.CameraCharacteristics.Key;
 import android.hardware.camera2.extension.IAdvancedExtenderImpl;
 import android.hardware.camera2.extension.ICameraExtensionsProxyService;
 import android.hardware.camera2.extension.IImageCaptureExtenderImpl;
@@ -35,6 +36,8 @@
 import android.hardware.camera2.extension.SizeList;
 import android.hardware.camera2.impl.CameraExtensionUtils;
 import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.ExtensionKey;
+import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.params.ExtensionSessionConfiguration;
 import android.hardware.camera2.params.StreamConfigurationMap;
 import android.os.Binder;
@@ -1497,4 +1500,28 @@
 
         return Collections.unmodifiableSet(ret);
     }
+
+
+    /**
+     * <p>Minimum and maximum padding zoom factors supported by this camera device for
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } used for
+     * the {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension.</p>
+     * <p>The minimum and maximum padding zoom factors supported by the device for
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } used as part of the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension feature. This extension specific camera characteristic can be queried using
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#get}.</p>
+     * <p><b>Units</b>: A pair of padding zoom factors in floating-points:
+     * (minPaddingZoomFactor, maxPaddingZoomFactor)</p>
+     * <p><b>Range of valid values:</b><br></p>
+     * <p>1.0 &lt; minPaddingZoomFactor &lt;= maxPaddingZoomFactor</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Range<Float>> EFV_PADDING_ZOOM_FACTOR_RANGE =
+            CameraCharacteristics.EFV_PADDING_ZOOM_FACTOR_RANGE;
 }
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index bcce4b6..04e3dab 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -36,8 +36,9 @@
 import android.hardware.CameraStatus;
 import android.hardware.ICameraService;
 import android.hardware.ICameraServiceListener;
-import android.hardware.camera2.CameraDevice.RequestTemplate;
+import android.hardware.camera2.CameraDevice.StateCallback;
 import android.hardware.camera2.impl.CameraDeviceImpl;
+import android.hardware.camera2.impl.CameraDeviceSetupImpl;
 import android.hardware.camera2.impl.CameraInjectionSessionImpl;
 import android.hardware.camera2.impl.CameraMetadataNative;
 import android.hardware.camera2.params.ExtensionSessionConfiguration;
@@ -45,10 +46,10 @@
 import android.hardware.camera2.params.StreamConfiguration;
 import android.hardware.camera2.utils.CameraIdAndSessionConfiguration;
 import android.hardware.camera2.utils.ConcurrentCameraIdCombination;
+import android.hardware.camera2.utils.ExceptionUtils;
 import android.hardware.devicestate.DeviceStateManager;
 import android.hardware.display.DisplayManager;
 import android.os.Binder;
-import android.os.DeadObjectException;
 import android.os.Handler;
 import android.os.HandlerExecutor;
 import android.os.HandlerThread;
@@ -352,71 +353,6 @@
     }
 
     /**
-     * Checks whether a particular {@link SessionConfiguration} is supported by a camera device.
-     *
-     * <p>This method performs a runtime check of a given {@link SessionConfiguration}. The result
-     * confirms whether or not the session configuration, including the
-     * {@link SessionConfiguration#setSessionParameters specified session parameters}, can
-     * be successfully used to create a camera capture session using
-     * {@link CameraDevice#createCaptureSession(
-     * android.hardware.camera2.params.SessionConfiguration)}.
-     * </p>
-     *
-     * <p>Supported if the {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION}
-     * is at least {@code android.os.Build.VERSION_CODES.VANILLA_ICE_CREAM}. If less or equal to
-     * {@code android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE}, this function throws
-     * {@code UnsupportedOperationException}.</p>
-     *
-     * <p>Although this method is much faster than creating a new capture session, it is not
-     * trivial cost: the latency is less than 5 milliseconds in most cases. As a result, the
-     * app should not use this to explore the entire space of supported session combinations.</p>
-     *
-     * <p>Instead, the application should use this method to query whether the
-     * combination of certain features are supported. See {@link
-     * CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION} for the list of feature
-     * combinations the camera device will reliably report.</p>
-     *
-     * <p>IMPORTANT:</p>
-     *
-     * <ul>
-     *
-     * <li>If a feature support can be queried with {@code CameraCharacteristics},
-     * the application must directly use {@code CameraCharacteristics} rather than
-     * calling this function. The reasons are: (1) using {@code CameraCharacteristics} is more
-     * efficient, and (2) calling this function with a non-supported feature will throw a {@code
-     * IllegalArgumentException}.</li>
-     *
-     * <li>To minimize latency for {@code SessionConfiguration} creation, the application should
-     * use deferred surfaces for SurfaceView and SurfaceTexture to avoid delays. Alternatively,
-     * the application can create {@code ImageReader} with {@code USAGE_COMPOSER_OVERLAY} and
-     * {@code USAGE_GPU_SAMPLED_IMAGE} usage respectively. For {@code MediaRecorder} and {@code
-     * MediaCodec}, the application can use {@code ImageReader} with {@code
-     * USAGE_VIDEO_ENCODE}. The lightweight nature of {@code ImageReader} helps minimize the
-     * latency cost.</li>
-     *
-     * </ul>
-     *
-     *
-     * @return {@code true} if the given session configuration is supported by the camera device
-     *         {@code false} otherwise.
-     * @throws CameraAccessException if the camera device is no longer connected or has
-     *                               encountered a fatal error
-     * @throws IllegalArgumentException if the session configuration is invalid
-     * @throws UnsupportedOperationException if the query operation is not supported by the camera
-     *                                       device
-     *
-     * @see CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
-     */
-    @RequiresPermission(android.Manifest.permission.CAMERA)
-    @FlaggedApi(Flags.FLAG_FEATURE_COMBINATION_QUERY)
-    public boolean isSessionConfigurationWithParametersSupported(@NonNull String cameraId,
-            @NonNull SessionConfiguration sessionConfig) throws CameraAccessException {
-        //TODO: b/298033056: restructure the OutputConfiguration API for better usability
-        return CameraManagerGlobal.get().isSessionConfigurationWithParametersSupported(
-                cameraId, sessionConfig);
-    }
-
-    /**
      * Register a callback to be notified about camera device availability.
      *
      * <p>Registering the same callback again will replace the handler with the
@@ -643,7 +579,7 @@
             ServiceSpecificException sse = new ServiceSpecificException(
                     ICameraService.ERROR_DISCONNECTED,
                     "Camera service is currently unavailable");
-            throwAsPublicException(sse);
+            throw ExceptionUtils.throwAsPublicException(sse);
         }
 
         return multiResolutionStreamConfigurations;
@@ -736,7 +672,7 @@
 
                 characteristics = new CameraCharacteristics(info);
             } catch (ServiceSpecificException e) {
-                throwAsPublicException(e);
+                throw ExceptionUtils.throwAsPublicException(e);
             } catch (RemoteException e) {
                 // Camera service died - act as if the camera was disconnected
                 throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
@@ -785,6 +721,109 @@
     }
 
     /**
+     * Returns a {@link CameraDevice.CameraDeviceSetup} object for the given {@code cameraId},
+     * which provides limited access to CameraDevice setup and query functionality without
+     * requiring an {@link #openCamera} call. The {@link CameraDevice} can later be obtained either
+     * by calling {@link #openCamera}, or {@link CameraDevice.CameraDeviceSetup#openCamera}.
+     *
+     * <p>Support for {@link CameraDevice.CameraDeviceSetup} for a given {@code cameraId} must be
+     * checked with {@link #isCameraDeviceSetupSupported}. If {@code isCameraDeviceSetupSupported}
+     * returns {@code false} for a {@code cameraId}, this method will throw an
+     * {@link UnsupportedOperationException}</p>
+     *
+     * @param cameraId The unique identifier of the camera device for which
+     *                 {@link CameraDevice.CameraDeviceSetup} object must be constructed. This
+     *                 identifier must be present in {@link #getCameraIdList()}
+     *
+     * @return {@link CameraDevice.CameraDeviceSetup} object corresponding to the provided
+     * {@code cameraId}
+     *
+     * @throws IllegalArgumentException If {@code cameraId} is null, or if {@code cameraId} does not
+     * match any device in {@link #getCameraIdList()}.
+     * @throws CameraAccessException if the camera device is not accessible
+     * @throws UnsupportedOperationException if {@link CameraDevice.CameraDeviceSetup} instance
+     * cannot be constructed for the given {@code cameraId}, i.e.
+     * {@link #isCameraDeviceSetupSupported} returns false.
+     *
+     * @see CameraDevice.CameraDeviceSetup
+     * @see #getCameraIdList()
+     * @see #openCamera
+     */
+    @NonNull
+    @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+    public CameraDevice.CameraDeviceSetup getCameraDeviceSetup(@NonNull String cameraId)
+            throws CameraAccessException {
+        if (cameraId == null) {
+            throw new IllegalArgumentException("cameraId was null");
+        }
+
+        if (CameraManagerGlobal.sCameraServiceDisabled) {
+            throw new CameraAccessException(CameraAccessException.CAMERA_DISABLED,
+                    "No cameras available on device");
+        }
+
+        if (!Arrays.asList(CameraManagerGlobal.get().getCameraIdList()).contains(cameraId)) {
+            throw new IllegalArgumentException(
+                    "Camera ID '" + cameraId + "' not available on device.");
+        }
+
+        if (!isCameraDeviceSetupSupported(cameraId)) {
+            throw new UnsupportedOperationException(
+                    "CameraDeviceSetup is not supported for Camera ID: " + cameraId);
+        }
+
+        return new CameraDeviceSetupImpl(cameraId, /*cameraManager=*/ this, mContext);
+    }
+
+    /**
+     * Checks a Camera Device's characteristics to ensure that a
+     * {@link CameraDevice.CameraDeviceSetup} instance can be constructed for a given
+     * {@code cameraId}. If this method returns false for a {@code cameraId}, calling
+     * {@link #getCameraDeviceSetup} for that {@code cameraId} will throw an
+     * {@link UnsupportedOperationException}.
+     *
+     * <p>{@link CameraDevice.CameraDeviceSetup} is supported for all devices that report
+     * {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION} >
+     * {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}</p>
+     *
+     * @param cameraId The unique identifier of the camera device for which
+     *                 {@link CameraDevice.CameraDeviceSetup} support is being queried. This
+     *                 identifier must be present in {@link #getCameraIdList()}.
+     *
+     * @return {@code true} if {@link CameraDevice.CameraDeviceSetup} object can be constructed
+     * for the provided {@code cameraId}; {@code false} otherwise.
+     *
+     * @throws IllegalArgumentException If {@code cameraId} is null, or if {@code cameraId} does not
+     *                                  match any device in {@link #getCameraIdList()}.
+     * @throws CameraAccessException    if the camera device is not accessible
+     *
+     * @see CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
+     * @see CameraDevice.CameraDeviceSetup
+     * @see #getCameraDeviceSetup(String)
+     * @see #getCameraIdList()
+     */
+    @FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+    public boolean isCameraDeviceSetupSupported(@NonNull String cameraId)
+            throws CameraAccessException {
+        if (cameraId == null) {
+            throw new IllegalArgumentException("Camera ID was null");
+        }
+
+        if (CameraManagerGlobal.sCameraServiceDisabled) {
+            throw new CameraAccessException(CameraAccessException.CAMERA_DISABLED,
+                    "No cameras available on device");
+        }
+
+        if (!Arrays.asList(CameraManagerGlobal.get().getCameraIdList()).contains(cameraId)) {
+            throw new IllegalArgumentException(
+                    "Camera ID '" + cameraId + "' not available on device.");
+        }
+
+        CameraCharacteristics chars = getCameraCharacteristics(cameraId);
+        return CameraDeviceSetupImpl.isCameraDeviceSetupSupported(chars);
+    }
+
+    /**
      * Helper for opening a connection to a camera with the given ID.
      *
      * @param cameraId The unique identifier of the camera device to open
@@ -817,6 +856,11 @@
         synchronized (mLock) {
 
             ICameraDeviceUser cameraUser = null;
+            CameraDevice.CameraDeviceSetup cameraDeviceSetup = null;
+            if (Flags.cameraDeviceSetup() && isCameraDeviceSetupSupported(cameraId)) {
+                cameraDeviceSetup = getCameraDeviceSetup(cameraId);
+            }
+
             android.hardware.camera2.impl.CameraDeviceImpl deviceImpl =
                     new android.hardware.camera2.impl.CameraDeviceImpl(
                         cameraId,
@@ -825,8 +869,7 @@
                         characteristics,
                         physicalIdsToChars,
                         mContext.getApplicationInfo().targetSdkVersion,
-                        mContext);
-
+                        mContext, cameraDeviceSetup);
             ICameraDeviceCallbacks callbacks = deviceImpl.getCallbacks();
 
             try {
@@ -858,11 +901,11 @@
                             e.errorCode == ICameraService.ERROR_DISCONNECTED ||
                             e.errorCode == ICameraService.ERROR_CAMERA_IN_USE) {
                         // Per API docs, these failures call onError and throw
-                        throwAsPublicException(e);
+                        throw ExceptionUtils.throwAsPublicException(e);
                     }
                 } else {
                     // Unexpected failure - rethrow
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 }
             } catch (RemoteException e) {
                 // Camera service died - act as if it's a CAMERA_DISCONNECTED case
@@ -870,7 +913,7 @@
                     ICameraService.ERROR_DISCONNECTED,
                     "Camera service is currently unavailable");
                 deviceImpl.setRemoteFailure(sse);
-                throwAsPublicException(sse);
+                throw ExceptionUtils.throwAsPublicException(sse);
             }
 
             // TODO: factor out callback to be non-nested, then move setter to constructor
@@ -1310,48 +1353,6 @@
     }
 
     /**
-     * Create a {@link CaptureRequest.Builder} for new capture requests,
-     * initialized with template for a target use case.
-     *
-     * <p>The settings are chosen to be the best options for the specific camera device,
-     * so it is not recommended to reuse the same request for a different camera device;
-     * create a builder specific for that device and template and override the
-     * settings as desired, instead.</p>
-     *
-     * <p>Supported if the {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION}
-     * is at least {@code android.os.Build.VERSION_CODES.VANILLA_ICE_CREAM}. If less or equal to
-     * {@code android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE}, this function throws a
-     * {@code UnsupportedOperationException}.
-     *
-     * @param cameraId The camera ID to create capture request for.
-     * @param templateType An enumeration selecting the use case for this request. Not all template
-     * types are supported on every device. See the documentation for each template type for
-     * details.
-     * @return a builder for a capture request, initialized with default
-     * settings for that template, and no output streams
-     *
-     * @throws CameraAccessException if the camera device is no longer connected or has
-     *                               encountered a fatal error
-     * @throws IllegalArgumentException if the cameraId is not valid, or the templateType is
-     *                                  not supported by this device.
-     * @throws UnsupportedOperationException if this method is not supported by the camera device,
-     *     for example, if {@link CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION}
-     *     is less than {@code android.os.Build.VERSION_CODES.VANILLA_ICE_CREAM}.
-     */
-    @NonNull
-    @RequiresPermission(android.Manifest.permission.CAMERA)
-    @FlaggedApi(Flags.FLAG_FEATURE_COMBINATION_QUERY)
-    public CaptureRequest.Builder createCaptureRequest(@NonNull String cameraId,
-            @RequestTemplate int templateType) throws CameraAccessException {
-        if (CameraManagerGlobal.sCameraServiceDisabled) {
-            throw new IllegalArgumentException("No camera available on device.");
-        }
-
-        return CameraManagerGlobal.get().createCaptureRequest(cameraId, templateType,
-                mContext.getApplicationInfo().targetSdkVersion);
-    }
-
-    /**
      * @hide
      */
     public static boolean shouldOverrideToPortrait(@Nullable Context context) {
@@ -1705,56 +1706,6 @@
     }
 
     /**
-     * Convert ServiceSpecificExceptions and Binder RemoteExceptions from camera binder interfaces
-     * into the correct public exceptions.
-     *
-     * @hide
-     */
-    public static void throwAsPublicException(Throwable t) throws CameraAccessException {
-        if (t instanceof ServiceSpecificException) {
-            ServiceSpecificException e = (ServiceSpecificException) t;
-            int reason = CameraAccessException.CAMERA_ERROR;
-            switch(e.errorCode) {
-                case ICameraService.ERROR_DISCONNECTED:
-                    reason = CameraAccessException.CAMERA_DISCONNECTED;
-                    break;
-                case ICameraService.ERROR_DISABLED:
-                    reason = CameraAccessException.CAMERA_DISABLED;
-                    break;
-                case ICameraService.ERROR_CAMERA_IN_USE:
-                    reason = CameraAccessException.CAMERA_IN_USE;
-                    break;
-                case ICameraService.ERROR_MAX_CAMERAS_IN_USE:
-                    reason = CameraAccessException.MAX_CAMERAS_IN_USE;
-                    break;
-                case ICameraService.ERROR_DEPRECATED_HAL:
-                    reason = CameraAccessException.CAMERA_DEPRECATED_HAL;
-                    break;
-                case ICameraService.ERROR_ILLEGAL_ARGUMENT:
-                case ICameraService.ERROR_ALREADY_EXISTS:
-                    throw new IllegalArgumentException(e.getMessage(), e);
-                case ICameraService.ERROR_PERMISSION_DENIED:
-                    throw new SecurityException(e.getMessage(), e);
-                case ICameraService.ERROR_TIMED_OUT:
-                case ICameraService.ERROR_INVALID_OPERATION:
-                default:
-                    reason = CameraAccessException.CAMERA_ERROR;
-            }
-            throw new CameraAccessException(reason, e.getMessage(), e);
-        } else if (t instanceof DeadObjectException) {
-            throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
-                    "Camera service has died unexpectedly",
-                    t);
-        } else if (t instanceof RemoteException) {
-            throw new UnsupportedOperationException("An unknown RemoteException was thrown" +
-                    " which should never happen.", t);
-        } else if (t instanceof RuntimeException) {
-            RuntimeException e = (RuntimeException) t;
-            throw e;
-        }
-    }
-
-    /**
      * Queries the camera service if a cameraId is a hidden physical camera that belongs to a
      * logical camera device.
      *
@@ -1829,13 +1780,13 @@
                         internalCamId, externalCamId, cameraInjectionCallback);
                 injectionSessionImpl.setRemoteInjectionSession(injectionSession);
             } catch (ServiceSpecificException e) {
-                throwAsPublicException(e);
+                throw ExceptionUtils.throwAsPublicException(e);
             } catch (RemoteException e) {
                 // Camera service died - act as if it's a CAMERA_DISCONNECTED case
                 ServiceSpecificException sse = new ServiceSpecificException(
                         ICameraService.ERROR_DISCONNECTED,
                         "Camera service is currently unavailable");
-                throwAsPublicException(sse);
+                throw ExceptionUtils.throwAsPublicException(sse);
             }
         }
     }
@@ -1875,6 +1826,23 @@
     }
 
     /**
+     * Returns the current CameraService instance connected to Global
+     * @hide
+     */
+    public ICameraService getCameraService() {
+        return CameraManagerGlobal.get().getCameraService();
+    }
+
+    /**
+     * Returns true if cameraservice is currently disabled. If true, {@link #getCameraService()}
+     * will definitely return null.
+     * @hide
+     */
+    public boolean isCameraServiceDisabled() {
+        return CameraManagerGlobal.sCameraServiceDisabled;
+    }
+
+    /**
      * Reports {@link CameraExtensionSessionStats} to the {@link ICameraService} to be logged for
      * currently active session. Validation is done downstream.
      *
@@ -2124,7 +2092,7 @@
                     cameraService.remapCameraIds(cameraIdRemapping);
                     mActiveCameraIdRemapping = cameraIdRemapping;
                 } catch (ServiceSpecificException e) {
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                     throw new CameraAccessException(
                             CameraAccessException.CAMERA_DISCONNECTED,
@@ -2148,7 +2116,7 @@
                 try {
                     cameraService.injectSessionParams(cameraId, sessionParams.getNativeMetadata());
                 } catch (ServiceSpecificException e) {
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                     throw new CameraAccessException(
                             CameraAccessException.CAMERA_DISCONNECTED,
@@ -2391,35 +2359,13 @@
                     return mCameraService.isConcurrentSessionConfigurationSupported(
                             cameraIdsAndConfigs, targetSdkVersion);
                 } catch (ServiceSpecificException e) {
-                   throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                   // Camera service died - act as if the camera was disconnected
                   throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
                           "Camera service is currently unavailable", e);
                 }
             }
-
-            return false;
-        }
-
-        public boolean isSessionConfigurationWithParametersSupported(
-                @NonNull String cameraId, @NonNull SessionConfiguration sessionConfiguration)
-                throws CameraAccessException {
-
-            synchronized (mLock) {
-                try {
-                    return mCameraService.isSessionConfigurationWithParametersSupported(
-                            cameraId, sessionConfiguration);
-                } catch (ServiceSpecificException e) {
-                    throwAsPublicException(e);
-                } catch (RemoteException e) {
-                    // Camera service died - act as if the camera was disconnected
-                    throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
-                          "Camera service is currently unavailable", e);
-                }
-            }
-
-            return false;
         }
 
       /**
@@ -2462,7 +2408,7 @@
                 try {
                     cameraService.setTorchMode(cameraId, enabled, mTorchClientBinder);
                 } catch(ServiceSpecificException e) {
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                     throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
                             "Camera service is currently unavailable");
@@ -2488,7 +2434,7 @@
                     cameraService.turnOnTorchWithStrengthLevel(cameraId, torchStrength,
                             mTorchClientBinder);
                 } catch(ServiceSpecificException e) {
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                     throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
                             "Camera service is currently unavailable.");
@@ -2512,7 +2458,7 @@
                 try {
                     torchStrength = cameraService.getTorchStrengthLevel(cameraId);
                 } catch(ServiceSpecificException e) {
-                    throwAsPublicException(e);
+                    throw ExceptionUtils.throwAsPublicException(e);
                 } catch (RemoteException e) {
                     throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
                             "Camera service is currently unavailable.");
@@ -2521,45 +2467,6 @@
             return torchStrength;
         }
 
-        public CaptureRequest.Builder createCaptureRequest(@NonNull String cameraId,
-                @RequestTemplate int templateType, int targetSdkVersion)
-                throws CameraAccessException {
-            CaptureRequest.Builder builder = null;
-            synchronized (mLock) {
-                if (cameraId == null) {
-                    throw new IllegalArgumentException("cameraId was null");
-                }
-
-                ICameraService cameraService = getCameraService();
-                if (cameraService == null) {
-                    throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
-                        "Camera service is currently unavailable.");
-                }
-
-                try {
-                    CameraMetadataNative defaultRequest =
-                            cameraService.createDefaultRequest(cameraId, templateType);
-
-                    CameraDeviceImpl.disableZslIfNeeded(defaultRequest,
-                            targetSdkVersion, templateType);
-
-                    builder = new CaptureRequest.Builder(defaultRequest, /*reprocess*/false,
-                            CameraCaptureSession.SESSION_ID_NONE, cameraId,
-                            /*physicalCameraIdSet*/null);
-                } catch (ServiceSpecificException e) {
-                    if (e.errorCode == ICameraService.ERROR_INVALID_OPERATION) {
-                        throw new UnsupportedOperationException(e.getMessage());
-                    }
-
-                    throwAsPublicException(e);
-                } catch (RemoteException e) {
-                    throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
-                            "Camera service is currently unavailable.");
-                }
-            }
-            return builder;
-        }
-
         private void handleRecoverableSetupErrors(ServiceSpecificException e) {
             switch (e.errorCode) {
                 case ICameraService.ERROR_DISCONNECTED:
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index 7cf10d8..e24c98e 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -21,6 +21,7 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.ExtensionKey;
 import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.impl.SyntheticKey;
 import android.util.Log;
@@ -276,8 +277,11 @@
             throw new IllegalArgumentException("key type must be that of a metadata key");
         }
 
-        if (field.getAnnotation(PublicKey.class) == null) {
-            // Never expose @hide keys up to the API user
+        if (field.getAnnotation(PublicKey.class) == null
+                && field.getAnnotation(ExtensionKey.class) == null) {
+            // Never expose @hide keys to the API user unless they are
+            // marked as @ExtensionKey, as these keys are publicly accessible via
+            // the extension key classes.
             return false;
         }
 
@@ -3893,6 +3897,36 @@
     public static final int DISTORTION_CORRECTION_MODE_HIGH_QUALITY = 2;
 
     //
+    // Enumeration values for CaptureRequest#EFV_STABILIZATION_MODE
+    //
+
+    /**
+     * <p>No stabilization.</p>
+     * @see CaptureRequest#EFV_STABILIZATION_MODE
+     * @hide
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_OFF = 0;
+
+    /**
+     * <p>Gimbal stabilization mode.</p>
+     * @see CaptureRequest#EFV_STABILIZATION_MODE
+     * @hide
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_GIMBAL = 1;
+
+    /**
+     * <p>Locked stabilization mode which uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization to directionally steady the target region.</p>
+     * @see CaptureRequest#EFV_STABILIZATION_MODE
+     * @hide
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_LOCKED = 2;
+
+    //
     // Enumeration values for CaptureResult#CONTROL_AE_STATE
     //
 
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index ded96a2..66efccd1 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.camera2.impl.CameraMetadataNative;
+import android.hardware.camera2.impl.ExtensionKey;
 import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.impl.SyntheticKey;
 import android.hardware.camera2.params.OutputConfiguration;
@@ -4292,6 +4293,146 @@
     public static final Key<Integer> EXTENSION_STRENGTH =
             new Key<Integer>("android.extension.strength", int.class);
 
+    /**
+     * <p>Used to apply an additional digital zoom factor for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>For the {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature, an additional zoom factor is applied on top of the existing {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}.
+     * This additional zoom factor serves as a buffer to provide more flexibility for the
+     * {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED }
+     * mode. If android.efv.paddingZoomFactor is not set, the default will be used.
+     * The effectiveness of the stabilization may be influenced by the amount of padding zoom
+     * applied. A higher padding zoom factor can stabilize the target region more effectively
+     * with greater flexibility but may potentially impact image quality. Conversely, a lower
+     * padding zoom factor may be used to prioritize preserving image quality, albeit with less
+     * leeway in stabilizing the target region. It is recommended to set the
+     * android.efv.paddingZoomFactor to at least 1.5.</p>
+     * <p>If android.efv.autoZoom is enabled, the requested android.efv.paddingZoomFactor will be overridden.
+     * android.efv.maxPaddingZoomFactor can be checked for more details on controlling the
+     * padding zoom factor during android.efv.autoZoom.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.efv.paddingZoomFactorRange</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_PADDING_ZOOM_FACTOR =
+            new Key<Float>("android.efv.paddingZoomFactor", float.class);
+
+    /**
+     * <p>Used to enable or disable auto zoom for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Turn on auto zoom to let the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature decide at any given point a combination of
+     * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} and android.efv.paddingZoomFactor
+     * to keep the target region in view and stabilized. The combination chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * will equal the requested {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} multiplied with the requested
+     * android.efv.paddingZoomFactor. A limit can be set on the padding zoom if wanting
+     * to control image quality further using android.efv.maxPaddingZoomFactor.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Boolean> EFV_AUTO_ZOOM =
+            new Key<Boolean>("android.efv.autoZoom", boolean.class);
+
+    /**
+     * <p>Used to limit the android.efv.paddingZoomFactor if
+     * android.efv.autoZoom is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>If android.efv.autoZoom is enabled, this key can be used to set a limit
+     * on the android.efv.paddingZoomFactor chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode
+     * to control image quality.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The range of android.efv.paddingZoomFactorRange. Use a value greater than or equal to
+     * the android.efv.paddingZoomFactor to effectively utilize this key.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_MAX_PADDING_ZOOM_FACTOR =
+            new Key<Float>("android.efv.maxPaddingZoomFactor", float.class);
+
+    /**
+     * <p>Set the stabilization mode for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension</p>
+     * <p>The desired stabilization mode. Gimbal stabilization mode provides simple, non-locked
+     * video stabilization. Locked mode uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization feature to fixate on the current region, utilizing it as the target area for
+     * stabilization.</p>
+     * <p><b>Possible values:</b></p>
+     * <ul>
+     *   <li>{@link #EFV_STABILIZATION_MODE_OFF OFF}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_GIMBAL GIMBAL}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_LOCKED LOCKED}</li>
+     * </ul>
+     *
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @see #EFV_STABILIZATION_MODE_OFF
+     * @see #EFV_STABILIZATION_MODE_GIMBAL
+     * @see #EFV_STABILIZATION_MODE_LOCKED
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Integer> EFV_STABILIZATION_MODE =
+            new Key<Integer>("android.efv.stabilizationMode", int.class);
+
+    /**
+     * <p>Used to update the target region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A android.util.Pair<Integer,Integer> that represents the desired
+     * <Horizontal,Vertical> shift of the current locked view (or target region) in
+     * pixels. Negative values indicate left and upward shifts, while positive values indicate
+     * right and downward shifts in the active array coordinate system.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.util.Pair<Integer,Integer> represents the
+     * <Horizontal,Vertical> shift. The range for the horizontal shift is
+     * [-max(android.efv.paddingRegion-left), max(android.efv.paddingRegion-right)].
+     * The range for the vertical shift is
+     * [-max(android.efv.paddingRegion-top), max(android.efv.paddingRegion-bottom)]</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Pair<Integer,Integer>> EFV_TRANSLATE_VIEWPORT =
+            new Key<android.util.Pair<Integer,Integer>>("android.efv.translateViewport", new TypeReference<android.util.Pair<Integer,Integer>>() {{ }});
+
+    /**
+     * <p>Representing the desired clockwise rotation
+     * of the target region in degrees for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Value representing the desired clockwise rotation of the target
+     * region in degrees.</p>
+     * <p><b>Range of valid values:</b><br>
+     * 0 to 360</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_ROTATE_VIEWPORT =
+            new Key<Float>("android.efv.rotateViewport", float.class);
+
     /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
      * End generated code
      *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java
index 1d26d69..a01c23d 100644
--- a/core/java/android/hardware/camera2/CaptureResult.java
+++ b/core/java/android/hardware/camera2/CaptureResult.java
@@ -22,6 +22,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.camera2.impl.CameraMetadataNative;
 import android.hardware.camera2.impl.CaptureResultExtras;
+import android.hardware.camera2.impl.ExtensionKey;
 import android.hardware.camera2.impl.PublicKey;
 import android.hardware.camera2.impl.SyntheticKey;
 import android.hardware.camera2.utils.TypeReference;
@@ -4074,12 +4075,14 @@
      * </ul>
      * <p>should be interpreted in the effective after raw crop field-of-view coordinate system.
      * In this coordinate system,
-     * {preCorrectionActiveArraySize.left, preCorrectionActiveArraySize.top} corresponds to the
+     * {{@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.left,
+     *  {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.top} corresponds to the
      * the top left corner of the cropped RAW frame and
-     * {preCorrectionActiveArraySize.right, preCorrectionActiveArraySize.bottom} corresponds to
+     * {{@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.right,
+     *  {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.bottom} corresponds to
      * the bottom right corner. Client applications must use the values of the keys
      * in the CaptureResult metadata if present.</p>
-     * <p>Crop regions (android.scaler.CropRegion), AE/AWB/AF regions and face coordinates still
+     * <p>Crop regions {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, AE/AWB/AF regions and face coordinates still
      * use the {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} coordinate system as usual.</p>
      * <p><b>Units</b>: Pixel coordinates relative to
      * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or
@@ -4091,6 +4094,7 @@
      * @see CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
      * @see CameraCharacteristics#LENS_POSE_ROTATION
      * @see CameraCharacteristics#LENS_POSE_TRANSLATION
+     * @see CaptureRequest#SCALER_CROP_REGION
      * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
      * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
      * @see CaptureResult#STATISTICS_HOT_PIXEL_MAP
@@ -5916,6 +5920,214 @@
     public static final Key<Integer> EXTENSION_STRENGTH =
             new Key<Integer>("android.extension.strength", int.class);
 
+    /**
+     * <p>The padding region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>An array [left, top, right, bottom] of the padding in pixels remaining on all four sides
+     * before the target region starts to go out of bounds.</p>
+     * <p>The padding region denotes the area surrounding the stabilized target region within which
+     * the camera can be moved while maintaining the target region in view. As the camera moves,
+     * the padding region adjusts to represent the proximity of the target region to the
+     * boundary, which is the point at which the target region will start to go out of bounds.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The padding is the number of remaining pixels of padding in each direction.
+     * The pixels reference the active array coordinate system. Negative values indicate the target
+     * region is out of bounds. The value for this key may be null for when the stabilization mode is
+     * in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_OFF }
+     * or {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_GIMBAL } mode.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<int[]> EFV_PADDING_REGION =
+            new Key<int[]>("android.efv.paddingRegion", int[].class);
+
+    /**
+     * <p>The padding region when android.efv.autoZoom is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>An array [left, top, right, bottom] of the padding in pixels remaining on all four sides
+     * before the target region starts to go out of bounds.</p>
+     * <p>This may differ from android.efv.paddingRegion as the field of view can change
+     * during android.efv.autoZoom, altering the boundary region and thus updating the padding between the
+     * target region and the boundary.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The padding is the number of remaining pixels of padding in each direction
+     * when android.efv.autoZoom is enabled. Negative values indicate the target region is out of bounds.
+     * The value for this key may be null for when the android.efv.autoZoom is not enabled.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<int[]> EFV_AUTO_ZOOM_PADDING_REGION =
+            new Key<int[]>("android.efv.autoZoomPaddingRegion", int[].class);
+
+    /**
+     * <p>List of coordinates representing the target region relative to the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }
+     * for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in
+     * {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A list of android.graphics.PointF that define the coordinates of the target region
+     * relative to the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }.
+     * The array represents the target region coordinates as: top-left, top-right, bottom-left,
+     * bottom-right.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The list of target coordinates will define a region within the bounds of the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.graphics.PointF[]> EFV_TARGET_COORDINATES =
+            new Key<android.graphics.PointF[]>("android.efv.targetCoordinates", android.graphics.PointF[].class);
+
+    /**
+     * <p>Used to apply an additional digital zoom factor for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>For the {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature, an additional zoom factor is applied on top of the existing {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}.
+     * This additional zoom factor serves as a buffer to provide more flexibility for the
+     * {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED }
+     * mode. If android.efv.paddingZoomFactor is not set, the default will be used.
+     * The effectiveness of the stabilization may be influenced by the amount of padding zoom
+     * applied. A higher padding zoom factor can stabilize the target region more effectively
+     * with greater flexibility but may potentially impact image quality. Conversely, a lower
+     * padding zoom factor may be used to prioritize preserving image quality, albeit with less
+     * leeway in stabilizing the target region. It is recommended to set the
+     * android.efv.paddingZoomFactor to at least 1.5.</p>
+     * <p>If android.efv.autoZoom is enabled, the requested android.efv.paddingZoomFactor will be overridden.
+     * android.efv.maxPaddingZoomFactor can be checked for more details on controlling the
+     * padding zoom factor during android.efv.autoZoom.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.efv.paddingZoomFactorRange</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_PADDING_ZOOM_FACTOR =
+            new Key<Float>("android.efv.paddingZoomFactor", float.class);
+
+    /**
+     * <p>Set the stabilization mode for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension</p>
+     * <p>The desired stabilization mode. Gimbal stabilization mode provides simple, non-locked
+     * video stabilization. Locked mode uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization feature to fixate on the current region, utilizing it as the target area for
+     * stabilization.</p>
+     * <p><b>Possible values:</b></p>
+     * <ul>
+     *   <li>{@link #EFV_STABILIZATION_MODE_OFF OFF}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_GIMBAL GIMBAL}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_LOCKED LOCKED}</li>
+     * </ul>
+     *
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @see #EFV_STABILIZATION_MODE_OFF
+     * @see #EFV_STABILIZATION_MODE_GIMBAL
+     * @see #EFV_STABILIZATION_MODE_LOCKED
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Integer> EFV_STABILIZATION_MODE =
+            new Key<Integer>("android.efv.stabilizationMode", int.class);
+
+    /**
+     * <p>Used to enable or disable auto zoom for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Turn on auto zoom to let the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature decide at any given point a combination of
+     * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} and android.efv.paddingZoomFactor
+     * to keep the target region in view and stabilized. The combination chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * will equal the requested {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} multiplied with the requested
+     * android.efv.paddingZoomFactor. A limit can be set on the padding zoom if wanting
+     * to control image quality further using android.efv.maxPaddingZoomFactor.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Boolean> EFV_AUTO_ZOOM =
+            new Key<Boolean>("android.efv.autoZoom", boolean.class);
+
+    /**
+     * <p>Representing the desired clockwise rotation
+     * of the target region in degrees for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Value representing the desired clockwise rotation of the target
+     * region in degrees.</p>
+     * <p><b>Range of valid values:</b><br>
+     * 0 to 360</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_ROTATE_VIEWPORT =
+            new Key<Float>("android.efv.rotateViewport", float.class);
+
+    /**
+     * <p>Used to update the target region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A android.util.Pair<Integer,Integer> that represents the desired
+     * <Horizontal,Vertical> shift of the current locked view (or target region) in
+     * pixels. Negative values indicate left and upward shifts, while positive values indicate
+     * right and downward shifts in the active array coordinate system.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.util.Pair<Integer,Integer> represents the
+     * <Horizontal,Vertical> shift. The range for the horizontal shift is
+     * [-max(android.efv.paddingRegion-left), max(android.efv.paddingRegion-right)].
+     * The range for the vertical shift is
+     * [-max(android.efv.paddingRegion-top), max(android.efv.paddingRegion-bottom)]</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Pair<Integer,Integer>> EFV_TRANSLATE_VIEWPORT =
+            new Key<android.util.Pair<Integer,Integer>>("android.efv.translateViewport", new TypeReference<android.util.Pair<Integer,Integer>>() {{ }});
+
+    /**
+     * <p>Used to limit the android.efv.paddingZoomFactor if
+     * android.efv.autoZoom is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>If android.efv.autoZoom is enabled, this key can be used to set a limit
+     * on the android.efv.paddingZoomFactor chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.CameraMetadata#EFV_STABILIZATION_MODE_LOCKED } mode
+     * to control image quality.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The range of android.efv.paddingZoomFactorRange. Use a value greater than or equal to
+     * the android.efv.paddingZoomFactor to effectively utilize this key.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @hide
+     */
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_MAX_PADDING_ZOOM_FACTOR =
+            new Key<Float>("android.efv.maxPaddingZoomFactor", float.class);
+
     /*~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~
      * End generated code
      *~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~@~O@*/
diff --git a/core/java/android/hardware/camera2/ExtensionCaptureRequest.java b/core/java/android/hardware/camera2/ExtensionCaptureRequest.java
new file mode 100644
index 0000000..32039c6
--- /dev/null
+++ b/core/java/android/hardware/camera2/ExtensionCaptureRequest.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.camera2;
+
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.CaptureRequest.Key;
+import android.hardware.camera2.impl.ExtensionKey;
+import android.hardware.camera2.impl.PublicKey;
+
+import com.android.internal.camera.flags.Flags;
+
+/**
+ * ExtensionCaptureRequest contains definitions for extension-specific CaptureRequest keys that
+ * can be used to configure a {@link android.hardware.camera2.CaptureRequest} during a
+ * {@link android.hardware.camera2.CameraExtensionSession}.
+ *
+ * Note that ExtensionCaptureRequest is not intended to be used as a replacement
+ * for CaptureRequest in the extensions. It serves as a supplementary class providing
+ * extension-specific CaptureRequest keys. Developers should use these keys in conjunction
+ * with regular CaptureRequest objects during a
+ * {@link android.hardware.camera2.CameraExtensionSession}.
+ *
+ * @see CaptureRequest
+ * @see CameraExtensionSession
+ */
+@FlaggedApi(Flags.FLAG_CONCERT_MODE)
+public final class ExtensionCaptureRequest {
+
+    /**
+     * <p>Used to apply an additional digital zoom factor for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>For the {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature, an additional zoom factor is applied on top of the existing {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}.
+     * This additional zoom factor serves as a buffer to provide more flexibility for the
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED }
+     * mode. If {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } is not set, the default will be used.
+     * The effectiveness of the stabilization may be influenced by the amount of padding zoom
+     * applied. A higher padding zoom factor can stabilize the target region more effectively
+     * with greater flexibility but may potentially impact image quality. Conversely, a lower
+     * padding zoom factor may be used to prioritize preserving image quality, albeit with less
+     * leeway in stabilizing the target region. It is recommended to set the
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } to at least 1.5.</p>
+     * <p>If {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled, the requested {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } will be overridden.
+     * {@link ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR } can be checked for more details on controlling the
+     * padding zoom factor during {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM }.</p>
+     * <p><b>Range of valid values:</b><br>
+     * {@link CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE }</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @see ExtensionCaptureRequest#EFV_AUTO_ZOOM
+     * @see ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     * @see CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_PADDING_ZOOM_FACTOR = CaptureRequest.EFV_PADDING_ZOOM_FACTOR;
+
+    /**
+     * <p>Used to enable or disable auto zoom for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Turn on auto zoom to let the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature decide at any given point a combination of
+     * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} and {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR }
+     * to keep the target region in view and stabilized. The combination chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * will equal the requested {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} multiplied with the requested
+     * {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR }. A limit can be set on the padding zoom if wanting
+     * to control image quality further using {@link ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR }.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @see ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Boolean> EFV_AUTO_ZOOM = CaptureRequest.EFV_AUTO_ZOOM;
+
+    /**
+     * <p>Used to limit the {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } if
+     * {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>If {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled, this key can be used to set a limit
+     * on the {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode
+     * to control image quality.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The range of {@link CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE Range}. Use a value greater than or equal to
+     * the {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } to
+     * effectively utilize this key.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see ExtensionCaptureRequest#EFV_AUTO_ZOOM
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     * @see CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_MAX_PADDING_ZOOM_FACTOR = CaptureRequest.EFV_MAX_PADDING_ZOOM_FACTOR;
+
+    /**
+     * <p>Set the stabilization mode for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension</p>
+     * <p>The desired stabilization mode. Gimbal stabilization mode provides simple, non-locked
+     * video stabilization. Locked mode uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization feature to fixate on the current region, utilizing it as the target area for
+     * stabilization.</p>
+     * <p><b>Possible values:</b></p>
+     * <ul>
+     *   <li>{@link #EFV_STABILIZATION_MODE_OFF OFF}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_GIMBAL GIMBAL}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_LOCKED LOCKED}</li>
+     * </ul>
+     *
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @see #EFV_STABILIZATION_MODE_OFF
+     * @see #EFV_STABILIZATION_MODE_GIMBAL
+     * @see #EFV_STABILIZATION_MODE_LOCKED
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Integer> EFV_STABILIZATION_MODE = CaptureRequest.EFV_STABILIZATION_MODE;
+
+    /**
+     * <p>Used to update the target region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A android.util.Pair<Integer,Integer> that represents the desired
+     * <Horizontal,Vertical> shift of the current locked view (or target region) in
+     * pixels. Negative values indicate left and upward shifts, while positive values indicate
+     * right and downward shifts in the active array coordinate system.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.util.Pair<Integer,Integer> represents the
+     * <Horizontal,Vertical> shift. The range for the horizontal shift is
+     * [-max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-left), max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-right)].
+     * The range for the vertical shift is
+     * [-max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-top), max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-bottom)]</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see ExtensionCaptureResult#EFV_PADDING_REGION
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Pair<Integer,Integer>> EFV_TRANSLATE_VIEWPORT = CaptureRequest.EFV_TRANSLATE_VIEWPORT;
+
+    /**
+     * <p>Representing the desired clockwise rotation
+     * of the target region in degrees for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Value representing the desired clockwise rotation of the target
+     * region in degrees.</p>
+     * <p><b>Range of valid values:</b><br>
+     * 0 to 360</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_ROTATE_VIEWPORT = CaptureRequest.EFV_ROTATE_VIEWPORT;
+
+
+    //
+    // Enumeration values for CaptureRequest#EFV_STABILIZATION_MODE
+    //
+
+    /**
+     * <p>No stabilization.</p>
+     * @see ExtensionCaptureRequest#EFV_STABILIZATION_MODE
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_OFF = CaptureRequest.EFV_STABILIZATION_MODE_OFF;
+
+    /**
+     * <p>Gimbal stabilization mode.</p>
+     * @see ExtensionCaptureRequest#EFV_STABILIZATION_MODE
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_GIMBAL = CaptureRequest.EFV_STABILIZATION_MODE_GIMBAL;
+
+    /**
+     * <p>Locked stabilization mode which uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization to directionally steady the target region.</p>
+     * @see ExtensionCaptureRequest#EFV_STABILIZATION_MODE
+     */
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final int EFV_STABILIZATION_MODE_LOCKED = CaptureRequest.EFV_STABILIZATION_MODE_LOCKED;
+
+} 
\ No newline at end of file
diff --git a/core/java/android/hardware/camera2/ExtensionCaptureResult.java b/core/java/android/hardware/camera2/ExtensionCaptureResult.java
new file mode 100644
index 0000000..5c99909
--- /dev/null
+++ b/core/java/android/hardware/camera2/ExtensionCaptureResult.java
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.camera2;
+
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraExtensionCharacteristics;
+import android.hardware.camera2.CaptureResult;
+import android.hardware.camera2.CaptureResult.Key;
+import android.hardware.camera2.impl.ExtensionKey;
+import android.hardware.camera2.impl.PublicKey;
+
+import com.android.internal.camera.flags.Flags;
+
+/**
+ * ExtensionCaptureResult contains definitions for extension-specific CaptureResult keys that
+ * are available during a {@link android.hardware.camera2.CameraExtensionSession} after a
+ * {@link android.hardware.camera2.CaptureRequest} is processed.
+ *
+ * Note that ExtensionCaptureResult is not intended to be used as a replacement
+ * for CaptureResult in the extensions. It serves as a supplementary class providing
+ * extension-specific CaptureResult keys. Developers should use these keys in conjunction
+ * with regular CaptureResult objects during a
+ * {@link android.hardware.camera2.CameraExtensionSession}.
+ *
+ * @see CaptureResult
+ * @see CaptureRequest
+ * @see CameraExtensionSession
+ */
+@FlaggedApi(Flags.FLAG_CONCERT_MODE)
+public final class ExtensionCaptureResult {
+
+   /**
+     * <p>The padding region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>An array [left, top, right, bottom] of the padding in pixels remaining on all four sides
+     * before the target region starts to go out of bounds.</p>
+     * <p>The padding region denotes the area surrounding the stabilized target region within which
+     * the camera can be moved while maintaining the target region in view. As the camera moves,
+     * the padding region adjusts to represent the proximity of the target region to the
+     * boundary, which is the point at which the target region will start to go out of bounds.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The padding is the number of remaining pixels of padding in each direction.
+     * The pixels reference the active array coordinate system. Negative values indicate the target region
+     * is out of bounds. The value for this key may be null for when the stabilization mode is
+     * in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_OFF }
+     * or {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_GIMBAL } mode.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<int[]> EFV_PADDING_REGION = CaptureResult.EFV_PADDING_REGION;
+
+    /**
+     * <p>The padding region when {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>An array [left, top, right, bottom] of the padding in pixels remaining on all four sides
+     * before the target region starts to go out of bounds.</p>
+     * <p>This may differ from {@link ExtensionCaptureResult#EFV_PADDING_REGION } as the field of view can change
+     * during {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM }, altering the boundary region and thus updating the padding between the
+     * target region and the boundary.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The padding is the number of remaining pixels of padding in each direction
+     * when {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled. Negative values indicate the target region is out of bounds.
+     * The value for this key may be null for when the {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is not enabled.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see ExtensionCaptureRequest#EFV_AUTO_ZOOM
+     * @see ExtensionCaptureResult#EFV_PADDING_REGION
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<int[]> EFV_AUTO_ZOOM_PADDING_REGION = CaptureResult.EFV_AUTO_ZOOM_PADDING_REGION;
+
+    /**
+     * <p>List of coordinates representing the target region relative to the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }
+     * for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A list of android.graphics.PointF that define the coordinates of the target region
+     * relative to the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }.
+     * The array represents the target region coordinates as: top-left, top-right, bottom-left,
+     * bottom-right.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The list of target coordinates will define a region within the bounds of the
+     * {@link android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE }</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.graphics.PointF[]> EFV_TARGET_COORDINATES = CaptureResult.EFV_TARGET_COORDINATES;
+
+    /**
+     * <p>Used to apply an additional digital zoom factor for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>For the {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature, an additional zoom factor is applied on top of the existing {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio}.
+     * This additional zoom factor serves as a buffer to provide more flexibility for the
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED }
+     * mode. If {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } is not set, the default will be used.
+     * The effectiveness of the stabilization may be influenced by the amount of padding zoom
+     * applied. A higher padding zoom factor can stabilize the target region more effectively
+     * with greater flexibility but may potentially impact image quality. Conversely, a lower
+     * padding zoom factor may be used to prioritize preserving image quality, albeit with less
+     * leeway in stabilizing the target region. It is recommended to set the
+     * {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } to at least 1.5.</p>
+     * <p>If {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled, the requested {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } will be overridden.
+     * {@link ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR } can be checked for more details on controlling the
+     * padding zoom factor during {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM }.</p>
+     * <p><b>Range of valid values:</b><br>
+     * {@link CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE }</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @see ExtensionCaptureRequest#EFV_AUTO_ZOOM
+     * @see ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     * @see CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_PADDING_ZOOM_FACTOR = CaptureResult.EFV_PADDING_ZOOM_FACTOR;
+
+    /**
+     * <p>Set the stabilization mode for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension</p>
+     * <p>The desired stabilization mode. Gimbal stabilization mode provides simple, non-locked
+     * video stabilization. Locked mode uses the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * stabilization feature to fixate on the current region, utilizing it as the target area for
+     * stabilization.</p>
+     * <p><b>Possible values:</b></p>
+     * <ul>
+     *   <li>{@link #EFV_STABILIZATION_MODE_OFF OFF}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_GIMBAL GIMBAL}</li>
+     *   <li>{@link #EFV_STABILIZATION_MODE_LOCKED LOCKED}</li>
+     * </ul>
+     *
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     * @see #EFV_STABILIZATION_MODE_OFF
+     * @see #EFV_STABILIZATION_MODE_GIMBAL
+     * @see #EFV_STABILIZATION_MODE_LOCKED
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Integer> EFV_STABILIZATION_MODE = CaptureResult.EFV_STABILIZATION_MODE;
+
+    /**
+     * <p>Used to enable or disable auto zoom for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Turn on auto zoom to let the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * feature decide at any given point a combination of
+     * {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} and {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR }
+     * to keep the target region in view and stabilized. The combination chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * will equal the requested {@link CaptureRequest#CONTROL_ZOOM_RATIO android.control.zoomRatio} multiplied with the requested
+     * {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR }. A limit can be set on the padding zoom if wanting
+     * to control image quality further using {@link ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR }.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see CaptureRequest#CONTROL_ZOOM_RATIO
+     * @see ExtensionCaptureRequest#EFV_MAX_PADDING_ZOOM_FACTOR
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Boolean> EFV_AUTO_ZOOM = CaptureResult.EFV_AUTO_ZOOM;
+
+    /**
+     * <p>Representing the desired clockwise rotation
+     * of the target region in degrees for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>Value representing the desired clockwise rotation of the target
+     * region in degrees.</p>
+     * <p><b>Range of valid values:</b><br>
+     * 0 to 360</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_ROTATE_VIEWPORT = CaptureResult.EFV_ROTATE_VIEWPORT;
+
+    /**
+     * <p>Used to update the target region for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>A android.util.Pair<Integer,Integer> that represents the desired
+     * <Horizontal,Vertical> shift of the current locked view (or target region) in
+     * pixels. Negative values indicate left and upward shifts, while positive values indicate
+     * right and downward shifts in the active array coordinate system.</p>
+     * <p><b>Range of valid values:</b><br>
+     * android.util.Pair<Integer,Integer> represents the
+     * <Horizontal,Vertical> shift. The range for the horizontal shift is
+     * [-max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-left), max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-right)].
+     * The range for the vertical shift is
+     * [-max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-top), max({@link ExtensionCaptureResult#EFV_PADDING_REGION }-bottom)]</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see ExtensionCaptureResult#EFV_PADDING_REGION
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<android.util.Pair<Integer,Integer>> EFV_TRANSLATE_VIEWPORT = CaptureResult.EFV_TRANSLATE_VIEWPORT;
+
+    /**
+     * <p>Used to limit the {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } if
+     * {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled for the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode.</p>
+     * <p>If {@link ExtensionCaptureRequest#EFV_AUTO_ZOOM } is enabled, this key can be used to set a limit
+     * on the {@link ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } chosen by the
+     * {@link android.hardware.camera2.CameraExtensionCharacteristics#EXTENSION_EYES_FREE_VIDEOGRAPHY }
+     * extension in {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_STABILIZATION_MODE_LOCKED } mode
+     * to control image quality.</p>
+     * <p><b>Range of valid values:</b><br>
+     * The range of {@link CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE }. Use a value greater than or equal to
+     * the {@link android.hardware.camera2.ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR } to
+     * effectively utilize this key.</p>
+     * <p><b>Optional</b> - The value for this key may be {@code null} on some devices.</p>
+     *
+     * @see ExtensionCaptureRequest#EFV_AUTO_ZOOM
+     * @see ExtensionCaptureRequest#EFV_PADDING_ZOOM_FACTOR
+     * @see CameraExtensionCharacteristics#EFV_PADDING_ZOOM_FACTOR_RANGE
+     */
+    @PublicKey
+    @NonNull
+    @ExtensionKey
+    @FlaggedApi(Flags.FLAG_CONCERT_MODE)
+    public static final Key<Float> EFV_MAX_PADDING_ZOOM_FACTOR = CaptureResult.EFV_MAX_PADDING_ZOOM_FACTOR;
+
+}
\ No newline at end of file
diff --git a/core/java/android/hardware/camera2/extension/CameraOutputSurface.java b/core/java/android/hardware/camera2/extension/CameraOutputSurface.java
index b4fe7fe..53f56bc 100644
--- a/core/java/android/hardware/camera2/extension/CameraOutputSurface.java
+++ b/core/java/android/hardware/camera2/extension/CameraOutputSurface.java
@@ -18,8 +18,11 @@
 
 import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.graphics.ImageFormat;
+import android.hardware.camera2.params.ColorSpaceProfiles;
+import android.hardware.camera2.params.DynamicRangeProfiles;
 import android.hardware.camera2.utils.SurfaceUtils;
 import android.util.Size;
 import android.view.Surface;
@@ -65,6 +68,8 @@
         mOutputSurface.size = new android.hardware.camera2.extension.Size();
         mOutputSurface.size.width = size.getWidth();
         mOutputSurface.size.height = size.getHeight();
+        mOutputSurface.dynamicRangeProfile = DynamicRangeProfiles.STANDARD;
+        mOutputSurface.colorSpace = ColorSpaceProfiles.UNSPECIFIED;
     }
 
     /**
@@ -95,4 +100,48 @@
     public @ImageFormat.Format int getImageFormat() {
         return mOutputSurface.imageFormat;
     }
+
+    /**
+     * Return the dynamic range profile. The default
+     * dynamicRangeProfile is
+     * {@link android.hardware.camera2.params.DynamicRangeProfiles.STANDARD}
+     * unless specified by CameraOutputSurface.setDynamicRangeProfile.
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public @DynamicRangeProfiles.Profile long getDynamicRangeProfile() {
+        return mOutputSurface.dynamicRangeProfile;
+    }
+
+    /**
+     * Return the color space. The default colorSpace is
+     * {@link android.hardware.camera2.params.ColorSpaceProfiles.UNSPECIFIED}
+     * unless specified by CameraOutputSurface.setColorSpace.
+     */
+    @SuppressLint("MethodNameUnits")
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public int getColorSpace() {
+        return mOutputSurface.colorSpace;
+    }
+
+    /**
+     * Set the dynamic range profile. The default dynamicRangeProfile
+     * will be {@link android.hardware.camera2.params.DynamicRangeProfiles.STANDARD}
+     * unless explicitly set using this method.
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public void setDynamicRangeProfile(
+            @DynamicRangeProfiles.Profile long dynamicRangeProfile) {
+        mOutputSurface.dynamicRangeProfile = dynamicRangeProfile;
+    }
+
+    /**
+     * Set the color space. The default colorSpace
+     * will be
+     * {@link android.hardware.camera2.params.ColorSpaceProfiles.UNSPECIFIED}
+     * unless explicitly set using this method.
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public void setColorSpace(int colorSpace) {
+        mOutputSurface.colorSpace = colorSpace;
+    }
 }
diff --git a/core/java/android/hardware/camera2/extension/OutputSurface.aidl b/core/java/android/hardware/camera2/extension/OutputSurface.aidl
index 8415379..02e160c 100644
--- a/core/java/android/hardware/camera2/extension/OutputSurface.aidl
+++ b/core/java/android/hardware/camera2/extension/OutputSurface.aidl
@@ -24,4 +24,6 @@
     Surface surface;
     Size size;
     int imageFormat;
+    long dynamicRangeProfile;
+    int colorSpace;
 }
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index f03876b..97c03ed 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -19,6 +19,10 @@
 import static com.android.internal.util.function.pooled.PooledLambda.obtainRunnable;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.compat.CompatChanges;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
 import android.content.Context;
 import android.graphics.ImageFormat;
 import android.hardware.ICameraService;
@@ -59,6 +63,8 @@
 import android.util.SparseArray;
 import android.view.Surface;
 
+import com.android.internal.camera.flags.Flags;
+
 import java.util.AbstractMap.SimpleEntry;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -85,10 +91,23 @@
 
     private static final int REQUEST_ID_NONE = -1;
 
+    /**
+     * Starting {@link Build.VERSION_CODES#VANILLA_ICE_CREAM},
+     * {@link #isSessionConfigurationSupported} also checks for compatibility of session parameters
+     * when supported by the HAL. This ChangeId guards enabling that functionality for apps
+     * that target {@link Build.VERSION_CODES#VANILLA_ICE_CREAM} and above.
+     */
+    @ChangeId
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
+    static final long CHECK_PARAMS_IN_IS_SESSION_CONFIGURATION_SUPPORTED = 320741775;
+
     // TODO: guard every function with if (!mRemoteDevice) check (if it was closed)
     private ICameraDeviceUserWrapper mRemoteDevice;
     private boolean mRemoteDeviceInit = false;
 
+    // CameraDeviceSetup object to delegate some of the newer calls to.
+    @Nullable private final CameraDeviceSetup mCameraDeviceSetup;
+
     // Lock to synchronize cross-thread access to device public interface
     final Object mInterfaceLock = new Object(); // access from this class and Session only!
     private final CameraDeviceCallbacks mCallbacks = new CameraDeviceCallbacks();
@@ -275,7 +294,8 @@
                         CameraCharacteristics characteristics,
                         Map<String, CameraCharacteristics> physicalIdsToChars,
                         int appTargetSdkVersion,
-                        Context ctx) {
+                        Context ctx,
+                        @Nullable CameraDevice.CameraDeviceSetup cameraDeviceSetup) {
         if (cameraId == null || callback == null || executor == null || characteristics == null) {
             throw new IllegalArgumentException("Null argument given");
         }
@@ -286,6 +306,7 @@
         mPhysicalIdsToChars = physicalIdsToChars;
         mAppTargetSdkVersion = appTargetSdkVersion;
         mContext = ctx;
+        mCameraDeviceSetup = cameraDeviceSetup;
 
         final int MAX_TAG_LEN = 23;
         String tag = String.format("CameraDevice-JV-%s", mCameraId);
@@ -781,23 +802,15 @@
             UnsupportedOperationException, IllegalArgumentException {
         synchronized (mInterfaceLock) {
             checkIfCameraClosedOrInError();
-
+            if (CompatChanges.isChangeEnabled(CHECK_PARAMS_IN_IS_SESSION_CONFIGURATION_SUPPORTED)
+                    && Flags.cameraDeviceSetup()
+                    && mCameraDeviceSetup != null) {
+                return mCameraDeviceSetup.isSessionConfigurationSupported(sessionConfig);
+            }
             return mRemoteDevice.isSessionConfigurationSupported(sessionConfig);
         }
     }
 
-    @Override
-    public CameraCharacteristics getSessionCharacteristics(
-            @NonNull SessionConfiguration sessionConfig) throws CameraAccessException,
-            UnsupportedOperationException, IllegalArgumentException {
-        synchronized (mInterfaceLock) {
-            checkIfCameraClosedOrInError();
-            CameraMetadataNative info = mRemoteDevice.getSessionCharacteristics(sessionConfig);
-
-            return new CameraCharacteristics(info);
-        }
-    }
-
     /**
      * For use by backwards-compatibility code only.
      */
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java
new file mode 100644
index 0000000..0f199b1
--- /dev/null
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceSetupImpl.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.camera2.impl;
+
+import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
+import android.content.Context;
+import android.hardware.ICameraService;
+import android.hardware.camera2.CameraAccessException;
+import android.hardware.camera2.CameraCaptureSession;
+import android.hardware.camera2.CameraCharacteristics;
+import android.hardware.camera2.CameraDevice;
+import android.hardware.camera2.CameraManager;
+import android.hardware.camera2.CaptureRequest;
+import android.hardware.camera2.params.SessionConfiguration;
+import android.hardware.camera2.utils.ExceptionUtils;
+import android.os.Build;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+
+import androidx.annotation.NonNull;
+
+import com.android.internal.camera.flags.Flags;
+
+import java.util.concurrent.Executor;
+
+@FlaggedApi(Flags.FLAG_CAMERA_DEVICE_SETUP)
+public class CameraDeviceSetupImpl extends CameraDevice.CameraDeviceSetup {
+    private final String mCameraId;
+    private final CameraManager mCameraManager;
+    private final Context mContext;
+    private final int mTargetSdkVersion;
+
+    private final Object mInterfaceLock = new Object();
+
+    public CameraDeviceSetupImpl(@NonNull String cameraId, @NonNull CameraManager cameraManager,
+            @NonNull Context context) {
+        mCameraId = cameraId;
+        mCameraManager = cameraManager;
+        mContext = context;
+        mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion;
+    }
+
+    @NonNull
+    @Override
+    public CaptureRequest.Builder createCaptureRequest(int templateType)
+            throws CameraAccessException {
+        synchronized (mInterfaceLock) {
+            if (mCameraManager.isCameraServiceDisabled()) {
+                throw new IllegalArgumentException("No cameras available on device");
+            }
+
+            ICameraService cameraService = mCameraManager.getCameraService();
+            if (cameraService == null) {
+                throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
+                        "Camera service is currently unavailable.");
+            }
+
+            try {
+                CameraMetadataNative defaultRequest = cameraService.createDefaultRequest(mCameraId,
+                        templateType);
+                CameraDeviceImpl.disableZslIfNeeded(defaultRequest, mTargetSdkVersion,
+                        templateType);
+
+                return new CaptureRequest.Builder(
+                        defaultRequest, /*reprocess=*/ false,
+                        CameraCaptureSession.SESSION_ID_NONE, mCameraId,
+                        /*physicalCameraIdSet=*/ null);
+            } catch (ServiceSpecificException e) {
+                throw ExceptionUtils.throwAsPublicException(e);
+            } catch (RemoteException e) {
+                throw ExceptionUtils.throwAsPublicException(e);
+            }
+        }
+    }
+
+    @Override
+    public boolean isSessionConfigurationSupported(@NonNull SessionConfiguration config)
+            throws CameraAccessException {
+        // TODO(b/298033056): restructure the OutputConfiguration API for better usability
+        synchronized (mInterfaceLock) {
+            if (mCameraManager.isCameraServiceDisabled()) {
+                throw new IllegalArgumentException("No cameras available on device");
+            }
+
+            ICameraService cameraService = mCameraManager.getCameraService();
+            if (cameraService == null) {
+                throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
+                        "Camera service is currently unavailable.");
+            }
+
+            try {
+                return cameraService.isSessionConfigurationWithParametersSupported(
+                        mCameraId, config);
+            } catch (ServiceSpecificException e) {
+                throw ExceptionUtils.throwAsPublicException(e);
+            } catch (RemoteException e) {
+                throw ExceptionUtils.throwAsPublicException(e);
+            }
+        }
+    }
+
+    @NonNull
+    @Override
+    public CameraCharacteristics getSessionCharacteristics(
+            @NonNull SessionConfiguration sessionConfig) throws CameraAccessException {
+        synchronized (mInterfaceLock) {
+            if (mCameraManager.isCameraServiceDisabled()) {
+                throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
+                        "Camera service is currently disabled");
+            }
+
+            ICameraService cameraService = mCameraManager.getCameraService();
+            if (cameraService == null) {
+                throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
+                        "Camera service is currently unavailable");
+            }
+
+            try {
+                CameraMetadataNative metadataNative = cameraService.getSessionCharacteristics(
+                        mCameraId, mTargetSdkVersion,
+                        CameraManager.shouldOverrideToPortrait(mContext), sessionConfig);
+
+                return new CameraCharacteristics(metadataNative);
+            } catch (ServiceSpecificException e) {
+                switch (e.errorCode) {
+                    case ICameraService.ERROR_INVALID_OPERATION ->
+                            throw new UnsupportedOperationException(
+                                    "Session Characteristics Query not supported by device.");
+                    case ICameraService.ERROR_ILLEGAL_ARGUMENT ->
+                            throw new IllegalArgumentException("Invalid Session Configuration");
+                    default -> throw ExceptionUtils.throwAsPublicException(e);
+                }
+            } catch (RemoteException e) {
+                throw ExceptionUtils.throwAsPublicException(e);
+            }
+        }
+    }
+
+    @Override
+    public void openCamera(@NonNull @CallbackExecutor Executor executor,
+            @NonNull CameraDevice.StateCallback callback) throws CameraAccessException {
+        mCameraManager.openCamera(mCameraId, executor, callback);
+    }
+
+    @NonNull
+    @Override
+    public String getId() {
+        return mCameraId;
+    }
+
+    @Override
+    public int hashCode() {
+        return mCameraId.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof CameraDeviceSetupImpl other) {
+            return mCameraId.equals(other.mCameraId);
+        }
+        return false;
+    }
+
+    @Override
+    public String toString() {
+        return "CameraDeviceSetup(cameraId='" + mCameraId + "')";
+    }
+
+    /**
+     * Returns true if HAL supports calls to {@code isSessionConfigurationWithParametersSupported};
+     * false otherwise.
+     * <p>
+     * Suppressing AndroidFrameworkCompatChange because we are querying HAL support here
+     * and HAL's return value happens to follow the same scheme as SDK version.
+     * AndroidFrameworkCompatChange incorrectly flags this as an SDK version check.
+     * @hide
+     */
+    @SuppressWarnings("AndroidFrameworkCompatChange")
+    public static boolean isCameraDeviceSetupSupported(CameraCharacteristics chars) {
+        if (!Flags.featureCombinationQuery()) {
+            return false;
+        }
+
+        Integer queryVersion = chars.get(
+                CameraCharacteristics.INFO_SESSION_CONFIGURATION_QUERY_VERSION);
+        return queryVersion != null && queryVersion > Build.VERSION_CODES.UPSIDE_DOWN_CAKE;
+    }
+}
diff --git a/core/java/android/hardware/camera2/impl/ExtensionKey.java b/core/java/android/hardware/camera2/impl/ExtensionKey.java
new file mode 100644
index 0000000..15e8982
--- /dev/null
+++ b/core/java/android/hardware/camera2/impl/ExtensionKey.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.camera2.impl;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Denote a static field {@code Key} as being an extension key (i.e. @hide as a CaptureRequest/
+ * CaptureResult key but exposed as a @PublicKey through
+ * ExtensionCaptureRequest/ExtensionCaptureResult).
+ *
+ * <p>Keys with this annotation are assumed to always have a hidden key counter-part in
+ * CaptureRequest/CaptureResult.</p>
+ *
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface ExtensionKey {
+
+}
diff --git a/core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java b/core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java
index 2129260..aec2cff 100644
--- a/core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java
+++ b/core/java/android/hardware/camera2/impl/ICameraDeviceUserWrapper.java
@@ -18,14 +18,13 @@
 
 import android.hardware.ICameraService;
 import android.hardware.camera2.CameraAccessException;
-import android.hardware.camera2.CameraManager;
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.ICameraDeviceCallbacks;
 import android.hardware.camera2.ICameraDeviceUser;
 import android.hardware.camera2.ICameraOfflineSession;
-import android.hardware.camera2.impl.CameraMetadataNative;
 import android.hardware.camera2.params.OutputConfiguration;
 import android.hardware.camera2.params.SessionConfiguration;
+import android.hardware.camera2.utils.ExceptionUtils;
 import android.hardware.camera2.utils.SubmitInfo;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -69,9 +68,10 @@
             throws CameraAccessException  {
         try {
             return mRemoteDevice.submitRequest(request, streaming);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -79,27 +79,30 @@
             throws CameraAccessException {
         try {
             return mRemoteDevice.submitRequestList(requestList, streaming);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public long cancelRequest(int requestId) throws CameraAccessException {
         try {
             return mRemoteDevice.cancelRequest(requestId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void beginConfigure() throws CameraAccessException {
         try {
             mRemoteDevice.beginConfigure();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -108,18 +111,20 @@
         try {
             return mRemoteDevice.endConfigure(operatingMode, (sessionParams == null) ?
                     new CameraMetadataNative() : sessionParams, startTimeMs);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void deleteStream(int streamId) throws CameraAccessException {
         try {
             mRemoteDevice.deleteStream(streamId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -127,9 +132,10 @@
             throws CameraAccessException {
         try {
             return mRemoteDevice.createStream(outputConfiguration);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -137,45 +143,50 @@
             throws CameraAccessException {
         try {
             return mRemoteDevice.createInputStream(width, height, format, isMultiResolution);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public Surface getInputSurface() throws CameraAccessException {
         try {
             return mRemoteDevice.getInputSurface();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public CameraMetadataNative createDefaultRequest(int templateId) throws CameraAccessException {
         try {
             return mRemoteDevice.createDefaultRequest(templateId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public CameraMetadataNative getCameraInfo() throws CameraAccessException {
         try {
             return mRemoteDevice.getCameraInfo();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void waitUntilIdle() throws CameraAccessException {
         try {
             mRemoteDevice.waitUntilIdle();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -191,68 +202,49 @@
                 throw new IllegalArgumentException("Invalid session configuration");
             }
 
-            throw e;
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
-        }
-    }
-
-    /**
-     * Fetches the CameraCharacteristics for a given session configuration.
-     */
-    public CameraMetadataNative getSessionCharacteristics(SessionConfiguration sessionConfig)
-            throws CameraAccessException {
-        try {
-            return mRemoteDevice.getSessionCharacteristics(sessionConfig);
-        } catch (ServiceSpecificException e) {
-            if (e.errorCode == ICameraService.ERROR_INVALID_OPERATION) {
-                throw new UnsupportedOperationException("Session characteristics query not "
-                    + "supported");
-            } else if (e.errorCode == ICameraService.ERROR_ILLEGAL_ARGUMENT) {
-                throw new IllegalArgumentException("Invalid session configuration");
-            }
-
-            throw e;
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public long flush() throws CameraAccessException {
         try {
             return mRemoteDevice.flush();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void prepare(int streamId) throws CameraAccessException {
         try {
             mRemoteDevice.prepare(streamId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void tearDown(int streamId) throws CameraAccessException {
         try {
             mRemoteDevice.tearDown(streamId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void prepare2(int maxCount, int streamId) throws CameraAccessException {
         try {
             mRemoteDevice.prepare2(maxCount, streamId);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -260,9 +252,10 @@
             throws CameraAccessException {
         try {
             mRemoteDevice.updateOutputConfiguration(streamId, config);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -270,9 +263,10 @@
             int[] offlineOutputIds) throws CameraAccessException {
         try {
             return mRemoteDevice.switchToOffline(cbs, offlineOutputIds);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
@@ -280,27 +274,30 @@
             throws CameraAccessException {
         try {
             mRemoteDevice.finalizeOutputConfigurations(streamId, deferredConfig);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public void setCameraAudioRestriction(int mode) throws CameraAccessException {
         try {
             mRemoteDevice.setCameraAudioRestriction(mode);
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
     public int getGlobalAudioRestriction() throws CameraAccessException {
         try {
             return mRemoteDevice.getGlobalAudioRestriction();
-        } catch (Throwable t) {
-            CameraManager.throwAsPublicException(t);
-            throw new UnsupportedOperationException("Unexpected exception", t);
+        } catch (ServiceSpecificException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
+        } catch (RemoteException e) {
+            throw ExceptionUtils.throwAsPublicException(e);
         }
     }
 
diff --git a/core/java/android/hardware/camera2/params/ExtensionSessionConfiguration.java b/core/java/android/hardware/camera2/params/ExtensionSessionConfiguration.java
index 0e6c1b3..69a6e9b 100644
--- a/core/java/android/hardware/camera2/params/ExtensionSessionConfiguration.java
+++ b/core/java/android/hardware/camera2/params/ExtensionSessionConfiguration.java
@@ -15,15 +15,20 @@
  */
 package android.hardware.camera2.params;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-
+import android.annotation.SuppressLint;
+import android.graphics.ColorSpace;
+import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CameraExtensionCharacteristics.Extension;
 import android.hardware.camera2.CameraExtensionSession;
 
 import java.util.List;
 import java.util.concurrent.Executor;
 
+import com.android.internal.camera.flags.Flags;
+
 /**
  * A class that aggregates all supported arguments for
  * {@link CameraExtensionSession} initialization.
@@ -36,6 +41,7 @@
     private OutputConfiguration mPostviewOutput = null;
     private Executor mExecutor = null;
     private CameraExtensionSession.StateCallback mCallback = null;
+    private int mColorSpace;
 
     /**
      * Create a new ExtensionSessionConfiguration
@@ -118,4 +124,55 @@
     Executor getExecutor() {
         return mExecutor;
     }
+
+    /**
+     * Set a specific device-supported color space.
+     *
+     * <p>Clients can choose from any profile advertised as supported in
+     * {@link CameraCharacteristics#REQUEST_AVAILABLE_COLOR_SPACE_PROFILES}
+     * queried using {@link ColorSpaceProfiles#getSupportedColorSpaces}.
+     * When set, the colorSpace will override the default color spaces of the output targets,
+     * or the color space implied by the dataSpace passed into an {@link ImageReader}'s
+     * constructor.</p>
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public void setColorSpace(@NonNull ColorSpace.Named colorSpace) {
+        mColorSpace = colorSpace.ordinal();
+        for (OutputConfiguration outputConfiguration : mOutputs) {
+            outputConfiguration.setColorSpace(colorSpace);
+        }
+        if (mPostviewOutput != null) {
+            mPostviewOutput.setColorSpace(colorSpace);
+        }
+    }
+
+    /**
+     * Clear the color space, such that the default color space will be used.
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    public void clearColorSpace() {
+        mColorSpace = ColorSpaceProfiles.UNSPECIFIED;
+        for (OutputConfiguration outputConfiguration : mOutputs) {
+            outputConfiguration.clearColorSpace();
+        }
+        if (mPostviewOutput != null) {
+            mPostviewOutput.clearColorSpace();
+        }
+    }
+
+    /**
+     * Return the current color space.
+     *
+     * @return the currently set color space, or null
+     *         if not set
+     */
+    @FlaggedApi(Flags.FLAG_EXTENSION_10_BIT)
+    @SuppressLint("MethodNameUnits")
+    public @Nullable ColorSpace getColorSpace() {
+        if (mColorSpace != ColorSpaceProfiles.UNSPECIFIED) {
+            return ColorSpace.get(ColorSpace.Named.values()[mColorSpace]);
+        } else {
+            return null;
+        }
+    }
 }
diff --git a/core/java/android/hardware/camera2/utils/ExceptionUtils.java b/core/java/android/hardware/camera2/utils/ExceptionUtils.java
new file mode 100644
index 0000000..bfa96f2
--- /dev/null
+++ b/core/java/android/hardware/camera2/utils/ExceptionUtils.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.camera2.utils;
+
+import android.hardware.ICameraService;
+import android.hardware.camera2.CameraAccessException;
+import android.os.DeadObjectException;
+import android.os.RemoteException;
+import android.os.ServiceSpecificException;
+
+/**
+ * @hide
+ */
+public class ExceptionUtils {
+    /**
+     * Converts and throws {@link ServiceSpecificException} from camera binder interfaces as
+     * {@link CameraAccessException}, {@link IllegalArgumentException}, or {@link SecurityException}
+     * based on {@link ServiceSpecificException#errorCode}
+     * <p>
+     * Usage: {@code throw ExceptionUtils.throwAsPublicException(e)}
+     * <p>
+     * Notice the preceding `throw` before calling this method. The throw is essentially
+     * useless but lets the compiler know that execution will terminate at that statement
+     * preventing false "missing return statement" errors.
+     * <p>
+     * The return type is set to the only checked exception this method throws to ensure
+     * that the caller knows exactly which checked exception to declare/handle.
+     *
+     * @hide
+     */
+    public static CameraAccessException throwAsPublicException(ServiceSpecificException e)
+            throws CameraAccessException {
+        int reason;
+        switch(e.errorCode) {
+            case ICameraService.ERROR_DISCONNECTED:
+                reason = CameraAccessException.CAMERA_DISCONNECTED;
+                break;
+            case ICameraService.ERROR_DISABLED:
+                reason = CameraAccessException.CAMERA_DISABLED;
+                break;
+            case ICameraService.ERROR_CAMERA_IN_USE:
+                reason = CameraAccessException.CAMERA_IN_USE;
+                break;
+            case ICameraService.ERROR_MAX_CAMERAS_IN_USE:
+                reason = CameraAccessException.MAX_CAMERAS_IN_USE;
+                break;
+            case ICameraService.ERROR_DEPRECATED_HAL:
+                reason = CameraAccessException.CAMERA_DEPRECATED_HAL;
+                break;
+            case ICameraService.ERROR_ILLEGAL_ARGUMENT:
+            case ICameraService.ERROR_ALREADY_EXISTS:
+                throw new IllegalArgumentException(e.getMessage(), e);
+            case ICameraService.ERROR_PERMISSION_DENIED:
+                throw new SecurityException(e.getMessage(), e);
+            case ICameraService.ERROR_TIMED_OUT:
+            case ICameraService.ERROR_INVALID_OPERATION:
+            default:
+                reason = CameraAccessException.CAMERA_ERROR;
+        }
+
+        throw new CameraAccessException(reason, e.getMessage(), e);
+    }
+
+    /**
+     * Converts and throws Binder {@link DeadObjectException} and {@link RemoteException} from
+     * camera binder interfaces as {@link CameraAccessException} or
+     * {@link UnsupportedOperationException}
+     * <p>
+     * Usage: {@code throw ExceptionUtils.throwAsPublicException(e)}
+     * <p>
+     * Notice the preceding `throw` before calling this method. The throw is essentially
+     * useless but lets the compiler know that execution will terminate at that statement
+     * preventing false "missing return statement" errors.
+     * <p>
+     * The return type is set to the only checked exception this method throws to ensure
+     * that the caller knows exactly which checked exception to declare/handle.
+     *
+     * @hide
+     */
+    public static CameraAccessException throwAsPublicException(RemoteException e)
+            throws CameraAccessException {
+        if (e instanceof DeadObjectException) {
+            throw new CameraAccessException(CameraAccessException.CAMERA_DISCONNECTED,
+                    "Camera service has died unexpectedly", e);
+        }
+
+        throw new UnsupportedOperationException("An unknown RemoteException was thrown"
+                + " which should never happen.", e);
+    }
+
+    /**
+     * Static methods only. Do not initialize.
+     * @hide
+     */
+    private ExceptionUtils() {}
+}
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
index f18a0b7..6b2814e 100644
--- a/core/java/android/hardware/display/DisplayManagerInternal.java
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -431,6 +431,13 @@
     public abstract IntArray getDisplayGroupIds();
 
     /**
+     * Called upon presentation started/ended on the display.
+     * @param displayId the id of the display where presentation started.
+     * @param isShown whether presentation is shown.
+     */
+    public abstract void onPresentation(int displayId, boolean isShown);
+
+    /**
      * Describes the requested power state of the display.
      *
      * This object is intended to describe the general characteristics of the
diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl
index 09f5f36..c0e506b 100644
--- a/core/java/android/hardware/usb/IUsbManager.aidl
+++ b/core/java/android/hardware/usb/IUsbManager.aidl
@@ -186,6 +186,10 @@
     /* Gets the status of the specified USB port. */
     UsbPortStatus getPortStatus(in String portId);
 
+    /* Returns if the specified USB port supports mode change. */
+    @EnforcePermission("MANAGE_USB")
+    boolean isModeChangeSupported(in String portId);
+
     /* Sets the port's current role. */
     void setPortRoles(in String portId, int powerRole, int dataRole);
 
diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java
index 81a0234..41f344a 100644
--- a/core/java/android/hardware/usb/UsbManager.java
+++ b/core/java/android/hardware/usb/UsbManager.java
@@ -1474,6 +1474,21 @@
     }
 
     /**
+     * Checks if the given port supports mode change. Should only be called by
+     * {@link UsbPort#isModeChangeSupported}.
+     *
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.MANAGE_USB)
+    boolean isModeChangeSupported(UsbPort port) {
+        try {
+            return mService.isModeChangeSupported(port.getId());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Should only be called by {@link UsbPort#setRoles}.
      *
      * @hide
diff --git a/core/java/android/hardware/usb/UsbPort.java b/core/java/android/hardware/usb/UsbPort.java
index 8f0149b..03398c4 100644
--- a/core/java/android/hardware/usb/UsbPort.java
+++ b/core/java/android/hardware/usb/UsbPort.java
@@ -65,11 +65,14 @@
 import android.Manifest;
 import android.annotation.CallbackExecutor;
 import android.annotation.CheckResult;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
+import android.hardware.usb.flags.Flags;
 import android.hardware.usb.UsbOperationInternal;
 import android.hardware.usb.V1_0.Constants;
 import android.os.Binder;
@@ -375,6 +378,19 @@
     }
 
     /**
+     * Returns whether this USB port supports mode change
+     *
+     * @return true if mode change is supported.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(Manifest.permission.MANAGE_USB)
+    @FlaggedApi(Flags.FLAG_ENABLE_IS_MODE_CHANGE_SUPPORTED_API)
+    public boolean isModeChangeSupported() {
+        return mUsbManager.isModeChangeSupported(this);
+    }
+
+    /**
      * Queries USB Port to see if the port is capable of identifying
      * non compliant USB power source/cable/accessory.
      *
diff --git a/core/java/android/hardware/usb/UsbPortStatus.java b/core/java/android/hardware/usb/UsbPortStatus.java
index 4a5c4c8..8616b6b 100644
--- a/core/java/android/hardware/usb/UsbPortStatus.java
+++ b/core/java/android/hardware/usb/UsbPortStatus.java
@@ -16,13 +16,11 @@
 
 package android.hardware.usb;
 
-import android.Manifest;
 import android.annotation.CheckResult;
 import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.hardware.usb.flags.Flags;
 import android.os.Parcel;
@@ -30,7 +28,6 @@
 
 import com.android.internal.annotations.Immutable;
 
-import java.lang.StringBuilder;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
@@ -580,6 +577,21 @@
     }
 
     /**
+     * This function checks if the port is USB Power Delivery (PD) compliant -
+     * https://www.usb.org/usb-charger-pd. All of the power and data roles must be supported for a
+     * port to be PD compliant.
+     *
+     * @return true if the port is PD compliant.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_IS_PD_COMPLIANT_API)
+    public boolean isPdCompliant() {
+        return isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_DEVICE)
+                && isRoleCombinationSupported(POWER_ROLE_SINK, DATA_ROLE_HOST)
+                && isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_DEVICE)
+                && isRoleCombinationSupported(POWER_ROLE_SOURCE, DATA_ROLE_HOST);
+    }
+
+    /**
      * Get the supported role combinations.
      */
     public int getSupportedRoleCombinations() {
diff --git a/core/java/android/hardware/usb/flags/usb_framework_flags.aconfig b/core/java/android/hardware/usb/flags/usb_framework_flags.aconfig
new file mode 100644
index 0000000..a495631
--- /dev/null
+++ b/core/java/android/hardware/usb/flags/usb_framework_flags.aconfig
@@ -0,0 +1,15 @@
+package: "android.hardware.usb.flags"
+
+flag {
+    name: "enable_is_pd_compliant_api"
+    namespace: "usb"
+    description: "Feature flag for the api to check if a port is PD compliant"
+    bug: "323470419"
+}
+
+flag {
+    name: "enable_is_mode_change_supported_api"
+    namespace: "usb"
+    description: "Feature flag for the api to check if a port supports mode change"
+    bug: "323470419"
+}
diff --git a/core/java/android/inputmethodservice/IInputMethodWrapper.java b/core/java/android/inputmethodservice/IInputMethodWrapper.java
index b99996ff..f5b58b9 100644
--- a/core/java/android/inputmethodservice/IInputMethodWrapper.java
+++ b/core/java/android/inputmethodservice/IInputMethodWrapper.java
@@ -32,6 +32,7 @@
 import android.util.Log;
 import android.view.InputChannel;
 import android.view.MotionEvent;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputBinding;
 import android.view.inputmethod.InputConnection;
@@ -40,6 +41,7 @@
 import android.view.inputmethod.InputMethodSubtype;
 
 import com.android.internal.inputmethod.CancellationGroup;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputMethod;
 import com.android.internal.inputmethod.IInputMethodSession;
@@ -85,6 +87,8 @@
     private static final int DO_UPDATE_TOOL_TYPE = 140;
     private static final int DO_REMOVE_STYLUS_HANDWRITING_WINDOW = 150;
     private static final int DO_SET_STYLUS_WINDOW_IDLE_TIMEOUT = 160;
+    private static final int DO_COMMIT_HANDWRITING_DELEGATION_TEXT_IF_AVAILABLE = 170;
+    private static final int DO_DISCARD_HANDWRITING_DELEGATION_TEXT = 180;
 
     final WeakReference<InputMethodServiceInternal> mTarget;
     final Context mContext;
@@ -265,9 +269,13 @@
                 return;
             }
             case DO_CAN_START_STYLUS_HANDWRITING: {
+                final SomeArgs args = (SomeArgs) msg.obj;
                 if (isValid(inputMethod, target, "DO_CAN_START_STYLUS_HANDWRITING")) {
-                    inputMethod.canStartStylusHandwriting(msg.arg1);
+                    inputMethod.canStartStylusHandwriting(msg.arg1,
+                            (IConnectionlessHandwritingCallback) args.arg1,
+                            (CursorAnchorInfo) args.arg2, msg.arg2 != 0);
                 }
+                args.recycle();
                 return;
             }
             case DO_UPDATE_TOOL_TYPE: {
@@ -309,6 +317,19 @@
                 }
                 return;
             }
+            case DO_COMMIT_HANDWRITING_DELEGATION_TEXT_IF_AVAILABLE: {
+                if (isValid(inputMethod, target,
+                        "DO_COMMIT_HANDWRITING_DELEGATION_TEXT_IF_AVAILABLE")) {
+                    inputMethod.commitHandwritingDelegationTextIfAvailable();
+                }
+                return;
+            }
+            case DO_DISCARD_HANDWRITING_DELEGATION_TEXT: {
+                if (isValid(inputMethod, target, "DO_DISCARD_HANDWRITING_DELEGATION_TEXT")) {
+                    inputMethod.discardHandwritingDelegationText();
+                }
+                return;
+            }
         }
         Log.w(TAG, "Unhandled message code: " + msg.what);
     }
@@ -457,10 +478,13 @@
 
     @BinderThread
     @Override
-    public void canStartStylusHandwriting(int requestId)
+    public void canStartStylusHandwriting(int requestId,
+            IConnectionlessHandwritingCallback connectionlessCallback,
+            CursorAnchorInfo cursorAnchorInfo, boolean isConnectionlessForDelegation)
             throws RemoteException {
-        mCaller.executeOrSendMessage(
-                mCaller.obtainMessageI(DO_CAN_START_STYLUS_HANDWRITING, requestId));
+        mCaller.executeOrSendMessage(mCaller.obtainMessageIIOO(DO_CAN_START_STYLUS_HANDWRITING,
+                requestId, isConnectionlessForDelegation ? 1 : 0, connectionlessCallback,
+                cursorAnchorInfo));
     }
 
     @BinderThread
@@ -483,6 +507,19 @@
 
     @BinderThread
     @Override
+    public void commitHandwritingDelegationTextIfAvailable() {
+        mCaller.executeOrSendMessage(
+                mCaller.obtainMessage(DO_COMMIT_HANDWRITING_DELEGATION_TEXT_IF_AVAILABLE));
+    }
+
+    @BinderThread
+    @Override
+    public void discardHandwritingDelegationText() {
+        mCaller.executeOrSendMessage(mCaller.obtainMessage(DO_DISCARD_HANDWRITING_DELEGATION_TEXT));
+    }
+
+    @BinderThread
+    @Override
     public void initInkWindow() {
         mCaller.executeOrSendMessage(mCaller.obtainMessage(DO_INIT_INK_WINDOW));
     }
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 281ee50..2c7ca27 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -51,6 +51,10 @@
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import static android.view.WindowInsets.Type.navigationBars;
 import static android.view.WindowInsets.Type.statusBars;
+import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED;
+import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_OTHER;
+import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED;
+import static android.view.inputmethod.Flags.FLAG_CONNECTIONLESS_HANDWRITING;
 
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
@@ -58,6 +62,7 @@
 import android.annotation.CallSuper;
 import android.annotation.DrawableRes;
 import android.annotation.DurationMillisLong;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.MainThread;
 import android.annotation.NonNull;
@@ -89,6 +94,7 @@
 import android.os.IBinder;
 import android.os.Looper;
 import android.os.Process;
+import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.SystemClock;
 import android.os.SystemProperties;
@@ -97,6 +103,7 @@
 import android.text.InputType;
 import android.text.Layout;
 import android.text.Spannable;
+import android.text.TextUtils;
 import android.text.method.MovementMethod;
 import android.util.Log;
 import android.util.PrintWriterPrinter;
@@ -123,6 +130,7 @@
 import android.view.WindowManager;
 import android.view.animation.AnimationUtils;
 import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.ConnectionlessHandwritingCallback;
 import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.ExtractedText;
@@ -151,6 +159,7 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputContentUriToken;
 import com.android.internal.inputmethod.IInputMethod;
@@ -174,6 +183,7 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.OptionalInt;
+import java.util.concurrent.Executor;
 
 /**
  * InputMethodService provides a standard implementation of an InputMethod,
@@ -665,6 +675,12 @@
     /** Stylus handwriting Ink window. */
     private InkWindow mInkWindow;
 
+    private IConnectionlessHandwritingCallback mConnectionlessHandwritingCallback;
+    private boolean mIsConnectionlessHandwritingForDelegation;
+    // Holds the recognized text from a connectionless handwriting session which can later be
+    // committed by commitHandwritingDelegationTextIfAvailable().
+    private CharSequence mHandwritingDelegationText;
+
     /**
      * An opaque {@link Binder} token of window requesting {@link InputMethodImpl#showSoftInput}
      * The original app window token is passed from client app window.
@@ -1017,7 +1033,10 @@
          * @hide
          */
         @Override
-        public void canStartStylusHandwriting(int requestId) {
+        public void canStartStylusHandwriting(int requestId,
+                @Nullable IConnectionlessHandwritingCallback connectionlessCallback,
+                @Nullable CursorAnchorInfo cursorAnchorInfo,
+                boolean isConnectionlessForDelegation) {
             if (DEBUG) Log.v(TAG, "canStartStylusHandwriting()");
             if (mHandwritingRequestId.isPresent()) {
                 Log.d(TAG, "There is an ongoing Handwriting session. ignoring.");
@@ -1034,7 +1053,24 @@
             }
             // reset flag as it's not relevant after onStartStylusHandwriting().
             mOnPreparedStylusHwCalled = false;
-            if (onStartStylusHandwriting()) {
+            if (connectionlessCallback != null) {
+                if (onStartConnectionlessStylusHandwriting(
+                        InputType.TYPE_CLASS_TEXT, cursorAnchorInfo)) {
+                    mConnectionlessHandwritingCallback = connectionlessCallback;
+                    mIsConnectionlessHandwritingForDelegation = isConnectionlessForDelegation;
+                    cancelStylusWindowIdleTimeout();
+                    mPrivOps.onStylusHandwritingReady(requestId, Process.myPid());
+                } else {
+                    Log.i(TAG, "IME is not ready "
+                            + "or doesn't currently support connectionless handwriting");
+                    try {
+                        connectionlessCallback.onError(
+                                CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED);
+                    } catch (RemoteException e) {
+                        Log.e(TAG, "Couldn't send connectionless handwriting error result", e);
+                    }
+                }
+            } else if (onStartStylusHandwriting()) {
                 cancelStylusWindowIdleTimeout();
                 mPrivOps.onStylusHandwritingReady(requestId, Process.myPid());
             } else {
@@ -1093,6 +1129,24 @@
          * @hide
          */
         @Override
+        public void commitHandwritingDelegationTextIfAvailable() {
+            InputMethodService.this.commitHandwritingDelegationTextIfAvailable();
+        }
+
+        /**
+         * {@inheritDoc}
+         * @hide
+         */
+        @Override
+        public void discardHandwritingDelegationText() {
+            InputMethodService.this.discardHandwritingDelegationText();
+        }
+
+        /**
+         * {@inheritDoc}
+         * @hide
+         */
+        @Override
         public void initInkWindow() {
             maybeCreateAndInitInkWindow();
             onPrepareStylusHandwriting();
@@ -2581,6 +2635,32 @@
     }
 
     /**
+     * Called when an app requests to start a connectionless stylus handwriting session using one of
+     * {@link InputMethodManager#startConnectionlessStylusHandwriting(View, CursorAnchorInfo,
+     * Executor, ConnectionlessHandwritingCallback)}, {@link
+     * InputMethodManager#startConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo,
+     * Executor, ConnectionlessHandwritingCallback)}, or {@link
+     * InputMethodManager#startConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo,
+     * String, Executor, ConnectionlessHandwritingCallback)}.
+     *
+     * <p>A connectionless stylus handwriting session differs from a regular session in that an
+     * input connection is not used to communicate with a text editor. Instead, the recognised text
+     * is delivered when the IME finishes the connectionless session using {@link
+     * #finishConnectionlessStylusHandwriting(CharSequence)}.
+     *
+     * <p>If the IME can start the connectionless handwriting session, it should return {@code
+     * true}, ensure its inking views are attached to the {@link #getStylusHandwritingWindow()}, and
+     * handle stylus input received from {@link #onStylusHandwritingMotionEvent(MotionEvent)} on the
+     * {@link #getStylusHandwritingWindow()}.
+     */
+    @FlaggedApi(FLAG_CONNECTIONLESS_HANDWRITING)
+    public boolean onStartConnectionlessStylusHandwriting(
+            int inputType, @Nullable CursorAnchorInfo cursorAnchorInfo) {
+        // Intentionally empty
+        return false;
+    }
+
+    /**
      * Called after {@link #onStartStylusHandwriting()} returns {@code true} for every Stylus
      * {@link MotionEvent}.
      * By default, this method forwards all {@link MotionEvent}s to the
@@ -2647,16 +2727,19 @@
     /**
      * Finish the current stylus handwriting session.
      *
-     * This dismisses the {@link #getStylusHandwritingWindow ink window} and stops intercepting
+     * <p>This dismisses the {@link #getStylusHandwritingWindow ink window} and stops intercepting
      * stylus {@code MotionEvent}s.
      *
-     * Note for IME developers: Call this method at any time to finish current handwriting session.
-     * Generally, this should be invoked after a short timeout, giving the user enough time
+     * <p>Note for IME developers: Call this method at any time to finish the current handwriting
+     * session. Generally, this should be invoked after a short timeout, giving the user enough time
      * to start the next stylus stroke, if any. By default, system will time-out after few seconds.
      * To override default timeout, use {@link #setStylusHandwritingSessionTimeout(Duration)}.
      *
-     * Handwriting session will be finished by framework on next {@link #onFinishInput()}.
+     * <p>Handwriting session will be finished by framework on next {@link #onFinishInput()}.
      */
+    // TODO(b/300979854): Once connectionless APIs are finalised, update documentation to add:
+    // <p>Connectionless handwriting sessions should be finished using {@link
+    // #finishConnectionlessStylusHandwriting(CharSequence)}.
     public final void finishStylusHandwriting() {
         if (DEBUG) Log.v(TAG, "finishStylusHandwriting()");
         if (mInkWindow == null) {
@@ -2677,12 +2760,71 @@
         mHandwritingEventReceiver = null;
         mInkWindow.hide(false /* remove */);
 
+        if (mConnectionlessHandwritingCallback != null) {
+            Log.i(TAG, "Connectionless handwriting session did not complete successfully");
+            try {
+                mConnectionlessHandwritingCallback.onError(CONNECTIONLESS_HANDWRITING_ERROR_OTHER);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Couldn't send connectionless handwriting error result", e);
+            }
+            mConnectionlessHandwritingCallback = null;
+        }
+        mIsConnectionlessHandwritingForDelegation = false;
+
         mPrivOps.resetStylusHandwriting(requestId);
         mOnPreparedStylusHwCalled = false;
         onFinishStylusHandwriting();
     }
 
     /**
+     * Finishes the current connectionless stylus handwriting session and delivers the result.
+     *
+     * <p>This dismisses the {@link #getStylusHandwritingWindow ink window} and stops intercepting
+     * stylus {@code MotionEvent}s.
+     *
+     * <p>Note for IME developers: Call this method at any time to finish the current handwriting
+     * session. Generally, this should be invoked after a short timeout, giving the user enough time
+     * to start the next stylus stroke, if any. By default, system will time-out after few seconds.
+     * To override default timeout, use {@link #setStylusHandwritingSessionTimeout(Duration)}.
+     */
+    @FlaggedApi(FLAG_CONNECTIONLESS_HANDWRITING)
+    public final void finishConnectionlessStylusHandwriting(@Nullable CharSequence text) {
+        if (DEBUG) Log.v(TAG, "finishConnectionlessStylusHandwriting()");
+        if (mConnectionlessHandwritingCallback != null) {
+            try {
+                if (!TextUtils.isEmpty(text)) {
+                    mConnectionlessHandwritingCallback.onResult(text);
+                    if (mIsConnectionlessHandwritingForDelegation) {
+                        mHandwritingDelegationText = text;
+                    }
+                } else {
+                    mConnectionlessHandwritingCallback.onError(
+                            CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED);
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "Couldn't send connectionless handwriting result", e);
+            }
+            mConnectionlessHandwritingCallback = null;
+        }
+        finishStylusHandwriting();
+    }
+
+    private void commitHandwritingDelegationTextIfAvailable() {
+        if (!TextUtils.isEmpty(mHandwritingDelegationText)) {
+            InputConnection ic = getCurrentInputConnection();
+            if (ic != null) {
+                // Place cursor after inserted text.
+                ic.commitText(mHandwritingDelegationText, /* newCursorPosition= */ 1);
+            }
+        }
+        mHandwritingDelegationText = null;
+    }
+
+    private void discardHandwritingDelegationText() {
+        mHandwritingDelegationText = null;
+    }
+
+    /**
      * Remove Stylus handwriting window.
      * Typically, this is called when {@link InkWindow} should no longer be holding a surface in
      * memory.
diff --git a/core/java/android/os/BadParcelableException.java b/core/java/android/os/BadParcelableException.java
index 9b1343c..3c0fa0e 100644
--- a/core/java/android/os/BadParcelableException.java
+++ b/core/java/android/os/BadParcelableException.java
@@ -25,6 +25,7 @@
  * passed to another process that doesn't have the same {@link Parcelable} class
  * in its {@link ClassLoader}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class BadParcelableException extends AndroidRuntimeException {
     public BadParcelableException(String msg) {
         super(msg);
diff --git a/core/java/android/os/BadTypeParcelableException.java b/core/java/android/os/BadTypeParcelableException.java
index 2ca3bd2..cc75c73 100644
--- a/core/java/android/os/BadTypeParcelableException.java
+++ b/core/java/android/os/BadTypeParcelableException.java
@@ -17,6 +17,7 @@
 package android.os;
 
 /** Used by Parcel to signal that the type on the payload was not expected by the caller. */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 class BadTypeParcelableException extends BadParcelableException {
     BadTypeParcelableException(String msg) {
         super(msg);
diff --git a/core/java/android/os/BaseBundle.java b/core/java/android/os/BaseBundle.java
index 4e3adfb..9a63394 100644
--- a/core/java/android/os/BaseBundle.java
+++ b/core/java/android/os/BaseBundle.java
@@ -43,6 +43,7 @@
  * should work directly with either the {@link Bundle} or
  * {@link PersistableBundle} subclass.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class BaseBundle {
     /** @hide */
     protected static final String TAG = "Bundle";
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index a6b2ed0..e090942 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -1899,7 +1899,7 @@
         public short batteryTemperature;
         // Battery voltage in millivolts (mV).
         @UnsupportedAppUsage
-        public char batteryVoltage;
+        public short batteryVoltage;
 
         // The charge of the battery in micro-Ampere-hours.
         public int batteryChargeUah;
@@ -2161,7 +2161,7 @@
             batteryPlugType = (byte)((bat>>24)&0xf);
             int bat2 = src.readInt();
             batteryTemperature = (short)(bat2&0xffff);
-            batteryVoltage = (char)((bat2>>16)&0xffff);
+            batteryVoltage = (short) ((bat2 >> 16) & 0xffff);
             batteryChargeUah = src.readInt();
             modemRailChargeMah = src.readDouble();
             wifiRailChargeMah = src.readDouble();
diff --git a/core/java/android/os/BugreportParams.java b/core/java/android/os/BugreportParams.java
index f2ef185..f7b4173 100644
--- a/core/java/android/os/BugreportParams.java
+++ b/core/java/android/os/BugreportParams.java
@@ -21,7 +21,6 @@
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.admin.flags.Flags;
-import android.compat.annotation.UnsupportedAppUsage;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -127,12 +126,8 @@
 
     /**
      * Options for a lightweight bugreport intended to be taken for onboarding-related flows.
-     *
-     * @hide
      */
-    @TestApi
     @FlaggedApi(Flags.FLAG_ONBOARDING_BUGREPORT_V2_ENABLED)
-    @UnsupportedAppUsage
     public static final int BUGREPORT_MODE_ONBOARDING = IDumpstate.BUGREPORT_MODE_ONBOARDING;
 
     /**
@@ -180,10 +175,7 @@
      * The bugreport may be retrieved multiple times using
      * {@link BugreportManager#retrieveBugreport(
      * String, ParcelFileDescriptor, Executor, BugreportManager.BugreportCallback)}.
-     *
-     * @hide
      */
-    @TestApi
     @FlaggedApi(Flags.FLAG_ONBOARDING_BUGREPORT_V2_ENABLED)
     public static final int BUGREPORT_FLAG_KEEP_BUGREPORT_ON_RETRIEVAL =
             IDumpstate.BUGREPORT_FLAG_KEEP_BUGREPORT_ON_RETRIEVAL;
diff --git a/core/java/android/os/Bundle.java b/core/java/android/os/Bundle.java
index e845ffa..387eebe 100644
--- a/core/java/android/os/Bundle.java
+++ b/core/java/android/os/Bundle.java
@@ -42,6 +42,7 @@
  *
  * @see PersistableBundle
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
     @VisibleForTesting
     static final int FLAG_HAS_FDS = 1 << 8;
diff --git a/core/java/android/os/CancellationSignal.java b/core/java/android/os/CancellationSignal.java
index 260f7ad..74ab774 100644
--- a/core/java/android/os/CancellationSignal.java
+++ b/core/java/android/os/CancellationSignal.java
@@ -21,6 +21,7 @@
 /**
  * Provides the ability to cancel an operation in progress.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class CancellationSignal {
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
     private boolean mIsCanceled;
diff --git a/core/java/android/os/DeadObjectException.java b/core/java/android/os/DeadObjectException.java
index 61aa222..fc3870e 100644
--- a/core/java/android/os/DeadObjectException.java
+++ b/core/java/android/os/DeadObjectException.java
@@ -43,6 +43,7 @@
  * this information at runtime. So, you should handle the
  * error, as if the service died.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class DeadObjectException extends RemoteException {
     public DeadObjectException() {
         super();
diff --git a/core/java/android/os/DeadSystemException.java b/core/java/android/os/DeadSystemException.java
index 8fb53e2..3aff48a 100644
--- a/core/java/android/os/DeadSystemException.java
+++ b/core/java/android/os/DeadSystemException.java
@@ -20,6 +20,7 @@
  * The core Android system has died and is going through a runtime restart. All
  * running apps will be promptly killed.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class DeadSystemException extends DeadObjectException {
     public DeadSystemException() {
         super();
diff --git a/core/java/android/os/HandlerExecutor.java b/core/java/android/os/HandlerExecutor.java
index 416b24b..3496979 100644
--- a/core/java/android/os/HandlerExecutor.java
+++ b/core/java/android/os/HandlerExecutor.java
@@ -29,6 +29,8 @@
  *
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class HandlerExecutor implements Executor {
     private final Handler mHandler;
 
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index fbec518..3950c25 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -42,7 +42,7 @@
  */
 @android.ravenwood.annotation.RavenwoodKeepWholeClass
 @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-        "com.android.hoststubgen.nativesubstitution.MessageQueue_host")
+        "com.android.platform.test.ravenwood.nativesubstitution.MessageQueue_host")
 public final class MessageQueue {
     private static final String TAG = "MessageQueue";
     private static final boolean DEBUG = false;
diff --git a/core/java/android/os/Parcel.java b/core/java/android/os/Parcel.java
index 8e860c3..ccfb632 100644
--- a/core/java/android/os/Parcel.java
+++ b/core/java/android/os/Parcel.java
@@ -233,7 +233,8 @@
  * {@link #readSparseArray(ClassLoader, Class)}.
  */
 @RavenwoodKeepWholeClass
-@RavenwoodNativeSubstitutionClass("com.android.hoststubgen.nativesubstitution.Parcel_host")
+@RavenwoodNativeSubstitutionClass(
+        "com.android.platform.test.ravenwood.nativesubstitution.Parcel_host")
 public final class Parcel {
 
     private static final boolean DEBUG_RECYCLE = false;
diff --git a/core/java/android/os/ParcelFileDescriptor.java b/core/java/android/os/ParcelFileDescriptor.java
index 6532d5c..17dfdda 100644
--- a/core/java/android/os/ParcelFileDescriptor.java
+++ b/core/java/android/os/ParcelFileDescriptor.java
@@ -75,7 +75,8 @@
  * you to close it when done with it.
  */
 @RavenwoodKeepWholeClass
-@RavenwoodNativeSubstitutionClass("com.android.hoststubgen.nativesubstitution.ParcelFileDescriptor_host")
+@RavenwoodNativeSubstitutionClass(
+        "com.android.platform.test.ravenwood.nativesubstitution.ParcelFileDescriptor_host")
 public class ParcelFileDescriptor implements Parcelable, Closeable {
     private static final String TAG = "ParcelFileDescriptor";
 
diff --git a/core/java/android/os/ParcelFormatException.java b/core/java/android/os/ParcelFormatException.java
index 8b6fda0..6dcc1dc 100644
--- a/core/java/android/os/ParcelFormatException.java
+++ b/core/java/android/os/ParcelFormatException.java
@@ -20,6 +20,7 @@
  * The contents of a Parcel (usually during unmarshalling) does not
  * contain the expected data.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class ParcelFormatException extends RuntimeException {
     public ParcelFormatException() {
         super();
diff --git a/core/java/android/os/ParcelUuid.java b/core/java/android/os/ParcelUuid.java
index b529694..a35c050 100644
--- a/core/java/android/os/ParcelUuid.java
+++ b/core/java/android/os/ParcelUuid.java
@@ -26,6 +26,7 @@
  * immutable representation of a 128-bit universally unique
  * identifier.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class ParcelUuid implements Parcelable {
 
     private final UUID mUuid;
diff --git a/core/java/android/os/PatternMatcher.java b/core/java/android/os/PatternMatcher.java
index 79a2c59..a79714c 100644
--- a/core/java/android/os/PatternMatcher.java
+++ b/core/java/android/os/PatternMatcher.java
@@ -29,6 +29,7 @@
  * not provide full reg-exp support, only simple globbing that can not be
  * used maliciously.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class PatternMatcher implements Parcelable {
     /**
      * Pattern type: the given pattern must exactly match the string it is
diff --git a/core/java/android/os/PersistableBundle.java b/core/java/android/os/PersistableBundle.java
index 236194d..0c1ea4d 100644
--- a/core/java/android/os/PersistableBundle.java
+++ b/core/java/android/os/PersistableBundle.java
@@ -49,6 +49,7 @@
  *
  * @see Bundle
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class PersistableBundle extends BaseBundle implements Cloneable, Parcelable,
         XmlUtils.WriteMapCallback {
     private static final String TAG = "PersistableBundle";
diff --git a/core/java/android/os/ProfilingServiceManager.java b/core/java/android/os/ProfilingServiceManager.java
new file mode 100644
index 0000000..cc77f5b
--- /dev/null
+++ b/core/java/android/os/ProfilingServiceManager.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2024 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 android.os;
+
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
+
+/**
+ * Provides a way to register and obtain the system service binder objects managed by the profiling
+ * service.
+ *
+ * <p> Only the profiling mainline module will be able to access an instance of this class.
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_TELEMETRY_APIS_FRAMEWORK_INITIALIZATION)
+@SystemApi(client = Client.MODULE_LIBRARIES)
+public class ProfilingServiceManager {
+
+    /** @hide */
+    public ProfilingServiceManager() {}
+
+    /**
+     * A class that exposes the methods to register and obtain each system service.
+     */
+    public static final class ServiceRegisterer {
+        private final String mServiceName;
+
+        /** @hide */
+        public ServiceRegisterer(String serviceName) {
+            mServiceName = serviceName;
+        }
+
+        /**
+         * Get the system server binding object for ProfilingService.
+         *
+         * <p> This blocks until the service instance is ready.
+         * or a timeout happens, in which case it returns null.
+         */
+        @Nullable
+        public IBinder get() {
+            return ServiceManager.getService(mServiceName);
+        }
+
+        /**
+         * Get the system server binding object for a service.
+         *
+         * <p>This blocks until the service instance is ready,
+         * or a timeout happens, in which case it throws {@link ServiceNotFoundException}.
+         */
+        @Nullable
+        public IBinder getOrThrow() throws ServiceNotFoundException {
+            try {
+                return ServiceManager.getServiceOrThrow(mServiceName);
+            } catch (ServiceManager.ServiceNotFoundException e) {
+                throw new ServiceNotFoundException(mServiceName);
+            }
+        }
+    }
+
+    /**
+     * See {@link ServiceRegisterer#getOrThrow()}
+     */
+    public static class ServiceNotFoundException extends ServiceManager.ServiceNotFoundException {
+        /**
+         * Constructor
+         *
+         * @param name the name of the binder service that cannot be found.
+         */
+        public ServiceNotFoundException(@NonNull String name) {
+            super(name);
+        }
+    }
+
+    /**
+     * Returns {@link ServiceRegisterer} for the "profiling" service.
+     */
+    @NonNull
+    public ServiceRegisterer getProfilingServiceRegisterer() {
+        return new ServiceRegisterer("profiling_service");
+    }
+}
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index 07f7690..b669814 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -1418,8 +1418,11 @@
      * @throws IOException if the recovery system service could not be contacted
      */
     private boolean requestLskf(String packageName, IntentSender sender) throws IOException {
+        Log.i(TAG, String.format("<%s> is requesting LSFK", packageName));
         try {
-            return mService.requestLskf(packageName, sender);
+            boolean validRequest = mService.requestLskf(packageName, sender);
+            Log.i(TAG, String.format("LSKF Request isValid = %b", validRequest));
+            return validRequest;
         } catch (RemoteException | SecurityException e) {
             throw new IOException("could not request LSKF capture", e);
         }
diff --git a/core/java/android/os/RemoteCallback.java b/core/java/android/os/RemoteCallback.java
index 49f84adf..eca1258 100644
--- a/core/java/android/os/RemoteCallback.java
+++ b/core/java/android/os/RemoteCallback.java
@@ -25,6 +25,7 @@
  * @hide
  */
 @SystemApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class RemoteCallback implements Parcelable {
 
     public interface OnResultListener {
@@ -84,6 +85,11 @@
         }
     }
 
+    /** @hide */
+    public IRemoteCallback getInterface() {
+        return mCallback;
+    }
+
     @Override
     public int describeContents() {
         return 0;
diff --git a/core/java/android/os/RemoteCallbackList.java b/core/java/android/os/RemoteCallbackList.java
index 2c58021..2cb86f7 100644
--- a/core/java/android/os/RemoteCallbackList.java
+++ b/core/java/android/os/RemoteCallbackList.java
@@ -52,6 +52,7 @@
  * additional work in this situation, you can create a subclass that
  * implements the {@link #onCallbackDied} method.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class RemoteCallbackList<E extends IInterface> {
     private static final String TAG = "RemoteCallbackList";
 
diff --git a/core/java/android/os/RemoteException.java b/core/java/android/os/RemoteException.java
index ace5f7e..27fe0cf 100644
--- a/core/java/android/os/RemoteException.java
+++ b/core/java/android/os/RemoteException.java
@@ -28,6 +28,7 @@
  *
  * One common subclass is {@link DeadObjectException}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class RemoteException extends AndroidException {
     public RemoteException() {
         super();
diff --git a/core/java/android/os/ResultReceiver.java b/core/java/android/os/ResultReceiver.java
index f2d8fe4..23af51a9 100644
--- a/core/java/android/os/ResultReceiver.java
+++ b/core/java/android/os/ResultReceiver.java
@@ -31,6 +31,7 @@
  * the system that your process needs to continue running), the connection will
  * break if your process goes away for any reason, etc.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class ResultReceiver implements Parcelable {
     final boolean mLocal;
     final Handler mHandler;
diff --git a/core/java/android/os/SystemProperties.java b/core/java/android/os/SystemProperties.java
index a818919..0a38691 100644
--- a/core/java/android/os/SystemProperties.java
+++ b/core/java/android/os/SystemProperties.java
@@ -56,7 +56,8 @@
  */
 @SystemApi
 @RavenwoodKeepWholeClass
-@RavenwoodNativeSubstitutionClass("com.android.hoststubgen.nativesubstitution.SystemProperties_host")
+@RavenwoodNativeSubstitutionClass(
+        "com.android.platform.test.ravenwood.nativesubstitution.SystemProperties_host")
 public class SystemProperties {
     private static final String TAG = "SystemProperties";
     private static final boolean TRACK_KEY_ACCESS = false;
diff --git a/core/java/android/os/TransactionTooLargeException.java b/core/java/android/os/TransactionTooLargeException.java
index 4d5b2a1..79892e0 100644
--- a/core/java/android/os/TransactionTooLargeException.java
+++ b/core/java/android/os/TransactionTooLargeException.java
@@ -54,6 +54,7 @@
  * later as needed.
  * </p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class TransactionTooLargeException extends RemoteException {
     public TransactionTooLargeException() {
         super();
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index de32423..2b30a2b 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -163,19 +163,16 @@
      * User type representing a managed profile, which is a profile that is to be managed by a
      * device policy controller (DPC).
      * The intended purpose is for work profiles, which are managed by a corporate entity.
-     * @hide
      */
-    @SystemApi
+    @FlaggedApi(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE)
     public static final String USER_TYPE_PROFILE_MANAGED = "android.os.usertype.profile.MANAGED";
 
     /**
      * User type representing a clone profile. Clone profile is a user profile type used to run
      * second instance of an otherwise single user App (eg, messengers). Currently only the
      * {@link android.content.pm.UserInfo#isMain()} user can have a clone profile.
-     *
-     * @hide
      */
-    @SystemApi
+    @FlaggedApi(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE)
     public static final String USER_TYPE_PROFILE_CLONE = "android.os.usertype.profile.CLONE";
 
 
@@ -184,10 +181,8 @@
      * as an alternative user-space to install and use sensitive apps.
      * UI surfaces can adopt an alternative strategy to show apps belonging to this profile, in line
      * with their sensitive nature.
-     * @hide
      */
     @FlaggedApi(android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE)
-    @SystemApi
     public static final String USER_TYPE_PROFILE_PRIVATE = "android.os.usertype.profile.PRIVATE";
 
     /**
@@ -1785,7 +1780,11 @@
     /**
      * Specifies whether the user is allowed to modify default apps in settings.
      *
-     * <p>This restriction can be set by device or profile owner.
+     * <p>A device owner and a profile owner can set this restriction. When it is set by a
+     * device owner, it applies globally - i.e., modifying of default apps in Settings for all
+     * users is disallowed. When it is set by a profile owner on the primary user or by a profile
+     * owner of an organization-owned managed profile on the parent profile, modifying of
+     * default apps in Settings for the primary user is disallowed.
      *
      * <p>The default value is <code>false</code>.
      *
@@ -1955,6 +1954,26 @@
             "no_sim_globally";
 
     /**
+     * This user restriction specifies if assist content is disallowed from being sent to
+     * a privileged app such as the Assistant app. Assist content includes screenshots and
+     * information about an app, such as package name.
+     *
+     * <p>This restriction can only be set by a device owner or a profile owner. When it is set
+     * by a device owner, it disables the assist contextual data on the entire device. When it is
+     * set by a profile owner, it disables assist content on the profile.
+     *
+     * <p>Default is <code>false</code>.
+     *
+     * <p>Key for user restrictions.
+     * <p>Type: Boolean
+     * @see DevicePolicyManager#addUserRestriction(ComponentName, String)
+     * @see DevicePolicyManager#clearUserRestriction(ComponentName, String)
+     * @see #getUserRestrictions()
+     */
+    @FlaggedApi(android.app.admin.flags.Flags.FLAG_ASSIST_CONTENT_USER_RESTRICTION_ENABLED)
+    public static final String DISALLOW_ASSIST_CONTENT = "no_assist_content";
+
+    /**
      * List of key values that can be passed into the various user restriction related methods
      * in {@link UserManager} & {@link DevicePolicyManager}.
      * Note: This is slightly different from the real set of user restrictions listed in {@link
@@ -2042,6 +2061,7 @@
             DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO,
             DISALLOW_THREAD_NETWORK,
             DISALLOW_SIM_GLOBALLY,
+            DISALLOW_ASSIST_CONTENT,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface UserRestrictionKey {}
@@ -3238,7 +3258,11 @@
         return isProfile(mUserId);
     }
 
-    private boolean isProfile(@UserIdInt int userId) {
+    /**
+     * Returns whether the specified user is a profile.
+     * @hide
+     */
+    public boolean isProfile(@UserIdInt int userId) {
         final String profileType = getProfileType(userId);
         return profileType != null && !profileType.equals("");
     }
diff --git a/core/java/android/os/storage/OWNERS b/core/java/android/os/storage/OWNERS
index 6941857..2cb16d337b 100644
--- a/core/java/android/os/storage/OWNERS
+++ b/core/java/android/os/storage/OWNERS
@@ -10,7 +10,6 @@
 krishang@google.com
 riyaghai@google.com
 sahanas@google.com
-sergeynv@google.com
 shikhamalhotra@google.com
 shubhisaxena@google.com
 tylersaunders@google.com
diff --git a/core/java/android/os/vibrator/flags.aconfig b/core/java/android/os/vibrator/flags.aconfig
index ea9375e..d485eca 100644
--- a/core/java/android/os/vibrator/flags.aconfig
+++ b/core/java/android/os/vibrator/flags.aconfig
@@ -16,13 +16,6 @@
 
 flag {
     namespace: "haptics"
-    name: "enable_vibration_serialization_apis"
-    description: "Enables the APIs for vibration serialization/deserialization."
-    bug: "245129509"
-}
-
-flag {
-    namespace: "haptics"
     name: "haptic_feedback_vibration_oem_customization_enabled"
     description: "Enables OEMs/devices to customize vibrations for haptic feedback"
     # Make read only. This is because the flag is used only once, and this could happen before
diff --git a/core/java/android/os/vibrator/persistence/ParsedVibration.java b/core/java/android/os/vibrator/persistence/ParsedVibration.java
index 3d1deea..a16d21e 100644
--- a/core/java/android/os/vibrator/persistence/ParsedVibration.java
+++ b/core/java/android/os/vibrator/persistence/ParsedVibration.java
@@ -16,9 +16,9 @@
 
 package android.os.vibrator.persistence;
 
-import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.TestApi;
 import android.os.VibrationEffect;
 import android.os.Vibrator;
@@ -35,8 +35,8 @@
  *
  * @hide
  */
-@FlaggedApi(android.os.vibrator.Flags.FLAG_ENABLE_VIBRATION_SERIALIZATION_APIS)
 @TestApi
+@SuppressLint("UnflaggedApi") // @TestApi without associated feature.
 public class ParsedVibration {
     private final List<VibrationEffect> mEffects;
 
diff --git a/core/java/android/os/vibrator/persistence/VibrationXmlParser.java b/core/java/android/os/vibrator/persistence/VibrationXmlParser.java
index 3d711a7..7202d9a 100644
--- a/core/java/android/os/vibrator/persistence/VibrationXmlParser.java
+++ b/core/java/android/os/vibrator/persistence/VibrationXmlParser.java
@@ -16,10 +16,10 @@
 
 package android.os.vibrator.persistence;
 
-import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.TestApi;
 import android.os.VibrationEffect;
 import android.util.Slog;
@@ -116,8 +116,8 @@
  *
  * @hide
  */
-@FlaggedApi(android.os.vibrator.Flags.FLAG_ENABLE_VIBRATION_SERIALIZATION_APIS)
 @TestApi
+@SuppressLint("UnflaggedApi") // @TestApi without associated feature.
 public final class VibrationXmlParser {
     private static final String TAG = "VibrationXmlParser";
 
diff --git a/core/java/android/os/vibrator/persistence/VibrationXmlSerializer.java b/core/java/android/os/vibrator/persistence/VibrationXmlSerializer.java
index 2880454..2065d5d 100644
--- a/core/java/android/os/vibrator/persistence/VibrationXmlSerializer.java
+++ b/core/java/android/os/vibrator/persistence/VibrationXmlSerializer.java
@@ -16,9 +16,9 @@
 
 package android.os.vibrator.persistence;
 
-import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.SuppressLint;
 import android.annotation.TestApi;
 import android.os.CombinedVibration;
 import android.os.VibrationEffect;
@@ -43,8 +43,8 @@
  *
  * @hide
  */
-@FlaggedApi(android.os.vibrator.Flags.FLAG_ENABLE_VIBRATION_SERIALIZATION_APIS)
 @TestApi
+@SuppressLint("UnflaggedApi") // @TestApi without associated feature.
 public final class VibrationXmlSerializer {
 
     /**
diff --git a/core/java/android/permission/PermissionGroupUsage.java b/core/java/android/permission/PermissionGroupUsage.java
index 49b7463..6895d3c 100644
--- a/core/java/android/permission/PermissionGroupUsage.java
+++ b/core/java/android/permission/PermissionGroupUsage.java
@@ -17,6 +17,7 @@
 package android.permission;
 
 import android.annotation.CurrentTimeMillisLong;
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
@@ -26,8 +27,8 @@
 
 /**
  * Represents the usage of a permission group by an app. Supports package name, user, permission
- * group, whether or not the access is running or recent, whether the access is tied to a phone
- * call, and an optional special attribution tag, label and proxy label.
+ * group, persistent device Id, whether or not the access is running or recent, whether the access
+ * is tied to a phone call, and an optional special attribution tag, label and proxy label.
  *
  * @hide
  */
@@ -48,6 +49,7 @@
     private final @Nullable CharSequence mAttributionTag;
     private final @Nullable CharSequence mAttributionLabel;
     private final @Nullable CharSequence mProxyLabel;
+    private final @NonNull String mPersistentDeviceId;
 
 
 
@@ -79,7 +81,8 @@
             boolean phoneCall,
             @Nullable CharSequence attributionTag,
             @Nullable CharSequence attributionLabel,
-            @Nullable CharSequence proxyLabel) {
+            @Nullable CharSequence proxyLabel,
+            @NonNull String persistentDeviceId) {
         this.mPackageName = packageName;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mPackageName);
@@ -93,6 +96,9 @@
         this.mAttributionTag = attributionTag;
         this.mAttributionLabel = attributionLabel;
         this.mProxyLabel = proxyLabel;
+        this.mPersistentDeviceId = persistentDeviceId;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mPersistentDeviceId);
 
         // onConstructed(); // You can define this method to get a callback
     }
@@ -170,6 +176,12 @@
         return mProxyLabel;
     }
 
+    @DataClass.Generated.Member
+    @FlaggedApi(android.permission.flags.Flags.FLAG_DEVICE_AWARE_PERMISSION_APIS_ENABLED)
+    public @NonNull String getPersistentDeviceId() {
+        return mPersistentDeviceId;
+    }
+
     @Override
     @DataClass.Generated.Member
     public String toString() {
@@ -185,7 +197,8 @@
                 "phoneCall = " + mPhoneCall + ", " +
                 "attributionTag = " + mAttributionTag + ", " +
                 "attributionLabel = " + mAttributionLabel + ", " +
-                "proxyLabel = " + mProxyLabel +
+                "proxyLabel = " + mProxyLabel + ", " +
+                "persistentDeviceId = " + mPersistentDeviceId +
         " }";
     }
 
@@ -210,7 +223,8 @@
                 && mPhoneCall == that.mPhoneCall
                 && java.util.Objects.equals(mAttributionTag, that.mAttributionTag)
                 && java.util.Objects.equals(mAttributionLabel, that.mAttributionLabel)
-                && java.util.Objects.equals(mProxyLabel, that.mProxyLabel);
+                && java.util.Objects.equals(mProxyLabel, that.mProxyLabel)
+                && java.util.Objects.equals(mPersistentDeviceId, that.mPersistentDeviceId);
     }
 
     @Override
@@ -229,6 +243,7 @@
         _hash = 31 * _hash + java.util.Objects.hashCode(mAttributionTag);
         _hash = 31 * _hash + java.util.Objects.hashCode(mAttributionLabel);
         _hash = 31 * _hash + java.util.Objects.hashCode(mProxyLabel);
+        _hash = 31 * _hash + java.util.Objects.hashCode(mPersistentDeviceId);
         return _hash;
     }
 
@@ -252,6 +267,7 @@
         if (mAttributionTag != null) dest.writeCharSequence(mAttributionTag);
         if (mAttributionLabel != null) dest.writeCharSequence(mAttributionLabel);
         if (mProxyLabel != null) dest.writeCharSequence(mProxyLabel);
+        dest.writeString(mPersistentDeviceId);
     }
 
     @Override
@@ -275,6 +291,7 @@
         CharSequence attributionTag = (flg & 0x40) == 0 ? null : (CharSequence) in.readCharSequence();
         CharSequence attributionLabel = (flg & 0x80) == 0 ? null : (CharSequence) in.readCharSequence();
         CharSequence proxyLabel = (flg & 0x100) == 0 ? null : (CharSequence) in.readCharSequence();
+        String persistentDeviceId = in.readString();
 
         this.mPackageName = packageName;
         com.android.internal.util.AnnotationValidations.validate(
@@ -289,6 +306,9 @@
         this.mAttributionTag = attributionTag;
         this.mAttributionLabel = attributionLabel;
         this.mProxyLabel = proxyLabel;
+        this.mPersistentDeviceId = persistentDeviceId;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mPersistentDeviceId);
 
         // onConstructed(); // You can define this method to get a callback
     }
@@ -308,10 +328,10 @@
     };
 
     @DataClass.Generated(
-            time = 1645067417023L,
+            time = 1706285211875L,
             codegenVersion = "1.0.23",
             sourceFile = "frameworks/base/core/java/android/permission/PermissionGroupUsage.java",
-            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final  int mUid\nprivate final  long mLastAccessTimeMillis\nprivate final @android.annotation.NonNull java.lang.String mPermissionGroupName\nprivate final  boolean mActive\nprivate final  boolean mPhoneCall\nprivate final @android.annotation.Nullable java.lang.CharSequence mAttributionTag\nprivate final @android.annotation.Nullable java.lang.CharSequence mAttributionLabel\nprivate final @android.annotation.Nullable java.lang.CharSequence mProxyLabel\nclass PermissionGroupUsage extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genHiddenConstructor=true, genEqualsHashCode=true, genToString=true)")
+            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final  int mUid\nprivate final  long mLastAccessTimeMillis\nprivate final @android.annotation.NonNull java.lang.String mPermissionGroupName\nprivate final  boolean mActive\nprivate final  boolean mPhoneCall\nprivate final @android.annotation.Nullable java.lang.CharSequence mAttributionTag\nprivate final @android.annotation.Nullable java.lang.CharSequence mAttributionLabel\nprivate final @android.annotation.Nullable java.lang.CharSequence mProxyLabel\nprivate final @android.annotation.NonNull java.lang.String mPersistentDeviceId\nclass PermissionGroupUsage extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genHiddenConstructor=true, genEqualsHashCode=true, genToString=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java
index e6b8102..fd52c76 100644
--- a/core/java/android/permission/PermissionManager.java
+++ b/core/java/android/permission/PermissionManager.java
@@ -1329,7 +1329,9 @@
     public List<PermissionGroupUsage> getIndicatorAppOpUsageData(boolean micMuted) {
         // Lazily initialize the usage helper
         initializeUsageHelper();
-        return mUsageHelper.getOpUsageData(micMuted);
+        boolean includeMicrophoneUsage = !micMuted;
+        return mUsageHelper.getOpUsageDataByDevice(includeMicrophoneUsage,
+                VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
     }
 
     /**
diff --git a/core/java/android/permission/PermissionUsageHelper.java b/core/java/android/permission/PermissionUsageHelper.java
index 1f798ba..460b4dd 100644
--- a/core/java/android/permission/PermissionUsageHelper.java
+++ b/core/java/android/permission/PermissionUsageHelper.java
@@ -41,6 +41,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.AppOpsManager;
+import android.companion.virtual.VirtualDevice;
+import android.companion.virtual.VirtualDeviceManager;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.Attribution;
@@ -52,10 +54,12 @@
 import android.media.AudioManager;
 import android.os.Process;
 import android.os.UserHandle;
+import android.permission.flags.Flags;
 import android.provider.DeviceConfig;
 import android.telephony.TelephonyManager;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -75,6 +79,8 @@
 public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedListener,
         AppOpsManager.OnOpStartedListener {
 
+    private static final String LOG_TAG = PermissionUsageHelper.class.getName();
+
     /**
      * Whether to show the mic and camera icons.
      */
@@ -159,6 +165,7 @@
     private ArrayMap<UserHandle, Context> mUserContexts;
     private PackageManager mPkgManager;
     private AppOpsManager mAppOpsManager;
+    private VirtualDeviceManager mVirtualDeviceManager;
     @GuardedBy("mAttributionChains")
     private final ArrayMap<Integer, ArrayList<AccessChainLink>> mAttributionChains =
             new ArrayMap<>();
@@ -172,6 +179,7 @@
         mContext = context;
         mPkgManager = context.getPackageManager();
         mAppOpsManager = context.getSystemService(AppOpsManager.class);
+        mVirtualDeviceManager = context.getSystemService(VirtualDeviceManager.class);
         mUserContexts = new ArrayMap<>();
         mUserContexts.put(Process.myUserHandle(), mContext);
         // TODO ntmyren: make this listen for flag enable/disable changes
@@ -280,9 +288,11 @@
     }
 
     /**
-     * @see PermissionManager.getIndicatorAppOpUsageData
+     * Return Op usage for CAMERA, LOCATION AND MICROPHONE for all packages for a device.
+     * The returned data is to power privacy indicator.
      */
-    public @NonNull List<PermissionGroupUsage> getOpUsageData(boolean isMicMuted) {
+    public @NonNull List<PermissionGroupUsage> getOpUsageDataByDevice(
+            boolean includeMicrophoneUsage, String deviceId) {
         List<PermissionGroupUsage> usages = new ArrayList<>();
 
         if (!shouldShowIndicators()) {
@@ -293,11 +303,11 @@
         if (shouldShowLocationIndicator()) {
             ops.addAll(LOCATION_OPS);
         }
-        if (!isMicMuted) {
+        if (includeMicrophoneUsage) {
             ops.addAll(MIC_OPS);
         }
 
-        Map<String, List<OpUsage>> rawUsages = getOpUsages(ops);
+        Map<String, List<OpUsage>> rawUsages = getOpUsagesByDevice(ops, deviceId);
 
         ArrayList<String> usedPermGroups = new ArrayList<>(rawUsages.keySet());
 
@@ -349,13 +359,40 @@
                         new PermissionGroupUsage(usage.packageName, usage.uid, usage.lastAccessTime,
                                 permGroup,
                                 usage.isRunning, isPhone, usage.attributionTag, attributionLabel,
-                                usagesWithLabels.valueAt(usageNum)));
+                                usagesWithLabels.valueAt(usageNum),
+                                VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT));
             }
         }
 
         return usages;
     }
 
+    /**
+     * Return Op usage for CAMERA, LOCATION AND MICROPHONE for all packages and all connected
+     * devices.
+     * The returned data is to power privacy indicator.
+     */
+    public @NonNull List<PermissionGroupUsage> getOpUsageDataForAllDevices(
+            boolean includeMicrophoneUsage) {
+        List<PermissionGroupUsage> allUsages = new ArrayList<>();
+        List<VirtualDevice> virtualDevices = mVirtualDeviceManager.getVirtualDevices();
+        ArraySet<String> persistentDeviceIds = new ArraySet<>();
+
+        for (int num = 0; num < virtualDevices.size(); num++) {
+            persistentDeviceIds.add(virtualDevices.get(num).getPersistentDeviceId());
+        }
+        persistentDeviceIds.add(VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
+
+        for (int index = 0; index < persistentDeviceIds.size(); index++) {
+            allUsages.addAll(
+                    getOpUsageDataByDevice(includeMicrophoneUsage,
+                            persistentDeviceIds.valueAt(index)));
+        }
+
+        return allUsages;
+    }
+
+
     private void updateSubattributionLabelsMap(List<OpUsage> usages,
             ArrayMap<String, Map<String, String>> subAttributionLabelsMap) {
         if (usages == null || usages.isEmpty()) {
@@ -443,12 +480,24 @@
      * running/recent info, if the usage is a phone call, per permission group.
      *
      * @param opNames a list of op names to get usage for
+     * @param deviceId which device to get op usage for
      * @return A map of permission group -> list of usages that are recent or running
      */
-    private Map<String, List<OpUsage>> getOpUsages(List<String> opNames) {
+    private Map<String, List<OpUsage>> getOpUsagesByDevice(List<String> opNames, String deviceId) {
         List<AppOpsManager.PackageOps> ops;
         try {
-            ops = mAppOpsManager.getPackagesForOps(opNames.toArray(new String[opNames.size()]));
+            if (Flags.deviceAwarePermissionApisEnabled()) {
+                ops = mAppOpsManager.getPackagesForOps(opNames.toArray(new String[opNames.size()]),
+                        deviceId);
+            } else if (!Objects.equals(deviceId,
+                    VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT)) {
+                Slog.w(LOG_TAG,
+                        "device_aware_permission_apis_enabled flag not enabled when deviceId is "
+                                + "not default");
+                return Collections.emptyMap();
+            } else {
+                ops = mAppOpsManager.getPackagesForOps(opNames.toArray(new String[opNames.size()]));
+            }
         } catch (NullPointerException e) {
             // older builds might not support all the app-ops requested
             return Collections.emptyMap();
diff --git a/core/java/android/permission/flags.aconfig b/core/java/android/permission/flags.aconfig
index 8c70501..9218cb8 100644
--- a/core/java/android/permission/flags.aconfig
+++ b/core/java/android/permission/flags.aconfig
@@ -94,3 +94,39 @@
   description: "Enable signature permission allowlist"
   bug: "308573169"
 }
+
+flag {
+  name: "sensitive_notification_app_protection"
+  namespace: "permissions"
+  description: "This flag controls the sensitive notification app protections while screen sharing"
+  bug: "312784351"
+  # Referenced in WM where WM starts before DeviceConfig
+  is_fixed_read_only: true
+}
+
+flag {
+    name: "device_aware_permissions_enabled"
+    is_fixed_read_only: true
+    namespace: "permissions"
+    description: "When the flag is off no permissions can be device aware"
+    bug: "274852670"
+}
+
+flag {
+     name: "get_emergency_role_holder_api_enabled"
+     is_fixed_read_only: true
+     namespace: "permissions"
+     description: "Enables the getEmergencyRoleHolder API."
+     bug: "323157319"
+}
+
+flag {
+    name: "new_permission_gid_enabled"
+    is_fixed_read_only: true
+    namespace: "permissions"
+    description: "Enable new permission GID implementation"
+    bug: "325137277"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
diff --git a/core/java/android/provider/BlockedNumberContract.java b/core/java/android/provider/BlockedNumberContract.java
index 5d00b29..4075e90 100644
--- a/core/java/android/provider/BlockedNumberContract.java
+++ b/core/java/android/provider/BlockedNumberContract.java
@@ -15,12 +15,20 @@
  */
 package android.provider;
 
+import android.Manifest;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
 import android.annotation.WorkerThread;
 import android.content.Context;
 import android.net.Uri;
 import android.os.Bundle;
 import android.telecom.Log;
+import android.telecom.TelecomManager;
+
+import com.android.server.telecom.flags.Flags;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -214,6 +222,333 @@
          * <p>TYPE: String</p>
          */
         public static final String COLUMN_E164_NUMBER = "e164_number";
+
+        /**
+         * A protected broadcast intent action for letting components with
+         * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} know that the block suppression
+         * status as returned by {@link #getBlockSuppressionStatus(Context)} has been updated.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ACTION_BLOCK_SUPPRESSION_STATE_CHANGED =
+                "android.provider.action.BLOCK_SUPPRESSION_STATE_CHANGED";
+
+        /**
+         * Preference key of block numbers not in contacts setting.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED =
+                "block_numbers_not_in_contacts_setting";
+
+        /**
+         * Preference key of block private number calls setting.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_BLOCK_PRIVATE =
+                "block_private_number_calls_setting";
+
+        /**
+         * Preference key of block payphone calls setting.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_BLOCK_PAYPHONE =
+                "block_payphone_calls_setting";
+
+        /**
+         * Preference key of block unknown calls setting.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_BLOCK_UNKNOWN =
+                "block_unknown_calls_setting";
+
+        /**
+         * Preference key for whether should show an emergency call notification.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION =
+                "show_emergency_call_notification";
+
+        /**
+         * Preference key of block unavailable calls setting.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final String ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE =
+                "block_unavailable_calls_setting";
+
+        /**
+         * Notifies the provider that emergency services were contacted by the user.
+         * <p> This results in {@link #shouldSystemBlockNumber} returning {@code false} independent
+         * of the contents of the provider for a duration defined by
+         * {@link android.telephony.CarrierConfigManager#KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT}
+         * the provider unless {@link #endBlockSuppression(Context)} is called.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static void notifyEmergencyContact(@NonNull Context context) {
+            verifyBlockedNumbersPermission(context);
+            try {
+                Log.i(LOG_TAG, "notifyEmergencyContact; caller=%s", context.getOpPackageName());
+                context.getContentResolver().call(
+                        AUTHORITY_URI, SystemContract.METHOD_NOTIFY_EMERGENCY_CONTACT, null, null);
+            } catch (NullPointerException | IllegalArgumentException ex) {
+                // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+                // either of these happen.
+                Log.w(null, "notifyEmergencyContact: provider not ready.");
+            }
+        }
+
+        /**
+         * Notifies the provider to disable suppressing blocking. If emergency services were not
+         * contacted recently at all, calling this method is a no-op.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static void endBlockSuppression(@NonNull Context context) {
+            verifyBlockedNumbersPermission(context);
+            String caller = context.getOpPackageName();
+            Log.i(LOG_TAG, "endBlockSuppression: caller=%s", caller);
+            context.getContentResolver().call(
+                    AUTHORITY_URI, SystemContract.METHOD_END_BLOCK_SUPPRESSION, null, null);
+        }
+
+        /**
+         * Returns {@code true} if {@code phoneNumber} is blocked taking
+         * {@link #notifyEmergencyContact(Context)} into consideration. If emergency services
+         * have not been contacted recently and enhanced call blocking not been enabled, this
+         * method is equivalent to {@link #isBlocked(Context, String)}.
+         *
+         * @param context the context of the caller.
+         * @param phoneNumber the number to check.
+         * @param numberPresentation the presentation code associated with the call.
+         * @param isNumberInContacts indicates if the provided number exists as a contact.
+         * @return result code indicating if the number should be blocked, and if so why.
+         *         Valid values are: {@link #STATUS_NOT_BLOCKED}, {@link #STATUS_BLOCKED_IN_LIST},
+         *         {@link #STATUS_BLOCKED_NOT_IN_CONTACTS}, {@link #STATUS_BLOCKED_PAYPHONE},
+         *         {@link #STATUS_BLOCKED_RESTRICTED}, {@link #STATUS_BLOCKED_UNKNOWN_NUMBER}.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static int shouldSystemBlockNumber(@NonNull Context context,
+                @NonNull String phoneNumber, @TelecomManager.Presentation int numberPresentation,
+                boolean isNumberInContacts) {
+            verifyBlockedNumbersPermission(context);
+            try {
+                String caller = context.getOpPackageName();
+                Bundle extras = new Bundle();
+                extras.putInt(BlockedNumberContract.EXTRA_CALL_PRESENTATION, numberPresentation);
+                extras.putBoolean(BlockedNumberContract.EXTRA_CONTACT_EXIST, isNumberInContacts);
+                final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
+                        SystemContract.METHOD_SHOULD_SYSTEM_BLOCK_NUMBER, phoneNumber, extras);
+                int blockResult = res != null ? res.getInt(RES_BLOCK_STATUS, STATUS_NOT_BLOCKED) :
+                        BlockedNumberContract.STATUS_NOT_BLOCKED;
+                Log.d(LOG_TAG, "shouldSystemBlockNumber: number=%s, caller=%s, result=%s",
+                        Log.piiHandle(phoneNumber), caller,
+                        SystemContract.blockStatusToString(blockResult));
+                return blockResult;
+            } catch (NullPointerException | IllegalArgumentException ex) {
+                // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+                // either of these happen.
+                Log.w(null, "shouldSystemBlockNumber: provider not ready.");
+                return BlockedNumberContract.STATUS_NOT_BLOCKED;
+            }
+        }
+
+        /**
+         * Returns the current status of block suppression.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static @NonNull BlockSuppressionStatus getBlockSuppressionStatus(
+                @NonNull Context context) {
+            verifyBlockedNumbersPermission(context);
+            final Bundle res = context.getContentResolver().call(
+                    AUTHORITY_URI, SystemContract.METHOD_GET_BLOCK_SUPPRESSION_STATUS, null, null);
+            BlockSuppressionStatus blockSuppressionStatus = new BlockSuppressionStatus(
+                    res.getBoolean(SystemContract.RES_IS_BLOCKING_SUPPRESSED, false),
+                    res.getLong(SystemContract.RES_BLOCKING_SUPPRESSED_UNTIL_TIMESTAMP, 0));
+            Log.d(LOG_TAG, "getBlockSuppressionStatus: caller=%s, status=%s",
+                    context.getOpPackageName(), blockSuppressionStatus);
+            return blockSuppressionStatus;
+        }
+
+        /**
+         * Check whether should show the emergency call notification.
+         *
+         * @param context the context of the caller.
+         * @return {@code true} if should show emergency call notification. {@code false} otherwise.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static boolean shouldShowEmergencyCallNotification(@NonNull Context context) {
+            verifyBlockedNumbersPermission(context);
+            try {
+                final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
+                        SystemContract.METHOD_SHOULD_SHOW_EMERGENCY_CALL_NOTIFICATION, null, null);
+                return res != null && res.getBoolean(RES_SHOW_EMERGENCY_CALL_NOTIFICATION, false);
+            } catch (NullPointerException | IllegalArgumentException ex) {
+                // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+                // either of these happen.
+                Log.w(null, "shouldShowEmergencyCallNotification: provider not ready.");
+                return false;
+            }
+        }
+
+        /**
+         * Check whether the enhanced block setting is enabled.
+         *
+         * @param context the context of the caller.
+         * @param key the key of the setting to check, can be
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
+         * @return {@code true} if the setting is enabled. {@code false} otherwise.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static boolean getBlockedNumberSetting(
+                @NonNull Context context, @NonNull String key) {
+            verifyBlockedNumbersPermission(context);
+            Bundle extras = new Bundle();
+            extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
+            try {
+                final Bundle res = context.getContentResolver().call(AUTHORITY_URI,
+                        SystemContract.METHOD_GET_ENHANCED_BLOCK_SETTING, null, extras);
+                return res != null && res.getBoolean(RES_ENHANCED_SETTING_IS_ENABLED, false);
+            } catch (NullPointerException | IllegalArgumentException ex) {
+                // The content resolver can throw an NPE or IAE; we don't want to crash Telecom if
+                // either of these happen.
+                Log.w(null, "getEnhancedBlockSetting: provider not ready.");
+                return false;
+            }
+        }
+
+        /**
+         * Set the enhanced block setting enabled status.
+         *
+         * @param context the context of the caller.
+         * @param key the key of the setting to set, can be
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNREGISTERED}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PRIVATE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
+         *        {@link SystemContract#ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
+         * @param value the enabled statue of the setting to set.
+         * @hide
+         */
+        @SystemApi
+        @RequiresPermission(allOf = {
+                android.Manifest.permission.READ_BLOCKED_NUMBERS,
+                android.Manifest.permission.WRITE_BLOCKED_NUMBERS
+        })
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static void setBlockedNumberSetting(@NonNull Context context,
+                @NonNull String key, boolean value) {
+            verifyBlockedNumbersPermission(context);
+            Bundle extras = new Bundle();
+            extras.putString(EXTRA_ENHANCED_SETTING_KEY, key);
+            extras.putBoolean(EXTRA_ENHANCED_SETTING_VALUE, value);
+            context.getContentResolver().call(AUTHORITY_URI,
+                    SystemContract.METHOD_SET_ENHANCED_BLOCK_SETTING, null, extras);
+        }
+
+        /**
+         * Represents the current status of
+         * {@link #shouldSystemBlockNumber(Context, String, int, boolean)}. If emergency services
+         * have been contacted recently, {@link #mIsSuppressed} is {@code true}, and blocking
+         * is disabled until the timestamp {@link #mUntilTimestampMillis}.
+         * @hide
+         */
+        @SystemApi
+        @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
+        public static final class BlockSuppressionStatus {
+            private boolean mIsSuppressed;
+
+            /**
+             * Timestamp in milliseconds from epoch.
+             */
+            private long mUntilTimestampMillis;
+
+            public BlockSuppressionStatus(boolean isSuppressed, long untilTimestampMillis) {
+                this.mIsSuppressed = isSuppressed;
+                this.mUntilTimestampMillis = untilTimestampMillis;
+            }
+
+            @Override
+            public String toString() {
+                return "[BlockSuppressionStatus; isSuppressed=" + mIsSuppressed + ", until="
+                        + mUntilTimestampMillis + "]";
+            }
+
+            public boolean getIsSuppressed() {
+                return mIsSuppressed;
+            }
+
+            public long getUntilTimestampMillis() {
+                return mUntilTimestampMillis;
+            }
+        }
+
+        /**
+         * Verifies that the caller holds both the
+         * {@link android.Manifest.permission#READ_BLOCKED_NUMBERS} permission and the
+         * {@link android.Manifest.permission#WRITE_BLOCKED_NUMBERS} permission.
+         *
+         * @param context
+         * @throws SecurityException if the caller is missing the necessary permissions
+         */
+        private static void verifyBlockedNumbersPermission(Context context) {
+            context.enforceCallingOrSelfPermission(Manifest.permission.READ_BLOCKED_NUMBERS,
+                    "Caller does not have the android.permission.READ_BLOCKED_NUMBERS permission");
+            context.enforceCallingOrSelfPermission(Manifest.permission.WRITE_BLOCKED_NUMBERS,
+                    "Caller does not have the android.permission.WRITE_BLOCKED_NUMBERS permission");
+        }
     }
 
     /** @hide */
@@ -558,7 +893,7 @@
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
-         *        {@link #ENHANCED_SETTING_KEY_EMERGENCY_CALL_NOTIFICATION_SHOWING}
+         *        {@link #ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
          * @return {@code true} if the setting is enabled. {@code false} otherwise.
          */
         public static boolean getEnhancedBlockSetting(Context context, String key) {
@@ -586,7 +921,7 @@
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_PAYPHONE}
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_UNKNOWN}
          *        {@link #ENHANCED_SETTING_KEY_BLOCK_UNAVAILABLE}
-         *        {@link #ENHANCED_SETTING_KEY_EMERGENCY_CALL_NOTIFICATION_SHOWING}
+         *        {@link #ENHANCED_SETTING_KEY_SHOW_EMERGENCY_CALL_NOTIFICATION}
          * @param value the enabled statue of the setting to set.
          */
         public static void setEnhancedBlockSetting(Context context, String key, boolean value) {
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index 7d127ad..c13dd36 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -19,6 +19,7 @@
 
 import android.Manifest;
 import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.LongDef;
 import android.annotation.NonNull;
@@ -55,6 +56,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.server.telecom.flags.Flags;
+
 import java.io.ByteArrayOutputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
@@ -427,6 +430,8 @@
             private double mLongitude = Double.NaN;
             private Uri mPictureUri;
             private int mIsPhoneAccountMigrationPending;
+            private boolean mIsBusinessCall;
+            private String mBusinessName;
 
             /**
              * @param callerInfo the CallerInfo object to get the target contact from.
@@ -645,15 +650,44 @@
             }
 
             /**
+             * @param isBusinessCall should be set if the caller is a business call
+             */
+            @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+            public @NonNull AddCallParametersBuilder setIsBusinessCall(boolean isBusinessCall) {
+                mIsBusinessCall = isBusinessCall;
+                return this;
+            }
+
+            /**
+             * @param businessName should be set if the caller is a business call
+             */
+            @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+            public @NonNull AddCallParametersBuilder setBusinessName(String businessName) {
+                mBusinessName = businessName;
+                return this;
+            }
+
+            /**
              * Builds the object
              */
             public @NonNull AddCallParams build() {
-                return new AddCallParams(mCallerInfo, mNumber, mPostDialDigits, mViaNumber,
-                        mPresentation, mCallType, mFeatures, mAccountHandle, mStart, mDuration,
-                        mDataUsage, mAddForAllUsers, mUserToBeInsertedTo, mIsRead, mCallBlockReason,
-                        mCallScreeningAppName, mCallScreeningComponentName, mMissedReason,
-                        mPriority, mSubject, mLatitude, mLongitude, mPictureUri,
-                        mIsPhoneAccountMigrationPending);
+                if (Flags.businessCallComposer()) {
+                    return new AddCallParams(mCallerInfo, mNumber, mPostDialDigits, mViaNumber,
+                            mPresentation, mCallType, mFeatures, mAccountHandle, mStart, mDuration,
+                            mDataUsage, mAddForAllUsers, mUserToBeInsertedTo, mIsRead,
+                            mCallBlockReason,
+                            mCallScreeningAppName, mCallScreeningComponentName, mMissedReason,
+                            mPriority, mSubject, mLatitude, mLongitude, mPictureUri,
+                            mIsPhoneAccountMigrationPending, mIsBusinessCall, mBusinessName);
+                } else {
+                    return new AddCallParams(mCallerInfo, mNumber, mPostDialDigits, mViaNumber,
+                            mPresentation, mCallType, mFeatures, mAccountHandle, mStart, mDuration,
+                            mDataUsage, mAddForAllUsers, mUserToBeInsertedTo, mIsRead,
+                            mCallBlockReason,
+                            mCallScreeningAppName, mCallScreeningComponentName, mMissedReason,
+                            mPriority, mSubject, mLatitude, mLongitude, mPictureUri,
+                            mIsPhoneAccountMigrationPending);
+                }
             }
         }
 
@@ -681,6 +715,8 @@
         private double mLongitude = Double.NaN;
         private Uri mPictureUri;
         private int mIsPhoneAccountMigrationPending;
+        private boolean mIsBusinessCall;
+        private String mBusinessName;
 
         private AddCallParams(CallerInfo callerInfo, String number, String postDialDigits,
                 String viaNumber, int presentation, int callType, int features,
@@ -717,6 +753,43 @@
             mIsPhoneAccountMigrationPending = isPhoneAccountMigrationPending;
         }
 
+        private AddCallParams(CallerInfo callerInfo, String number, String postDialDigits,
+                String viaNumber, int presentation, int callType, int features,
+                PhoneAccountHandle accountHandle, long start, int duration, long dataUsage,
+                boolean addForAllUsers, UserHandle userToBeInsertedTo, boolean isRead,
+                int callBlockReason,
+                CharSequence callScreeningAppName, String callScreeningComponentName,
+                long missedReason,
+                int priority, String subject, double latitude, double longitude, Uri pictureUri,
+                int isPhoneAccountMigrationPending, boolean isBusinessCall, String businessName) {
+            mCallerInfo = callerInfo;
+            mNumber = number;
+            mPostDialDigits = postDialDigits;
+            mViaNumber = viaNumber;
+            mPresentation = presentation;
+            mCallType = callType;
+            mFeatures = features;
+            mAccountHandle = accountHandle;
+            mStart = start;
+            mDuration = duration;
+            mDataUsage = dataUsage;
+            mAddForAllUsers = addForAllUsers;
+            mUserToBeInsertedTo = userToBeInsertedTo;
+            mIsRead = isRead;
+            mCallBlockReason = callBlockReason;
+            mCallScreeningAppName = callScreeningAppName;
+            mCallScreeningComponentName = callScreeningComponentName;
+            mMissedReason = missedReason;
+            mPriority = priority;
+            mSubject = subject;
+            mLatitude = latitude;
+            mLongitude = longitude;
+            mPictureUri = pictureUri;
+            mIsPhoneAccountMigrationPending = isPhoneAccountMigrationPending;
+            mIsBusinessCall = isBusinessCall;
+            mBusinessName = businessName;
+        }
+
     }
 
     /**
@@ -915,6 +988,19 @@
          */
         public static final String NUMBER = "number";
 
+
+        /**
+         * Boolean indicating whether the call is a business call.
+         */
+        @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+        public static final String IS_BUSINESS_CALL = "is_business_call";
+
+        /**
+         * String that stores the asserted display name associated with business call.
+         */
+        @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+        public static final String ASSERTED_DISPLAY_NAME = "asserted_display_name";
+
         /**
          * The number presenting rules set by the network.
          *
@@ -1713,7 +1799,6 @@
             }
 
             ContentValues values = new ContentValues(14);
-
             values.put(NUMBER, params.mNumber);
             values.put(POST_DIAL_DIGITS, params.mPostDialDigits);
             values.put(VIA_NUMBER, params.mViaNumber);
@@ -1746,7 +1831,10 @@
                 values.put(COMPOSER_PHOTO_URI, params.mPictureUri.toString());
             }
             values.put(IS_PHONE_ACCOUNT_MIGRATION_PENDING, params.mIsPhoneAccountMigrationPending);
-
+            if (Flags.businessCallComposer()) {
+                values.put(IS_BUSINESS_CALL, Integer.valueOf(params.mIsBusinessCall ? 1 : 0));
+                values.put(ASSERTED_DISPLAY_NAME, params.mBusinessName);
+            }
             if ((params.mCallerInfo != null) && (params.mCallerInfo.getContactId() > 0)) {
                 // Update usage information for the number associated with the contact ID.
                 // We need to use both the number and the ID for obtaining a data ID since other
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index b026ce9..ec4d587 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -1551,6 +1551,23 @@
             "android.settings.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS";
 
     /**
+     * Activity Action: Show screen for controlling any background restrictions imposed on
+     * an app. If the system returns true for
+     * {@link android.app.ActivityManager#isBackgroundRestricted()}, and the app is not able to
+     * satisfy user requests due to being restricted in the background, then this intent can be
+     * used to request the user to unrestrict the app.
+     * <p>
+     * Input: The Intent's data URI must specify the application package name
+     *        to be shown, with the "package" scheme, such as "package:com.my.app".
+     * <p>
+     * Output: Nothing.
+     */
+    @FlaggedApi(android.app.Flags.FLAG_APP_RESTRICTIONS_API)
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_BACKGROUND_RESTRICTIONS_SETTINGS =
+            "android.settings.BACKGROUND_RESTRICTIONS_SETTINGS";
+
+    /**
      * Activity Action: Open the advanced power usage details page of an associated app.
      * <p>
      * Input: Intent's data URI set with an application name, using the
@@ -11061,6 +11078,15 @@
         public static final String SEARCH_LONG_PRESS_HOME_ENABLED =
                 "search_long_press_home_enabled";
 
+
+        /**
+         * Whether or not the accessibility data streaming is enbled for the
+         * {@link VisualQueryDetectedResult#setAccessibilityDetectionData}.
+         * @hide
+         */
+        public static final String VISUAL_QUERY_ACCESSIBILITY_DETECTION_ENABLED =
+                "visual_query_accessibility_detection_enabled";
+
         /**
          * Control whether Night display is currently activated.
          * @hide
@@ -12286,6 +12312,14 @@
                 "extra_automatic_power_save_mode";
 
         /**
+         * Whether contextual screen timeout is enabled.
+         *
+         * @hide
+         */
+        public static final String CONTEXTUAL_SCREEN_TIMEOUT_ENABLED =
+                "contextual_screen_timeout_enabled";
+
+        /**
          * Whether lockscreen weather is enabled.
          *
          * @hide
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index 658cec8..88bd87e 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -4956,6 +4956,26 @@
          */
         public static final String COLUMN_SERVICE_CAPABILITIES = "service_capabilities";
 
+        /**
+         * TelephonyProvider column name for satellite entitlement status. The value of this column
+         * is set based on entitlement query result for satellite configuration.
+         * By default, it's disabled.
+         *
+         * @hide
+         */
+        public static final String COLUMN_SATELLITE_ENTITLEMENT_STATUS =
+                "satellite_entitlement_status";
+
+        /**
+         * TelephonyProvider column name for satellite entitlement plmns. The value of this
+         * column is set based on entitlement query result for satellite configuration.
+         * By default, it's empty.
+         *
+         * @hide
+         */
+        public static final String COLUMN_SATELLITE_ENTITLEMENT_PLMNS =
+                "satellite_entitlement_plmns";
+
         /** All columns in {@link SimInfo} table. */
         private static final List<String> ALL_COLUMNS = List.of(
                 COLUMN_UNIQUE_KEY_SUBSCRIPTION_ID,
@@ -5029,7 +5049,9 @@
                 COLUMN_SATELLITE_ATTACH_ENABLED_FOR_CARRIER,
                 COLUMN_IS_NTN,
                 COLUMN_SERVICE_CAPABILITIES,
-                COLUMN_TRANSFER_STATUS
+                COLUMN_TRANSFER_STATUS,
+                COLUMN_SATELLITE_ENTITLEMENT_STATUS,
+                COLUMN_SATELLITE_ENTITLEMENT_PLMNS
         );
 
         /**
diff --git a/core/java/android/security/flags.aconfig b/core/java/android/security/flags.aconfig
index 43163b3..7631454 100644
--- a/core/java/android/security/flags.aconfig
+++ b/core/java/android/security/flags.aconfig
@@ -15,10 +15,11 @@
 }
 
 flag {
-    name: "mgf1_digest_setter"
+    name: "mgf1_digest_setter_v2"
     namespace: "hardware_backed_security"
     description: "Feature flag for mgf1 digest setter in key generation and import parameters."
     bug: "308378912"
+    is_fixed_read_only: true
 }
 
 flag {
diff --git a/core/java/android/service/chooser/AdditionalContentContract.java b/core/java/android/service/chooser/AdditionalContentContract.java
new file mode 100644
index 0000000..f679e8a
--- /dev/null
+++ b/core/java/android/service/chooser/AdditionalContentContract.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2024 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 android.service.chooser;
+
+import android.annotation.FlaggedApi;
+
+/**
+ * Specifies constants used by Chooser when interacting with the additional content provider,
+ * see {@link android.content.Intent#EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI}.
+ */
+@FlaggedApi(android.service.chooser.Flags.FLAG_CHOOSER_PAYLOAD_TOGGLING)
+public interface AdditionalContentContract {
+
+    interface Columns {
+        /**
+         * Content URI for this item.
+         * <p>
+         * Note that this content URI must have a different authority from the content provided
+         * given in {@link android.content.Intent#EXTRA_CHOOSER_ADDITIONAL_CONTENT_URI}.
+         */
+        String URI = "uri";
+    }
+
+    /**
+     * Constants for {@link android.database.Cursor#getExtras} keys.
+     */
+    interface CursorExtraKeys {
+        /**
+         * An integer, zero-based cursor position that corresponds to the URI specified
+         * with the {@link android.content.Intent#EXTRA_CHOOSER_FOCUSED_ITEM_POSITION} index into
+         * the @link android.content.Intent#EXTRA_STREAM} array.
+         */
+        String POSITION = "position";
+    }
+
+    /**
+     * Constants for method names used with {@link android.content.ContentResolver#call} method.
+     */
+    interface MethodNames {
+        /**
+         * A method name Chooser is using to notify the sharing app about a shared items selection
+         * change.
+         */
+        String ON_SELECTION_CHANGED = "onSelectionChanged";
+    }
+}
diff --git a/core/java/android/service/chooser/ChooserResult.java b/core/java/android/service/chooser/ChooserResult.java
new file mode 100644
index 0000000..4603be1
--- /dev/null
+++ b/core/java/android/service/chooser/ChooserResult.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2024 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 android.service.chooser;
+
+import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledSince;
+import android.compat.annotation.Overridable;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.IntentSender;
+import android.os.Build;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * An event reported to a supplied [IntentSender] by the system chooser when an activity is selected
+ * or other actions are taken to complete the session.
+ *
+ * @see Intent#EXTRA_CHOOSER_RESULT_INTENT_SENDER
+ */
+@FlaggedApi(android.service.chooser.Flags.FLAG_ENABLE_CHOOSER_RESULT)
+public final class ChooserResult implements Parcelable {
+
+    /**
+     * Controls whether to send ChooserResult to the optional IntentSender supplied to the Chooser.
+     * <p>
+     * When enabled, ChooserResult is added to the provided Intent as
+     * {@link Intent#EXTRA_CHOOSER_RESULT}, and sent for actions such as copy and edit, in addition
+     * to activity selection. When disabled, only the selected component
+     * is provided in {@link Intent#EXTRA_CHOSEN_COMPONENT}.
+     * <p>
+     * See: {@link Intent#createChooser(Intent, CharSequence, IntentSender)}
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM)
+    @Overridable
+    public static final long SEND_CHOOSER_RESULT = 263474465L;
+
+    /** @hide */
+    @IntDef({
+            CHOOSER_RESULT_UNKNOWN,
+            CHOOSER_RESULT_SELECTED_COMPONENT,
+            CHOOSER_RESULT_COPY,
+            CHOOSER_RESULT_EDIT
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ResultType { }
+
+    /** An unknown action was taken to complete the session. */
+    public static final int CHOOSER_RESULT_UNKNOWN = -1;
+    /** The session was completed by selecting an activity to launch. */
+    public static final int CHOOSER_RESULT_SELECTED_COMPONENT = 0;
+    /** The session was completed by invoking the copy action. */
+    public static final int CHOOSER_RESULT_COPY = 1;
+    /** The session was completed by invoking the edit action. */
+    public static final int CHOOSER_RESULT_EDIT = 2;
+
+    @ResultType
+    private final int mType;
+    private final ComponentName mSelectedComponent;
+    private final boolean mIsShortcut;
+
+    private ChooserResult(@NonNull Parcel source) {
+        mType = source.readInt();
+        mSelectedComponent = ComponentName.readFromParcel(source);
+        mIsShortcut = source.readBoolean();
+    }
+
+    /** @hide */
+    public ChooserResult(@ResultType int type, @Nullable ComponentName componentName,
+            boolean isShortcut) {
+        mType = type;
+        mSelectedComponent = componentName;
+        mIsShortcut = isShortcut;
+    }
+
+    /**
+     * The type of the result.
+     *
+     * @return the type of the result
+     */
+    @ResultType
+    public int getType() {
+        return mType;
+    }
+
+    /**
+     * Provides the component of the Activity selected for results with type
+     * when type is {@link ChooserResult#CHOOSER_RESULT_SELECTED_COMPONENT}.
+     * <p>
+     * For all other types, this value is null.
+     *
+     * @return the component name selected
+     */
+    @Nullable
+    public ComponentName getSelectedComponent() {
+        return mSelectedComponent;
+    }
+
+    /**
+     * Whether the selected component was provided by the app from as a shortcut.
+     *
+     * @return true if the selected component is a shortcut, false otherwise
+     */
+    public boolean isShortcut() {
+        return mIsShortcut;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    public static final Parcelable.Creator<ChooserResult> CREATOR =
+            new Creator<>() {
+                @Override
+                public ChooserResult createFromParcel(Parcel source) {
+                    return new ChooserResult(source);
+                }
+
+                @Override
+                public ChooserResult[] newArray(int size) {
+                    return new ChooserResult[0];
+                }
+            };
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mType);
+        ComponentName.writeToParcel(mSelectedComponent, dest);
+        dest.writeBoolean(mIsShortcut);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        ChooserResult that = (ChooserResult) o;
+        return mType == that.mType
+                && mIsShortcut == that.mIsShortcut
+                && Objects.equals(mSelectedComponent, that.mSelectedComponent);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mType, mSelectedComponent, mIsShortcut);
+    }
+}
diff --git a/core/java/android/service/notification/ZenDeviceEffects.java b/core/java/android/service/notification/ZenDeviceEffects.java
index 90049e6..22b1be0 100644
--- a/core/java/android/service/notification/ZenDeviceEffects.java
+++ b/core/java/android/service/notification/ZenDeviceEffects.java
@@ -20,6 +20,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.TestApi;
 import android.app.Flags;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -27,7 +28,10 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.Objects;
+import java.util.Set;
 
 /**
  * Represents the set of device effects (affecting display and device behavior in general) that
@@ -51,6 +55,7 @@
             FIELD_DISABLE_TOUCH,
             FIELD_MINIMIZE_RADIO_USAGE,
             FIELD_MAXIMIZE_DOZE,
+            FIELD_EXTRA_EFFECTS
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface ModifiableField {}
@@ -95,6 +100,12 @@
      * @hide
      */
     public static final int FIELD_MAXIMIZE_DOZE = 1 << 9;
+    /**
+     * @hide
+     */
+    public static final int FIELD_EXTRA_EFFECTS = 1 << 10;
+
+    private static final int MAX_EFFECTS_LENGTH = 2_000; // characters
 
     private final boolean mGrayscale;
     private final boolean mSuppressAmbientDisplay;
@@ -107,11 +118,12 @@
     private final boolean mDisableTouch;
     private final boolean mMinimizeRadioUsage;
     private final boolean mMaximizeDoze;
+    private final Set<String> mExtraEffects;
 
     private ZenDeviceEffects(boolean grayscale, boolean suppressAmbientDisplay,
             boolean dimWallpaper, boolean nightMode, boolean disableAutoBrightness,
             boolean disableTapToWake, boolean disableTiltToWake, boolean disableTouch,
-            boolean minimizeRadioUsage, boolean maximizeDoze) {
+            boolean minimizeRadioUsage, boolean maximizeDoze, Set<String> extraEffects) {
         mGrayscale = grayscale;
         mSuppressAmbientDisplay = suppressAmbientDisplay;
         mDimWallpaper = dimWallpaper;
@@ -122,6 +134,21 @@
         mDisableTouch = disableTouch;
         mMinimizeRadioUsage = minimizeRadioUsage;
         mMaximizeDoze = maximizeDoze;
+        mExtraEffects = Collections.unmodifiableSet(extraEffects);
+    }
+
+    /** @hide */
+    @FlaggedApi(Flags.FLAG_MODES_API)
+    public void validate() {
+        int extraEffectsLength = 0;
+        for (String extraEffect : mExtraEffects) {
+            extraEffectsLength += extraEffect.length();
+        }
+        if (extraEffectsLength > MAX_EFFECTS_LENGTH) {
+            throw new IllegalArgumentException(
+                    "Total size of extra effects must be at most " + MAX_EFFECTS_LENGTH
+                            + " characters");
+        }
     }
 
     @Override
@@ -138,19 +165,20 @@
                 && this.mDisableTiltToWake == that.mDisableTiltToWake
                 && this.mDisableTouch == that.mDisableTouch
                 && this.mMinimizeRadioUsage == that.mMinimizeRadioUsage
-                && this.mMaximizeDoze == that.mMaximizeDoze;
+                && this.mMaximizeDoze == that.mMaximizeDoze
+                && Objects.equals(this.mExtraEffects, that.mExtraEffects);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mGrayscale, mSuppressAmbientDisplay, mDimWallpaper, mNightMode,
                 mDisableAutoBrightness, mDisableTapToWake, mDisableTiltToWake, mDisableTouch,
-                mMinimizeRadioUsage, mMaximizeDoze);
+                mMinimizeRadioUsage, mMaximizeDoze, mExtraEffects);
     }
 
     @Override
     public String toString() {
-        ArrayList<String> effects = new ArrayList<>(10);
+        ArrayList<String> effects = new ArrayList<>(11);
         if (mGrayscale) effects.add("grayscale");
         if (mSuppressAmbientDisplay) effects.add("suppressAmbientDisplay");
         if (mDimWallpaper) effects.add("dimWallpaper");
@@ -161,6 +189,9 @@
         if (mDisableTouch) effects.add("disableTouch");
         if (mMinimizeRadioUsage) effects.add("minimizeRadioUsage");
         if (mMaximizeDoze) effects.add("maximizeDoze");
+        if (mExtraEffects.size() > 0) {
+            effects.add("extraEffects=[" + String.join(",", mExtraEffects) + "]");
+        }
         return "[" + String.join(", ", effects) + "]";
     }
 
@@ -197,6 +228,9 @@
         if ((bitmask & FIELD_MAXIMIZE_DOZE) != 0) {
             modified.add("FIELD_MAXIMIZE_DOZE");
         }
+        if ((bitmask & FIELD_EXTRA_EFFECTS) != 0) {
+            modified.add("FIELD_EXTRA_EFFECTS");
+        }
         return "{" + String.join(",", modified) + "}";
     }
 
@@ -270,7 +304,7 @@
     }
 
     /**
-     * Whether Doze should be enhanced (e.g. with more aggresive activation, or less frequent
+     * Whether Doze should be enhanced (e.g. with more aggressive activation, or less frequent
      * maintenance windows) while the rule is active.
      * @hide
      */
@@ -279,13 +313,26 @@
     }
 
     /**
+     * (Immutable) set of extra effects to be applied while the rule is active. Extra effects are
+     * not used in AOSP, but OEMs may add support for them by providing a custom
+     * {@link DeviceEffectsApplier}.
+     * @hide
+     */
+    @TestApi
+    @NonNull
+    public Set<String> getExtraEffects() {
+        return mExtraEffects;
+    }
+
+    /**
      * Whether any of the effects are set up.
      * @hide
      */
     public boolean hasEffects() {
         return mGrayscale || mSuppressAmbientDisplay || mDimWallpaper || mNightMode
                 || mDisableAutoBrightness || mDisableTapToWake || mDisableTiltToWake
-                || mDisableTouch || mMinimizeRadioUsage || mMaximizeDoze;
+                || mDisableTouch || mMinimizeRadioUsage || mMaximizeDoze
+                || mExtraEffects.size() > 0;
     }
 
     /** {@link Parcelable.Creator} that instantiates {@link ZenDeviceEffects} objects. */
@@ -296,7 +343,8 @@
             return new ZenDeviceEffects(in.readBoolean(),
                     in.readBoolean(), in.readBoolean(), in.readBoolean(), in.readBoolean(),
                     in.readBoolean(), in.readBoolean(), in.readBoolean(), in.readBoolean(),
-                    in.readBoolean());
+                    in.readBoolean(),
+                    Set.of(in.readArray(String.class.getClassLoader(), String.class)));
         }
 
         @Override
@@ -322,6 +370,7 @@
         dest.writeBoolean(mDisableTouch);
         dest.writeBoolean(mMinimizeRadioUsage);
         dest.writeBoolean(mMaximizeDoze);
+        dest.writeArray(mExtraEffects.toArray(new String[0]));
     }
 
     /** Builder class for {@link ZenDeviceEffects} objects. */
@@ -338,6 +387,7 @@
         private boolean mDisableTouch;
         private boolean mMinimizeRadioUsage;
         private boolean mMaximizeDoze;
+        private final HashSet<String> mExtraEffects = new HashSet<>();
 
         /**
          * Instantiates a new {@link ZenPolicy.Builder} with all effects set to default (disabled).
@@ -360,6 +410,7 @@
             mDisableTouch = zenDeviceEffects.shouldDisableTouch();
             mMinimizeRadioUsage = zenDeviceEffects.shouldMinimizeRadioUsage();
             mMaximizeDoze = zenDeviceEffects.shouldMaximizeDoze();
+            mExtraEffects.addAll(zenDeviceEffects.getExtraEffects());
         }
 
         /**
@@ -450,7 +501,7 @@
         }
 
         /**
-         * Sets whether Doze should be enhanced (e.g. with more aggresive activation, or less
+         * Sets whether Doze should be enhanced (e.g. with more aggressive activation, or less
          * frequent maintenance windows) while the rule is active.
          * @hide
          */
@@ -461,6 +512,54 @@
         }
 
         /**
+         * Sets the extra effects to be applied while the rule is active. Extra effects are not
+         * used in AOSP, but OEMs may add support for them by providing a custom
+         * {@link DeviceEffectsApplier}.
+         *
+         * @apiNote The total size of the extra effects (concatenation of strings) is limited.
+         *
+         * @hide
+         */
+        @TestApi
+        @NonNull
+        public Builder setExtraEffects(@NonNull Set<String> extraEffects) {
+            Objects.requireNonNull(extraEffects);
+            mExtraEffects.clear();
+            mExtraEffects.addAll(extraEffects);
+            return this;
+        }
+
+        /**
+         * Adds the supplied extra effects to the set to be applied while the rule is active.
+         * Extra effects are not used in AOSP, but OEMs may add support for them by providing a
+         * custom {@link DeviceEffectsApplier}.
+         *
+         * @apiNote The total size of the extra effects (concatenation of strings) is limited.
+         *
+         * @hide
+         */
+        @NonNull
+        public Builder addExtraEffects(@NonNull Set<String> extraEffects) {
+            mExtraEffects.addAll(Objects.requireNonNull(extraEffects));
+            return this;
+        }
+
+        /**
+         * Adds the supplied extra effect to the set to be applied while the rule is active.
+         * Extra effects are not used in AOSP, but OEMs may add support for them by providing a
+         * custom {@link DeviceEffectsApplier}.
+         *
+         * @apiNote The total size of the extra effects (concatenation of strings) is limited.
+         *
+         * @hide
+         */
+        @NonNull
+        public Builder addExtraEffect(@NonNull String extraEffect) {
+            mExtraEffects.add(Objects.requireNonNull(extraEffect));
+            return this;
+        }
+
+        /**
          * Applies the effects that are {@code true} on the supplied {@link ZenDeviceEffects} to
          * this builder (essentially logically-ORing the effect set).
          * @hide
@@ -478,6 +577,7 @@
             if (effects.shouldDisableTouch()) setShouldDisableTouch(true);
             if (effects.shouldMinimizeRadioUsage()) setShouldMinimizeRadioUsage(true);
             if (effects.shouldMaximizeDoze()) setShouldMaximizeDoze(true);
+            addExtraEffects(effects.getExtraEffects());
             return this;
         }
 
@@ -487,7 +587,7 @@
             return new ZenDeviceEffects(mGrayscale,
                     mSuppressAmbientDisplay, mDimWallpaper, mNightMode, mDisableAutoBrightness,
                     mDisableTapToWake, mDisableTiltToWake, mDisableTouch, mMinimizeRadioUsage,
-                    mMaximizeDoze);
+                    mMaximizeDoze, mExtraEffects);
         }
     }
 }
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index d4a5356..f169ecd 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -27,6 +27,7 @@
 
 import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.AlarmManager;
@@ -65,17 +66,21 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.time.Instant;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import java.util.TimeZone;
 import java.util.UUID;
+import java.util.regex.Pattern;
 
 /**
  * Persisted configuration for zen mode.
@@ -272,8 +277,13 @@
     private static final String DEVICE_EFFECT_DISABLE_TOUCH = "zdeDisableTouch";
     private static final String DEVICE_EFFECT_MINIMIZE_RADIO_USAGE = "zdeMinimizeRadioUsage";
     private static final String DEVICE_EFFECT_MAXIMIZE_DOZE = "zdeMaximizeDoze";
+    private static final String DEVICE_EFFECT_EXTRAS = "zdeExtraEffects";
     private static final String DEVICE_EFFECT_USER_MODIFIED_FIELDS = "zdeUserModifiedFields";
 
+    private static final String ITEM_SEPARATOR = ",";
+    private static final String ITEM_SEPARATOR_ESCAPE = "\\";
+    private static final Pattern ITEM_SPLITTER_REGEX = Pattern.compile("(?<!\\\\),");
+
     @UnsupportedAppUsage
     public boolean allowAlarms = DEFAULT_ALLOW_ALARMS;
     public boolean allowMedia = DEFAULT_ALLOW_MEDIA;
@@ -1099,6 +1109,7 @@
                 .setShouldMinimizeRadioUsage(
                         safeBoolean(parser, DEVICE_EFFECT_MINIMIZE_RADIO_USAGE, false))
                 .setShouldMaximizeDoze(safeBoolean(parser, DEVICE_EFFECT_MAXIMIZE_DOZE, false))
+                .setExtraEffects(safeStringSet(parser, DEVICE_EFFECT_EXTRAS))
                 .build();
 
         return deviceEffects.hasEffects() ? deviceEffects : null;
@@ -1123,6 +1134,7 @@
         writeBooleanIfTrue(out, DEVICE_EFFECT_MINIMIZE_RADIO_USAGE,
                 deviceEffects.shouldMinimizeRadioUsage());
         writeBooleanIfTrue(out, DEVICE_EFFECT_MAXIMIZE_DOZE, deviceEffects.shouldMaximizeDoze());
+        writeStringSet(out, DEVICE_EFFECT_EXTRAS, deviceEffects.getExtraEffects());
     }
 
     private static void writeBooleanIfTrue(TypedXmlSerializer out, String att, boolean value)
@@ -1132,6 +1144,26 @@
         }
     }
 
+    private static void writeStringSet(TypedXmlSerializer out, String att, Set<String> values)
+            throws IOException {
+        if (values.isEmpty()) {
+            return;
+        }
+        // We escape each item  by replacing "\" by "\\" and "," by "\,". Then we concatenate with
+        // "," as separator. Reading performs the same operations in the opposite order.
+        List<String> escapedItems = new ArrayList<>();
+        for (String item : values) {
+            escapedItems.add(
+                    item
+                            .replace(ITEM_SEPARATOR_ESCAPE,
+                                    ITEM_SEPARATOR_ESCAPE + ITEM_SEPARATOR_ESCAPE)
+                            .replace(ITEM_SEPARATOR,
+                                    ITEM_SEPARATOR_ESCAPE + ITEM_SEPARATOR));
+        }
+        String serialized = String.join(ITEM_SEPARATOR, escapedItems);
+        out.attribute(null, att, serialized);
+    }
+
     public static boolean isValidHour(int val) {
         return val >= 0 && val < 24;
     }
@@ -1182,6 +1214,26 @@
         return tryParseLong(val, defValue);
     }
 
+    @NonNull
+    private static Set<String> safeStringSet(TypedXmlPullParser parser, String att) {
+        Set<String> values = new HashSet<>();
+
+        String serialized = parser.getAttributeValue(null, att);
+        if (!TextUtils.isEmpty(serialized)) {
+            // We split on every "," that is *not preceded* by the escape character "\".
+            // Then we reverse the escaping done on each individual item.
+            String[] escapedItems = ITEM_SPLITTER_REGEX.split(serialized);
+            for (String escapedItem : escapedItems) {
+                values.add(escapedItem
+                        .replace(ITEM_SEPARATOR_ESCAPE + ITEM_SEPARATOR_ESCAPE,
+                                ITEM_SEPARATOR_ESCAPE)
+                        .replace(ITEM_SEPARATOR_ESCAPE + ITEM_SEPARATOR,
+                                ITEM_SEPARATOR));
+            }
+        }
+        return values;
+    }
+
     @Override
     public int describeContents() {
         return 0;
diff --git a/core/java/android/service/notification/ZenPolicy.java b/core/java/android/service/notification/ZenPolicy.java
index 786d768..aa47d3a 100644
--- a/core/java/android/service/notification/ZenPolicy.java
+++ b/core/java/android/service/notification/ZenPolicy.java
@@ -673,6 +673,10 @@
             mZenPolicy.mPriorityMessages = PEOPLE_TYPE_NONE;
             mZenPolicy.mPriorityCalls = PEOPLE_TYPE_NONE;
             mZenPolicy.mConversationSenders = CONVERSATION_SENDERS_NONE;
+
+            if (Flags.modesApi()) {
+                mZenPolicy.mAllowChannels = CHANNEL_POLICY_NONE;
+            }
             return this;
         }
 
diff --git a/core/java/android/service/ondeviceintelligence/OWNERS b/core/java/android/service/ondeviceintelligence/OWNERS
new file mode 100644
index 0000000..09774f7
--- /dev/null
+++ b/core/java/android/service/ondeviceintelligence/OWNERS
@@ -0,0 +1 @@
+file:/core/java/android/app/ondeviceintelligence/OWNERS
diff --git a/core/java/android/service/voice/AbstractDetector.java b/core/java/android/service/voice/AbstractDetector.java
index dfb1361..db97d4f 100644
--- a/core/java/android/service/voice/AbstractDetector.java
+++ b/core/java/android/service/voice/AbstractDetector.java
@@ -263,12 +263,5 @@
                         result != null ? result : new HotwordRejectedResult.Builder().build());
             }));
         }
-
-        @Override
-        public void onTrainingData(HotwordTrainingData data) {
-            Binder.withCleanCallingIdentity(() -> mExecutor.execute(() -> {
-                mCallback.onTrainingData(data);
-            }));
-        }
     }
 }
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 23c8393..a08264e 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -22,6 +22,7 @@
 import static android.service.voice.VoiceInteractionService.MULTIPLE_ACTIVE_HOTWORD_DETECTORS;
 
 import android.annotation.ElapsedRealtimeLong;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -306,7 +307,6 @@
     private static final int MSG_DETECTION_HOTWORD_DETECTION_SERVICE_FAILURE = 9;
     private static final int MSG_DETECTION_SOUND_TRIGGER_FAILURE = 10;
     private static final int MSG_DETECTION_UNKNOWN_FAILURE = 11;
-    private static final int MSG_HOTWORD_TRAINING_DATA = 12;
 
     private final String mText;
     private final Locale mLocale;
@@ -433,7 +433,10 @@
         @ElapsedRealtimeLong
         private final long mHalEventReceivedMillis;
 
-        private EventPayload(boolean captureAvailable,
+        private final boolean mIsRecognitionStopped;
+
+        private EventPayload(
+                boolean captureAvailable,
                 @Nullable AudioFormat audioFormat,
                 int captureSession,
                 @DataFormat int dataFormat,
@@ -441,7 +444,8 @@
                 @Nullable HotwordDetectedResult hotwordDetectedResult,
                 @Nullable ParcelFileDescriptor audioStream,
                 @NonNull List<KeyphraseRecognitionExtra> keyphraseExtras,
-                @ElapsedRealtimeLong long halEventReceivedMillis) {
+                @ElapsedRealtimeLong long halEventReceivedMillis,
+                boolean isRecognitionStopped) {
             mCaptureAvailable = captureAvailable;
             mCaptureSession = captureSession;
             mAudioFormat = audioFormat;
@@ -451,6 +455,7 @@
             mAudioStream = audioStream;
             mKephraseExtras = keyphraseExtras;
             mHalEventReceivedMillis = halEventReceivedMillis;
+            mIsRecognitionStopped = isRecognitionStopped;
         }
 
         /**
@@ -593,6 +598,12 @@
             return mHalEventReceivedMillis;
         }
 
+        /** Returns whether the system has stopped hotword recognition because of this detection. */
+        @FlaggedApi(android.app.wearable.Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+        public boolean isRecognitionStopped() {
+            return mIsRecognitionStopped;
+        }
+
         /**
          * Builder class for {@link EventPayload} objects
          *
@@ -611,6 +622,8 @@
             private List<KeyphraseRecognitionExtra> mKeyphraseExtras = Collections.emptyList();
             @ElapsedRealtimeLong
             private long mHalEventReceivedMillis = -1;
+            // default to true to keep prior behavior
+            private boolean mIsRecognitionStopped = true;
 
             public Builder() {}
 
@@ -747,13 +760,31 @@
             }
 
             /**
+             * Sets whether the system has stopped hotword recognition because of this detection.
+             */
+            @FlaggedApi(android.app.wearable.Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+            @NonNull
+            public Builder setIsRecognitionStopped(boolean isRecognitionStopped) {
+                mIsRecognitionStopped = isRecognitionStopped;
+                return this;
+            }
+
+            /**
              * Builds an {@link EventPayload} instance
              */
             @NonNull
             public EventPayload build() {
-                return new EventPayload(mCaptureAvailable, mAudioFormat, mCaptureSession,
-                        mDataFormat, mData, mHotwordDetectedResult, mAudioStream,
-                        mKeyphraseExtras, mHalEventReceivedMillis);
+                return new EventPayload(
+                        mCaptureAvailable,
+                        mAudioFormat,
+                        mCaptureSession,
+                        mDataFormat,
+                        mData,
+                        mHotwordDetectedResult,
+                        mAudioStream,
+                        mKeyphraseExtras,
+                        mHalEventReceivedMillis,
+                        mIsRecognitionStopped);
             }
         }
     }
@@ -787,14 +818,20 @@
 
         /**
          * Called when the keyphrase is spoken.
-         * This implicitly stops listening for the keyphrase once it's detected.
-         * Clients should start a recognition again once they are done handling this
-         * detection.
          *
-         * @param eventPayload Payload data for the detection event.
-         *        This may contain the trigger audio, if requested when calling
-         *        {@link AlwaysOnHotwordDetector#startRecognition(int)}.
+         * <p>This implicitly stops listening for the keyphrase once it's detected. Clients should
+         * start a recognition again once they are done handling this detection.
+         *
+         * @param eventPayload Payload data for the detection event. This may contain the trigger
+         *     audio, if requested when calling {@link
+         *     AlwaysOnHotwordDetector#startRecognition(int)}.
          */
+        // TODO(b/324635656): Update Javadoc for 24Q3 release:
+        // 1. Prepend to the first paragraph:
+        //     If {@code eventPayload.isRecognitionStopped()} returns true, this...
+        // 2. Append to the description for @param eventPayload:
+        //     ...or if the audio comes from {@link
+        //     android.service.wearable.WearableSensingService}.
         public abstract void onDetected(@NonNull EventPayload eventPayload);
 
         /**
@@ -1633,6 +1670,20 @@
         }
 
         @Override
+        public void onKeyphraseDetectedFromExternalSource(HotwordDetectedResult result) {
+            Slog.i(TAG, "onKeyphraseDetectedFromExternalSource");
+            EventPayload.Builder eventPayloadBuilder = new EventPayload.Builder();
+            if (android.app.wearable.Flags.enableHotwordWearableSensingApi()) {
+                eventPayloadBuilder.setIsRecognitionStopped(false);
+            }
+            Message.obtain(
+                            mHandler,
+                            MSG_HOTWORD_DETECTED,
+                            eventPayloadBuilder.setHotwordDetectedResult(result).build())
+                    .sendToTarget();
+        }
+
+        @Override
         public void onGenericSoundTriggerDetected(SoundTrigger.GenericRecognitionEvent event) {
             Slog.w(TAG, "Generic sound trigger event detected at AOHD: " + event);
         }
@@ -1648,16 +1699,6 @@
         }
 
         @Override
-        public void onTrainingData(@NonNull HotwordTrainingData data) {
-            if (DBG) {
-                Slog.d(TAG, "onTrainingData(" + data + ")");
-            } else {
-                Slog.i(TAG, "onTrainingData");
-            }
-            Message.obtain(mHandler, MSG_HOTWORD_TRAINING_DATA, data).sendToTarget();
-        }
-
-        @Override
         public void onHotwordDetectionServiceFailure(
                 HotwordDetectionServiceFailure hotwordDetectionServiceFailure) {
             Slog.v(TAG, "onHotwordDetectionServiceFailure: " + hotwordDetectionServiceFailure);
@@ -1788,9 +1829,6 @@
                     case MSG_DETECTION_UNKNOWN_FAILURE:
                         mExternalCallback.onUnknownFailure((String) message.obj);
                         break;
-                    case MSG_HOTWORD_TRAINING_DATA:
-                        mExternalCallback.onTrainingData((HotwordTrainingData) message.obj);
-                        break;
                     default:
                         super.handleMessage(message);
                 }
diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java
index 13b6a9a..60e9de7 100644
--- a/core/java/android/service/voice/HotwordDetectionService.java
+++ b/core/java/android/service/voice/HotwordDetectionService.java
@@ -40,7 +40,6 @@
 import android.os.PersistableBundle;
 import android.os.RemoteException;
 import android.os.SharedMemory;
-import android.service.voice.flags.Flags;
 import android.speech.IRecognitionServiceManager;
 import android.util.Log;
 import android.view.contentcapture.ContentCaptureManager;
@@ -81,6 +80,16 @@
     private static final long UPDATE_TIMEOUT_MILLIS = 20000;
 
     /**
+     * The PersistableBundle options key used in {@link #onDetect(ParcelFileDescriptor, AudioFormat,
+     * PersistableBundle, Callback)} to indicate whether the system will close the audio stream
+     * after {@code Callback} is invoked.
+     */
+    @FlaggedApi(android.app.wearable.Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    public static final String KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK =
+            "android.service.voice.HotwordDetectionService."
+                    + "KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK";
+
+    /**
      * Feature flag for Attention Service.
      *
      * @hide
@@ -366,6 +375,11 @@
      * PersistableBundle)}.
      * @param callback The callback to use for responding to the detection request.
      */
+    // TODO(b/324635656): Update Javadoc for 24Q3 release. Change the last paragraph to:
+    // <p>Upon invoking the {@code callback}, the system will send the detection result to
+    // the {@link HotwordDetector}'s callback. If {@code
+    // options.getBoolean(KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK, true)} returns true,
+    // the system will also close the {@code audioStream} after {@code callback} is invoked.
     public void onDetect(
             @NonNull ParcelFileDescriptor audioStream,
             @NonNull AudioFormat audioFormat,
@@ -445,30 +459,5 @@
                 throw e.rethrowFromSystemServer();
             }
         }
-
-        /**
-         * Informs the {@link HotwordDetector} when there is training data.
-         *
-         * <p> A daily limit of 20 is enforced on training data events sent. Number events egressed
-         * are tracked across UTC day (24-hour window) and count is reset at midnight
-         * (UTC 00:00:00). To be informed of failures to egress training data due to limit being
-         * reached, the associated hotword detector should listen for
-         * {@link HotwordDetectionServiceFailure#ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED}
-         * events in {@link HotwordDetector.Callback#onFailure(HotwordDetectionServiceFailure)}.
-         *
-         * @param data Training data determined by the service. This is provided to the
-         *               {@link HotwordDetector}.
-         */
-        @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-        public void onTrainingData(@NonNull HotwordTrainingData data) {
-            requireNonNull(data);
-            try {
-                Log.d(TAG, "onTrainingData");
-                mRemoteCallback.onTrainingData(data);
-            } catch (RemoteException e) {
-                throw e.rethrowFromSystemServer();
-            }
-        }
-
     }
 }
diff --git a/core/java/android/service/voice/HotwordDetectionServiceFailure.java b/core/java/android/service/voice/HotwordDetectionServiceFailure.java
index c8b60c4..cc03c86 100644
--- a/core/java/android/service/voice/HotwordDetectionServiceFailure.java
+++ b/core/java/android/service/voice/HotwordDetectionServiceFailure.java
@@ -81,14 +81,6 @@
      */
     public static final int ERROR_CODE_REMOTE_EXCEPTION = 7;
 
-    /** Indicates failure to egress training data due to limit being exceeded. */
-    @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-    public static final int ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED = 8;
-
-    /** Indicates failure to egress training data due to security exception. */
-    @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-    public static final int ERROR_CODE_ON_TRAINING_DATA_SECURITY_EXCEPTION = 9;
-
     /** Indicates shutdown of {@link HotwordDetectionService} due to voice activation op being
      * disabled. */
     @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
@@ -106,8 +98,6 @@
             ERROR_CODE_ON_DETECTED_SECURITY_EXCEPTION,
             ERROR_CODE_ON_DETECTED_STREAM_COPY_FAILURE,
             ERROR_CODE_REMOTE_EXCEPTION,
-            ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED,
-            ERROR_CODE_ON_TRAINING_DATA_SECURITY_EXCEPTION,
             ERROR_CODE_SHUTDOWN_HDS_ON_VOICE_ACTIVATION_OP_DISABLED,
     })
     @Retention(RetentionPolicy.SOURCE)
diff --git a/core/java/android/service/voice/HotwordDetector.java b/core/java/android/service/voice/HotwordDetector.java
index 16a6dbe..32a93ee 100644
--- a/core/java/android/service/voice/HotwordDetector.java
+++ b/core/java/android/service/voice/HotwordDetector.java
@@ -19,7 +19,6 @@
 import static android.Manifest.permission.CAPTURE_AUDIO_HOTWORD;
 import static android.Manifest.permission.RECORD_AUDIO;
 
-import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
@@ -28,7 +27,6 @@
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.SharedMemory;
-import android.service.voice.flags.Flags;
 
 import java.io.PrintWriter;
 
@@ -246,19 +244,6 @@
         void onRejected(@NonNull HotwordRejectedResult result);
 
         /**
-         * Called by the {@link HotwordDetectionService} to egress training data to the
-         * {@link HotwordDetector}. This data can be used for improving and analyzing hotword
-         * detection models.
-         *
-         * @param data Training data to be egressed provided by the
-         *               {@link HotwordDetectionService}.
-         */
-        @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-        default void onTrainingData(@NonNull HotwordTrainingData data) {
-            return;
-        }
-
-        /**
          * Called when the {@link HotwordDetectionService} or {@link VisualQueryDetectionService} is
          * created by the system and given a short amount of time to report their initialization
          * state.
diff --git a/core/java/android/service/voice/HotwordTrainingDataLimitEnforcer.java b/core/java/android/service/voice/HotwordTrainingDataLimitEnforcer.java
deleted file mode 100644
index 7eb5280..0000000
--- a/core/java/android/service/voice/HotwordTrainingDataLimitEnforcer.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 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 android.service.voice;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Environment;
-import android.os.UserHandle;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.internal.annotations.VisibleForTesting;
-
-import java.io.File;
-import java.time.LocalDate;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-
-/**
- * Enforces daily limits on the egress of {@link HotwordTrainingData} from the hotword detection
- * service.
- *
- * <p> Egress is tracked across UTC day (24-hour window) and count is reset at
- * midnight (UTC 00:00:00).
- *
- * @hide
- */
-public class HotwordTrainingDataLimitEnforcer {
-    private static final String TAG = "HotwordTrainingDataLimitEnforcer";
-
-    /**
-     * Number of hotword training data events that are allowed to be egressed per day.
-     */
-    private static final int TRAINING_DATA_EGRESS_LIMIT = 20;
-
-    /**
-     * Name of hotword training data limit shared preference.
-     */
-    private static final String TRAINING_DATA_LIMIT_SHARED_PREF = "TrainingDataSharedPref";
-
-    /**
-     * Key for date associated with
-     * {@link HotwordTrainingDataLimitEnforcer#TRAINING_DATA_EGRESS_COUNT}.
-     */
-    private static final String TRAINING_DATA_EGRESS_DATE = "TRAINING_DATA_EGRESS_DATE";
-
-    /**
-     * Key for number of hotword training data events egressed on
-     * {@link HotwordTrainingDataLimitEnforcer#TRAINING_DATA_EGRESS_DATE}.
-     */
-    private static final String TRAINING_DATA_EGRESS_COUNT = "TRAINING_DATA_EGRESS_COUNT";
-
-    private SharedPreferences mSharedPreferences;
-
-    private static final Object INSTANCE_LOCK = new Object();
-    private final Object mTrainingDataIncrementLock = new Object();
-
-    private static HotwordTrainingDataLimitEnforcer sInstance;
-
-    /** Get singleton HotwordTrainingDataLimitEnforcer instance. */
-    public static @NonNull HotwordTrainingDataLimitEnforcer getInstance(@NonNull Context context) {
-        synchronized (INSTANCE_LOCK) {
-            if (sInstance == null) {
-                sInstance = new HotwordTrainingDataLimitEnforcer(context.getApplicationContext());
-            }
-            return sInstance;
-        }
-    }
-
-    private HotwordTrainingDataLimitEnforcer(Context context) {
-        mSharedPreferences = context.getSharedPreferences(
-                new File(Environment.getDataSystemCeDirectory(UserHandle.USER_SYSTEM),
-                        TRAINING_DATA_LIMIT_SHARED_PREF),
-                Context.MODE_PRIVATE);
-    }
-
-    /** @hide */
-    @VisibleForTesting
-    public void resetTrainingDataEgressCount() {
-        Log.i(TAG, "Resetting training data egress count!");
-        synchronized (mTrainingDataIncrementLock) {
-            // Clear all training data shared preferences.
-            mSharedPreferences.edit().clear().commit();
-        }
-    }
-
-    /**
-     * Increments training data egress count.
-     * <p> If count exceeds daily training data egress limit, returns false. Else, will return true.
-     */
-    public boolean incrementEgressCount() {
-        synchronized (mTrainingDataIncrementLock) {
-            return incrementTrainingDataEgressCountLocked();
-        }
-    }
-
-    private boolean incrementTrainingDataEgressCountLocked() {
-        LocalDate utcDate = LocalDate.now(ZoneOffset.UTC);
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-        String currentDate = utcDate.format(formatter);
-
-        String storedDate = mSharedPreferences.getString(TRAINING_DATA_EGRESS_DATE, "");
-        int storedCount = mSharedPreferences.getInt(TRAINING_DATA_EGRESS_COUNT, 0);
-        Log.i(TAG,
-                TextUtils.formatSimple("There are %s hotword training data events egressed for %s",
-                        storedCount, storedDate));
-
-        SharedPreferences.Editor editor = mSharedPreferences.edit();
-
-        // If date has not changed from last training data event, increment counter if within
-        // limit.
-        if (storedDate.equals(currentDate)) {
-            if (storedCount < TRAINING_DATA_EGRESS_LIMIT) {
-                Log.i(TAG, "Within hotword training data egress limit, incrementing...");
-                editor.putInt(TRAINING_DATA_EGRESS_COUNT, storedCount + 1);
-                editor.commit();
-                return true;
-            }
-            Log.i(TAG, "Exceeded hotword training data egress limit.");
-            return false;
-        }
-
-        // If date has changed, reset.
-        Log.i(TAG, TextUtils.formatSimple(
-                "Stored date %s is different from current data %s. Resetting counters...",
-                storedDate, currentDate));
-
-        editor.putString(TRAINING_DATA_EGRESS_DATE, currentDate);
-        editor.putInt(TRAINING_DATA_EGRESS_COUNT, 1);
-        editor.commit();
-        return true;
-    }
-}
diff --git a/core/java/android/service/voice/IDetectorSessionVisualQueryDetectionCallback.aidl b/core/java/android/service/voice/IDetectorSessionVisualQueryDetectionCallback.aidl
index 4f6eb88..c2036a4 100644
--- a/core/java/android/service/voice/IDetectorSessionVisualQueryDetectionCallback.aidl
+++ b/core/java/android/service/voice/IDetectorSessionVisualQueryDetectionCallback.aidl
@@ -16,6 +16,7 @@
 
 package android.service.voice;
 
+import android.service.voice.VisualQueryAttentionResult;
 import android.service.voice.VisualQueryDetectedResult;
 
 /**
@@ -31,12 +32,12 @@
     /**
      * Called when the user attention is gained and intent to show the assistant icon in SysUI.
      */
-    void onAttentionGained();
+    void onAttentionGained(in VisualQueryAttentionResult attentionResult);
 
     /**
      * Called when the user attention is lost and intent to hide the assistant icon in SysUI.
      */
-    void onAttentionLost();
+    void onAttentionLost(int interactionIntention);
 
     /**
      * Called when the detected query is streamed.
diff --git a/core/java/android/service/voice/IDspHotwordDetectionCallback.aidl b/core/java/android/service/voice/IDspHotwordDetectionCallback.aidl
index a9c6af79..c6b10ff 100644
--- a/core/java/android/service/voice/IDspHotwordDetectionCallback.aidl
+++ b/core/java/android/service/voice/IDspHotwordDetectionCallback.aidl
@@ -18,7 +18,6 @@
 
 import android.service.voice.HotwordDetectedResult;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
 
 /**
  * Callback for returning the detected result from the HotwordDetectionService.
@@ -38,10 +37,4 @@
      * Sends {@code result} to the HotwordDetector.
      */
     void onRejected(in HotwordRejectedResult result);
-
-    /**
-     * Called by {@link HotwordDetectionService} to egress training data to the
-     * {@link HotwordDetector}.
-     */
-     void onTrainingData(in HotwordTrainingData data);
 }
diff --git a/core/java/android/service/voice/IMicrophoneHotwordDetectionVoiceInteractionCallback.aidl b/core/java/android/service/voice/IMicrophoneHotwordDetectionVoiceInteractionCallback.aidl
index 6226772..fab830a 100644
--- a/core/java/android/service/voice/IMicrophoneHotwordDetectionVoiceInteractionCallback.aidl
+++ b/core/java/android/service/voice/IMicrophoneHotwordDetectionVoiceInteractionCallback.aidl
@@ -20,7 +20,6 @@
 import android.service.voice.HotwordDetectedResult;
 import android.service.voice.HotwordDetectionServiceFailure;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
 
 /**
  * Callback for returning the detected result from the HotwordDetectionService.
@@ -48,10 +47,4 @@
      */
     void onRejected(
         in HotwordRejectedResult hotwordRejectedResult);
-
-    /**
-     * Called by {@link HotwordDetectionService} to egress training data to the
-     * {@link HotwordDetector}.
-     */
-     void onTrainingData(in HotwordTrainingData data);
 }
diff --git a/core/java/android/service/voice/SoftwareHotwordDetector.java b/core/java/android/service/voice/SoftwareHotwordDetector.java
index 2c68fae..a835b0f 100644
--- a/core/java/android/service/voice/SoftwareHotwordDetector.java
+++ b/core/java/android/service/voice/SoftwareHotwordDetector.java
@@ -18,7 +18,6 @@
 
 import static android.Manifest.permission.RECORD_AUDIO;
 
-import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.hardware.soundtrigger.SoundTrigger;
@@ -202,13 +201,6 @@
                         result != null ? result : new HotwordRejectedResult.Builder().build());
             }));
         }
-
-        @Override
-        public void onTrainingData(@NonNull HotwordTrainingData result) {
-            Binder.withCleanCallingIdentity(() -> mExecutor.execute(() -> {
-                mCallback.onTrainingData(result);
-            }));
-        }
     }
 
     private static class InitializationStateListener
@@ -231,6 +223,13 @@
         }
 
         @Override
+        public void onKeyphraseDetectedFromExternalSource(HotwordDetectedResult result) {
+            if (DEBUG) {
+                Slog.i(TAG, "Ignored #onKeyphraseDetectedFromExternalSource event");
+            }
+        }
+
+        @Override
         public void onGenericSoundTriggerDetected(
                 SoundTrigger.GenericRecognitionEvent recognitionEvent) throws RemoteException {
             if (DEBUG) {
@@ -246,13 +245,6 @@
         }
 
         @Override
-        public void onTrainingData(@NonNull HotwordTrainingData data) {
-            if (DEBUG) {
-                Slog.i(TAG, "Ignored #onTrainingData event");
-            }
-        }
-
-        @Override
         public void onHotwordDetectionServiceFailure(
                 HotwordDetectionServiceFailure hotwordDetectionServiceFailure)
                 throws RemoteException {
diff --git a/location/java/android/location/GeocoderParams.aidl b/core/java/android/service/voice/VisualQueryAttentionResult.aidl
similarity index 74%
copy from location/java/android/location/GeocoderParams.aidl
copy to core/java/android/service/voice/VisualQueryAttentionResult.aidl
index 2484e20..38c8f07 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/core/java/android/service/voice/VisualQueryAttentionResult.aidl
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2010, The Android Open Source Project
+ * Copyright (C) 2024 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
+ *      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,
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.service.voice;
 
-parcelable GeocoderParams;
+parcelable VisualQueryAttentionResult;
\ No newline at end of file
diff --git a/core/java/android/service/voice/VisualQueryAttentionResult.java b/core/java/android/service/voice/VisualQueryAttentionResult.java
new file mode 100644
index 0000000..690990b
--- /dev/null
+++ b/core/java/android/service/voice/VisualQueryAttentionResult.java
@@ -0,0 +1,365 @@
+/*
+ * Copyright (C) 2024 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 android.service.voice;
+
+import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.service.voice.flags.Flags;
+
+import com.android.internal.util.DataClass;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Represents a result supporting the visual query attention.
+ *
+ * @hide
+ */
+@DataClass(
+        genConstructor = false,
+        genBuilder = true,
+        genEqualsHashCode = true,
+        genHiddenConstDefs = true,
+        genParcelable = true,
+        genToString = true
+)
+@SystemApi
+@FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
+public final class VisualQueryAttentionResult implements Parcelable {
+
+    /** Intention type to allow the system to listen to audio-visual query interactions. */
+    public static final int INTERACTION_INTENTION_AUDIO_VISUAL = 0;
+
+    /** Intention type to allow the system to listen to visual accessibility query interactions. */
+    public static final int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY = 1;
+
+    /**
+     * Intention of interaction associated with the attention result that the device should listen
+     * to after the attention signal is gained.
+     */
+    private final @InteractionIntention int mInteractionIntention;
+
+    private static @InteractionIntention int defaultInteractionIntention() {
+        return INTERACTION_INTENTION_AUDIO_VISUAL;
+    }
+
+    /**
+     * Integer value denoting the level of user engagement of the attention. System will
+     * also use this to adjust the intensity of UI indicators.
+     *
+     * The value can be between 1 and 100 (inclusive). The default value is set to be 100 which is
+     * defined as a complete engagement, which leads to the same UI result as the legacy
+     * {@link VisualQueryDetectionService#gainedAttention()}.
+     *
+     * Different values of engagement level corresponds to various SysUI effects. Within the same
+     * interaction intention, higher value of engagement level will lead to stronger visual
+     * presentation of the device attention UI.
+     */
+    @IntRange(from = 1, to = 100)
+    private final int mEngagementLevel;
+
+    private static int defaultEngagementLevel() {
+        return 100;
+    }
+
+    /**
+     * Provides an instance of {@link Builder} with state corresponding to this instance.
+     *
+     * @hide
+     */
+    public Builder buildUpon() {
+        return new Builder()
+                .setInteractionIntention(mInteractionIntention)
+                .setEngagementLevel(mEngagementLevel);
+    }
+
+
+
+
+    // Code below generated by codegen v1.0.23.
+    //
+    // DO NOT MODIFY!
+    // CHECKSTYLE:OFF Generated code
+    //
+    // To regenerate run:
+    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/voice/VisualQueryAttentionResult.java
+    //
+    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+    //   Settings > Editor > Code Style > Formatter Control
+    //@formatter:off
+
+
+    /** @hide */
+    @IntDef(prefix = "INTERACTION_INTENTION_", value = {
+        INTERACTION_INTENTION_AUDIO_VISUAL,
+        INTERACTION_INTENTION_VISUAL_ACCESSIBILITY
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @DataClass.Generated.Member
+    public @interface InteractionIntention {}
+
+    /** @hide */
+    @DataClass.Generated.Member
+    public static String interactionIntentionToString(@InteractionIntention int value) {
+        switch (value) {
+            case INTERACTION_INTENTION_AUDIO_VISUAL:
+                    return "INTERACTION_INTENTION_AUDIO_VISUAL";
+            case INTERACTION_INTENTION_VISUAL_ACCESSIBILITY:
+                    return "INTERACTION_INTENTION_VISUAL_ACCESSIBILITY";
+            default: return Integer.toHexString(value);
+        }
+    }
+
+    @DataClass.Generated.Member
+    /* package-private */ VisualQueryAttentionResult(
+            @InteractionIntention int interactionIntention,
+            @IntRange(from = 1, to = 100) int engagementLevel) {
+        this.mInteractionIntention = interactionIntention;
+
+        if (!(mInteractionIntention == INTERACTION_INTENTION_AUDIO_VISUAL)
+                && !(mInteractionIntention == INTERACTION_INTENTION_VISUAL_ACCESSIBILITY)) {
+            throw new java.lang.IllegalArgumentException(
+                    "interactionIntention was " + mInteractionIntention + " but must be one of: "
+                            + "INTERACTION_INTENTION_AUDIO_VISUAL(" + INTERACTION_INTENTION_AUDIO_VISUAL + "), "
+                            + "INTERACTION_INTENTION_VISUAL_ACCESSIBILITY(" + INTERACTION_INTENTION_VISUAL_ACCESSIBILITY + ")");
+        }
+
+        this.mEngagementLevel = engagementLevel;
+        com.android.internal.util.AnnotationValidations.validate(
+                IntRange.class, null, mEngagementLevel,
+                "from", 1,
+                "to", 100);
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    /**
+     * Intention of interaction associated with the attention result that the device should listen
+     * to after the attention signal is gained.
+     */
+    @DataClass.Generated.Member
+    public @InteractionIntention int getInteractionIntention() {
+        return mInteractionIntention;
+    }
+
+    /**
+     * Integer value denoting the level of user engagement of the attention. System will
+     * also use this to adjust the intensity of UI indicators.
+     *
+     * The value can be between 1 and 100 (inclusive). The default value is set to be 100 which is
+     * defined as a complete engagement, which leads to the same UI result as the legacy
+     * {@link VisualQueryDetectionService#gainedAttention()}.
+     *
+     * Different values of engagement level corresponds to various SysUI effects. Within the same
+     * interaction intention, higher value of engagement level will lead to stronger visual
+     * presentation of the device attention UI.
+     */
+    @DataClass.Generated.Member
+    public @IntRange(from = 1, to = 100) int getEngagementLevel() {
+        return mEngagementLevel;
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public String toString() {
+        // You can override field toString logic by defining methods like:
+        // String fieldNameToString() { ... }
+
+        return "VisualQueryAttentionResult { " +
+                "interactionIntention = " + interactionIntentionToString(mInteractionIntention) + ", " +
+                "engagementLevel = " + mEngagementLevel +
+        " }";
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public boolean equals(@Nullable Object o) {
+        // You can override field equality logic by defining either of the methods like:
+        // boolean fieldNameEquals(VisualQueryAttentionResult other) { ... }
+        // boolean fieldNameEquals(FieldType otherValue) { ... }
+
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        @SuppressWarnings("unchecked")
+        VisualQueryAttentionResult that = (VisualQueryAttentionResult) o;
+        //noinspection PointlessBooleanExpression
+        return true
+                && mInteractionIntention == that.mInteractionIntention
+                && mEngagementLevel == that.mEngagementLevel;
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public int hashCode() {
+        // You can override field hashCode logic by defining methods like:
+        // int fieldNameHashCode() { ... }
+
+        int _hash = 1;
+        _hash = 31 * _hash + mInteractionIntention;
+        _hash = 31 * _hash + mEngagementLevel;
+        return _hash;
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        // You can override field parcelling by defining methods like:
+        // void parcelFieldName(Parcel dest, int flags) { ... }
+
+        dest.writeInt(mInteractionIntention);
+        dest.writeInt(mEngagementLevel);
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public int describeContents() { return 0; }
+
+    /** @hide */
+    @SuppressWarnings({"unchecked", "RedundantCast"})
+    @DataClass.Generated.Member
+    /* package-private */ VisualQueryAttentionResult(@NonNull Parcel in) {
+        // You can override field unparcelling by defining methods like:
+        // static FieldType unparcelFieldName(Parcel in) { ... }
+
+        int interactionIntention = in.readInt();
+        int engagementLevel = in.readInt();
+
+        this.mInteractionIntention = interactionIntention;
+
+        if (!(mInteractionIntention == INTERACTION_INTENTION_AUDIO_VISUAL)
+                && !(mInteractionIntention == INTERACTION_INTENTION_VISUAL_ACCESSIBILITY)) {
+            throw new java.lang.IllegalArgumentException(
+                    "interactionIntention was " + mInteractionIntention + " but must be one of: "
+                            + "INTERACTION_INTENTION_AUDIO_VISUAL(" + INTERACTION_INTENTION_AUDIO_VISUAL + "), "
+                            + "INTERACTION_INTENTION_VISUAL_ACCESSIBILITY(" + INTERACTION_INTENTION_VISUAL_ACCESSIBILITY + ")");
+        }
+
+        this.mEngagementLevel = engagementLevel;
+        com.android.internal.util.AnnotationValidations.validate(
+                IntRange.class, null, mEngagementLevel,
+                "from", 1,
+                "to", 100);
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    @DataClass.Generated.Member
+    public static final @NonNull Parcelable.Creator<VisualQueryAttentionResult> CREATOR
+            = new Parcelable.Creator<VisualQueryAttentionResult>() {
+        @Override
+        public VisualQueryAttentionResult[] newArray(int size) {
+            return new VisualQueryAttentionResult[size];
+        }
+
+        @Override
+        public VisualQueryAttentionResult createFromParcel(@NonNull Parcel in) {
+            return new VisualQueryAttentionResult(in);
+        }
+    };
+
+    /**
+     * A builder for {@link VisualQueryAttentionResult}
+     */
+    @SuppressWarnings("WeakerAccess")
+    @DataClass.Generated.Member
+    public static final class Builder {
+
+        private @InteractionIntention int mInteractionIntention;
+        private @IntRange(from = 1, to = 100) int mEngagementLevel;
+
+        private long mBuilderFieldsSet = 0L;
+
+        public Builder() {
+        }
+
+        /**
+         * Intention of interaction associated with the attention result that the device should listen
+         * to after the attention signal is gained.
+         */
+        @DataClass.Generated.Member
+        public @NonNull Builder setInteractionIntention(@InteractionIntention int value) {
+            checkNotUsed();
+            mBuilderFieldsSet |= 0x1;
+            mInteractionIntention = value;
+            return this;
+        }
+
+        /**
+         * Integer value denoting the level of user engagement of the attention. System will
+         * also use this to adjust the intensity of UI indicators.
+         *
+         * The value can be between 1 and 100 (inclusive). The default value is set to be 100 which is
+         * defined as a complete engagement, which leads to the same UI result as the legacy
+         * {@link VisualQueryDetectionService#gainedAttention()}.
+         *
+         * Different values of engagement level corresponds to various SysUI effects. Within the same
+         * interaction intention, higher value of engagement level will lead to stronger visual
+         * presentation of the device attention UI.
+         */
+        @DataClass.Generated.Member
+        public @NonNull Builder setEngagementLevel(@IntRange(from = 1, to = 100) int value) {
+            checkNotUsed();
+            mBuilderFieldsSet |= 0x2;
+            mEngagementLevel = value;
+            return this;
+        }
+
+        /** Builds the instance. This builder should not be touched after calling this! */
+        public @NonNull VisualQueryAttentionResult build() {
+            checkNotUsed();
+            mBuilderFieldsSet |= 0x4; // Mark builder used
+
+            if ((mBuilderFieldsSet & 0x1) == 0) {
+                mInteractionIntention = defaultInteractionIntention();
+            }
+            if ((mBuilderFieldsSet & 0x2) == 0) {
+                mEngagementLevel = defaultEngagementLevel();
+            }
+            VisualQueryAttentionResult o = new VisualQueryAttentionResult(
+                    mInteractionIntention,
+                    mEngagementLevel);
+            return o;
+        }
+
+        private void checkNotUsed() {
+            if ((mBuilderFieldsSet & 0x4) != 0) {
+                throw new IllegalStateException(
+                        "This Builder should not be reused. Use a new Builder instance instead");
+            }
+        }
+    }
+
+    @DataClass.Generated(
+            time = 1707773691880L,
+            codegenVersion = "1.0.23",
+            sourceFile = "frameworks/base/core/java/android/service/voice/VisualQueryAttentionResult.java",
+            inputSignatures = "public static final  int INTERACTION_INTENTION_AUDIO_VISUAL\npublic static final  int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY\nprivate final @android.service.voice.VisualQueryAttentionResult.InteractionIntention int mInteractionIntention\nprivate final @android.annotation.IntRange int mEngagementLevel\nprivate static @android.service.voice.VisualQueryAttentionResult.InteractionIntention int defaultInteractionIntention()\nprivate static  int defaultEngagementLevel()\npublic  android.service.voice.VisualQueryAttentionResult.Builder buildUpon()\nclass VisualQueryAttentionResult extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
+    @Deprecated
+    private void __metadata() {}
+
+
+    //@formatter:on
+    // End of generated code
+
+}
diff --git a/core/java/android/service/voice/VisualQueryDetectedResult.java b/core/java/android/service/voice/VisualQueryDetectedResult.java
index 13cdfde..322148a 100644
--- a/core/java/android/service/voice/VisualQueryDetectedResult.java
+++ b/core/java/android/service/voice/VisualQueryDetectedResult.java
@@ -82,8 +82,6 @@
     }
 
 
-
-
     // Code below generated by codegen v1.0.23.
     //
     // DO NOT MODIFY!
diff --git a/core/java/android/service/voice/VisualQueryDetectionService.java b/core/java/android/service/voice/VisualQueryDetectionService.java
index b60c775..887b575 100644
--- a/core/java/android/service/voice/VisualQueryDetectionService.java
+++ b/core/java/android/service/voice/VisualQueryDetectionService.java
@@ -262,23 +262,82 @@
     public void onStopDetection() {
     }
 
+    // TODO(b/324341724): Properly deprecate this API.
     /**
-     * Informs the system that the user attention is gained so queries can be streamed.
+     * Informs the system that the attention is gained for the interaction intention
+     * {@link VisualQueryAttentionResult#INTERACTION_INTENTION_AUDIO_VISUAL} with
+     * engagement level equals to the maximum value possible so queries can be streamed.
+     *
+     * Usage of this method is not recommended, please use
+     * {@link VisualQueryDetectionService#gainedAttention(VisualQueryAttentionResult)} instead.
+     *
      */
     public final void gainedAttention() {
+        if (Flags.allowVariousAttentionTypes()) {
+            gainedAttention(new VisualQueryAttentionResult.Builder().build());
+        } else {
+            try {
+                mRemoteCallback.onAttentionGained(null);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
+     * Puts the device into an attention state that will listen to certain interaction intention
+     * based on the {@link VisualQueryAttentionResult} provided.
+     *
+     * Different type and levels of engagement will lead to corresponding UI icons showing. See
+     * {@link VisualQueryAttentionResult#setInteractionIntention(int)} for details.
+     *
+     * Exactly one {@link VisualQueryAttentionResult} can be set at a time with this method at
+     * the moment. Multiple attention results will be supported to set the device into with this
+     * API before {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} is finalized.
+     *
+     * Latest call will override the {@link VisualQueryAttentionResult} of previous calls. Queries
+     * streamed are independent of the attention interactionIntention.
+     *
+     * @param attentionResult Attention result of type {@link VisualQueryAttentionResult}.
+     */
+    @FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
+    public final void gainedAttention(@NonNull VisualQueryAttentionResult attentionResult) {
         try {
-            mRemoteCallback.onAttentionGained();
+            mRemoteCallback.onAttentionGained(attentionResult);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
     }
 
     /**
-     * Informs the system that the user attention is lost to stop streaming.
+     * Informs the system that all attention has lost to stop streaming.
      */
     public final void lostAttention() {
+        if (Flags.allowVariousAttentionTypes()) {
+            lostAttention(VisualQueryAttentionResult.INTERACTION_INTENTION_AUDIO_VISUAL);
+            lostAttention(VisualQueryAttentionResult.INTERACTION_INTENTION_VISUAL_ACCESSIBILITY);
+        } else {
+            try {
+                mRemoteCallback.onAttentionLost(0); // placeholder
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
+     * This will cancel the corresponding attention if the provided interaction intention is the
+     * same as which of the object called with
+     * {@link VisualQueryDetectionService#gainedAttention(VisualQueryAttentionResult)}.
+     *
+     * @param interactionIntention Interaction intention, one of
+     *        {@link VisualQueryAttentionResult#InteractionIntention}.
+     */
+    @FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
+    public final void lostAttention(
+            @VisualQueryAttentionResult.InteractionIntention int interactionIntention) {
         try {
-            mRemoteCallback.onAttentionLost();
+            mRemoteCallback.onAttentionLost(interactionIntention);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/service/voice/VisualQueryDetector.java b/core/java/android/service/voice/VisualQueryDetector.java
index aee25f5..1eb4d67 100644
--- a/core/java/android/service/voice/VisualQueryDetector.java
+++ b/core/java/android/service/voice/VisualQueryDetector.java
@@ -414,6 +414,13 @@
         }
 
         @Override
+        public void onKeyphraseDetectedFromExternalSource(HotwordDetectedResult result) {
+            if (DEBUG) {
+                Slog.i(TAG, "Ignored #onKeyphraseDetectedFromExternalSource event");
+            }
+        }
+
+        @Override
         public void onGenericSoundTriggerDetected(
                 SoundTrigger.GenericRecognitionEvent recognitionEvent) throws RemoteException {
             if (DEBUG) {
@@ -427,12 +434,6 @@
                 Slog.i(TAG, "Ignored #onRejected event");
             }
         }
-        @Override
-        public void onTrainingData(HotwordTrainingData data) throws RemoteException {
-            if (DEBUG) {
-                Slog.i(TAG, "Ignored #onTrainingData event");
-            }
-        }
 
         @Override
         public void onRecognitionPaused() throws RemoteException {
diff --git a/core/java/android/service/voice/VoiceInteractionManagerInternal.java b/core/java/android/service/voice/VoiceInteractionManagerInternal.java
index 270f848..7d27733 100644
--- a/core/java/android/service/voice/VoiceInteractionManagerInternal.java
+++ b/core/java/android/service/voice/VoiceInteractionManagerInternal.java
@@ -19,14 +19,17 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.content.ComponentName;
+import android.media.AudioFormat;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.PersistableBundle;
 
 import com.android.internal.annotations.Immutable;
 
 /**
- * @hide
- * Private interface to the VoiceInteractionManagerService for use by ActivityManagerService.
+ * @hide Private interface to the VoiceInteractionManagerService for use within system_server.
  */
 public abstract class VoiceInteractionManagerInternal {
 
@@ -77,6 +80,25 @@
     public abstract void onPreCreatedUserConversion(@UserIdInt int userId);
 
     /**
+     * Called by {@link com.android.server.wearable.WearableSensingManagerPerUserService} when a
+     * wearable starts sending audio data for hotword detection.
+     *
+     * @param audioStream The audio data.
+     * @param audioFormat The format of the audio data.
+     * @param options Options supporting hotword detection.
+     * @param targetVisComponentName The target VoiceInteractionService ComponentName
+     * @param userId The user ID of the calling wearable service
+     * @param callback The callback to notify the caller of the hotword detection result.
+     */
+    public abstract void startListeningFromWearable(
+            ParcelFileDescriptor audioStream,
+            AudioFormat audioFormat,
+            PersistableBundle options,
+            ComponentName targetVisComponentName,
+            int userId,
+            WearableHotwordDetectionCallback callback);
+
+    /**
      * Provides the uids of the currently active
      * {@link android.service.voice.HotwordDetectionService} and its owning package. The
      * HotwordDetectionService is an isolated service, so it has a separate uid.
@@ -101,4 +123,20 @@
             return mOwnerUid;
         }
     }
+
+    /**
+     * Callback for returning the detected hotword result to the wearable.
+     *
+     * @hide
+     */
+    public interface WearableHotwordDetectionCallback {
+        /** Called when hotword is detected. */
+        void onDetected();
+
+        /** Called when hotword is not detected. */
+        void onRejected();
+
+        /** Called when an unexpected error occurs. */
+        void onError(String errorMessage);
+    }
 }
diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java
index 75ab48a..20adc54 100644
--- a/core/java/android/service/voice/VoiceInteractionService.java
+++ b/core/java/android/service/voice/VoiceInteractionService.java
@@ -18,7 +18,6 @@
 
 import android.Manifest;
 import android.annotation.CallbackExecutor;
-import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
@@ -49,7 +48,6 @@
 import android.os.SharedMemory;
 import android.os.SystemProperties;
 import android.provider.Settings;
-import android.service.voice.flags.Flags;
 import android.util.ArraySet;
 import android.util.Log;
 
@@ -444,20 +442,6 @@
         }
     }
 
-    /** Reset hotword training data egressed count.
-     *  @hide */
-    @TestApi
-    @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-    @RequiresPermission(Manifest.permission.RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT)
-    public final void resetHotwordTrainingDataEgressCountForTest() {
-        Log.i(TAG, "Resetting hotword training data egress count for test.");
-        try {
-            mSystemService.resetHotwordTrainingDataEgressCountForTest();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
     /**
      * Creates an {@link AlwaysOnHotwordDetector} for the given keyphrase and locale.
      * This instance must be retained and used by the client.
@@ -1025,36 +1009,6 @@
     }
 
     /**
-     * Allow/disallow receiving training data from trusted process.
-     *
-     * <p> This method can be called by a preinstalled assistant to receive/stop receiving
-     * training data via {@link HotwordDetector.Callback#onTrainingData(HotwordTrainingData)}.
-     * These training data events are produced during sandboxed detection (in trusted process).
-     *
-     * @param allowed whether to allow/disallow receiving training data produced during
-     *                sandboxed detection (from trusted process).
-     * @throws SecurityException if caller is not a preinstalled assistant or if caller is not the
-     * active assistant.
-     *
-     * @hide
-     */
-    //TODO(b/315053245): Add mitigations to make API no-op once user has modified setting.
-    @SystemApi
-    @FlaggedApi(Flags.FLAG_ALLOW_TRAINING_DATA_EGRESS_FROM_HDS)
-    @RequiresPermission(Manifest.permission.MANAGE_HOTWORD_DETECTION)
-    public void setShouldReceiveSandboxedTrainingData(boolean allowed) {
-        Log.i(TAG, "setShouldReceiveSandboxedTrainingData to " + allowed);
-        if (mSystemService == null) {
-            throw new IllegalStateException("Not available until onReady() is called");
-        }
-        try {
-            mSystemService.setShouldReceiveSandboxedTrainingData(allowed);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    /**
      * Creates an {@link KeyphraseModelManager} to use for enrolling voice models outside of the
      * pre-bundled system voice models.
      * @hide
diff --git a/core/java/android/service/wearable/IWearableSensingService.aidl b/core/java/android/service/wearable/IWearableSensingService.aidl
index f67dcff..22d8fda 100644
--- a/core/java/android/service/wearable/IWearableSensingService.aidl
+++ b/core/java/android/service/wearable/IWearableSensingService.aidl
@@ -33,6 +33,10 @@
     void provideData(in PersistableBundle data, in SharedMemory sharedMemory, in RemoteCallback callback);
     void registerDataRequestObserver(int dataType, in RemoteCallback dataRequestCallback, int dataRequestObserverId, in String packageName, in RemoteCallback statusCallback);
     void unregisterDataRequestObserver(int dataType, int dataRequestObserverId, in String packageName, in RemoteCallback statusCallback);
+    void startHotwordRecognition(in RemoteCallback wearableHotwordCallback, in RemoteCallback statusCallback);
+    void stopHotwordRecognition(in RemoteCallback statusCallback);
+    void onValidatedByHotwordDetectionService();
+    void stopActiveHotwordAudio();
     void startDetection(in AmbientContextEventRequest request, in String packageName,
             in RemoteCallback detectionResultCallback, in RemoteCallback statusCallback);
     void stopDetection(in String packageName);
diff --git a/core/java/android/service/wearable/WearableSensingService.java b/core/java/android/service/wearable/WearableSensingService.java
index bb6e030..808c3ae 100644
--- a/core/java/android/service/wearable/WearableSensingService.java
+++ b/core/java/android/service/wearable/WearableSensingService.java
@@ -37,6 +37,7 @@
 import android.os.SharedMemory;
 import android.service.ambientcontext.AmbientContextDetectionResult;
 import android.service.ambientcontext.AmbientContextDetectionServiceStatus;
+import android.service.voice.HotwordAudioStream;
 import android.util.Slog;
 import android.util.SparseArray;
 
@@ -85,6 +86,14 @@
             "android.app.wearable.WearableSensingStatusBundleKey";
 
     /**
+     * The bundle key for hotword audio stream, used in {@code RemoteCallback#sendResult}.
+     *
+     * @hide
+     */
+    public static final String HOTWORD_AUDIO_STREAM_BUNDLE_KEY =
+            "android.app.wearable.HotwordAudioStreamBundleKey";
+
+    /**
      * The {@link Intent} that must be declared as handled by the service. To be supported, the
      * service must also require the
      * {@link android.Manifest.permission#BIND_WEARABLE_SENSING_SERVICE}
@@ -181,6 +190,50 @@
                             dataType, packageName, dataRequester, statusConsumer);
                 }
 
+                @Override
+                public void startHotwordRecognition(
+                        RemoteCallback wearableHotwordCallback, RemoteCallback statusCallback) {
+                    Consumer<HotwordAudioStream> hotwordAudioConsumer =
+                            (hotwordAudioStream) -> {
+                                Bundle bundle = new Bundle();
+                                bundle.putParcelable(
+                                        HOTWORD_AUDIO_STREAM_BUNDLE_KEY, hotwordAudioStream);
+                                wearableHotwordCallback.sendResult(bundle);
+                            };
+                    Consumer<Integer> statusConsumer =
+                            response -> {
+                                Bundle bundle = new Bundle();
+                                bundle.putInt(STATUS_RESPONSE_BUNDLE_KEY, response);
+                                statusCallback.sendResult(bundle);
+                            };
+                    WearableSensingService.this.onStartHotwordRecognition(
+                            hotwordAudioConsumer, statusConsumer);
+                }
+
+                /** {@inheritDoc} */
+                @Override
+                public void stopHotwordRecognition(RemoteCallback statusCallback) {
+                    Consumer<Integer> statusConsumer =
+                            response -> {
+                                Bundle bundle = new Bundle();
+                                bundle.putInt(STATUS_RESPONSE_BUNDLE_KEY, response);
+                                statusCallback.sendResult(bundle);
+                            };
+                    WearableSensingService.this.onStopHotwordRecognition(statusConsumer);
+                }
+
+                /** {@inheritDoc} */
+                @Override
+                public void onValidatedByHotwordDetectionService() {
+                    WearableSensingService.this.onValidatedByHotwordDetectionService();
+                }
+
+                /** {@inheritDoc} */
+                @Override
+                public void stopActiveHotwordAudio() {
+                    WearableSensingService.this.onStopHotwordAudioStream();
+                }
+
                 /** {@inheritDoc} */
                 @Override
                 public void startDetection(
@@ -377,6 +430,100 @@
     }
 
     /**
+     * Called when the wearable is requested to start hotword recognition.
+     *
+     * <p>This method is expected to be overridden by a derived class. The implementation should
+     * store the {@code hotwordAudioConsumer} and send it the audio data when first-stage hotword is
+     * detected from the wearable. It should also send a {@link
+     * WearableSensingManager#STATUS_SUCCESS} status code to the {@code statusConsumer} unless it
+     * encounters an error condition described by a status code listed in {@link
+     * WearableSensingManager}, such as {@link WearableSensingManager#STATUS_WEARABLE_UNAVAILABLE},
+     * in which case it should return the corresponding status code.
+     *
+     * <p>The implementation should also store the {@code statusConsumer}. If the wearable stops
+     * listening for hotword for any reason other than {@link #onStopListeningForHotword(Consumer)}
+     * being invoked, it should send an appropriate status code listed in {@link
+     * WearableSensingManager} to {@code statusConsumer}. If the error condition cannot be described
+     * by any of those status codes, it should send a {@link WearableSensingManager#STATUS_UNKNOWN}.
+     *
+     * <p>If this method is called again, the implementation should use the new {@code
+     * hotwordAudioConsumer} and discard any previous ones it received.
+     *
+     * <p>At this time, the {@code timestamp} field in the {@link HotwordAudioStream} is not used
+     * and will be discarded by the system.
+     *
+     * @param hotwordAudioConsumer The consumer for the wearable hotword audio data.
+     * @param statusConsumer The consumer for the service status.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @BinderThread
+    public void onStartHotwordRecognition(
+            @NonNull Consumer<HotwordAudioStream> hotwordAudioConsumer,
+            @NonNull Consumer<Integer> statusConsumer) {
+        if (Flags.enableUnsupportedOperationStatusCode()) {
+            statusConsumer.accept(WearableSensingManager.STATUS_UNSUPPORTED_OPERATION);
+        }
+    }
+
+    /**
+     * Called when the wearable is requested to stop hotword recognition.
+     *
+     * <p>This method is expected to be overridden by a derived class. It should send a {@link
+     * WearableSensingManager#STATUS_SUCCESS} status code to the {@code statusConsumer} unless it
+     * encounters an error condition described by a status code listed in {@link
+     * WearableSensingManager}, such as {@link WearableSensingManager#STATUS_WEARABLE_UNAVAILABLE},
+     * in which case it should return the corresponding status code.
+     *
+     * @param statusConsumer The consumer for the service status.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @BinderThread
+    public void onStopHotwordRecognition(@NonNull Consumer<Integer> statusConsumer) {
+        if (Flags.enableUnsupportedOperationStatusCode()) {
+            statusConsumer.accept(WearableSensingManager.STATUS_UNSUPPORTED_OPERATION);
+        }
+    }
+
+    /**
+     * Called when hotword audio data sent to the {@code hotwordAudioConsumer} in {@link
+     * #onStartListeningForHotword(Consumer, Consumer)} is accepted by the
+     * {@link android.service.voice.HotwordDetectionService} as valid hotword.
+     *
+     * <p>After the implementation of this class sends the hotword audio data to the {@code
+     * hotwordAudioConsumer} in {@link #onStartListeningForHotword(Consumer,
+     * Consumer)}, the system will forward the data into {@link
+     * android.service.voice.HotwordDetectionService} (which runs in an isolated process) for
+     * second-stage hotword detection. If accepted as valid hotword there, this method will be
+     * called, and then the system will send the data to the currently active {@link
+     * android.service.voice.AlwaysOnHotwordDetector} (which may not run in an isolated process).
+     *
+     * <p>This method is expected to be overridden by a derived class. The implementation must
+     * request the wearable to turn on the microphone indicator to notify the user that audio data
+     * is being used outside of the isolated environment.
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @BinderThread
+    public void onValidatedByHotwordDetectionService() {}
+
+    /**
+     * Called when the currently active hotword audio stream is no longer needed.
+     *
+     * <p>This method can be called as a result of hotword rejection by {@link
+     * android.service.voice.HotwordDetectionService}, or the {@link
+     * android.service.voice.AlwaysOnHotwordDetector} closing the data stream it received, or a
+     * non-recoverable error occurred before the data reaches the {@link
+     * android.service.voice.HotwordDetectionService} or the {@link
+     * android.service.voice.AlwaysOnHotwordDetector}.
+     *
+     * <p>This method is expected to be overridden by a derived class. The implementation should
+     * stop sending hotword audio data to the {@code hotwordAudioConsumer} in {@link
+     * #onStartListeningForHotword(Consumer, Consumer)}
+     */
+    @FlaggedApi(Flags.FLAG_ENABLE_HOTWORD_WEARABLE_SENSING_API)
+    @BinderThread
+    public void onStopHotwordAudioStream() {}
+
+    /**
      * Called when a client app requests starting detection of the events in the request. The
      * implementation should keep track of whether the user has explicitly consented to detecting
      * the events using on-going ambient sensor (e.g. microphone), and agreed to share the
@@ -460,4 +607,6 @@
             statusCallback.sendResult(bundle);
         };
     }
+
+
 }
diff --git a/core/java/android/text/BoringLayout.java b/core/java/android/text/BoringLayout.java
index 6410609..9db8aa1 100644
--- a/core/java/android/text/BoringLayout.java
+++ b/core/java/android/text/BoringLayout.java
@@ -273,7 +273,7 @@
                 outerwidth /* ellipsizedWidth */, null /* ellipsize */, 1 /* maxLines */,
                 BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null /* leftIndents */,
                 null /* rightIndents */, JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE, false,
-                null);
+                false /* shiftDrawingOffsetForStartOverhang */, null);
 
         mEllipsizedWidth = outerwidth;
         mEllipsizedStart = 0;
@@ -346,7 +346,8 @@
                 ellipsizedWidth, ellipsize, 1 /* maxLines */,
                 BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null /* leftIndents */,
                 null /* rightIndents */, JUSTIFICATION_MODE_NONE,
-                LineBreakConfig.NONE, metrics, false /* useBoundsForWidth */, null);
+                LineBreakConfig.NONE, metrics, false /* useBoundsForWidth */,
+                false /* shiftDrawingOffsetForStartOverhang */, null);
     }
 
     /** @hide */
@@ -363,12 +364,14 @@
             TextUtils.TruncateAt ellipsize,
             Metrics metrics,
             boolean useBoundsForWidth,
+            boolean shiftDrawingOffsetForStartOverhang,
             @Nullable Paint.FontMetrics minimumFontMetrics) {
         this(text, paint, width, align, TextDirectionHeuristics.LTR,
                 spacingMult, spacingAdd, includePad, fallbackLineSpacing, ellipsizedWidth,
                 ellipsize, 1 /* maxLines */, Layout.BREAK_STRATEGY_SIMPLE,
                 Layout.HYPHENATION_FREQUENCY_NONE, null, null, Layout.JUSTIFICATION_MODE_NONE,
-                LineBreakConfig.NONE, metrics, useBoundsForWidth, minimumFontMetrics);
+                LineBreakConfig.NONE, metrics, useBoundsForWidth,
+                shiftDrawingOffsetForStartOverhang, minimumFontMetrics);
     }
 
     /* package */ BoringLayout(
@@ -392,12 +395,14 @@
             LineBreakConfig lineBreakConfig,
             Metrics metrics,
             boolean useBoundsForWidth,
+            boolean shiftDrawingOffsetForStartOverhang,
             @Nullable Paint.FontMetrics minimumFontMetrics) {
 
         super(text, paint, width, align, textDir, spacingMult, spacingAdd, includePad,
                 fallbackLineSpacing, ellipsizedWidth, ellipsize, maxLines, breakStrategy,
                 hyphenationFrequency, leftIndents, rightIndents, justificationMode,
-                lineBreakConfig, useBoundsForWidth, minimumFontMetrics);
+                lineBreakConfig, useBoundsForWidth, shiftDrawingOffsetForStartOverhang,
+                minimumFontMetrics);
 
 
         boolean trust;
@@ -711,18 +716,21 @@
     public void draw(Canvas c, Path highlight, Paint highlightpaint,
                      int cursorOffset) {
         if (mDirect != null && highlight == null) {
-            if (getUseBoundsForWidth()) {
-                c.save();
+            float leftShift = 0;
+            if (getUseBoundsForWidth() && getShiftDrawingOffsetForStartOverhang()) {
                 RectF drawingRect = computeDrawingBoundingBox();
                 if (drawingRect.left < 0) {
-                    c.translate(-drawingRect.left, 0);
+                    leftShift = -drawingRect.left;
+                    c.translate(leftShift, 0);
                 }
             }
 
             c.drawText(mDirect, 0, mBottom - mDesc, mPaint);
 
-            if (getUseBoundsForWidth()) {
-                c.restore();
+            if (leftShift != 0) {
+                // Manually translate back to the original position because of b/324498002, using
+                // save/restore disappears the toggle switch drawables.
+                c.translate(-leftShift, 0);
             }
         } else {
             super.draw(c, highlight, highlightpaint, cursorOffset);
diff --git a/core/java/android/text/DynamicLayout.java b/core/java/android/text/DynamicLayout.java
index 9286049..cce4f7b 100644
--- a/core/java/android/text/DynamicLayout.java
+++ b/core/java/android/text/DynamicLayout.java
@@ -25,6 +25,7 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Paint;
 import android.graphics.Rect;
@@ -317,6 +318,35 @@
         }
 
         /**
+         * Set true for shifting the drawing x offset for showing overhang at the start position.
+         *
+         * This flag is ignored if the {@link #getUseBoundsForWidth()} is false.
+         *
+         * If this value is false, the Layout draws text from the zero even if there is a glyph
+         * stroke in a region where the x coordinate is negative.
+         *
+         * If this value is true, the Layout draws text with shifting the x coordinate of the
+         * drawing bounding box.
+         *
+         * This value is false by default.
+         *
+         * @param shiftDrawingOffsetForStartOverhang true for shifting the drawing offset for
+         *                                          showing the stroke that is in the region where
+         *                                          the x coordinate is negative.
+         * @see #setUseBoundsForWidth(boolean)
+         * @see #getUseBoundsForWidth()
+         */
+        @NonNull
+        // The corresponding getter is getShiftDrawingOffsetForStartOverhang()
+        @SuppressLint("MissingGetterMatchingBuilder")
+        @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+        public Builder setShiftDrawingOffsetForStartOverhang(
+                boolean shiftDrawingOffsetForStartOverhang) {
+            mShiftDrawingOffsetForStartOverhang = shiftDrawingOffsetForStartOverhang;
+            return this;
+        }
+
+        /**
          * Set the minimum font metrics used for line spacing.
          *
          * <p>
@@ -386,6 +416,7 @@
         private int mEllipsizedWidth;
         private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE;
         private boolean mUseBoundsForWidth;
+        private boolean mShiftDrawingOffsetForStartOverhang;
         private @Nullable Paint.FontMetrics mMinimumFontMetrics;
 
         private final Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt();
@@ -462,7 +493,8 @@
                 false /* fallbackLineSpacing */, ellipsizedWidth, ellipsize,
                 Integer.MAX_VALUE /* maxLines */, breakStrategy, hyphenationFrequency,
                 null /* leftIndents */, null /* rightIndents */, justificationMode,
-                lineBreakConfig, false /* useBoundsForWidth */, null /* minimumFontMetrics */);
+                lineBreakConfig, false /* useBoundsForWidth */, false,
+                null /* minimumFontMetrics */);
 
         final Builder b = Builder.obtain(base, paint, width)
                 .setAlignment(align)
@@ -488,7 +520,8 @@
                 b.mIncludePad, b.mFallbackLineSpacing, b.mEllipsizedWidth, b.mEllipsize,
                 Integer.MAX_VALUE /* maxLines */, b.mBreakStrategy, b.mHyphenationFrequency,
                 null /* leftIndents */, null /* rightIndents */, b.mJustificationMode,
-                b.mLineBreakConfig, b.mUseBoundsForWidth, b.mMinimumFontMetrics);
+                b.mLineBreakConfig, b.mUseBoundsForWidth, b.mShiftDrawingOffsetForStartOverhang,
+                b.mMinimumFontMetrics);
 
         mDisplay = b.mDisplay;
         mIncludePad = b.mIncludePad;
@@ -516,6 +549,7 @@
         mBase = b.mBase;
         mFallbackLineSpacing = b.mFallbackLineSpacing;
         mUseBoundsForWidth = b.mUseBoundsForWidth;
+        mShiftDrawingOffsetForStartOverhang = b.mShiftDrawingOffsetForStartOverhang;
         mMinimumFontMetrics = b.mMinimumFontMetrics;
         if (b.mEllipsize != null) {
             mInts = new PackedIntVector(COLUMNS_ELLIPSIZE);
@@ -713,6 +747,7 @@
                 .setAddLastLineLineSpacing(!islast)
                 .setIncludePad(false)
                 .setUseBoundsForWidth(mUseBoundsForWidth)
+                .setShiftDrawingOffsetForStartOverhang(mShiftDrawingOffsetForStartOverhang)
                 .setMinimumFontMetrics(mMinimumFontMetrics)
                 .setCalculateBounds(true);
 
@@ -1392,6 +1427,7 @@
     private Rect mTempRect = new Rect();
 
     private boolean mUseBoundsForWidth;
+    private boolean mShiftDrawingOffsetForStartOverhang;
     @Nullable Paint.FontMetrics mMinimumFontMetrics;
 
     @UnsupportedAppUsage
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 8ddb42d..8e52af3 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -44,6 +44,7 @@
 import android.text.style.ParagraphStyle;
 import android.text.style.ReplacementSpan;
 import android.text.style.TabStopSpan;
+import android.widget.TextView;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
@@ -299,7 +300,7 @@
         this(text, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR,
                 spacingMult, spacingAdd, false, false, 0, null, Integer.MAX_VALUE,
                 BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null, null,
-                JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE, false, null);
+                JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE, false, false, null);
     }
 
     /**
@@ -349,6 +350,7 @@
             int justificationMode,
             LineBreakConfig lineBreakConfig,
             boolean useBoundsForWidth,
+            boolean shiftDrawingOffsetForStartOverhang,
             Paint.FontMetrics minimumFontMetrics
     ) {
 
@@ -384,6 +386,7 @@
         mJustificationMode = justificationMode;
         mLineBreakConfig = lineBreakConfig;
         mUseBoundsForWidth = useBoundsForWidth;
+        mShiftDrawingOffsetForStartOverhang = shiftDrawingOffsetForStartOverhang;
         mMinimumFontMetrics = minimumFontMetrics;
     }
 
@@ -464,11 +467,12 @@
             @Nullable Path selectionPath,
             @Nullable Paint selectionPaint,
             int cursorOffsetVertical) {
-        if (mUseBoundsForWidth) {
-            canvas.save();
+        float leftShift = 0;
+        if (mUseBoundsForWidth && mShiftDrawingOffsetForStartOverhang) {
             RectF drawingRect = computeDrawingBoundingBox();
             if (drawingRect.left < 0) {
-                canvas.translate(-drawingRect.left, 0);
+                leftShift = -drawingRect.left;
+                canvas.translate(leftShift, 0);
             }
         }
         final long lineRange = getLineRangeForDraw(canvas);
@@ -479,8 +483,10 @@
         drawWithoutText(canvas, highlightPaths, highlightPaints, selectionPath, selectionPaint,
                 cursorOffsetVertical, firstLine, lastLine);
         drawText(canvas, firstLine, lastLine);
-        if (mUseBoundsForWidth) {
-            canvas.restore();
+        if (leftShift != 0) {
+            // Manually translate back to the original position because of b/324498002, using
+            // save/restore disappears the toggle switch drawables.
+            canvas.translate(-leftShift, 0);
         }
     }
 
@@ -3411,6 +3417,7 @@
     private int mJustificationMode;
     private LineBreakConfig mLineBreakConfig;
     private boolean mUseBoundsForWidth;
+    private boolean mShiftDrawingOffsetForStartOverhang;
     private @Nullable Paint.FontMetrics mMinimumFontMetrics;
 
     private TextLine.LineInfo mLineInfo = null;
@@ -3870,6 +3877,35 @@
         }
 
         /**
+         * Set true for shifting the drawing x offset for showing overhang at the start position.
+         *
+         * This flag is ignored if the {@link #getUseBoundsForWidth()} is false.
+         *
+         * If this value is false, the Layout draws text from the zero even if there is a glyph
+         * stroke in a region where the x coordinate is negative.
+         *
+         * If this value is true, the Layout draws text with shifting the x coordinate of the
+         * drawing bounding box.
+         *
+         * This value is false by default.
+         *
+         * @param shiftDrawingOffsetForStartOverhang true for shifting the drawing offset for
+         *                                          showing the stroke that is in the region where
+         *                                          the x coordinate is negative.
+         * @see #setUseBoundsForWidth(boolean)
+         * @see #getUseBoundsForWidth()
+         */
+        @NonNull
+        // The corresponding getter is getShiftDrawingOffsetForStartOverhang()
+        @SuppressLint("MissingGetterMatchingBuilder")
+        @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+        public Builder setShiftDrawingOffsetForStartOverhang(
+                boolean shiftDrawingOffsetForStartOverhang) {
+            mShiftDrawingOffsetForStartOverhang = shiftDrawingOffsetForStartOverhang;
+            return this;
+        }
+
+        /**
          * Set the minimum font metrics used for line spacing.
          *
          * <p>
@@ -3945,6 +3981,7 @@
                         .setJustificationMode(mJustificationMode)
                         .setLineBreakConfig(mLineBreakConfig)
                         .setUseBoundsForWidth(mUseBoundsForWidth)
+                        .setShiftDrawingOffsetForStartOverhang(mShiftDrawingOffsetForStartOverhang)
                         .build();
             } else {
                 return new BoringLayout(
@@ -3952,7 +3989,7 @@
                         mIncludePad, mFallbackLineSpacing, mEllipsizedWidth, mEllipsize, mMaxLines,
                         mBreakStrategy, mHyphenationFrequency, mLeftIndents, mRightIndents,
                         mJustificationMode, mLineBreakConfig, metrics, mUseBoundsForWidth,
-                        mMinimumFontMetrics);
+                        mShiftDrawingOffsetForStartOverhang, mMinimumFontMetrics);
             }
         }
 
@@ -3977,6 +4014,7 @@
         private int mJustificationMode = JUSTIFICATION_MODE_NONE;
         private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE;
         private boolean mUseBoundsForWidth;
+        private boolean mShiftDrawingOffsetForStartOverhang;
         private Paint.FontMetrics mMinimumFontMetrics;
     }
 
@@ -4291,6 +4329,20 @@
     }
 
     /**
+     * Returns true if shifting drawing offset for start overhang.
+     *
+     * @return True if shifting drawing offset for start overhang.
+     * @see android.widget.TextView#setShiftDrawingOffsetForStartOverhang(boolean)
+     * @see TextView#getShiftDrawingOffsetForStartOverhang()
+     * @see StaticLayout.Builder#setShiftDrawingOffsetForStartOverhang(boolean)
+     * @see DynamicLayout.Builder#setShiftDrawingOffsetForStartOverhang(boolean)
+     */
+    @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+    public boolean getShiftDrawingOffsetForStartOverhang() {
+        return mShiftDrawingOffsetForStartOverhang;
+    }
+
+    /**
      * Get the minimum font metrics used for line spacing.
      *
      * @see android.widget.TextView#setMinimumFontMetrics(Paint.FontMetrics)
diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java
index 5986238..3dd3a9e 100644
--- a/core/java/android/text/StaticLayout.java
+++ b/core/java/android/text/StaticLayout.java
@@ -24,6 +24,7 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Paint;
 import android.graphics.RectF;
@@ -454,6 +455,35 @@
         }
 
         /**
+         * Set true for shifting the drawing x offset for showing overhang at the start position.
+         *
+         * This flag is ignored if the {@link #getUseBoundsForWidth()} is false.
+         *
+         * If this value is false, the Layout draws text from the zero even if there is a glyph
+         * stroke in a region where the x coordinate is negative.
+         *
+         * If this value is true, the Layout draws text with shifting the x coordinate of the
+         * drawing bounding box.
+         *
+         * This value is false by default.
+         *
+         * @param shiftDrawingOffsetForStartOverhang true for shifting the drawing offset for
+         *                                          showing the stroke that is in the region where
+         *                                          the x coordinate is negative.
+         * @see #setUseBoundsForWidth(boolean)
+         * @see #getUseBoundsForWidth()
+         */
+        @NonNull
+        // The corresponding getter is getShiftDrawingOffsetForStartOverhang()
+        @SuppressLint("MissingGetterMatchingBuilder")
+        @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+        public Builder setShiftDrawingOffsetForStartOverhang(
+                boolean shiftDrawingOffsetForStartOverhang) {
+            mShiftDrawingOffsetForStartOverhang = shiftDrawingOffsetForStartOverhang;
+            return this;
+        }
+
+        /**
          * Internal API that tells underlying line breaker that calculating bounding boxes even if
          * the line break is performed with advances. This is useful for DynamicLayout internal
          * implementation because it uses bounding box as well as advances.
@@ -566,6 +596,7 @@
         private boolean mAddLastLineLineSpacing;
         private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE;
         private boolean mUseBoundsForWidth;
+        private boolean mShiftDrawingOffsetForStartOverhang;
         private boolean mCalculateBounds;
         @Nullable private Paint.FontMetrics mMinimumFontMetrics;
 
@@ -599,6 +630,7 @@
                 JUSTIFICATION_MODE_NONE,
                 null,  // lineBreakConfig,
                 false,  // useBoundsForWidth
+                false,  // shiftDrawingOffsetForStartOverhang
                 null  // minimumFontMetrics
         );
 
@@ -677,7 +709,7 @@
                 b.mIncludePad, b.mFallbackLineSpacing, b.mEllipsizedWidth, b.mEllipsize,
                 b.mMaxLines, b.mBreakStrategy, b.mHyphenationFrequency, b.mLeftIndents,
                 b.mRightIndents, b.mJustificationMode, b.mLineBreakConfig, b.mUseBoundsForWidth,
-                b.mMinimumFontMetrics);
+                b.mShiftDrawingOffsetForStartOverhang, b.mMinimumFontMetrics);
 
         mColumns = columnSize;
         if (b.mEllipsize != null) {
diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig
index f37c4c2a..f68fcab9 100644
--- a/core/java/android/text/flags/flags.aconfig
+++ b/core/java/android/text/flags/flags.aconfig
@@ -110,3 +110,12 @@
   description: "A flag for replacing AndroidBidi with android.icu.text.Bidi."
   bug: "317144801"
 }
+
+flag {
+  name: "lazy_variation_instance"
+  namespace: "text"
+  description: "A flag for enabling lazy variation instance creation."
+  # Make read only, as it could be used before the Settings provider is initialized.
+  is_fixed_read_only: true
+  bug: "324676775"
+}
diff --git a/core/java/android/tracing/OWNERS b/core/java/android/tracing/OWNERS
index 2ebe2e9..f67844d 100644
--- a/core/java/android/tracing/OWNERS
+++ b/core/java/android/tracing/OWNERS
@@ -1,6 +1,4 @@
 carmenjackson@google.com
 kevinjeon@google.com
-pablogamito@google.com
-natanieljr@google.com
-keanmariotti@google.com
+include platform/development:/tools/winscope/OWNERS
 include platform/external/perfetto:/OWNERS
diff --git a/core/java/android/util/AndroidException.java b/core/java/android/util/AndroidException.java
index d1b9d9f..8e2429a 100644
--- a/core/java/android/util/AndroidException.java
+++ b/core/java/android/util/AndroidException.java
@@ -19,6 +19,7 @@
 /**
  * Base class for all checked exceptions thrown by the Android frameworks.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class AndroidException extends Exception {
     public AndroidException() {
     }
diff --git a/core/java/android/util/AndroidRuntimeException.java b/core/java/android/util/AndroidRuntimeException.java
index 72c34d8b..1c3f2012 100644
--- a/core/java/android/util/AndroidRuntimeException.java
+++ b/core/java/android/util/AndroidRuntimeException.java
@@ -19,6 +19,7 @@
 /**
  * Base class for all unchecked exceptions thrown by the Android frameworks.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class AndroidRuntimeException extends RuntimeException {
     public AndroidRuntimeException() {
     }
diff --git a/core/java/android/util/ArrayMap.java b/core/java/android/util/ArrayMap.java
index 2945c8f..174e0c8 100644
--- a/core/java/android/util/ArrayMap.java
+++ b/core/java/android/util/ArrayMap.java
@@ -53,6 +53,7 @@
  *
  * <p>This structure is <b>NOT</b> thread-safe.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class ArrayMap<K, V> implements Map<K, V> {
     private static final boolean DEBUG = false;
     private static final String TAG = "ArrayMap";
diff --git a/core/java/android/util/ArraySet.java b/core/java/android/util/ArraySet.java
index adebe2c..bfbca07 100644
--- a/core/java/android/util/ArraySet.java
+++ b/core/java/android/util/ArraySet.java
@@ -51,6 +51,7 @@
  *
  * <p>This structure is <b>NOT</b> thread-safe.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class ArraySet<E> implements Collection<E>, Set<E> {
     private static final boolean DEBUG = false;
     private static final String TAG = "ArraySet";
diff --git a/core/java/android/util/BackupUtils.java b/core/java/android/util/BackupUtils.java
index 4fcb13c..75471c1 100644
--- a/core/java/android/util/BackupUtils.java
+++ b/core/java/android/util/BackupUtils.java
@@ -24,6 +24,8 @@
  * Utility methods for Backup/Restore
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class BackupUtils {
 
     public static final int NULL = 0;
diff --git a/core/java/android/util/Base64.java b/core/java/android/util/Base64.java
index 92abd7c..99151c2 100644
--- a/core/java/android/util/Base64.java
+++ b/core/java/android/util/Base64.java
@@ -26,6 +26,7 @@
  * href="http://www.ietf.org/rfc/rfc2045.txt">2045</a> and <a
  * href="http://www.ietf.org/rfc/rfc3548.txt">3548</a>.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Base64 {
     /**
      * Default values for encoder/decoder flags.
diff --git a/core/java/android/util/Base64DataException.java b/core/java/android/util/Base64DataException.java
index de12ee1..41963dc 100644
--- a/core/java/android/util/Base64DataException.java
+++ b/core/java/android/util/Base64DataException.java
@@ -23,6 +23,7 @@
  * when an error is detected in the data being decoded.  This allows problems with the base64 data
  * to be disambiguated from errors in the underlying streams (e.g. actual connection errors.)
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Base64DataException extends IOException {
     public Base64DataException(String detailMessage) {
         super(detailMessage);
diff --git a/core/java/android/util/Base64InputStream.java b/core/java/android/util/Base64InputStream.java
index 9eba5b5..85802d2 100644
--- a/core/java/android/util/Base64InputStream.java
+++ b/core/java/android/util/Base64InputStream.java
@@ -24,6 +24,7 @@
  * An InputStream that does Base64 decoding on the data read through
  * it.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Base64InputStream extends FilterInputStream {
     private final Base64.Coder coder;
 
diff --git a/core/java/android/util/Base64OutputStream.java b/core/java/android/util/Base64OutputStream.java
index 48fadeb..9ae1470 100644
--- a/core/java/android/util/Base64OutputStream.java
+++ b/core/java/android/util/Base64OutputStream.java
@@ -26,6 +26,7 @@
  * An OutputStream that does Base64 encoding on the data written to
  * it, writing the resulting data to another OutputStream.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Base64OutputStream extends FilterOutputStream {
     private final Base64.Coder coder;
     private final int flags;
diff --git a/core/java/android/util/ContainerHelpers.java b/core/java/android/util/ContainerHelpers.java
index 4e5fefb..0077c91 100644
--- a/core/java/android/util/ContainerHelpers.java
+++ b/core/java/android/util/ContainerHelpers.java
@@ -16,6 +16,7 @@
 
 package android.util;
 
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 class ContainerHelpers {
 
     // This is Arrays.binarySearch(), but doesn't do any argument validation.
diff --git a/core/java/android/util/DebugUtils.java b/core/java/android/util/DebugUtils.java
index bab2089..5725a23 100644
--- a/core/java/android/util/DebugUtils.java
+++ b/core/java/android/util/DebugUtils.java
@@ -33,6 +33,7 @@
 /**
  * <p>Various utilities for debugging and logging.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class DebugUtils {
     /** @hide */ public DebugUtils() {}
 
diff --git a/core/java/android/util/Dumpable.java b/core/java/android/util/Dumpable.java
index 955113d..9aa7e99 100644
--- a/core/java/android/util/Dumpable.java
+++ b/core/java/android/util/Dumpable.java
@@ -23,6 +23,7 @@
 /**
  * Represents an object whose state can be dumped into a {@link PrintWriter}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public interface Dumpable {
 
     /**
diff --git a/core/java/android/util/EmptyArray.java b/core/java/android/util/EmptyArray.java
index 1216024..cfb1093 100644
--- a/core/java/android/util/EmptyArray.java
+++ b/core/java/android/util/EmptyArray.java
@@ -23,6 +23,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class EmptyArray {
     private EmptyArray() {}
 
diff --git a/core/java/android/util/EventLog.java b/core/java/android/util/EventLog.java
index d2c5975..0a73fd1 100644
--- a/core/java/android/util/EventLog.java
+++ b/core/java/android/util/EventLog.java
@@ -50,7 +50,7 @@
  */
 @android.ravenwood.annotation.RavenwoodKeepWholeClass
 @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-        "com.android.hoststubgen.nativesubstitution.EventLog_host")
+        "com.android.platform.test.ravenwood.nativesubstitution.EventLog_host")
 public class EventLog {
     /** @hide */ public EventLog() {}
 
diff --git a/core/java/android/util/FloatMath.java b/core/java/android/util/FloatMath.java
index bb7d15f..392e5ee 100644
--- a/core/java/android/util/FloatMath.java
+++ b/core/java/android/util/FloatMath.java
@@ -30,6 +30,7 @@
  * @deprecated Use {@link java.lang.Math} instead.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class FloatMath {
 
     /** Prevents instantiation. */
diff --git a/core/java/android/util/FloatProperty.java b/core/java/android/util/FloatProperty.java
index 4aac196..7af05e1 100644
--- a/core/java/android/util/FloatProperty.java
+++ b/core/java/android/util/FloatProperty.java
@@ -24,6 +24,7 @@
  *
  * @param <T> The class on which the Property is declared.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public abstract class FloatProperty<T> extends Property<T, Float> {
 
     public FloatProperty(String name) {
diff --git a/core/java/android/util/IndentingPrintWriter.java b/core/java/android/util/IndentingPrintWriter.java
index 9d2ebe8..6519918 100644
--- a/core/java/android/util/IndentingPrintWriter.java
+++ b/core/java/android/util/IndentingPrintWriter.java
@@ -33,6 +33,8 @@
  *
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class IndentingPrintWriter extends PrintWriter {
     private final String mSingleIndent;
     private final int mWrapLength;
diff --git a/core/java/android/util/IntProperty.java b/core/java/android/util/IntProperty.java
index 9e21ced..6bb2ebe 100644
--- a/core/java/android/util/IntProperty.java
+++ b/core/java/android/util/IntProperty.java
@@ -24,6 +24,7 @@
  *
  * @param <T> The class on which the Property is declared.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public abstract class IntProperty<T> extends Property<T, Integer> {
 
     public IntProperty(String name) {
diff --git a/core/java/android/util/JsonReader.java b/core/java/android/util/JsonReader.java
index c75e238..38439ca 100644
--- a/core/java/android/util/JsonReader.java
+++ b/core/java/android/util/JsonReader.java
@@ -175,6 +175,7 @@
  * <p>Each {@code JsonReader} may be used to read a single JSON stream. Instances
  * of this class are not thread safe.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class JsonReader implements Closeable {
 
     private static final String TRUE = "true";
diff --git a/core/java/android/util/JsonWriter.java b/core/java/android/util/JsonWriter.java
index c1e6e40..1075d4b 100644
--- a/core/java/android/util/JsonWriter.java
+++ b/core/java/android/util/JsonWriter.java
@@ -117,6 +117,7 @@
  * Instances of this class are not thread safe. Calls that would result in a
  * malformed JSON string will fail with an {@link IllegalStateException}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class JsonWriter implements Closeable {
 
     /** The output data, containing at most one top-level array or object. */
diff --git a/core/java/android/util/LocalLog.java b/core/java/android/util/LocalLog.java
index cd077e1..feb80cc 100644
--- a/core/java/android/util/LocalLog.java
+++ b/core/java/android/util/LocalLog.java
@@ -32,6 +32,8 @@
 /**
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class LocalLog {
 
     private final Deque<String> mLog;
diff --git a/core/java/android/util/Log.java b/core/java/android/util/Log.java
index f1e91d0..b33214d 100644
--- a/core/java/android/util/Log.java
+++ b/core/java/android/util/Log.java
@@ -71,6 +71,9 @@
  * releases due to changes in the logging implementation. For the methods that return an integer,
  * a positive value may be considered as a successful invocation.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
+@android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
+        "com.android.platform.test.ravenwood.nativesubstitution.Log_host")
 public final class Log {
     /** @hide */
     @IntDef({ASSERT, ERROR, WARN, INFO, DEBUG, VERBOSE})
diff --git a/core/java/android/util/LogPrinter.java b/core/java/android/util/LogPrinter.java
index 68f64d0..169de68 100644
--- a/core/java/android/util/LogPrinter.java
+++ b/core/java/android/util/LogPrinter.java
@@ -20,6 +20,7 @@
  * Implementation of a {@link android.util.Printer} that sends its output
  * to the system log.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class LogPrinter implements Printer {
     private final int mPriority;
     private final String mTag;
diff --git a/core/java/android/util/LogWriter.java b/core/java/android/util/LogWriter.java
index 21b3665..41f5438 100644
--- a/core/java/android/util/LogWriter.java
+++ b/core/java/android/util/LogWriter.java
@@ -22,6 +22,7 @@
 import java.io.Writer;
 
 /** @hide */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class LogWriter extends Writer {
     private final int mPriority;
     private final String mTag;
diff --git a/core/java/android/util/LongSparseArray.java b/core/java/android/util/LongSparseArray.java
index 8402ab2..e428fb2 100644
--- a/core/java/android/util/LongSparseArray.java
+++ b/core/java/android/util/LongSparseArray.java
@@ -55,6 +55,7 @@
  * keys in ascending order, or the values corresponding to the keys in ascending
  * order in the case of <code>valueAt(int)</code>.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class LongSparseArray<E> implements Cloneable {
     private static final Object DELETED = new Object();
     private boolean mGarbage = false;
diff --git a/core/java/android/util/MalformedJsonException.java b/core/java/android/util/MalformedJsonException.java
index 63c19ff..40cc078 100644
--- a/core/java/android/util/MalformedJsonException.java
+++ b/core/java/android/util/MalformedJsonException.java
@@ -22,6 +22,7 @@
  * Thrown when a reader encounters malformed JSON. Some syntax errors can be
  * ignored by calling {@link JsonReader#setLenient(boolean)}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MalformedJsonException extends IOException {
     private static final long serialVersionUID = 1L;
 
diff --git a/core/java/android/util/MapCollections.java b/core/java/android/util/MapCollections.java
index 7ab3fca..cce3a0e 100644
--- a/core/java/android/util/MapCollections.java
+++ b/core/java/android/util/MapCollections.java
@@ -31,6 +31,7 @@
  * structure like {@link ArrayMap}.
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 abstract class MapCollections<K, V> {
     EntrySet mEntrySet;
     KeySet mKeySet;
diff --git a/core/java/android/util/MathUtils.java b/core/java/android/util/MathUtils.java
index aecde44..97ea5da 100644
--- a/core/java/android/util/MathUtils.java
+++ b/core/java/android/util/MathUtils.java
@@ -24,6 +24,7 @@
  *
  * @hide Pending API council approval
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MathUtils {
     private static final float DEG_TO_RAD = 3.1415926f / 180.0f;
     private static final float RAD_TO_DEG = 180.0f / 3.1415926f;
diff --git a/core/java/android/util/MutableBoolean.java b/core/java/android/util/MutableBoolean.java
index 44e73cc..5e0700a 100644
--- a/core/java/android/util/MutableBoolean.java
+++ b/core/java/android/util/MutableBoolean.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableBoolean {
     public boolean value;
 
diff --git a/core/java/android/util/MutableByte.java b/core/java/android/util/MutableByte.java
index b9ec25d..e0cbc57 100644
--- a/core/java/android/util/MutableByte.java
+++ b/core/java/android/util/MutableByte.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableByte {
     public byte value;
 
diff --git a/core/java/android/util/MutableChar.java b/core/java/android/util/MutableChar.java
index 9f7a9ae..22b8a55 100644
--- a/core/java/android/util/MutableChar.java
+++ b/core/java/android/util/MutableChar.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableChar {
     public char value;
 
diff --git a/core/java/android/util/MutableDouble.java b/core/java/android/util/MutableDouble.java
index 56e539b..ce85fa2 100644
--- a/core/java/android/util/MutableDouble.java
+++ b/core/java/android/util/MutableDouble.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableDouble {
     public double value;
 
diff --git a/core/java/android/util/MutableFloat.java b/core/java/android/util/MutableFloat.java
index 6d7ad59..c2bfdb0 100644
--- a/core/java/android/util/MutableFloat.java
+++ b/core/java/android/util/MutableFloat.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableFloat {
     public float value;
 
diff --git a/core/java/android/util/MutableInt.java b/core/java/android/util/MutableInt.java
index bb24566..64fc4f2 100644
--- a/core/java/android/util/MutableInt.java
+++ b/core/java/android/util/MutableInt.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableInt {
     public int value;
 
diff --git a/core/java/android/util/MutableLong.java b/core/java/android/util/MutableLong.java
index 86e70e1..57a2e86 100644
--- a/core/java/android/util/MutableLong.java
+++ b/core/java/android/util/MutableLong.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableLong {
     public long value;
 
diff --git a/core/java/android/util/MutableShort.java b/core/java/android/util/MutableShort.java
index b94ab07..1f81c41 100644
--- a/core/java/android/util/MutableShort.java
+++ b/core/java/android/util/MutableShort.java
@@ -20,6 +20,7 @@
  * @deprecated This class will be removed from a future version of the Android API.
  */
 @Deprecated
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class MutableShort {
     public short value;
 
diff --git a/core/java/android/util/NoSuchPropertyException.java b/core/java/android/util/NoSuchPropertyException.java
index b93f983..d4f2098 100644
--- a/core/java/android/util/NoSuchPropertyException.java
+++ b/core/java/android/util/NoSuchPropertyException.java
@@ -21,6 +21,7 @@
  *
  * @see Property#of(java.lang.Class, java.lang.Class, java.lang.String)
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class NoSuchPropertyException extends RuntimeException {
 
     public NoSuchPropertyException(String s) {
diff --git a/core/java/android/util/Pair.java b/core/java/android/util/Pair.java
index b0866b4..96708f6 100644
--- a/core/java/android/util/Pair.java
+++ b/core/java/android/util/Pair.java
@@ -25,6 +25,8 @@
  * implementation of equals(), returning true if equals() is true on each of the contained
  * objects.
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Pair<F, S> {
     public final F first;
     public final S second;
diff --git a/core/java/android/util/Patterns.java b/core/java/android/util/Patterns.java
index c4660c4..58dff96 100644
--- a/core/java/android/util/Patterns.java
+++ b/core/java/android/util/Patterns.java
@@ -22,6 +22,7 @@
 /**
  * Commonly used regular expression patterns.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Patterns {
     /**
      *  Regular expression to match all IANA top-level domains.
diff --git a/core/java/android/util/Pools.java b/core/java/android/util/Pools.java
index 7ae32441..384103a 100644
--- a/core/java/android/util/Pools.java
+++ b/core/java/android/util/Pools.java
@@ -42,6 +42,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class Pools {
 
     /**
diff --git a/core/java/android/util/PrefixPrinter.java b/core/java/android/util/PrefixPrinter.java
index 62f7da1..b560f7c 100644
--- a/core/java/android/util/PrefixPrinter.java
+++ b/core/java/android/util/PrefixPrinter.java
@@ -22,6 +22,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class PrefixPrinter implements Printer {
     private final Printer mPrinter;
     private final String mPrefix;
diff --git a/core/java/android/util/PrintStreamPrinter.java b/core/java/android/util/PrintStreamPrinter.java
index 1c11f15..330dd31 100644
--- a/core/java/android/util/PrintStreamPrinter.java
+++ b/core/java/android/util/PrintStreamPrinter.java
@@ -22,6 +22,7 @@
  * Implementation of a {@link android.util.Printer} that sends its output
  * to a {@link java.io.PrintStream}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class PrintStreamPrinter implements Printer {
     private final PrintStream mPS;
     
diff --git a/core/java/android/util/PrintWriterPrinter.java b/core/java/android/util/PrintWriterPrinter.java
index 82c4d03..aa935eb 100644
--- a/core/java/android/util/PrintWriterPrinter.java
+++ b/core/java/android/util/PrintWriterPrinter.java
@@ -22,6 +22,7 @@
  * Implementation of a {@link android.util.Printer} that sends its output
  * to a {@link java.io.PrintWriter}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class PrintWriterPrinter implements Printer {
     private final PrintWriter mPW;
     
diff --git a/core/java/android/util/Printer.java b/core/java/android/util/Printer.java
index 595cf70..5106a29 100644
--- a/core/java/android/util/Printer.java
+++ b/core/java/android/util/Printer.java
@@ -22,6 +22,7 @@
  * {@link android.util.StringBuilderPrinter}, and
  * {@link android.util.PrintWriterPrinter}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public interface Printer {
     /**
      * Write a line of text to the output.  There is no need to terminate
diff --git a/core/java/android/util/Property.java b/core/java/android/util/Property.java
index 146db80..88a3c7e 100644
--- a/core/java/android/util/Property.java
+++ b/core/java/android/util/Property.java
@@ -25,6 +25,7 @@
  * @param <T> The class on which the property is declared.
  * @param <V> The type that this property represents.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public abstract class Property<T, V> {
 
     private final String mName;
diff --git a/core/java/android/util/Range.java b/core/java/android/util/Range.java
index 750696b..32b63ee 100644
--- a/core/java/android/util/Range.java
+++ b/core/java/android/util/Range.java
@@ -38,6 +38,7 @@
  * stored must also be immutable. If mutable objects are stored here, then the range
  * effectively becomes mutable. </p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class Range<T extends Comparable<? super T>> {
     /**
      * Create a new immutable range.
diff --git a/core/java/android/util/Rational.java b/core/java/android/util/Rational.java
index d7730f2..bb70937 100644
--- a/core/java/android/util/Rational.java
+++ b/core/java/android/util/Rational.java
@@ -30,6 +30,8 @@
  * <p>Contains a pair of {@code int}s representing the numerator and denominator of a
  * Rational number. </p>
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class Rational extends Number implements Comparable<Rational> {
     /**
      * Constant for the <em>Not-a-Number (NaN)</em> value of the {@code Rational} type.
diff --git a/core/java/android/util/ReflectiveProperty.java b/core/java/android/util/ReflectiveProperty.java
index 6832240..41900dc 100644
--- a/core/java/android/util/ReflectiveProperty.java
+++ b/core/java/android/util/ReflectiveProperty.java
@@ -23,6 +23,7 @@
  * Internal class to automatically generate a Property for a given class/name pair, given the
  * specification of {@link Property#of(java.lang.Class, java.lang.Class, java.lang.String)}
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 class ReflectiveProperty<T, V> extends Property<T, V> {
 
     private static final String PREFIX_GET = "get";
diff --git a/core/java/android/util/Size.java b/core/java/android/util/Size.java
index 62df564..05d7468 100644
--- a/core/java/android/util/Size.java
+++ b/core/java/android/util/Size.java
@@ -21,6 +21,7 @@
 /**
  * Immutable class for describing width and height dimensions in pixels.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class Size {
     /**
      * Create a new immutable Size instance.
diff --git a/core/java/android/util/SizeF.java b/core/java/android/util/SizeF.java
index c77a0243..9473c44 100644
--- a/core/java/android/util/SizeF.java
+++ b/core/java/android/util/SizeF.java
@@ -30,6 +30,7 @@
  * Width and height are finite values stored as a floating point representation.
  * </p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class SizeF implements Parcelable {
     /**
      * Create a new immutable SizeF instance.
diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java
index c18cac3..26111f8 100644
--- a/core/java/android/util/SparseArray.java
+++ b/core/java/android/util/SparseArray.java
@@ -54,6 +54,7 @@
  * keys in ascending order. In the case of <code>valueAt(int)</code>, the
  * values corresponding to the keys are returned in ascending order.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SparseArray<E> implements Cloneable {
     private static final Object DELETED = new Object();
     private boolean mGarbage = false;
diff --git a/core/java/android/util/SparseArrayMap.java b/core/java/android/util/SparseArrayMap.java
index b4e1f59..1ce7313 100644
--- a/core/java/android/util/SparseArrayMap.java
+++ b/core/java/android/util/SparseArrayMap.java
@@ -31,6 +31,7 @@
  * @hide
  */
 @TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SparseArrayMap<K, V> {
     private final SparseArray<ArrayMap<K, V>> mData = new SparseArray<>();
 
diff --git a/core/java/android/util/SparseBooleanArray.java b/core/java/android/util/SparseBooleanArray.java
index 795f4c9..bca7ffc 100644
--- a/core/java/android/util/SparseBooleanArray.java
+++ b/core/java/android/util/SparseBooleanArray.java
@@ -44,6 +44,7 @@
  * keys in ascending order, or the values corresponding to the keys in ascending
  * order in the case of <code>valueAt(int)</code>.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SparseBooleanArray implements Cloneable {
     /**
      * Creates a new SparseBooleanArray containing no mappings.
diff --git a/core/java/android/util/SparseIntArray.java b/core/java/android/util/SparseIntArray.java
index 24d04be..500d133 100644
--- a/core/java/android/util/SparseIntArray.java
+++ b/core/java/android/util/SparseIntArray.java
@@ -44,6 +44,7 @@
  * keys in ascending order, or the values corresponding to the keys in ascending
  * order in the case of <code>valueAt(int)</code>.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SparseIntArray implements Cloneable {
     @UnsupportedAppUsage(maxTargetSdk = 28) // Use keyAt(int)
     private int[] mKeys;
diff --git a/core/java/android/util/SparseLongArray.java b/core/java/android/util/SparseLongArray.java
index 4b257e6..c7c272b 100644
--- a/core/java/android/util/SparseLongArray.java
+++ b/core/java/android/util/SparseLongArray.java
@@ -40,6 +40,7 @@
  * keys in ascending order, or the values corresponding to the keys in ascending
  * order in the case of <code>valueAt(int)</code>.</p>
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SparseLongArray implements Cloneable {
     private int[] mKeys;
     private long[] mValues;
diff --git a/core/java/android/util/StringBuilderPrinter.java b/core/java/android/util/StringBuilderPrinter.java
index d0fc1e7..ee04f14 100644
--- a/core/java/android/util/StringBuilderPrinter.java
+++ b/core/java/android/util/StringBuilderPrinter.java
@@ -20,6 +20,7 @@
  * Implementation of a {@link android.util.Printer} that sends its output
  * to a {@link StringBuilder}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class StringBuilderPrinter implements Printer {
     private final StringBuilder mBuilder;
     
diff --git a/core/java/android/util/TeeWriter.java b/core/java/android/util/TeeWriter.java
index 439a0c2..0bf2a34 100644
--- a/core/java/android/util/TeeWriter.java
+++ b/core/java/android/util/TeeWriter.java
@@ -29,6 +29,7 @@
  * @see https://man7.org/linux/man-pages/man1/tee.1.html
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class TeeWriter extends Writer {
     private final @NonNull Writer[] mWriters;
 
diff --git a/core/java/android/util/UtilConfig.java b/core/java/android/util/UtilConfig.java
index 7658c40..31d2535 100644
--- a/core/java/android/util/UtilConfig.java
+++ b/core/java/android/util/UtilConfig.java
@@ -21,6 +21,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class UtilConfig {
     static boolean sThrowExceptionForUpperArrayOutOfBounds = true;
 
diff --git a/core/java/android/util/Xml.java b/core/java/android/util/Xml.java
index ec6e90b..50d419f 100644
--- a/core/java/android/util/Xml.java
+++ b/core/java/android/util/Xml.java
@@ -53,9 +53,12 @@
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 
+import javax.xml.parsers.SAXParserFactory;
+
 /**
  * XML utility methods.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class Xml {
     private Xml() {}
 
@@ -73,8 +76,33 @@
      *
      * @hide
      */
-    public static final boolean ENABLE_BINARY_DEFAULT = SystemProperties
-            .getBoolean("persist.sys.binary_xml", true);
+    public static final boolean ENABLE_BINARY_DEFAULT = shouldEnableBinaryDefault();
+
+    @android.ravenwood.annotation.RavenwoodReplace
+    private static boolean shouldEnableBinaryDefault() {
+        return SystemProperties.getBoolean("persist.sys.binary_xml", true);
+    }
+
+    private static boolean shouldEnableBinaryDefault$ravenwood() {
+        return true;
+    }
+
+    /**
+     * Feature flag: when set, {@link #resolvePullParser(InputStream)}} will attempt to sniff
+     * using {@code pread} optimization.
+     *
+     * @hide
+     */
+    public static final boolean ENABLE_RESOLVE_OPTIMIZATIONS = shouldEnableResolveOptimizations();
+
+    @android.ravenwood.annotation.RavenwoodReplace
+    private static boolean shouldEnableResolveOptimizations() {
+        return true;
+    }
+
+    private static boolean shouldEnableResolveOptimizations$ravenwood() {
+        return false;
+    }
 
     /**
      * Parses the given xml string and fires events on the given SAX handler.
@@ -82,7 +110,7 @@
     public static void parse(String xml, ContentHandler contentHandler)
             throws SAXException {
         try {
-            XMLReader reader = XmlObjectFactory.newXMLReader();
+            XMLReader reader = newXMLReader();
             reader.setContentHandler(contentHandler);
             reader.parse(new InputSource(new StringReader(xml)));
         } catch (IOException e) {
@@ -96,7 +124,7 @@
      */
     public static void parse(Reader in, ContentHandler contentHandler)
             throws IOException, SAXException {
-        XMLReader reader = XmlObjectFactory.newXMLReader();
+        XMLReader reader = newXMLReader();
         reader.setContentHandler(contentHandler);
         reader.parse(new InputSource(in));
     }
@@ -107,7 +135,7 @@
      */
     public static void parse(InputStream in, Encoding encoding,
             ContentHandler contentHandler) throws IOException, SAXException {
-        XMLReader reader = XmlObjectFactory.newXMLReader();
+        XMLReader reader = newXMLReader();
         reader.setContentHandler(contentHandler);
         InputSource source = new InputSource(in);
         source.setEncoding(encoding.expatName);
@@ -120,19 +148,26 @@
     @android.ravenwood.annotation.RavenwoodReplace
     public static XmlPullParser newPullParser() {
         try {
-            XmlPullParser parser = XmlObjectFactory.newXmlPullParser();
+            XmlPullParser parser = newXmlPullParser();
             parser.setFeature(XmlPullParser.FEATURE_PROCESS_DOCDECL, true);
             parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
             return parser;
         } catch (XmlPullParserException e) {
-            throw new AssertionError();
+            throw new AssertionError(e);
         }
     }
 
     /** @hide */
     public static XmlPullParser newPullParser$ravenwood() {
-        // TODO: remove once we're linking against libcore
-        return new BinaryXmlPullParser();
+        try {
+            // Prebuilt kxml2-android does not support FEATURE_PROCESS_DOCDECL, so omit here;
+            // it's quite rare and all tests are passing
+            XmlPullParser parser = newXmlPullParser();
+            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);
+            return parser;
+        } catch (XmlPullParserException e) {
+            throw new AssertionError(e);
+        }
     }
 
     /**
@@ -145,17 +180,10 @@
      * @hide
      */
     @SuppressWarnings("AndroidFrameworkEfficientXml")
-    @android.ravenwood.annotation.RavenwoodReplace
     public static @NonNull TypedXmlPullParser newFastPullParser() {
         return XmlUtils.makeTyped(newPullParser());
     }
 
-    /** @hide */
-    public static TypedXmlPullParser newFastPullParser$ravenwood() {
-        // TODO: remove once we're linking against libcore
-        return new BinaryXmlPullParser();
-    }
-
     /**
      * Creates a new {@link XmlPullParser} that reads XML documents using a
      * custom binary wire protocol which benchmarking has shown to be 8.5x
@@ -189,11 +217,10 @@
      *
      * @hide
      */
-    @android.ravenwood.annotation.RavenwoodReplace
     public static @NonNull TypedXmlPullParser resolvePullParser(@NonNull InputStream in)
             throws IOException {
         final byte[] magic = new byte[4];
-        if (in instanceof FileInputStream) {
+        if (ENABLE_RESOLVE_OPTIMIZATIONS && in instanceof FileInputStream) {
             try {
                 Os.pread(((FileInputStream) in).getFD(), magic, 0, magic.length, 0);
             } catch (ErrnoException e) {
@@ -222,31 +249,11 @@
         return xml;
     }
 
-    /** @hide */
-    public static @NonNull TypedXmlPullParser resolvePullParser$ravenwood(@NonNull InputStream in)
-            throws IOException {
-        // TODO: remove once we're linking against libcore
-        final TypedXmlPullParser xml = new BinaryXmlPullParser();
-        try {
-            xml.setInput(in, StandardCharsets.UTF_8.name());
-        } catch (XmlPullParserException e) {
-            throw new IOException(e);
-        }
-        return xml;
-    }
-
     /**
      * Creates a new xml serializer.
      */
-    @android.ravenwood.annotation.RavenwoodReplace
     public static XmlSerializer newSerializer() {
-        return XmlObjectFactory.newXmlSerializer();
-    }
-
-    /** @hide */
-    public static XmlSerializer newSerializer$ravenwood() {
-        // TODO: remove once we're linking against libcore
-        return new BinaryXmlSerializer();
+        return newXmlSerializer();
     }
 
     /**
@@ -259,17 +266,10 @@
      * @hide
      */
     @SuppressWarnings("AndroidFrameworkEfficientXml")
-    @android.ravenwood.annotation.RavenwoodReplace
     public static @NonNull TypedXmlSerializer newFastSerializer() {
         return XmlUtils.makeTyped(new FastXmlSerializer());
     }
 
-    /** @hide */
-    public static @NonNull TypedXmlSerializer newFastSerializer$ravenwood() {
-        // TODO: remove once we're linking against libcore
-        return new BinaryXmlSerializer();
-    }
-
     /**
      * Creates a new {@link XmlSerializer} that writes XML documents using a
      * custom binary wire protocol which benchmarking has shown to be 4.4x
@@ -334,7 +334,6 @@
      *
      * @hide
      */
-    @android.ravenwood.annotation.RavenwoodKeep
     public static void copy(@NonNull XmlPullParser in, @NonNull XmlSerializer out)
             throws XmlPullParserException, IOException {
         // Some parsers may have already consumed the event that starts the
@@ -394,7 +393,6 @@
      * unsupported, which can confuse serializers. This method normalizes empty
      * strings to be {@code null}.
      */
-    @android.ravenwood.annotation.RavenwoodKeep
     private static @Nullable String normalizeNamespace(@Nullable String namespace) {
         if (namespace == null || namespace.isEmpty()) {
             return null;
@@ -457,4 +455,45 @@
                 ? (AttributeSet) parser
                 : new XmlPullAttributes(parser);
     }
+
+    @android.ravenwood.annotation.RavenwoodReplace
+    private static @NonNull XmlSerializer newXmlSerializer() {
+        return XmlObjectFactory.newXmlSerializer();
+    }
+
+    private static @NonNull XmlSerializer newXmlSerializer$ravenwood() {
+        try {
+            return XmlPullParserFactory.newInstance().newSerializer();
+        } catch (XmlPullParserException e) {
+            throw new UnsupportedOperationException(e);
+        }
+    }
+
+    @android.ravenwood.annotation.RavenwoodReplace
+    private static @NonNull XmlPullParser newXmlPullParser() {
+        return XmlObjectFactory.newXmlPullParser();
+    }
+
+    private static @NonNull XmlPullParser newXmlPullParser$ravenwood() {
+        try {
+            return XmlPullParserFactory.newInstance().newPullParser();
+        } catch (XmlPullParserException e) {
+            throw new UnsupportedOperationException(e);
+        }
+    }
+
+    @android.ravenwood.annotation.RavenwoodReplace
+    private static @NonNull XMLReader newXMLReader() {
+        return XmlObjectFactory.newXMLReader();
+    }
+
+    private static @NonNull XMLReader newXMLReader$ravenwood() {
+        try {
+            final SAXParserFactory factory = SAXParserFactory.newInstance();
+            factory.setNamespaceAware(true);
+            return factory.newSAXParser().getXMLReader();
+        } catch (Exception e) {
+            throw new UnsupportedOperationException(e);
+        }
+    }
 }
diff --git a/core/java/android/util/proto/EncodedBuffer.java b/core/java/android/util/proto/EncodedBuffer.java
index 2a8f405..c05d406 100644
--- a/core/java/android/util/proto/EncodedBuffer.java
+++ b/core/java/android/util/proto/EncodedBuffer.java
@@ -34,6 +34,7 @@
  * @hide
  */
 @TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class EncodedBuffer {
     private static final String TAG = "EncodedBuffer";
 
diff --git a/core/java/android/util/proto/ProtoInputStream.java b/core/java/android/util/proto/ProtoInputStream.java
index 9a15cd5..0719f01 100644
--- a/core/java/android/util/proto/ProtoInputStream.java
+++ b/core/java/android/util/proto/ProtoInputStream.java
@@ -65,6 +65,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class ProtoInputStream extends ProtoStream {
 
     public static final int NO_MORE_FIELDS = -1;
diff --git a/core/java/android/util/proto/ProtoOutputStream.java b/core/java/android/util/proto/ProtoOutputStream.java
index afca4ab..3e0feab 100644
--- a/core/java/android/util/proto/ProtoOutputStream.java
+++ b/core/java/android/util/proto/ProtoOutputStream.java
@@ -104,6 +104,7 @@
  * correctly matched pairs of #start and #end calls, and issue
  * errors if they are not matched.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public final class ProtoOutputStream extends ProtoStream {
     /**
      * @hide
diff --git a/core/java/android/util/proto/ProtoParseException.java b/core/java/android/util/proto/ProtoParseException.java
index 5ba9bf8..0429f93 100644
--- a/core/java/android/util/proto/ProtoParseException.java
+++ b/core/java/android/util/proto/ProtoParseException.java
@@ -24,6 +24,7 @@
  * @hide
  */
 @TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class ProtoParseException extends RuntimeException {
 
     /**
diff --git a/core/java/android/util/proto/ProtoStream.java b/core/java/android/util/proto/ProtoStream.java
index 1940da9..a24cf32 100644
--- a/core/java/android/util/proto/ProtoStream.java
+++ b/core/java/android/util/proto/ProtoStream.java
@@ -32,6 +32,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class ProtoStream {
 
     /**
diff --git a/core/java/android/util/proto/ProtoUtils.java b/core/java/android/util/proto/ProtoUtils.java
index 2b44b42..c7a3c4c 100644
--- a/core/java/android/util/proto/ProtoUtils.java
+++ b/core/java/android/util/proto/ProtoUtils.java
@@ -27,6 +27,7 @@
  * //frameworks/base/core/proto/android/base directory
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class ProtoUtils {
 
     /**
diff --git a/core/java/android/util/proto/WireTypeMismatchException.java b/core/java/android/util/proto/WireTypeMismatchException.java
index d90b4f8..b8afcd3 100644
--- a/core/java/android/util/proto/WireTypeMismatchException.java
+++ b/core/java/android/util/proto/WireTypeMismatchException.java
@@ -24,6 +24,7 @@
  * @hide
  */
 @TestApi
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class WireTypeMismatchException extends ProtoParseException {
 
     /**
diff --git a/core/java/android/view/AttachedSurfaceControl.java b/core/java/android/view/AttachedSurfaceControl.java
index ffe0c71..5ec41591 100644
--- a/core/java/android/view/AttachedSurfaceControl.java
+++ b/core/java/android/view/AttachedSurfaceControl.java
@@ -19,10 +19,11 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UiThread;
+import android.content.Context;
 import android.graphics.Rect;
 import android.graphics.Region;
 import android.hardware.HardwareBuffer;
-import android.os.IBinder;
+import android.os.Looper;
 import android.window.InputTransferToken;
 import android.window.SurfaceSyncGroup;
 
@@ -180,66 +181,25 @@
     }
 
     /**
-     * Gets the token used for associating this {@link AttachedSurfaceControl} with
-     * {@link SurfaceControlViewHost} instances.
-     *
-     * <p>This token should be passed to {@link SurfaceControlViewHost}'s constructor.
-     * This token will be {@code null} if the window does not have an input channel.
-     *
-     * @return The SurfaceControlViewHost link token.
-     */
-    @Nullable
-    @FlaggedApi(Flags.FLAG_GET_HOST_TOKEN_API)
-    default IBinder getHostToken() {
-        throw new UnsupportedOperationException("The getHostToken needs to be "
-            + "implemented before making this call.");
-    }
-
-    /**
      * Gets the token used for associating this {@link AttachedSurfaceControl} with an embedded
      * {@link SurfaceControlViewHost} or {@link SurfaceControl}
      *
-     * @return The SurfaceControlViewHost link token.  This can return {@code null} if the
-     * {@link AttachedSurfaceControl} was created with no registered input
-     * @hide
-     */
-    @Nullable
-    default InputTransferToken getInputTransferToken() {
-        throw new UnsupportedOperationException("The getHostToken needs to be "
-                + "implemented before making this call.");
-    }
-
-    /**
-     * Transfer the currently in progress touch gesture from the host to the requested
-     * {@link SurfaceControlViewHost.SurfacePackage}. This requires that the
-     * SurfaceControlViewHost was created with the current host's inputToken.
-     * <p>
-     * When the touch is transferred, the window currently receiving touch gets an ACTION_CANCEL
-     * and does not receive any further input events for this gesture.
-     * <p>
-     * The transferred-to window receives an ACTION_DOWN event and then the remainder of the
-     * input events for this gesture. It does not receive any of the previous events of this gesture
-     * that the originating window received.
-     * <p>
-     * The "transferTouch" API only works for the current gesture. When a new gesture arrives,
-     * input dispatcher will do a new round of hit testing. So, if the "host" window is still the
-     * first thing that's being touched, then it will receive the new gesture again. It will
-     * again be up to the host to transfer this new gesture to the embedded.
-     * <p>
-     * Once the transferred-to window receives the gesture, it can choose to give up this gesture
-     * and send it to another window that it's linked to (it can't be an arbitrary window for
-     * security reasons) using the same transferTouch API. Only the window currently receiving
-     * touch is allowed to transfer the gesture.
+     * <p>This token should be passed to
+     * {@link SurfaceControlViewHost#SurfaceControlViewHost(Context, Display, InputTransferToken)}
+     * or
+     * {@link WindowManager#registerBatchedSurfaceControlInputReceiver(int, InputTransferToken,
+     * SurfaceControl, Choreographer, SurfaceControlInputReceiver)} or
+     * {@link WindowManager#registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken,
+     * SurfaceControl, Looper, SurfaceControlInputReceiver)}
      *
-     * @param surfacePackage The SurfacePackage to transfer the gesture to.
-     * @return Whether the touch stream was transferred.
-     * @see SurfaceControlViewHost#transferTouchGestureToHost() for the reverse to transfer touch
-     * gesture from the embedded to the host.
+     * @return The SurfaceControlViewHost link token.
+     * @throws IllegalStateException if the {@link AttachedSurfaceControl} was created with no
+     * registered input
      */
-    @FlaggedApi(Flags.FLAG_TRANSFER_GESTURE_TO_EMBEDDED)
-    default boolean transferHostTouchGestureToEmbedded(
-            @NonNull SurfaceControlViewHost.SurfacePackage surfacePackage) {
-        throw new UnsupportedOperationException(
-                "transferHostTouchGestureToEmbedded is unimplemented");
+    @NonNull
+    @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
+    default InputTransferToken getInputTransferToken() {
+        throw new UnsupportedOperationException("The getInputTransferToken needs to be "
+                + "implemented before making this call.");
     }
 }
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 0006139..1f2b4fa 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -1211,6 +1211,8 @@
      * @see #REMOVE_MODE_DESTROY_CONTENT
      */
     // TODO (b/114338689): Remove the method and use IWindowManager#getRemoveContentMode
+    @SuppressLint("UnflaggedApi") // @TestApi without associated feature.
+    @TestApi
     public int getRemoveMode() {
         return mDisplayInfo.removeMode;
     }
diff --git a/core/java/android/view/HandwritingInitiator.java b/core/java/android/view/HandwritingInitiator.java
index eb28920..676b903 100644
--- a/core/java/android/view/HandwritingInitiator.java
+++ b/core/java/android/view/HandwritingInitiator.java
@@ -23,6 +23,9 @@
 import android.graphics.Rect;
 import android.graphics.RectF;
 import android.graphics.Region;
+import android.text.TextUtils;
+import android.view.inputmethod.ConnectionlessHandwritingCallback;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.Flags;
 import android.view.inputmethod.InputMethodManager;
 import android.widget.EditText;
@@ -225,15 +228,7 @@
                             }
                             startHandwriting(candidateView);
                         } else if (candidateView.getHandwritingDelegatorCallback() != null) {
-                            String delegatePackageName =
-                                    candidateView.getAllowedHandwritingDelegatePackageName();
-                            if (delegatePackageName == null) {
-                                delegatePackageName = candidateView.getContext().getOpPackageName();
-                            }
-                            mImm.prepareStylusHandwritingDelegation(
-                                    candidateView, delegatePackageName);
-                            candidateView.getHandwritingDelegatorCallback().run();
-                            mState.mHasPreparedHandwritingDelegation = true;
+                            prepareDelegation(candidateView);
                         } else {
                             if (!mInitiateWithoutConnection) {
                                 mState.mPendingConnectedView = new WeakReference<>(candidateView);
@@ -375,7 +370,7 @@
             // A new view just gain focus. By default, we should show hover icon for it.
             mShowHoverIconForConnectedView = true;
         }
-        if (!fromTouchEvent) {
+        if (!fromTouchEvent && view.isHandwritingDelegate()) {
             tryAcceptStylusHandwritingDelegation(view);
         }
         return true;
@@ -393,15 +388,33 @@
         }
     }
 
+    private void prepareDelegation(View view) {
+        String delegatePackageName = view.getAllowedHandwritingDelegatePackageName();
+        if (delegatePackageName == null) {
+            delegatePackageName = view.getContext().getOpPackageName();
+        }
+        if (mImm.isConnectionlessStylusHandwritingAvailable()) {
+            // No other view should have focus during the connectionless handwriting session, as
+            // this could cause user confusion about the input target for the session.
+            view.getViewRootImpl().getView().clearFocus();
+            mImm.startConnectionlessStylusHandwritingForDelegation(
+                    view, getCursorAnchorInfoForConnectionless(view), delegatePackageName,
+                    view::post, new DelegationCallback(view, delegatePackageName));
+            mState.mHasInitiatedHandwriting = true;
+            mState.mShouldInitHandwriting = false;
+        } else {
+            mImm.prepareStylusHandwritingDelegation(view, delegatePackageName);
+            view.getHandwritingDelegatorCallback().run();
+            mState.mHasPreparedHandwritingDelegation = true;
+        }
+    }
+
     /**
      * Starts a stylus handwriting session for the delegate view, if {@link
      * InputMethodManager#prepareStylusHandwritingDelegation} was previously called.
      */
     @VisibleForTesting
     public boolean tryAcceptStylusHandwritingDelegation(@NonNull View view) {
-        if (!view.isHandwritingDelegate() || (mState != null && mState.mHasInitiatedHandwriting)) {
-            return false;
-        }
         String delegatorPackageName =
                 view.getAllowedHandwritingDelegatorPackageName();
         if (delegatorPackageName == null) {
@@ -807,6 +820,59 @@
                 && view.shouldInitiateHandwriting();
     }
 
+    private CursorAnchorInfo getCursorAnchorInfoForConnectionless(View view) {
+        CursorAnchorInfo.Builder builder = new CursorAnchorInfo.Builder();
+        // Fake editor views will usually display hint text. The hint text view can be used to
+        // populate the CursorAnchorInfo.
+        TextView textView = findFirstTextViewDescendent(view);
+        if (textView != null) {
+            textView.getCursorAnchorInfo(0, builder, mTempMatrix);
+            if (textView.getSelectionStart() < 0) {
+                // Insertion marker location is not populated if selection start is negative, so
+                // make a best guess.
+                float bottom = textView.getHeight() - textView.getExtendedPaddingBottom();
+                builder.setInsertionMarkerLocation(
+                        /* horizontalPosition= */ textView.getCompoundPaddingStart(),
+                        /* lineTop= */ textView.getExtendedPaddingTop(),
+                        /* lineBaseline= */ bottom,
+                        /* lineBottom= */ bottom,
+                        /* flags= */ 0);
+            }
+        } else {
+            // If there is no TextView descendent, just populate the insertion marker with the start
+            // edge of the view.
+            mTempMatrix.reset();
+            view.transformMatrixToGlobal(mTempMatrix);
+            builder.setMatrix(mTempMatrix);
+            builder.setInsertionMarkerLocation(
+                    /* horizontalPosition= */ view.isLayoutRtl() ? view.getWidth() : 0,
+                    /* lineTop= */ 0,
+                    /* lineBaseline= */ view.getHeight(),
+                    /* lineBottom= */ view.getHeight(),
+                    /* flags= */ 0);
+        }
+        return builder.build();
+    }
+
+    @Nullable
+    private static TextView findFirstTextViewDescendent(View view) {
+        if (view instanceof ViewGroup viewGroup) {
+            TextView textView;
+            for (int i = 0; i < viewGroup.getChildCount(); ++i) {
+                View child = viewGroup.getChildAt(i);
+                textView = (child instanceof TextView tv)
+                        ? tv : findFirstTextViewDescendent(viewGroup.getChildAt(i));
+                if (textView != null
+                        && textView.isAggregatedVisible()
+                        && (!TextUtils.isEmpty(textView.getText())
+                                || !TextUtils.isEmpty(textView.getHint()))) {
+                    return textView;
+                }
+            }
+        }
+        return null;
+    }
+
     /**
      * A class used to track the handwriting areas set by the Views.
      *
@@ -931,4 +997,35 @@
             return true;
         }
     }
+
+    private class DelegationCallback implements ConnectionlessHandwritingCallback {
+        private final View mView;
+        private final String mDelegatePackageName;
+
+        private DelegationCallback(View view, String delegatePackageName) {
+            mView = view;
+            mDelegatePackageName = delegatePackageName;
+        }
+
+        @Override
+        public void onResult(@NonNull CharSequence text) {
+            mView.getHandwritingDelegatorCallback().run();
+        }
+
+        @Override
+        public void onError(int errorCode) {
+            switch (errorCode) {
+                case CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED:
+                    mView.getHandwritingDelegatorCallback().run();
+                    break;
+                case CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED:
+                    // Fall back to the old delegation flow
+                    mImm.prepareStylusHandwritingDelegation(mView, mDelegatePackageName);
+                    mView.getHandwritingDelegatorCallback().run();
+                    mState.mHasInitiatedHandwriting = false;
+                    mState.mHasPreparedHandwritingDelegation = true;
+                    break;
+            }
+        }
+    }
 }
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index 29cc859..c475f6b 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -1098,4 +1098,7 @@
      * (ie. not handled by any window which can handle the drag).
      */
     void setUnhandledDragListener(IUnhandledDragListener listener);
+
+    boolean transferTouchGesture(in InputTransferToken transferFromToken,
+            in InputTransferToken transferToToken);
 }
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 55e49f8..d68a47c 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -370,11 +370,6 @@
      */
     boolean cancelDraw(IWindow window);
 
-    boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow);
-
-    boolean transferHostTouchGestureToEmbedded(IWindow hostWindow,
-        in InputTransferToken transferTouchToken);
-
     /**
      * Moves the focus to the adjacent window if there is one in the given direction. This can only
      * move the focus to the window in the same leaf task.
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index 6b7f9db..1803a6e 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -1498,6 +1498,14 @@
                     && (control.getLeash() != null || control.getId() == ID_IME_CAPTION_BAR)) {
                 controls.put(control.getId(), new InsetsSourceControl(control));
                 typesReady |= consumer.getType();
+            } else if (fromIme) {
+                Log.w(TAG, "collectSourceControls can't continue for type: ime,"
+                        + " fromIme: true requires a control with a leash but we have "
+                        + ((control == null)
+                            ? "control: null"
+                            : "control: non-null and control.getLeash(): null"));
+                ImeTracker.forLogging().onFailed(statsToken,
+                        ImeTracker.PHASE_CLIENT_COLLECT_SOURCE_CONTROLS);
             }
         }
         return new Pair<>(typesReady, imeReady);
diff --git a/core/java/android/view/InsetsFrameProvider.java b/core/java/android/view/InsetsFrameProvider.java
index 83bdb08..fe98fab 100644
--- a/core/java/android/view/InsetsFrameProvider.java
+++ b/core/java/android/view/InsetsFrameProvider.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntRange;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.graphics.Insets;
 import android.graphics.Rect;
 import android.os.IBinder;
@@ -110,6 +111,12 @@
     private Insets mMinimalInsetsSizeInDisplayCutoutSafe = null;
 
     /**
+     * Indicates the bounding rectangles within the provided insets frame, in relative coordinates
+     * to the source frame.
+     */
+    private Rect[] mBoundingRects = null;
+
+    /**
      * Creates an InsetsFrameProvider which describes what frame an insets source should have.
      *
      * @param owner the owner of this provider. We might have multiple sources with the same type on
@@ -205,6 +212,22 @@
         return mMinimalInsetsSizeInDisplayCutoutSafe;
     }
 
+    /**
+     * Sets the bounding rectangles within and relative to the source frame.
+     */
+    public InsetsFrameProvider setBoundingRects(@Nullable Rect[] boundingRects) {
+        mBoundingRects = boundingRects == null ? null : boundingRects.clone();
+        return this;
+    }
+
+    /**
+     * Returns the arbitrary bounding rects, or null if none were set.
+     */
+    @Nullable
+    public Rect[] getBoundingRects() {
+        return mBoundingRects;
+    }
+
     @Override
     public int describeContents() {
         return 0;
@@ -231,6 +254,9 @@
             sb.append(", mMinimalInsetsSizeInDisplayCutoutSafe=")
                     .append(mMinimalInsetsSizeInDisplayCutoutSafe);
         }
+        if (mBoundingRects != null) {
+            sb.append(", mBoundingRects=").append(Arrays.toString(mBoundingRects));
+        }
         sb.append("}");
         return sb.toString();
     }
@@ -257,6 +283,7 @@
         mInsetsSizeOverrides = in.createTypedArray(InsetsSizeOverride.CREATOR);
         mArbitraryRectangle = in.readTypedObject(Rect.CREATOR);
         mMinimalInsetsSizeInDisplayCutoutSafe = in.readTypedObject(Insets.CREATOR);
+        mBoundingRects = in.createTypedArray(Rect.CREATOR);
     }
 
     @Override
@@ -268,6 +295,7 @@
         out.writeTypedArray(mInsetsSizeOverrides, flags);
         out.writeTypedObject(mArbitraryRectangle, flags);
         out.writeTypedObject(mMinimalInsetsSizeInDisplayCutoutSafe, flags);
+        out.writeTypedArray(mBoundingRects, flags);
     }
 
     public boolean idEquals(InsetsFrameProvider o) {
@@ -288,14 +316,15 @@
                 && Arrays.equals(mInsetsSizeOverrides, other.mInsetsSizeOverrides)
                 && Objects.equals(mArbitraryRectangle, other.mArbitraryRectangle)
                 && Objects.equals(mMinimalInsetsSizeInDisplayCutoutSafe,
-                        other.mMinimalInsetsSizeInDisplayCutoutSafe);
+                        other.mMinimalInsetsSizeInDisplayCutoutSafe)
+                && Arrays.equals(mBoundingRects, other.mBoundingRects);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mId, mSource, mFlags, mInsetsSize,
                 Arrays.hashCode(mInsetsSizeOverrides), mArbitraryRectangle,
-                mMinimalInsetsSizeInDisplayCutoutSafe);
+                mMinimalInsetsSizeInDisplayCutoutSafe, Arrays.hashCode(mBoundingRects));
     }
 
     public static final @NonNull Parcelable.Creator<InsetsFrameProvider> CREATOR =
diff --git a/core/java/android/view/InsetsSource.java b/core/java/android/view/InsetsSource.java
index bc33d5e..f9eba29 100644
--- a/core/java/android/view/InsetsSource.java
+++ b/core/java/android/view/InsetsSource.java
@@ -38,6 +38,8 @@
 import java.io.PrintWriter;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Objects;
 import java.util.StringJoiner;
 
@@ -105,6 +107,12 @@
     })
     public @interface Flags {}
 
+    /**
+     * Used when there are no bounding rects to describe an inset, which is only possible when the
+     * insets itself is {@link Insets#NONE}.
+     */
+    private static final Rect[] NO_BOUNDING_RECTS = new Rect[0];
+
     private @Flags int mFlags;
 
     /**
@@ -117,6 +125,7 @@
     /** Frame of the source in screen coordinate space */
     private final Rect mFrame;
     private @Nullable Rect mVisibleFrame;
+    private @Nullable Rect[] mBoundingRects;
 
     private boolean mVisible;
 
@@ -127,6 +136,7 @@
     private @InternalInsetsSide int mSideHint = SIDE_NONE;
 
     private final Rect mTmpFrame = new Rect();
+    private final Rect mTmpBoundingRect = new Rect();
 
     public InsetsSource(int id, @InsetsType int type) {
         mId = id;
@@ -145,6 +155,9 @@
                 : null;
         mFlags = other.mFlags;
         mSideHint = other.mSideHint;
+        mBoundingRects = other.mBoundingRects != null
+                ? other.mBoundingRects.clone()
+                : null;
     }
 
     public void set(InsetsSource other) {
@@ -155,6 +168,9 @@
                 : null;
         mFlags = other.mFlags;
         mSideHint = other.mSideHint;
+        mBoundingRects = other.mBoundingRects != null
+                ? other.mBoundingRects.clone()
+                : null;
     }
 
     public InsetsSource setFrame(int left, int top, int right, int bottom) {
@@ -199,6 +215,15 @@
         return this;
     }
 
+    /**
+     * Set the bounding rectangles of this source. They are expected to be relative to the source
+     * frame.
+     */
+    public InsetsSource setBoundingRects(@Nullable Rect[] rects) {
+        mBoundingRects = rects != null ? rects.clone() : null;
+        return this;
+    }
+
     public int getId() {
         return mId;
     }
@@ -228,6 +253,13 @@
     }
 
     /**
+     * Returns the bounding rectangles of this source.
+     */
+    public @Nullable Rect[] getBoundingRects() {
+        return mBoundingRects;
+    }
+
+    /**
      * Calculates the insets this source will cause to a client window.
      *
      * @param relativeFrame The frame to calculate the insets relative to.
@@ -313,6 +345,82 @@
     }
 
     /**
+     * Calculates the bounding rects the source will cause to a client window.
+     */
+    public @NonNull Rect[] calculateBoundingRects(Rect relativeFrame, boolean ignoreVisibility) {
+        if (!ignoreVisibility && !mVisible) {
+            return NO_BOUNDING_RECTS;
+        }
+
+        final Rect frame = getFrame();
+        if (mBoundingRects == null) {
+            // No bounding rects set, make a single bounding rect that covers the intersection of
+            // the |frame| and the |relativeFrame|.
+            return mTmpBoundingRect.setIntersect(frame, relativeFrame)
+                    ? new Rect[]{ new Rect(mTmpBoundingRect) }
+                    : NO_BOUNDING_RECTS;
+
+        }
+
+        // Special treatment for captionBar inset type. During drag-resizing, the |frame| and
+        // |boundingRects| may not get updated as quickly as |relativeFrame|, so just assume the
+        // |frame| will always be either at the top or bottom of |relativeFrame|. This means some
+        // calculations to make |boundingRects| relative to |relativeFrame| can be skipped or
+        // simplified.
+        // TODO(b/254128050): remove special treatment.
+        if (getType() == WindowInsets.Type.captionBar()) {
+            final ArrayList<Rect> validBoundingRects = new ArrayList<>();
+            for (final Rect boundingRect : mBoundingRects) {
+                // Assume that the caption |frame| and |relativeFrame| perfectly align at the top
+                // or bottom, meaning that the provided |boundingRect|, which is relative to the
+                // |frame| either is already relative to |relativeFrame| (for top captionBar()), or
+                // just needs to be made relative to |relativeFrame| for bottom bars.
+                final int frameHeight = frame.height();
+                mTmpBoundingRect.set(boundingRect);
+                if (getId() == ID_IME_CAPTION_BAR) {
+                    mTmpBoundingRect.offset(0, relativeFrame.height() - frameHeight);
+                }
+                validBoundingRects.add(new Rect(mTmpBoundingRect));
+            }
+            return validBoundingRects.toArray(new Rect[validBoundingRects.size()]);
+        }
+
+        // Regular treatment for non-captionBar inset types.
+        final ArrayList<Rect> validBoundingRects = new ArrayList<>();
+        for (final Rect boundingRect : mBoundingRects) {
+            // |boundingRect| was provided relative to |frame|. Make it absolute to be in the same
+            // coordinate system as |frame|.
+            final Rect absBoundingRect = new Rect(
+                    boundingRect.left + frame.left,
+                    boundingRect.top + frame.top,
+                    boundingRect.right + frame.left,
+                    boundingRect.bottom + frame.top
+            );
+            // Now find the intersection of that |absBoundingRect| with |relativeFrame|. In other
+            // words, whichever part of the bounding rect is inside the window frame.
+            if (!mTmpBoundingRect.setIntersect(absBoundingRect, relativeFrame)) {
+                // It's possible for this to be empty if the frame and bounding rects were larger
+                // than the |relativeFrame|, such as when a system window is wider than the app
+                // window width. Just ignore that rect since it will have no effect on the
+                // window insets.
+                continue;
+            }
+            // At this point, |mTmpBoundingRect| is a valid bounding rect located fully inside the
+            // window, convert it to be relative to the window so that apps don't need to know the
+            // location of the window to understand bounding rects.
+            validBoundingRects.add(new Rect(
+                    mTmpBoundingRect.left - relativeFrame.left,
+                    mTmpBoundingRect.top - relativeFrame.top,
+                    mTmpBoundingRect.right - relativeFrame.left,
+                    mTmpBoundingRect.bottom - relativeFrame.top));
+        }
+        if (validBoundingRects.isEmpty()) {
+            return NO_BOUNDING_RECTS;
+        }
+        return validBoundingRects.toArray(new Rect[validBoundingRects.size()]);
+    }
+
+    /**
      * Outputs the intersection of two rectangles. The shared edges will also be counted in the
      * intersection.
      *
@@ -467,6 +575,7 @@
         pw.print(" visible="); pw.print(mVisible);
         pw.print(" flags="); pw.print(flagsToString(mFlags));
         pw.print(" sideHint="); pw.print(sideToString(mSideHint));
+        pw.print(" boundingRects="); pw.print(Arrays.toString(mBoundingRects));
         pw.println();
     }
 
@@ -492,12 +601,14 @@
         if (mSideHint != that.mSideHint) return false;
         if (excludeInvisibleImeFrames && !mVisible && mType == WindowInsets.Type.ime()) return true;
         if (!Objects.equals(mVisibleFrame, that.mVisibleFrame)) return false;
-        return mFrame.equals(that.mFrame);
+        if (!mFrame.equals(that.mFrame)) return false;
+        return Arrays.equals(mBoundingRects, that.mBoundingRects);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mId, mType, mFrame, mVisibleFrame, mVisible, mFlags, mSideHint);
+        return Objects.hash(mId, mType, mFrame, mVisibleFrame, mVisible, mFlags, mSideHint,
+                Arrays.hashCode(mBoundingRects));
     }
 
     public InsetsSource(Parcel in) {
@@ -512,6 +623,7 @@
         mVisible = in.readBoolean();
         mFlags = in.readInt();
         mSideHint = in.readInt();
+        mBoundingRects = in.createTypedArray(Rect.CREATOR);
     }
 
     @Override
@@ -533,6 +645,7 @@
         dest.writeBoolean(mVisible);
         dest.writeInt(mFlags);
         dest.writeInt(mSideHint);
+        dest.writeTypedArray(mBoundingRects, flags);
     }
 
     @Override
@@ -543,6 +656,7 @@
                 + " mVisible=" + mVisible
                 + " mFlags=" + flagsToString(mFlags)
                 + " mSideHint=" + sideToString(mSideHint)
+                + " mBoundingRects=" + Arrays.toString(mBoundingRects)
                 + "}";
     }
 
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java
index c88da9e..21eec67 100644
--- a/core/java/android/view/InsetsState.java
+++ b/core/java/android/view/InsetsState.java
@@ -128,6 +128,8 @@
         final Rect relativeFrameMax = new Rect(frame);
         @InsetsType int forceConsumingTypes = 0;
         @InsetsType int suppressScrimTypes = 0;
+        final Rect[][] typeBoundingRectsMap = new Rect[Type.SIZE][];
+        final Rect[][] typeMaxBoundingRectsMap = new Rect[Type.SIZE][];
         for (int i = mSources.size() - 1; i >= 0; i--) {
             final InsetsSource source = mSources.valueAt(i);
             final @InsetsType int type = source.getType();
@@ -141,7 +143,7 @@
             }
 
             processSource(source, relativeFrame, false /* ignoreVisibility */, typeInsetsMap,
-                    idSideMap, typeVisibilityMap);
+                    idSideMap, typeVisibilityMap, typeBoundingRectsMap);
 
             // IME won't be reported in max insets as the size depends on the EditorInfo of the IME
             // target.
@@ -154,7 +156,7 @@
                 }
                 processSource(ignoringVisibilitySource, relativeFrameMax,
                         true /* ignoreVisibility */, typeMaxInsetsMap, null /* idSideMap */,
-                        null /* typeVisibilityMap */);
+                        null /* typeVisibilityMap */, typeMaxBoundingRectsMap);
             }
         }
         final int softInputAdjustMode = legacySoftInputMode & SOFT_INPUT_MASK_ADJUST;
@@ -175,7 +177,8 @@
                 calculateRelativeRoundedCorners(frame),
                 calculateRelativePrivacyIndicatorBounds(frame),
                 calculateRelativeDisplayShape(frame),
-                compatInsetsTypes, (legacySystemUiFlags & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0);
+                compatInsetsTypes, (legacySystemUiFlags & SYSTEM_UI_FLAG_LAYOUT_STABLE) != 0,
+                typeBoundingRectsMap, typeMaxBoundingRectsMap, frame.width(), frame.height());
     }
 
     private DisplayCutout calculateRelativeCutout(Rect frame) {
@@ -328,12 +331,13 @@
 
     private void processSource(InsetsSource source, Rect relativeFrame, boolean ignoreVisibility,
             Insets[] typeInsetsMap, @Nullable @InternalInsetsSide SparseIntArray idSideMap,
-            @Nullable boolean[] typeVisibilityMap) {
+            @Nullable boolean[] typeVisibilityMap, Rect[][] typeBoundingRectsMap) {
         Insets insets = source.calculateInsets(relativeFrame, ignoreVisibility);
+        final Rect[] boundingRects = source.calculateBoundingRects(relativeFrame, ignoreVisibility);
 
         final int type = source.getType();
         processSourceAsPublicType(source, typeInsetsMap, idSideMap, typeVisibilityMap,
-                insets, type);
+                typeBoundingRectsMap, insets, boundingRects, type);
 
         if (type == Type.MANDATORY_SYSTEM_GESTURES) {
             // Mandatory system gestures are also system gestures.
@@ -342,24 +346,25 @@
             //       ability to set systemGestureInsets() independently from
             //       mandatorySystemGestureInsets() in the Builder.
             processSourceAsPublicType(source, typeInsetsMap, idSideMap, typeVisibilityMap,
-                    insets, Type.SYSTEM_GESTURES);
+                    typeBoundingRectsMap, insets, boundingRects, Type.SYSTEM_GESTURES);
         }
         if (type == Type.CAPTION_BAR) {
             // Caption should also be gesture and tappable elements. This should not be needed when
             // the caption is added from the shell, as the shell can add other types at the same
             // time.
             processSourceAsPublicType(source, typeInsetsMap, idSideMap, typeVisibilityMap,
-                    insets, Type.SYSTEM_GESTURES);
+                    typeBoundingRectsMap, insets, boundingRects, Type.SYSTEM_GESTURES);
             processSourceAsPublicType(source, typeInsetsMap, idSideMap, typeVisibilityMap,
-                    insets, Type.MANDATORY_SYSTEM_GESTURES);
+                    typeBoundingRectsMap, insets, boundingRects, Type.MANDATORY_SYSTEM_GESTURES);
             processSourceAsPublicType(source, typeInsetsMap, idSideMap, typeVisibilityMap,
-                    insets, Type.TAPPABLE_ELEMENT);
+                    typeBoundingRectsMap, insets, boundingRects, Type.TAPPABLE_ELEMENT);
         }
     }
 
     private void processSourceAsPublicType(InsetsSource source, Insets[] typeInsetsMap,
             @InternalInsetsSide @Nullable SparseIntArray idSideMap,
-            @Nullable boolean[] typeVisibilityMap, Insets insets, int type) {
+            @Nullable boolean[] typeVisibilityMap, Rect[][] typeBoundingRectsMap,
+            Insets insets, Rect[] boundingRects, int type) {
         int index = indexOf(type);
 
         // Don't put Insets.NONE into typeInsetsMap. Otherwise, two WindowInsets can be considered
@@ -384,6 +389,22 @@
                 idSideMap.put(source.getId(), insetSide);
             }
         }
+
+        if (typeBoundingRectsMap != null && boundingRects.length > 0) {
+            final Rect[] existing = typeBoundingRectsMap[index];
+            if (existing == null) {
+                typeBoundingRectsMap[index] = boundingRects;
+            } else {
+                typeBoundingRectsMap[index] = concatenate(existing, boundingRects);
+            }
+        }
+    }
+
+    private static Rect[] concatenate(Rect[] a, Rect[] b) {
+        final Rect[] c = new Rect[a.length + b.length];
+        System.arraycopy(a, 0, c, 0, a.length);
+        System.arraycopy(b, 0, c, a.length, b.length);
+        return c;
     }
 
     /**
diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java
index 58765b4..06a923a 100644
--- a/core/java/android/view/SurfaceControlViewHost.java
+++ b/core/java/android/view/SurfaceControlViewHost.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
@@ -33,6 +34,8 @@
 import android.window.InputTransferToken;
 import android.window.WindowTokenClient;
 
+import com.android.window.flags.Flags;
+
 import dalvik.system.CloseGuard;
 
 import java.util.Objects;
@@ -290,12 +293,12 @@
         /**
          * Gets an {@link InputTransferToken} which can be used to request focus on the embedded
          * surface or to transfer touch gesture to the embedded surface.
-         * @return the InputTransferToken associated with {@link SurfacePackage}
-         * @see AttachedSurfaceControl#transferHostTouchGestureToEmbedded(SurfacePackage)
-         *
-         * @hide
+         * @return the InputTransferToken associated with {@link SurfacePackage} or {@code null} if
+         * the embedded hasn't set up its view or doesn't have input.
+         * @see WindowManager#transferTouchGesture(InputTransferToken, InputTransferToken)
          */
         @Nullable
+        @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
         public InputTransferToken getInputTransferToken() {
             return mInputTransferToken;
         }
@@ -347,6 +350,25 @@
             @Nullable IBinder hostToken) {
         this(context, display, hostToken == null ? null : new InputTransferToken(hostToken),
                 "untracked");
+
+    }
+
+    /**
+     * Construct a new SurfaceControlViewHost. The root Surface will be
+     * allocated internally and is accessible via getSurfacePackage().
+     * <p>
+     * The hostInputTransferToken parameter allows the host and embedded to be associated with
+     * each other to allow transferring touch gesture and focus. This is also used for ANR
+     * reporting. It's accessible from {@link AttachedSurfaceControl#getInputTransferToken()}.
+     *
+     * @param context                The Context object for your activity or application.
+     * @param display                The Display the hierarchy will be placed on.
+     * @param hostInputTransferToken The host input transfer token, as discussed above.
+     */
+    @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
+    public SurfaceControlViewHost(@NonNull Context context, @NonNull Display display,
+            @Nullable InputTransferToken hostInputTransferToken) {
+        this(context, display, hostInputTransferToken, "untracked");
     }
 
     /**
@@ -555,9 +577,9 @@
     }
 
     /**
-     * Transfer the currently in progress touch gesture to the parent
-     * (if any) of this SurfaceControlViewHost. This requires that the
-     * SurfaceControlViewHost was created with an associated hostInputToken.
+     * Transfer the currently in progress touch gesture to the parent (if any) of this
+     * SurfaceControlViewHost. This requires that the SurfaceControlViewHost was created with an
+     * associated host {@link InputTransferToken}.
      *
      * @return Whether the touch stream was transferred.
      */
@@ -565,13 +587,14 @@
         if (mViewRoot == null) {
             return false;
         }
-
-        final IWindowSession realWm = WindowManagerGlobal.getWindowSession();
-        try {
-            return realWm.transferEmbeddedTouchFocusToHost(mViewRoot.mWindow);
-        } catch (RemoteException e) {
-            e.rethrowAsRuntimeException();
+        final WindowManager wm =
+                (WindowManager) mViewRoot.mContext.getSystemService(Context.WINDOW_SERVICE);
+        InputTransferToken embeddedToken = getInputTransferToken();
+        InputTransferToken hostToken = mWm.mHostInputTransferToken;
+        if (embeddedToken == null || hostToken == null) {
+            Log.w(TAG, "Failed to transferTouchGestureToHost. Host or embedded token is null");
+            return false;
         }
-        return false;
+        return wm.transferTouchGesture(getInputTransferToken(), mWm.mHostInputTransferToken);
     }
 }
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index e781f3c..73b6ed6 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -18,6 +18,7 @@
 
 import static android.content.res.Resources.ID_NULL;
 import static android.os.Trace.TRACE_TAG_APP;
+import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION;
 import static android.view.ContentInfo.SOURCE_DRAG_AND_DROP;
 import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH;
 import static android.view.Surface.FRAME_RATE_CATEGORY_LOW;
@@ -82,6 +83,10 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
+import android.credentials.CredentialManager;
+import android.credentials.GetCredentialException;
+import android.credentials.GetCredentialRequest;
+import android.credentials.GetCredentialResponse;
 import android.graphics.Bitmap;
 import android.graphics.BlendMode;
 import android.graphics.Canvas;
@@ -114,6 +119,7 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.os.OutcomeReceiver;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.RemoteCallback;
@@ -1037,6 +1043,10 @@
      */
     private static String sTraceRequestLayoutClass;
 
+    @Nullable
+    private ViewCredentialHandler mViewCredentialHandler;
+
+
     /** Used to avoid computing the full strings each time when layout tracing is enabled. */
     @Nullable
     private ViewTraversalTracingStrings mTracingStrings;
@@ -5628,7 +5638,7 @@
     private int mLastFrameRateCategory = FRAME_RATE_CATEGORY_HIGH;
 
     @FlaggedApi(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
-    public static final float REQUESTED_FRAME_RATE_CATEGORY_DEFAULT = 0;
+    public static final float REQUESTED_FRAME_RATE_CATEGORY_DEFAULT = Float.NaN;
     @FlaggedApi(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
     public static final float REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE = -1;
     @FlaggedApi(FLAG_TOOLKIT_SET_FRAME_RATE_READ_ONLY)
@@ -6394,6 +6404,9 @@
                 case R.styleable.View_handwritingBoundsOffsetBottom:
                     mHandwritingBoundsOffsetBottom = a.getDimension(attr, 0);
                     break;
+                case R.styleable.View_contentSensitivity:
+                    setContentSensitivity(a.getInt(attr, CONTENT_SENSITIVITY_AUTO));
+                    break;
             }
         }
 
@@ -6976,6 +6989,64 @@
     }
 
     /**
+     * Clears the request and callback previously set
+     * through {@link View#setCredentialManagerRequest}.
+     * Once this API is invoked, there will be no request fired to {@link CredentialManager}
+     * on future view focus events.
+     *
+     * @see #setCredentialManagerRequest
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public void clearCredentialManagerRequest() {
+        if (Log.isLoggable(AUTOFILL_LOG_TAG, Log.VERBOSE)) {
+            Log.v(AUTOFILL_LOG_TAG, "clearCredentialManagerRequest called");
+        }
+        mViewCredentialHandler = null;
+    }
+
+    /**
+     * Sets a {@link CredentialManager} request to retrieve credentials, when the user focuses
+     * on this given view.
+     *
+     * When this view is focused, the given {@code request} will be fired to
+     * {@link CredentialManager}, which will fetch content from all
+     * {@link android.service.credentials.CredentialProviderService} services on the
+     * device, and then display credential options to the user on a relevant UI
+     * (dropdown, keyboard suggestions etc.).
+     *
+     * When the user selects a credential, the final {@link GetCredentialResponse} will be
+     * propagated to the given {@code callback}. Developers are expected to handle the response
+     * programmatically and perform a relevant action, e.g. signing in the user.
+     *
+     * <p> For details on how to  build a Credential Manager request, please see
+     * {@link GetCredentialRequest}.
+     *
+     * <p> This API should be called at any point before the user focuses on the view, e.g. during
+     * {@code onCreate} of an Activity.
+     *
+     * @param request the request to be fired when this view is entered
+     * @param callback to be invoked when either a response or an exception needs to be
+     *                 propagated for the given view
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public void setCredentialManagerRequest(@NonNull GetCredentialRequest request,
+            @NonNull OutcomeReceiver<GetCredentialResponse, GetCredentialException> callback) {
+        Preconditions.checkNotNull(request, "request must not be null");
+        Preconditions.checkNotNull(callback, "request must not be null");
+
+        mViewCredentialHandler = new ViewCredentialHandler(request, callback);
+    }
+
+    /**
+     *
+     * @hide
+     */
+    @Nullable
+    public ViewCredentialHandler getViewCredentialHandler() {
+        return mViewCredentialHandler;
+    }
+
+    /**
      * Returns the size of the horizontal faded edges used to indicate that more
      * content in this view is visible.
      *
@@ -9440,6 +9511,11 @@
                 structure.setAutofillValue(getAutofillValue());
                 structure.setIsCredential(isCredential());
             }
+            if (getViewCredentialHandler() != null) {
+                structure.setCredentialManagerRequest(
+                        getViewCredentialHandler().getRequest(),
+                        getViewCredentialHandler().getCallback());
+            }
             structure.setImportantForAutofill(getImportantForAutofill());
             structure.setReceiveContentMimeTypes(getReceiveContentMimeTypes());
         }
@@ -9857,6 +9933,53 @@
     }
 
     /**
+     * Returns the {@link GetCredentialRequest} associated with the view.
+     * If the return value is null, that means no request has been set
+     * on the view and no {@link CredentialManager} flow will be invoked
+     * when this view is focused. Traditioanl autofill flows will still
+     * work, autofilling content if applicable, from
+     * the active {@link android.service.autofill.AutofillService} on
+     * the device.
+     *
+     * <p>See {@link #setCredentialManagerRequest} for more info.
+     *
+     * @return The credential request associated with this View.
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    @Nullable
+    public final GetCredentialRequest getCredentialManagerRequest() {
+        if (mViewCredentialHandler == null) {
+            return null;
+        }
+        return mViewCredentialHandler.getRequest();
+    }
+
+
+    /**
+     * Returns the callback that has previously been set up on this view through
+     * the {@link #setCredentialManagerRequest} API.
+     * If the return value is null, that means no callback, or request, has been set
+     * on the view and no {@link CredentialManager} flow will be invoked
+     * when this view is focused. Traditioanl autofill flows will still
+     * work, and autofillable content will still be returned through the
+     * {@link #autofill(AutofillValue)} )} API.
+     *
+     * <p>See {@link #setCredentialManagerRequest} for more info.
+     *
+     * @return The callback associated with this view that will be invoked on a response from
+     * {@link CredentialManager} .
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    @Nullable
+    public final OutcomeReceiver<GetCredentialResponse,
+            GetCredentialException> getCredentialManagerCallback() {
+        if (mViewCredentialHandler == null) {
+            return null;
+        }
+        return mViewCredentialHandler.getCallback();
+    }
+
+    /**
      * Sets the unique, logical identifier of this view in the activity, for autofill purposes.
      *
      * <p>The autofill id is created on demand, and this method should only be called when a view is
@@ -10742,6 +10865,8 @@
             structure.setAutofillId(new AutofillId(getAutofillId(),
                     AccessibilityNodeInfo.getVirtualDescendantId(info.getSourceNodeId())));
         }
+        structure.setCredentialManagerRequest(getCredentialManagerRequest(),
+                getCredentialManagerCallback());
         CharSequence cname = info.getClassName();
         structure.setClassName(cname != null ? cname.toString() : null);
         structure.setContentDescription(info.getContentDescription());
@@ -22299,6 +22424,9 @@
      * Retrieve a unique token identifying the window this view is attached to.
      * @return Return the window's token for use in
      * {@link WindowManager.LayoutParams#token WindowManager.LayoutParams.token}.
+     * This token maybe null if this view is not attached to a window.
+     * @see #isAttachedToWindow() for current window attach state
+     * @see OnAttachStateChangeListener to listen to window attach/detach state changes
      */
     public IBinder getWindowToken() {
         return mAttachInfo != null ? mAttachInfo.mWindowToken : null;
@@ -33329,7 +33457,6 @@
         if (mInfrequentUpdateCount == INFREQUENT_UPDATE_COUNTS) {
             return FRAME_RATE_CATEGORY_NORMAL;
         }
-
         return mLastFrameRateCategory;
     }
 
diff --git a/core/java/android/view/ViewCredentialHandler.java b/core/java/android/view/ViewCredentialHandler.java
new file mode 100644
index 0000000..11488ab
--- /dev/null
+++ b/core/java/android/view/ViewCredentialHandler.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2024 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 android.view;
+
+import android.credentials.GetCredentialException;
+import android.credentials.GetCredentialRequest;
+import android.credentials.GetCredentialResponse;
+import android.os.OutcomeReceiver;
+
+/**
+ * @hide
+ */
+public class ViewCredentialHandler {
+    private GetCredentialRequest mRequest;
+
+    private OutcomeReceiver<GetCredentialResponse, GetCredentialException> mCallback;
+
+    ViewCredentialHandler(GetCredentialRequest request,
+            OutcomeReceiver<GetCredentialResponse, GetCredentialException> callback) {
+        mRequest = request;
+        mCallback = callback;
+    }
+
+    public GetCredentialRequest getRequest() {
+        return mRequest;
+    }
+
+    public OutcomeReceiver<GetCredentialResponse,
+            GetCredentialException> getCallback() {
+        return mCallback;
+    }
+}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 28a7334..9474a69 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -27,6 +27,8 @@
 import static android.view.InsetsSource.ID_IME;
 import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH;
 import static android.view.Surface.FRAME_RATE_CATEGORY_HIGH_HINT;
+import static android.view.Surface.FRAME_RATE_CATEGORY_LOW;
+import static android.view.Surface.FRAME_RATE_CATEGORY_NORMAL;
 import static android.view.Surface.FRAME_RATE_CATEGORY_NO_PREFERENCE;
 import static android.view.View.PFLAG_DRAW_ANIMATION;
 import static android.view.View.SYSTEM_UI_FLAG_FULLSCREEN;
@@ -103,7 +105,6 @@
 import android.animation.AnimationHandler;
 import android.animation.LayoutTransition;
 import android.annotation.AnyThread;
-import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.Size;
@@ -240,7 +241,6 @@
 import com.android.internal.view.RootViewSurfaceTaker;
 import com.android.internal.view.SurfaceCallbackHelper;
 import com.android.modules.expresslog.Counter;
-import com.android.window.flags.Flags;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -1033,6 +1033,15 @@
     private static final int FRAME_RATE_SETTING_REEVALUATE_TIME = 100;
 
     /*
+     * The variables below are used to update frame rate category
+     */
+    private static final int FRAME_RATE_CATEGORY_COUNT = 5;
+    private int mFrameRateCategoryHighCount = 0;
+    private int mFrameRateCategoryHighHintCount = 0;
+    private int mFrameRateCategoryNormalCount = 0;
+    private int mFrameRateCategoryLowCount = 0;
+
+    /*
      * the variables below are used to determine whther a dVRR feature should be enabled
      */
 
@@ -4086,7 +4095,14 @@
         // when the values are applicable.
         setPreferredFrameRate(mPreferredFrameRate);
         setPreferredFrameRateCategory(mPreferredFrameRateCategory);
+        mFrameRateCategoryHighCount = mFrameRateCategoryHighCount > 0
+                ? mFrameRateCategoryHighCount - 1 : mFrameRateCategoryHighCount;
+        mFrameRateCategoryNormalCount = mFrameRateCategoryNormalCount > 0
+                ? mFrameRateCategoryNormalCount - 1 : mFrameRateCategoryNormalCount;
+        mFrameRateCategoryLowCount = mFrameRateCategoryLowCount > 0
+                ? mFrameRateCategoryLowCount - 1 : mFrameRateCategoryLowCount;
         mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_NO_PREFERENCE;
+        mPreferredFrameRate = -1;
     }
 
     private void createSyncIfNeeded() {
@@ -11220,25 +11236,15 @@
     }
 
     /**
-     * @return Returns a token used for associating the root surface
-     * to {@link SurfaceControlViewHost}.
-     */
-    @Nullable
-    @Override
-    @FlaggedApi(Flags.FLAG_GET_HOST_TOKEN_API)
-    public IBinder getHostToken() {
-        return getInputToken();
-    }
-
-    /**
      * {@inheritDoc}
      */
-    @Nullable
+    @NonNull
     @Override
     public InputTransferToken getInputTransferToken() {
         IBinder inputToken = getInputToken();
         if (inputToken == null) {
-            return null;
+            throw new IllegalStateException(
+                    "Called getInputTransferToken for Window with no input channel");
         }
         return new InputTransferToken(inputToken);
     }
@@ -12308,7 +12314,8 @@
         }
 
         try {
-            if (mLastPreferredFrameRate != preferredFrameRate) {
+            if (mLastPreferredFrameRate != preferredFrameRate
+                    && preferredFrameRate >= 0) {
                 if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
                     Trace.traceBegin(
                             Trace.TRACE_TAG_VIEW, "ViewRootImpl#setFrameRate "
@@ -12358,7 +12365,25 @@
      */
     @VisibleForTesting(visibility = VisibleForTesting.Visibility.PROTECTED)
     public void votePreferredFrameRateCategory(int frameRateCategory) {
-        mPreferredFrameRateCategory = Math.max(mPreferredFrameRateCategory, frameRateCategory);
+        if (frameRateCategory == FRAME_RATE_CATEGORY_HIGH) {
+            mFrameRateCategoryHighCount = FRAME_RATE_CATEGORY_COUNT;
+        } else if (frameRateCategory == FRAME_RATE_CATEGORY_HIGH_HINT) {
+            mFrameRateCategoryHighHintCount = FRAME_RATE_CATEGORY_COUNT;
+        } else if (frameRateCategory == FRAME_RATE_CATEGORY_NORMAL) {
+            mFrameRateCategoryNormalCount = FRAME_RATE_CATEGORY_COUNT;
+        } else if (frameRateCategory == FRAME_RATE_CATEGORY_LOW) {
+            mFrameRateCategoryLowCount = FRAME_RATE_CATEGORY_COUNT;
+        }
+
+        if (mFrameRateCategoryHighCount > 0) {
+            mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_HIGH;
+        } else if (mFrameRateCategoryHighHintCount > 0) {
+            mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_HIGH_HINT;
+        } else if (mFrameRateCategoryNormalCount > 0) {
+            mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_NORMAL;
+        } else if (mFrameRateCategoryLowCount > 0) {
+            mPreferredFrameRateCategory = FRAME_RATE_CATEGORY_LOW;
+        }
         mHasInvalidation = true;
     }
 
@@ -12380,13 +12405,7 @@
             return;
         }
 
-        if (mPreferredFrameRate == 0) {
-            mPreferredFrameRate = frameRate;
-        } else if (frameRate > 60 || mPreferredFrameRate > 60) {
-            mPreferredFrameRate = Math.max(mPreferredFrameRate, frameRate);
-        } else if (mPreferredFrameRate != frameRate) {
-            mPreferredFrameRate = 60;
-        }
+        mPreferredFrameRate = Math.max(mPreferredFrameRate, frameRate);
 
         mHasInvalidation = true;
         mHandler.removeMessages(MSG_FRAME_RATE_SETTING);
@@ -12415,7 +12434,7 @@
      */
     @VisibleForTesting
     public float getPreferredFrameRate() {
-        return mPreferredFrameRate;
+        return mPreferredFrameRate >= 0 ? mPreferredFrameRate : mLastPreferredFrameRate;
     }
 
     /**
@@ -12443,19 +12462,6 @@
                 boostTimeOut);
     }
 
-    @Override
-    public boolean transferHostTouchGestureToEmbedded(
-            @NonNull SurfaceControlViewHost.SurfacePackage surfacePackage) {
-        final IWindowSession realWm = WindowManagerGlobal.getWindowSession();
-        try {
-            return realWm.transferHostTouchGestureToEmbedded(mWindow,
-                    surfacePackage.getInputTransferToken());
-        } catch (RemoteException e) {
-            e.rethrowAsRuntimeException();
-        }
-        return false;
-    }
-
     /**
      * Set the default back key callback for windowless window, to forward the back key event
      * to host app.
diff --git a/core/java/android/view/ViewStructure.java b/core/java/android/view/ViewStructure.java
index bb2c7c8..131fca7 100644
--- a/core/java/android/view/ViewStructure.java
+++ b/core/java/android/view/ViewStructure.java
@@ -16,13 +16,20 @@
 
 package android.view;
 
+import static android.service.autofill.Flags.FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION;
+
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
+import android.credentials.GetCredentialException;
+import android.credentials.GetCredentialRequest;
+import android.credentials.GetCredentialResponse;
 import android.graphics.Matrix;
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.os.LocaleList;
+import android.os.OutcomeReceiver;
 import android.util.Pair;
 import android.view.View.AutofillImportance;
 import android.view.autofill.AutofillId;
@@ -347,6 +354,37 @@
     public abstract ViewStructure asyncNewChild(int index);
 
     /**
+     * Gets the {@link GetCredentialRequest} associated with this node.
+     *
+     * <p> If null, no request is associated with this node, and hence no
+     * {@link android.credentials.CredentialManager} request will be fired when this
+     * node is focused.
+     * <p> For details on how a request and callback can be set, see
+     * {@link ViewStructure#setCredentialManagerRequest(GetCredentialRequest, OutcomeReceiver)}
+     */
+    @Nullable
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public GetCredentialRequest getCredentialManagerRequest() {
+        return null;
+    }
+
+    /**
+     * Gets the {@code callback} associated with this node.
+     *
+     * <p> If null, no callback or request is associated with this node, and hence no
+     * {@link android.credentials.CredentialManager} request will be fired when this
+     * node is focused.
+     * <p> For details on how a request and callback can be set, see
+     * {@link ViewStructure#setCredentialManagerRequest(GetCredentialRequest, OutcomeReceiver)}
+     */
+    @Nullable
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public OutcomeReceiver<
+            GetCredentialResponse, GetCredentialException> getCredentialManagerCallback() {
+        return null;
+    }
+
+    /**
      * Gets the {@link AutofillId} associated with this node.
      */
     @Nullable
@@ -509,6 +547,24 @@
     public abstract void setHtmlInfo(@NonNull HtmlInfo htmlInfo);
 
     /**
+     * Sets a credential request to be fired to {@link android.credentials.CredentialManager}
+     * when this node is focused
+     *
+     * @param request the request to be fired
+     * @param callback the callback where the response or exception, is returned
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public void setCredentialManagerRequest(@NonNull GetCredentialRequest request,
+            @NonNull OutcomeReceiver<GetCredentialResponse, GetCredentialException> callback) {}
+
+    /**
+     * Clears the credential request previously set through
+     * {@link ViewStructure#setCredentialManagerRequest(GetCredentialRequest, OutcomeReceiver)}
+     */
+    @FlaggedApi(FLAG_AUTOFILL_CREDMAN_DEV_INTEGRATION)
+    public void clearCredentialManagerRequest() {}
+
+    /**
      * Simplified representation of the HTML properties of a node that represents an HTML element.
      */
     public abstract static class HtmlInfo {
diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java
index 921afaa..fbebe1e 100644
--- a/core/java/android/view/WindowInsets.java
+++ b/core/java/android/view/WindowInsets.java
@@ -34,6 +34,7 @@
 import static android.view.WindowInsets.Type.indexOf;
 import static android.view.WindowInsets.Type.systemBars;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -44,8 +45,10 @@
 import android.content.Intent;
 import android.graphics.Insets;
 import android.graphics.Rect;
+import android.util.Size;
 import android.view.View.OnApplyWindowInsetsListener;
 import android.view.WindowInsets.Type.InsetsType;
+import android.view.flags.Flags;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethod;
 
@@ -54,7 +57,10 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -78,6 +84,8 @@
     private final Insets[] mTypeInsetsMap;
     private final Insets[] mTypeMaxInsetsMap;
     private final boolean[] mTypeVisibilityMap;
+    private final Rect[][] mTypeBoundingRectsMap;
+    private final Rect[][] mTypeMaxBoundingRectsMap;
 
     @Nullable private Rect mTempRect;
     private final boolean mIsRound;
@@ -85,6 +93,8 @@
     @Nullable private final RoundedCorners mRoundedCorners;
     @Nullable private final PrivacyIndicatorBounds mPrivacyIndicatorBounds;
     @Nullable private final DisplayShape mDisplayShape;
+    private final int mFrameWidth;
+    private final int mFrameHeight;
 
     private final @InsetsType int mForceConsumingTypes;
     private final @InsetsType int mSuppressScrimTypes;
@@ -114,7 +124,7 @@
     static {
         CONSUMED = new WindowInsets(createCompatTypeMap(null), createCompatTypeMap(null),
                 createCompatVisibilityMap(createCompatTypeMap(null)), false, 0, 0, null,
-                null, null, null, systemBars(), false);
+                null, null, null, systemBars(), false, null, null, 0, 0);
     }
 
     /**
@@ -139,7 +149,10 @@
             RoundedCorners roundedCorners,
             PrivacyIndicatorBounds privacyIndicatorBounds,
             DisplayShape displayShape,
-            @InsetsType int compatInsetsTypes, boolean compatIgnoreVisibility) {
+            @InsetsType int compatInsetsTypes, boolean compatIgnoreVisibility,
+            Rect[][] typeBoundingRectsMap,
+            Rect[][] typeMaxBoundingRectsMap,
+            int frameWidth, int frameHeight) {
         mSystemWindowInsetsConsumed = typeInsetsMap == null;
         mTypeInsetsMap = mSystemWindowInsetsConsumed
                 ? new Insets[SIZE]
@@ -164,6 +177,14 @@
         mRoundedCorners = roundedCorners;
         mPrivacyIndicatorBounds = privacyIndicatorBounds;
         mDisplayShape = displayShape;
+        mTypeBoundingRectsMap = (mSystemWindowInsetsConsumed || typeBoundingRectsMap == null)
+                ? new Rect[SIZE][]
+                : typeBoundingRectsMap.clone();
+        mTypeMaxBoundingRectsMap = (mStableInsetsConsumed || typeMaxBoundingRectsMap == null)
+                ? new Rect[SIZE][]
+                : typeMaxBoundingRectsMap.clone();
+        mFrameWidth = frameWidth;
+        mFrameHeight = frameHeight;
     }
 
     /**
@@ -181,7 +202,11 @@
                 src.mPrivacyIndicatorBounds,
                 src.mDisplayShape,
                 src.mCompatInsetsTypes,
-                src.mCompatIgnoreVisibility);
+                src.mCompatIgnoreVisibility,
+                src.mSystemWindowInsetsConsumed ? null : src.mTypeBoundingRectsMap,
+                src.mStableInsetsConsumed ? null : src.mTypeMaxBoundingRectsMap,
+                src.mFrameWidth,
+                src.mFrameHeight);
     }
 
     private static DisplayCutout displayCutoutCopyConstructorArgument(WindowInsets w) {
@@ -233,7 +258,8 @@
     @UnsupportedAppUsage
     public WindowInsets(Rect systemWindowInsets) {
         this(createCompatTypeMap(systemWindowInsets), null, new boolean[SIZE], false, 0, 0,
-                null, null, null, null, systemBars(), false /* compatIgnoreVisibility */);
+                null, null, null, null, systemBars(), false /* compatIgnoreVisibility */,
+                new Rect[SIZE][], null, 0, 0);
     }
 
     /**
@@ -475,6 +501,111 @@
     }
 
     /**
+     * Returns a list of {@link Rect}s, each of which is the bounding rectangle for an area
+     * that is being partially or fully obscured inside the window.
+     *
+     * <p>
+     * May be used with or instead of {@link Insets} for finer avoidance of regions that may be
+     * partially obscuring the window but may be smaller than those provided by
+     * {@link #getInsets(int)}.
+     * </p>
+     *
+     * <p>
+     * The {@link Rect}s returned are always cropped to the bounds of the window frame and their
+     * coordinate values are relative to the {@link #getFrame()}, regardless of the window's
+     * position on screen.
+     * </p>
+     *
+     * <p>
+     * If inset by {@link #inset(Insets)}, bounding rects that intersect with the provided insets
+     * will be resized to only include the intersection with the remaining frame. Bounding rects
+     * may be completely removed if they no longer intersect with the new instance.
+     * </p>
+     *
+     * @param typeMask the insets type for which to obtain the bounding rectangles
+     * @return the bounding rectangles
+     */
+    @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+    @NonNull
+    public List<Rect> getBoundingRects(@InsetsType int typeMask) {
+        Rect[] allRects = null;
+        for (int i = FIRST; i <= LAST; i = i << 1) {
+            if ((typeMask & i) == 0) {
+                continue;
+            }
+            final Rect[] rects = mTypeBoundingRectsMap[indexOf(i)];
+            if (rects == null) {
+                continue;
+            }
+            if (allRects == null) {
+                allRects = rects;
+            } else {
+                final Rect[] concat = new Rect[allRects.length + rects.length];
+                System.arraycopy(allRects, 0, concat, 0, allRects.length);
+                System.arraycopy(rects, 0, concat, allRects.length, rects.length);
+                allRects = concat;
+            }
+        }
+        if (allRects == null) {
+            return Collections.emptyList();
+        }
+        return Arrays.asList(allRects);
+    }
+
+    /**
+     * Returns a list of {@link Rect}s, each of which is the bounding rectangle for an area that
+     * can be partially or fully obscured inside the window, regardless of whether
+     * that type is currently visible or not.
+     *
+     * <p> The bounding rects represent areas of a window that <b>may</b> be partially or fully
+     * obscured by the {@code type}. This value does not change based on the visibility state of
+     * those elements. For example, if the status bar is normally shown, but temporarily hidden,
+     * the bounding rects returned here will provide the rects associated with the status bar being
+     * shown.</p>
+     *
+     * <p>
+     * May be used with or instead of {@link Insets} for finer avoidance of regions that may be
+     * partially obscuring the window but may be smaller than those provided by
+     * {@link #getInsetsIgnoringVisibility(int)}.
+     * </p>
+     *
+     * <p>
+     * The {@link Rect}s returned are always cropped to the bounds of the window frame and their
+     * coordinate values are relative to the {@link #getFrame()}, regardless of the window's
+     * position on screen.
+     * </p>
+     *
+     * @param typeMask the insets type for which to obtain the bounding rectangles
+     * @return the bounding rectangles
+     */
+    @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+    @NonNull
+    public List<Rect> getBoundingRectsIgnoringVisibility(@InsetsType int typeMask) {
+        Rect[] allRects = null;
+        for (int i = FIRST; i <= LAST; i = i << 1) {
+            if ((typeMask & i) == 0) {
+                continue;
+            }
+            final Rect[] rects = mTypeMaxBoundingRectsMap[indexOf(i)];
+            if (rects == null) {
+                continue;
+            }
+            if (allRects == null) {
+                allRects = rects;
+            } else {
+                final Rect[] concat = new Rect[allRects.length + rects.length];
+                System.arraycopy(allRects, 0, concat, 0, allRects.length);
+                System.arraycopy(rects, 0, concat, allRects.length, rects.length);
+                allRects = concat;
+            }
+        }
+        if (allRects == null) {
+            return Collections.emptyList();
+        }
+        return Arrays.asList(allRects);
+    }
+
+    /**
      * Returns the display cutout if there is one.
      *
      * <p>Note: the display cutout will already be {@link #consumeDisplayCutout consumed} during
@@ -555,7 +686,10 @@
                 mTypeVisibilityMap,
                 mIsRound, mForceConsumingTypes, mSuppressScrimTypes,
                 null /* displayCutout */, mRoundedCorners, mPrivacyIndicatorBounds, mDisplayShape,
-                mCompatInsetsTypes, mCompatIgnoreVisibility);
+                mCompatInsetsTypes, mCompatIgnoreVisibility,
+                mSystemWindowInsetsConsumed ? null : mTypeBoundingRectsMap,
+                mStableInsetsConsumed ? null : mTypeMaxBoundingRectsMap,
+                mFrameWidth, mFrameHeight);
     }
 
 
@@ -610,7 +744,7 @@
                 (mCompatInsetsTypes & displayCutout()) != 0
                         ? null : displayCutoutCopyConstructorArgument(this),
                 mRoundedCorners, mPrivacyIndicatorBounds, mDisplayShape, mCompatInsetsTypes,
-                mCompatIgnoreVisibility);
+                mCompatIgnoreVisibility, null, null, mFrameWidth, mFrameHeight);
     }
 
     // TODO(b/119190588): replace @code with @link below
@@ -914,6 +1048,10 @@
                 result.append(Type.toString(1 << i)).append("=").append(insets)
                         .append(" max=").append(maxInsets)
                         .append(" vis=").append(visible)
+                        .append(" boundingRects=")
+                        .append(Arrays.toString(mTypeBoundingRectsMap[i]))
+                        .append(" maxBoundingRects=")
+                        .append(Arrays.toString(mTypeMaxBoundingRectsMap[i]))
                         .append("\n    ");
             }
         }
@@ -942,6 +1080,10 @@
         result.append("displayCutoutConsumed=" + mDisplayCutoutConsumed);
         result.append("\n    ");
         result.append(isRound() ? "round" : "");
+        result.append("\n    ");
+        result.append("frameWidth=" + mFrameWidth);
+        result.append("\n    ");
+        result.append("frameHeight=" + mFrameHeight);
         result.append("}");
         return result.toString();
     }
@@ -1013,6 +1155,27 @@
     }
 
     /**
+     * Returns the assumed size of the window, relative to which the {@link #getInsets} and
+     * {@link #getBoundingRects} have been calculated.
+     *
+     * <p> May be used with {@link #getBoundingRects} to better understand their position within
+     * the window, such as the area between the edge of a bounding rect and the edge of the window.
+     *
+     * <p>Note: the size may not match the actual size of the window, which is determined during
+     * the layout pass - as {@link WindowInsets} are dispatched before layout.
+     *
+     * <p>Caution: using this value in determining the actual window size may make the result of
+     * layout passes unstable and should be avoided.
+     *
+     * @return the assumed size of the window during the inset calculation
+     */
+    @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+    @NonNull
+    public Size getFrame() {
+        return new Size(mFrameWidth, mFrameHeight);
+    }
+
+    /**
      * @see #inset(int, int, int, int)
      * @hide
      */
@@ -1039,7 +1202,17 @@
                         ? null
                         : mPrivacyIndicatorBounds.inset(left, top, right, bottom),
                 mDisplayShape,
-                mCompatInsetsTypes, mCompatIgnoreVisibility);
+                mCompatInsetsTypes, mCompatIgnoreVisibility,
+                mSystemWindowInsetsConsumed
+                        ? null
+                        : insetBoundingRects(mTypeBoundingRectsMap, left, top, right, bottom,
+                                mFrameWidth, mFrameHeight),
+                mStableInsetsConsumed
+                        ? null
+                        : insetBoundingRects(mTypeMaxBoundingRectsMap, left, top, right, bottom,
+                                mFrameWidth, mFrameHeight),
+                Math.max(0, mFrameWidth - left - right),
+                Math.max(0, mFrameHeight - top - bottom));
     }
 
     @Override
@@ -1060,7 +1233,11 @@
                 && Objects.equals(mDisplayCutout, that.mDisplayCutout)
                 && Objects.equals(mRoundedCorners, that.mRoundedCorners)
                 && Objects.equals(mPrivacyIndicatorBounds, that.mPrivacyIndicatorBounds)
-                && Objects.equals(mDisplayShape, that.mDisplayShape);
+                && Objects.equals(mDisplayShape, that.mDisplayShape)
+                && Arrays.deepEquals(mTypeBoundingRectsMap, that.mTypeBoundingRectsMap)
+                && Arrays.deepEquals(mTypeMaxBoundingRectsMap, that.mTypeMaxBoundingRectsMap)
+                && mFrameWidth == that.mFrameWidth
+                && mFrameHeight == that.mFrameHeight;
     }
 
     @Override
@@ -1069,7 +1246,8 @@
                 Arrays.hashCode(mTypeVisibilityMap), mIsRound, mDisplayCutout, mRoundedCorners,
                 mForceConsumingTypes, mSuppressScrimTypes, mSystemWindowInsetsConsumed,
                 mStableInsetsConsumed, mDisplayCutoutConsumed, mPrivacyIndicatorBounds,
-                mDisplayShape);
+                mDisplayShape, Arrays.deepHashCode(mTypeBoundingRectsMap),
+                Arrays.deepHashCode(mTypeMaxBoundingRectsMap), mFrameWidth, mFrameHeight);
     }
 
 
@@ -1110,6 +1288,68 @@
         return Insets.of(newLeft, newTop, newRight, newBottom);
     }
 
+    static Rect[][] insetBoundingRects(Rect[][] typeBoundingRectsMap,
+            int insetLeft, int insetTop, int insetRight, int insetBottom, int frameWidth,
+            int frameHeight) {
+        if (insetLeft == 0 && insetTop == 0 && insetRight == 0 && insetBottom == 0) {
+            return typeBoundingRectsMap;
+        }
+        boolean cloned = false;
+        for (int i = 0; i < SIZE; i++) {
+            final Rect[] boundingRects = typeBoundingRectsMap[i];
+            if (boundingRects == null) {
+                continue;
+            }
+            final Rect[] insetBoundingRects = insetBoundingRects(boundingRects,
+                    insetLeft, insetTop, insetRight, insetBottom, frameWidth, frameHeight);
+            if (!Arrays.equals(insetBoundingRects, boundingRects)) {
+                if (!cloned) {
+                    typeBoundingRectsMap = typeBoundingRectsMap.clone();
+                    cloned = true;
+                }
+                typeBoundingRectsMap[i] = insetBoundingRects;
+            }
+        }
+        return typeBoundingRectsMap;
+    }
+
+    static Rect[] insetBoundingRects(Rect[] boundingRects,
+            int left, int top, int right, int bottom, int frameWidth, int frameHeight) {
+        final List<Rect> insetBoundingRectsList = new ArrayList<>();
+        for (int i = 0; i < boundingRects.length; i++) {
+            final Rect insetRect = insetRect(boundingRects[i], left, top, right, bottom,
+                    frameWidth, frameHeight);
+            if (insetRect != null) {
+                insetBoundingRectsList.add(insetRect);
+            }
+        }
+        return insetBoundingRectsList.toArray(new Rect[0]);
+    }
+
+    private static Rect insetRect(Rect orig, int insetLeft, int insetTop, int insetRight,
+            int insetBottom, int frameWidth, int frameHeight) {
+        if (orig == null) {
+            return null;
+        }
+
+        // Calculate the inset frame, and leave it in that coordinate space for easier comparison
+        // against the |orig| rect.
+        final Rect insetFrame = new Rect(insetLeft, insetTop, frameWidth - insetRight,
+                frameHeight - insetBottom);
+        // Then the intersecting portion of |orig| with the inset |insetFrame|.
+        final Rect insetRect = new Rect();
+        if (insetRect.setIntersect(insetFrame, orig)) {
+            // The intersection is the inset rect, but its position must be shifted to be relative
+            // to the frame. Since the new frame will start at left=|insetLeft| and top=|insetTop|,
+            // just offset that much back in the direction of the origin of the frame.
+            insetRect.offset(-insetLeft, -insetTop);
+            return insetRect;
+        } else {
+            // The |orig| rect does not intersect with the new frame at all, so don't report it.
+            return null;
+        }
+    }
+
     /**
      * @return whether system window insets have been consumed.
      */
@@ -1125,6 +1365,8 @@
         private final Insets[] mTypeInsetsMap;
         private final Insets[] mTypeMaxInsetsMap;
         private final boolean[] mTypeVisibilityMap;
+        private final Rect[][] mTypeBoundingRectsMap;
+        private final Rect[][] mTypeMaxBoundingRectsMap;
         private boolean mSystemInsetsConsumed = true;
         private boolean mStableInsetsConsumed = true;
 
@@ -1137,6 +1379,8 @@
         private @InsetsType int mSuppressScrimTypes;
 
         private PrivacyIndicatorBounds mPrivacyIndicatorBounds = new PrivacyIndicatorBounds();
+        private int mFrameWidth;
+        private int mFrameHeight;
 
         /**
          * Creates a builder where all insets are initially consumed.
@@ -1145,6 +1389,8 @@
             mTypeInsetsMap = new Insets[SIZE];
             mTypeMaxInsetsMap = new Insets[SIZE];
             mTypeVisibilityMap = new boolean[SIZE];
+            mTypeBoundingRectsMap = new Rect[SIZE][];
+            mTypeMaxBoundingRectsMap = new Rect[SIZE][];
         }
 
         /**
@@ -1165,6 +1411,10 @@
             mSuppressScrimTypes = insets.mSuppressScrimTypes;
             mPrivacyIndicatorBounds = insets.mPrivacyIndicatorBounds;
             mDisplayShape = insets.mDisplayShape;
+            mTypeBoundingRectsMap = insets.mTypeBoundingRectsMap.clone();
+            mTypeMaxBoundingRectsMap = insets.mTypeMaxBoundingRectsMap.clone();
+            mFrameWidth = insets.mFrameWidth;
+            mFrameHeight = insets.mFrameHeight;
         }
 
         /**
@@ -1452,6 +1702,68 @@
         }
 
         /**
+         * Sets the bounding rects.
+         *
+         * @param typeMask the inset types to which these rects apply.
+         * @param rects the bounding rects.
+         * @return itself.
+         */
+        @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+        @NonNull
+        public Builder setBoundingRects(@InsetsType int typeMask, @NonNull List<Rect> rects) {
+            for (int i = FIRST; i <= LAST; i = i << 1) {
+                if ((typeMask & i) == 0) {
+                    continue;
+                }
+                mTypeBoundingRectsMap[indexOf(i)] = rects.toArray(new Rect[0]);
+            }
+            return this;
+        }
+
+        /**
+         * Sets the bounding rects while ignoring their visibility state.
+         *
+         * @param typeMask the inset types to which these rects apply.
+         * @param rects the bounding rects.
+         * @return itself.
+         *
+         * @throws IllegalArgumentException If {@code typeMask} contains {@link Type#ime()}.
+         * Maximum bounding rects are not available for this type as the height of the IME is
+         * dynamic depending on the {@link EditorInfo} of the currently focused view, as well as
+         * the UI state of the IME.
+         */
+        @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+        @NonNull
+        public Builder setBoundingRectsIgnoringVisibility(@InsetsType int typeMask,
+                @NonNull List<Rect> rects) {
+            if (typeMask == IME) {
+                throw new IllegalArgumentException("Maximum bounding rects not available for IME");
+            }
+            for (int i = FIRST; i <= LAST; i = i << 1) {
+                if ((typeMask & i) == 0) {
+                    continue;
+                }
+                mTypeMaxBoundingRectsMap[indexOf(i)] = rects.toArray(new Rect[0]);
+            }
+            return this;
+        }
+
+        /**
+         * Set the frame size.
+         *
+         * @param width the width of the frame.
+         * @param height the height of the frame.
+         * @return itself.
+         */
+        @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+        @NonNull
+        public Builder setFrame(int width, int height) {
+            mFrameWidth = width;
+            mFrameHeight = height;
+            return this;
+        }
+
+        /**
          * Builds a {@link WindowInsets} instance.
          *
          * @return the {@link WindowInsets} instance.
@@ -1462,7 +1774,10 @@
                     mStableInsetsConsumed ? null : mTypeMaxInsetsMap, mTypeVisibilityMap,
                     mIsRound, mForceConsumingTypes, mSuppressScrimTypes, mDisplayCutout,
                     mRoundedCorners, mPrivacyIndicatorBounds, mDisplayShape, systemBars(),
-                    false /* compatIgnoreVisibility */);
+                    false /* compatIgnoreVisibility */,
+                    mSystemInsetsConsumed ? null : mTypeBoundingRectsMap,
+                    mStableInsetsConsumed ? null : mTypeMaxBoundingRectsMap,
+                    mFrameWidth, mFrameHeight);
         }
     }
 
diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java
index cc2cd79..b7542dc 100644
--- a/core/java/android/view/WindowInsetsController.java
+++ b/core/java/android/view/WindowInsetsController.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -26,6 +27,7 @@
 import android.view.WindowInsets.Type;
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.animation.Interpolator;
+import android.view.flags.Flags;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -78,6 +80,20 @@
     int APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS = 1 << 6;
 
     /**
+     * Makes the caption bar transparent.
+     */
+    @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+    int APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND = 1 << 7;
+
+    /**
+     * When {@link WindowInsetsController#APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND} is set,
+     * changes the foreground color of the caption bars so that the items on the bar can be read
+     * clearly on light backgrounds.
+     */
+    @FlaggedApi(Flags.FLAG_CUSTOMIZABLE_WINDOW_HEADERS)
+    int APPEARANCE_LIGHT_CAPTION_BARS = 1 << 8;
+
+    /**
      * Determines the appearance of system bars.
      * @hide
      */
@@ -85,7 +101,8 @@
     @IntDef(flag = true, value = {APPEARANCE_OPAQUE_STATUS_BARS, APPEARANCE_OPAQUE_NAVIGATION_BARS,
             APPEARANCE_LOW_PROFILE_BARS, APPEARANCE_LIGHT_STATUS_BARS,
             APPEARANCE_LIGHT_NAVIGATION_BARS, APPEARANCE_SEMI_TRANSPARENT_STATUS_BARS,
-            APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS})
+            APPEARANCE_SEMI_TRANSPARENT_NAVIGATION_BARS,
+            APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND, APPEARANCE_LIGHT_CAPTION_BARS})
     @interface Appearance {
     }
 
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 58fb273..e4be016 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -123,6 +123,7 @@
 import android.view.WindowInsets.Type;
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.accessibility.AccessibilityNodeInfo;
+import android.window.InputTransferToken;
 import android.window.TaskFpsCallback;
 import android.window.TrustedPresentationThresholds;
 
@@ -1547,6 +1548,48 @@
             "android.window.PROPERTY_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI";
 
     /**
+     * Application or Activity level
+     * {@link android.content.pm.PackageManager.Property PackageManager.Property} to provide any
+     * preferences for showing all or specific Activities on small cover displays of foldable
+     * style devices.
+     *
+     * <p>The only supported value for the property is {@link #COMPAT_SMALL_COVER_SCREEN_OPT_IN}.
+     *
+     * <p><b>Syntax:</b>
+     * <pre>
+     * &lt;application&gt;
+     *   &lt;property
+     *     android:name="android.window.PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN"
+     *     android:value=1 <!-- COMPAT_COVER_SCREEN_OPT_IN -->/&gt;
+     * &lt;/application&gt;
+     * </pre>
+     */
+    @FlaggedApi(Flags.FLAG_COVER_DISPLAY_OPT_IN)
+    String PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN =
+            "android.window.PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN";
+
+    /**
+     * Value applicable for the {@link #PROPERTY_COMPAT_ALLOW_SMALL_COVER_SCREEN} property to
+     * provide a signal to the system that an application or its specific activities explicitly
+     * opt into being displayed on small foldable device cover screens that measure at least 1.5
+     * inches for the shorter dimension and at least 2.4 inches for the longer dimension.
+     */
+    @CompatSmallScreenPolicy
+    @FlaggedApi(Flags.FLAG_COVER_DISPLAY_OPT_IN)
+    int COMPAT_SMALL_COVER_SCREEN_OPT_IN = 1;
+
+    /**
+     * @hide
+     */
+    @IntDef({
+            COMPAT_SMALL_COVER_SCREEN_OPT_IN,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface CompatSmallScreenPolicy {}
+
+
+
+    /**
      * Request for app's keyboard shortcuts to be retrieved asynchronously.
      *
      * @param receiver The callback to be triggered when the result is ready.
@@ -6097,52 +6140,65 @@
      * receive batched input event. For those events that are batched, the invocation will happen
      * once per {@link Choreographer} frame, and other input events will be delivered immediately.
      * This is different from
-     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl, Looper,
-     * SurfaceControlInputReceiver)} in that the input events are received batched. The caller must
-     * invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to clean up the
-     * resources when no longer needing to use the {@link SurfaceControlInputReceiver}
+     * { #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+     * Looper, SurfaceControlInputReceiver)} in that the input events are received batched. The
+     * caller must invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to clean up
+     * the resources when no longer needing to use the {@link SurfaceControlInputReceiver}
      *
-     * @param displayId      The display that the SurfaceControl will be placed on. Input will
-     *                       only work
-     *                       if SurfaceControl is on that display and that display was touched.
-     * @param surfaceControl The SurfaceControl to register the InputChannel for
-     * @param hostToken      The host token to link the InputChannel for. This is primarily for ANRs
-     *                       to ensure the host receives the ANR if any issues with touch on the
-     *                       InputChannel
-     * @param choreographer  The Choreographer used for batching. This should match the rendering
-     *                       Choreographer.
-     * @param receiver       The SurfaceControlInputReceiver that will receive the input events
+     * @param displayId              The display that the SurfaceControl will be placed on. Input
+     *                               will only work if SurfaceControl is on that display and that
+     *                               display  was touched.
+     * @param surfaceControl         The SurfaceControl to register the InputChannel for
+     * @param hostInputTransferToken The host token to link the embedded. This is used to handle
+     *                               transferring touch gesture from host to embedded and for ANRs
+     *                               to ensure the host receives the ANR if any issues with
+     *                               touch on the embedded.
+     * @param choreographer          The Choreographer used for batching. This should match the
+     *                               rendering Choreographer.
+     * @param receiver               The SurfaceControlInputReceiver that will receive the input
+     *                               events
+     * @return Returns the {@link InputTransferToken} that can be used to transfer touch gesture
+     * to or from other windows.
      */
     @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
-    default void registerBatchedSurfaceControlInputReceiver(int displayId,
-            @NonNull IBinder hostToken, @NonNull SurfaceControl surfaceControl,
-            @NonNull Choreographer choreographer, @NonNull SurfaceControlInputReceiver receiver) {
+    @NonNull
+    default InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
+            @NonNull InputTransferToken hostInputTransferToken,
+            @NonNull SurfaceControl surfaceControl, @NonNull Choreographer choreographer,
+            @NonNull SurfaceControlInputReceiver receiver) {
         throw new UnsupportedOperationException(
                 "registerBatchedSurfaceControlInputReceiver is not implemented");
     }
 
     /**
      * Registers a {@link SurfaceControlInputReceiver} for a {@link SurfaceControl} that will
-     * receive every input event. This is different than calling @link
-     * #registerBatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl, Choreographer,
-     * SurfaceControlInputReceiver)} in that the input events are received unbatched. The caller
-     * must invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to clean up the
-     * resources when no longer needing to use the {@link SurfaceControlInputReceiver}
+     * receive every input event. This is different than calling
+     * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+     * Choreographer, SurfaceControlInputReceiver)} in that the input events are received
+     * unbatched.
+     * The caller must invoke {@link #unregisterSurfaceControlInputReceiver(SurfaceControl)} to
+     * clean up the resources when no longer needing to use the {@link SurfaceControlInputReceiver}
      *
-     * @param displayId      The display that the SurfaceControl will be placed on. Input will only
-     *                       work if SurfaceControl is on that display and that display was
-     *                       touched.
-     * @param hostToken      The host token to link the InputChannel for. This is primarily for ANRs
-     *                       to ensure the host receives the ANR if any issues with touch on the
-     *                       InputChannel
-     * @param surfaceControl The SurfaceControl to register the InputChannel for
-     * @param looper         The looper to use when invoking callbacks.
-     * @param receiver       The SurfaceControlInputReceiver that will receive the input events
-     **/
+     * @param displayId              The display that the SurfaceControl will be placed on. Input
+     *                               will only work if SurfaceControl is on that display and that
+     *                               display  was touched.
+     * @param surfaceControl         The SurfaceControl to register the InputChannel for
+     * @param hostInputTransferToken The host token to link the embedded. This is used to handle
+     *                               transferring touch gesture from host to embedded and for ANRs
+     *                               to ensure the host receives the ANR if any issues with
+     *                               touch on the embedded.
+     * @param looper                 The looper to use when invoking callbacks.
+     * @param receiver               The SurfaceControlInputReceiver that will receive the input
+     *                               events.
+     * @return Returns the {@link InputTransferToken} that can be used to transfer touch gesture
+     * to or from other windows.
+     */
     @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
-    default void registerUnbatchedSurfaceControlInputReceiver(int displayId,
-            @NonNull IBinder hostToken, @NonNull SurfaceControl surfaceControl,
-            @NonNull Looper looper, @NonNull SurfaceControlInputReceiver receiver) {
+    @NonNull
+    default InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
+            @NonNull InputTransferToken hostInputTransferToken,
+            @NonNull SurfaceControl surfaceControl, @NonNull Looper looper,
+            @NonNull SurfaceControlInputReceiver receiver) {
         throw new UnsupportedOperationException(
                 "registerUnbatchedSurfaceControlInputReceiver is not implemented");
     }
@@ -6152,10 +6208,10 @@
      * specified token.
      * <p>
      * Must be called on the same {@link Looper} thread to which was passed to the
-     * {@link #registerBatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl,
+     * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
      * Choreographer,
      * SurfaceControlInputReceiver)} or
-     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl, Looper,
+     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl, Looper,
      * SurfaceControlInputReceiver)}
      *
      * @param surfaceControl The SurfaceControl to remove and unregister the input channel for.
@@ -6171,7 +6227,7 @@
      * if the SurfaceControl was registered for input via
      * { #registerBatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl, Choreographer,
      * SurfaceControlInputReceiver)} or
-     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, IBinder, SurfaceControl, Looper,
+     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl, Looper,
      * SurfaceControlInputReceiver)}.
      * <p>
      * This is helpful for testing to ensure the test waits for the layer to be registered with
@@ -6188,6 +6244,70 @@
     }
 
     /**
+     * Transfer the currently in progress touch gesture from the transferFromToken to the
+     * transferToToken.
+     * <p><br>
+     * This requires that the fromToken and toToken are associated with each other. The association
+     * can be done different ways, depending on how the embedded window is created.
+     * <ul>
+     * <li>
+     * Creating a {@link SurfaceControlViewHost} and passing the host's
+     * {@link InputTransferToken} for
+     * {@link SurfaceControlViewHost#SurfaceControlViewHost(Context, Display, InputTransferToken)}.
+     * </li>
+     * <li>
+     * Registering a SurfaceControl for input and passing the host's token to either
+     * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+     * Choreographer, SurfaceControlInputReceiver)} or
+     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken,
+     * SurfaceControl, Looper, SurfaceControlInputReceiver)}.
+     * </li>
+     * </ul>
+     * <p>
+     * The host is likely to be an {@link AttachedSurfaceControl} so the host token can be
+     * retrieved via {@link AttachedSurfaceControl#getInputTransferToken()}.
+     * <p><br>
+     * Only the window currently receiving touch is allowed to transfer the gesture so if the caller
+     * attempts to transfer touch gesture from a token that doesn't have touch, it will fail the
+     * transfer.
+     * <p><br>
+     * When the host wants to transfer touch gesture to the embedded, it can retrieve the embedded
+     * token via {@link SurfaceControlViewHost.SurfacePackage#getInputTransferToken()} or use the
+     * value returned from either
+     * {@link #registerBatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+     * Choreographer, SurfaceControlInputReceiver)} or
+     * {@link #registerUnbatchedSurfaceControlInputReceiver(int, InputTransferToken, SurfaceControl,
+     * Looper, SurfaceControlInputReceiver)} and pass its own token as the transferFromToken.
+     * <p>
+     * When the embedded wants to transfer touch gesture to the host, it can pass in its own
+     * token as the transferFromToken and use the associated host's {@link InputTransferToken} as
+     * the transferToToken
+     * <p><br>
+     * When the touch is transferred, the window currently receiving touch gets an ACTION_CANCEL
+     * and does not receive any further input events for this gesture.
+     * <p>
+     * The transferred-to window receives an ACTION_DOWN event and then the remainder of the input
+     * events for this gesture. It does not receive any of the previous events of this gesture that
+     * the originating window received.
+     * <p>
+     * The transferTouchGesture API only works for the current gesture. When a new gesture
+     * arrives, input dispatcher will do a new round of hit testing. So, if the host window is
+     * still the first thing that's being touched, then it will receive the new gesture again. It
+     * will again be up to the host to transfer this new gesture to the embedded.
+     *
+     * @param transferFromToken the InputTransferToken for the currently active gesture
+     * @param transferToToken   the InputTransferToken to transfer the gesture to.
+     * @return Whether the touch stream was transferred.
+     * @see android.view.SurfaceControlViewHost.SurfacePackage#getInputTransferToken()
+     * @see AttachedSurfaceControl#getInputTransferToken()
+     */
+    @FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
+    default boolean transferTouchGesture(@NonNull InputTransferToken transferFromToken,
+            @NonNull InputTransferToken transferToToken) {
+        throw new UnsupportedOperationException("transferTouchGesture is not implemented");
+    }
+
+    /**
      * @hide
      */
     default @NonNull IBinder getDefaultToken() {
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 1428963..584219a 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -839,14 +839,15 @@
         mTrustedPresentationListener.removeListener(listener);
     }
 
-    void registerBatchedSurfaceControlInputReceiver(int displayId,
+    InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
             @NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
             @NonNull Choreographer choreographer, @NonNull SurfaceControlInputReceiver receiver) {
         IBinder clientToken = new Binder();
+        InputTransferToken inputTransferToken = new InputTransferToken();
         InputChannel inputChannel = new InputChannel();
         try {
             WindowManagerGlobal.getWindowSession().grantInputChannel(displayId, surfaceControl,
-                    clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, null,
+                    clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, inputTransferToken,
                     surfaceControl.getName(), inputChannel);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to create input channel", e);
@@ -865,16 +866,18 @@
                                 }
                             }));
         }
+        return inputTransferToken;
     }
 
-    void registerUnbatchedSurfaceControlInputReceiver(int displayId,
+    InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
             @NonNull InputTransferToken hostToken, @NonNull SurfaceControl surfaceControl,
             @NonNull Looper looper, @NonNull SurfaceControlInputReceiver receiver) {
         IBinder clientToken = new Binder();
+        InputTransferToken inputTransferToken = new InputTransferToken();
         InputChannel inputChannel = new InputChannel();
         try {
             WindowManagerGlobal.getWindowSession().grantInputChannel(displayId, surfaceControl,
-                    clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, null,
+                    clientToken, hostToken, 0, 0, TYPE_APPLICATION, 0, null, inputTransferToken,
                     surfaceControl.getName(), inputChannel);
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to create input channel", e);
@@ -892,6 +895,7 @@
                                 }
                             }));
         }
+        return inputTransferToken;
     }
 
     void unregisterSurfaceControlInputReceiver(SurfaceControl surfaceControl) {
@@ -930,6 +934,17 @@
         return surfaceControlInputReceiverInfo.mClientToken;
     }
 
+    boolean transferTouchGesture(InputTransferToken transferFromToken,
+            InputTransferToken transferToToken) {
+        try {
+            return getWindowManagerService().transferTouchGesture(transferFromToken,
+                    transferToToken);
+        } catch (RemoteException e) {
+            e.rethrowAsRuntimeException();
+        }
+        return false;
+    }
+
     private final class TrustedPresentationListener extends
             ITrustedPresentationListener.Stub {
         private static int sId = 0;
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index ae00b70..8972228 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -520,30 +520,37 @@
     public void registerTrustedPresentationListener(@NonNull IBinder window,
             @NonNull TrustedPresentationThresholds thresholds, @NonNull Executor executor,
             @NonNull Consumer<Boolean> listener) {
+        Objects.requireNonNull(window, "window must not be null");
+        Objects.requireNonNull(thresholds, "thresholds must not be null");
+        Objects.requireNonNull(executor, "executor must not be null");
+        Objects.requireNonNull(listener, "listener must not be null");
         mGlobal.registerTrustedPresentationListener(window, thresholds, executor, listener);
     }
 
     @Override
     public void unregisterTrustedPresentationListener(@NonNull Consumer<Boolean> listener) {
+        Objects.requireNonNull(listener, "listener must not be null");
         mGlobal.unregisterTrustedPresentationListener(listener);
     }
 
+    @NonNull
     @Override
-    public void registerBatchedSurfaceControlInputReceiver(int displayId,
-            @NonNull IBinder hostToken, @NonNull SurfaceControl surfaceControl,
-            @NonNull Choreographer choreographer, @NonNull SurfaceControlInputReceiver receiver) {
-        mGlobal.registerBatchedSurfaceControlInputReceiver(displayId,
-                new InputTransferToken(hostToken),
+    public InputTransferToken registerBatchedSurfaceControlInputReceiver(int displayId,
+            @NonNull InputTransferToken hostInputTransferToken,
+            @NonNull SurfaceControl surfaceControl, @NonNull Choreographer choreographer,
+            @NonNull SurfaceControlInputReceiver receiver) {
+        return mGlobal.registerBatchedSurfaceControlInputReceiver(displayId, hostInputTransferToken,
                 surfaceControl, choreographer, receiver);
     }
 
+    @NonNull
     @Override
-    public void registerUnbatchedSurfaceControlInputReceiver(
-            int displayId, @NonNull IBinder hostToken, @NonNull SurfaceControl surfaceControl,
-            @NonNull Looper looper, @NonNull SurfaceControlInputReceiver receiver) {
-        mGlobal.registerUnbatchedSurfaceControlInputReceiver(displayId,
-                new InputTransferToken(hostToken),
-                surfaceControl, looper, receiver);
+    public InputTransferToken registerUnbatchedSurfaceControlInputReceiver(int displayId,
+            @NonNull InputTransferToken hostInputTransferToken,
+            @NonNull SurfaceControl surfaceControl, @NonNull Looper looper,
+            @NonNull SurfaceControlInputReceiver receiver) {
+        return mGlobal.registerUnbatchedSurfaceControlInputReceiver(displayId,
+                hostInputTransferToken, surfaceControl, looper, receiver);
     }
 
     @Override
@@ -558,6 +565,14 @@
     }
 
     @Override
+    public boolean transferTouchGesture(@NonNull InputTransferToken transferFromToken,
+            @NonNull InputTransferToken transferToToken) {
+        Objects.requireNonNull(transferFromToken);
+        Objects.requireNonNull(transferToToken);
+        return mGlobal.transferTouchGesture(transferFromToken, transferToToken);
+    }
+
+    @Override
     public @ScreenRecordingState int addScreenRecordingCallback(
             @NonNull @CallbackExecutor Executor executor,
             @NonNull Consumer<@ScreenRecordingState Integer> callback) {
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 3f1ae51..2b2c507 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -651,21 +651,6 @@
     }
 
     @Override
-    public boolean transferEmbeddedTouchFocusToHost(IWindow window) {
-        Log.e(TAG, "Received request to transferEmbeddedTouch focus on WindowlessWindowManager" +
-            " we shouldn't get here!");
-        return false;
-    }
-
-    @Override
-    public boolean transferHostTouchGestureToEmbedded(IWindow hostWindow,
-            InputTransferToken embeddedInputToken) {
-        Log.e(TAG, "Received request to transferHostTouchGestureToEmbedded on"
-                + " WindowlessWindowManager. We shouldn't get here!");
-        return false;
-    }
-
-    @Override
     public boolean moveFocusToAdjacentWindow(IWindow fromWindow, @FocusDirection int direction) {
         Log.e(TAG, "Received request to moveFocusToAdjacentWindow on"
                 + " WindowlessWindowManager. We shouldn't get here!");
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 0deaca1..ae4a7d3 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -2446,7 +2446,6 @@
         }
     }
 
-
     /**
      * Attaches a {@link android.view.SurfaceControl} containing an accessibility overlay to the
      * specified display.
@@ -2470,4 +2469,29 @@
             throw re.rethrowFromSystemServer();
         }
     }
+
+    /**
+     * Notifies that the current a11y tiles in QuickSettings Panel has been changed
+     *
+     * @param userId            The userId of the user attempts to change the qs panel.
+     * @param tileComponentNames A list of Accessibility feature's TileServices' component names
+     *                           and the a11y platform tiles' component names
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.STATUS_BAR_SERVICE)
+    public void notifyQuickSettingsTilesChanged(
+            @UserIdInt int userId, List<ComponentName> tileComponentNames) {
+        final IAccessibilityManager service;
+        synchronized (mLock) {
+            service = getServiceLocked();
+            if (service == null) {
+                return;
+            }
+        }
+        try {
+            service.notifyQuickSettingsTilesChanged(userId, tileComponentNames);
+        } catch (RemoteException re) {
+            throw re.rethrowFromSystemServer();
+        }
+    }
 }
diff --git a/core/java/android/view/accessibility/AccessibilityWindowInfo.java b/core/java/android/view/accessibility/AccessibilityWindowInfo.java
index fa0052c..749f977 100644
--- a/core/java/android/view/accessibility/AccessibilityWindowInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityWindowInfo.java
@@ -16,6 +16,7 @@
 
 package android.view.accessibility;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
@@ -93,6 +94,12 @@
      */
     public static final int TYPE_MAGNIFICATION_OVERLAY = 6;
 
+    /**
+     * Window type: A system window that has the function to control an associated window.
+     */
+    @FlaggedApi(Flags.FLAG_ADD_TYPE_WINDOW_CONTROL)
+    public static final int TYPE_WINDOW_CONTROL = 7;
+
     /* Special values for window IDs */
     /** @hide */
     public static final int ACTIVE_WINDOW_ID = Integer.MAX_VALUE;
@@ -873,6 +880,10 @@
      * @hide
      */
     public static String typeToString(int type) {
+        if (Flags.addTypeWindowControl() && type == TYPE_WINDOW_CONTROL) {
+            return "TYPE_WINDOW_CONTROL";
+        }
+
         switch (type) {
             case TYPE_APPLICATION: {
                 return "TYPE_APPLICATION";
diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl
index eca1586..9617606 100644
--- a/core/java/android/view/accessibility/IAccessibilityManager.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl
@@ -140,4 +140,7 @@
 
     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW)")
     void attachAccessibilityOverlayToDisplay(int displayId, in SurfaceControl surfaceControl);
+
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.STATUS_BAR_SERVICE)")
+    oneway void notifyQuickSettingsTilesChanged(int userId, in List<ComponentName> tileComponentNames);
 }
diff --git a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
index a11ac7c..5b99c71f 100644
--- a/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
+++ b/core/java/android/view/accessibility/flags/accessibility_flags.aconfig
@@ -102,6 +102,13 @@
 
 flag {
     namespace: "accessibility"
+    name: "add_type_window_control"
+    description: "adds new TYPE_WINDOW_CONTROL to AccessibilityWindowInfo for detecting Window Decorations"
+    bug: "320445550"
+}
+
+flag {
+    namespace: "accessibility"
     name: "update_always_on_a11y_service"
     description: "Updates the Always-On A11yService state when the user changes the enablement of the shortcut."
     bug: "298869916"
diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java
index 7ebabee..bd9f504 100644
--- a/core/java/android/view/autofill/AutofillManager.java
+++ b/core/java/android/view/autofill/AutofillManager.java
@@ -3486,52 +3486,52 @@
 
     /** @hide */
     public void dump(String outerPrefix, PrintWriter pw) {
-        pw.print(outerPrefix); pw.println("AutofillManager:");
-        final String pfx = outerPrefix + "  ";
-        pw.print(pfx); pw.print("sessionId: "); pw.println(mSessionId);
-        pw.print(pfx); pw.print("state: "); pw.println(getStateAsStringLocked());
-        pw.print(pfx); pw.print("context: "); pw.println(mContext);
-        pw.print(pfx); pw.print("service client: "); pw.println(mServiceClient);
-        final AutofillClient client = getClient();
-        if (client != null) {
-            pw.print(pfx); pw.print("client: "); pw.print(client);
-            pw.print(" ("); pw.print(client.autofillClientGetActivityToken()); pw.println(')');
-        }
-        pw.print(pfx); pw.print("enabled: "); pw.println(mEnabled);
-        pw.print(pfx); pw.print("enabledAugmentedOnly: "); pw.println(mForAugmentedAutofillOnly);
-        pw.print(pfx); pw.print("hasService: "); pw.println(mService != null);
-        pw.print(pfx); pw.print("hasCallback: "); pw.println(mCallback != null);
-        pw.print(pfx); pw.print("onInvisibleCalled "); pw.println(mOnInvisibleCalled);
-        pw.print(pfx); pw.print("last autofilled data: "); pw.println(mLastAutofilledData);
-        pw.print(pfx); pw.print("id of last fill UI shown: "); pw.println(mIdShownFillUi);
-        pw.print(pfx); pw.print("tracked views: ");
-        if (mTrackedViews == null) {
-            pw.println("null");
-        } else {
-            final String pfx2 = pfx + "  ";
-            pw.println();
-            pw.print(pfx2); pw.print("visible:"); pw.println(mTrackedViews.mVisibleTrackedIds);
-            pw.print(pfx2); pw.print("invisible:"); pw.println(mTrackedViews.mInvisibleTrackedIds);
-        }
-        pw.print(pfx); pw.print("fillable ids: "); pw.println(mFillableIds);
-        pw.print(pfx); pw.print("entered ids: "); pw.println(mEnteredIds);
-        if (mEnteredForAugmentedAutofillIds != null) {
-            pw.print(pfx); pw.print("entered ids for augmented autofill: ");
-            pw.println(mEnteredForAugmentedAutofillIds);
-        }
-        if (mForAugmentedAutofillOnly) {
-            pw.print(pfx); pw.println("For Augmented Autofill Only");
-        }
-        pw.print(pfx); pw.print("save trigger id: "); pw.println(mSaveTriggerId);
-        pw.print(pfx); pw.print("save on finish(): "); pw.println(mSaveOnFinish);
-        if (mOptions != null) {
-            pw.print(pfx); pw.print("options: "); mOptions.dumpShort(pw); pw.println();
-        }
-        pw.print(pfx); pw.print("compat mode enabled: ");
         synchronized (mLock) {
+            pw.print(outerPrefix); pw.println("AutofillManager:");
+            final String pfx = outerPrefix + "  ";
+            pw.print(pfx); pw.print("sessionId: "); pw.println(mSessionId);
+            pw.print(pfx); pw.print("state: "); pw.println(getStateAsStringLocked());
+            pw.print(pfx); pw.print("context: "); pw.println(mContext);
+            pw.print(pfx); pw.print("service client: "); pw.println(mServiceClient);
+            final AutofillClient client = getClient();
+            if (client != null) {
+                pw.print(pfx); pw.print("client: "); pw.print(client);
+                pw.print(" ("); pw.print(client.autofillClientGetActivityToken()); pw.println(')');
+            }
+            pw.print(pfx); pw.print("enabled: "); pw.println(mEnabled);
+            pw.print(pfx); pw.print("enabledAugmentedOnly: "); pw.println(mForAugmentedAutofillOnly);
+            pw.print(pfx); pw.print("hasService: "); pw.println(mService != null);
+            pw.print(pfx); pw.print("hasCallback: "); pw.println(mCallback != null);
+            pw.print(pfx); pw.print("onInvisibleCalled "); pw.println(mOnInvisibleCalled);
+            pw.print(pfx); pw.print("last autofilled data: "); pw.println(mLastAutofilledData);
+            pw.print(pfx); pw.print("id of last fill UI shown: "); pw.println(mIdShownFillUi);
+            pw.print(pfx); pw.print("tracked views: ");
+            if (mTrackedViews == null) {
+                pw.println("null");
+            } else {
+                final String pfx2 = pfx + "  ";
+                pw.println();
+                pw.print(pfx2); pw.print("visible:"); pw.println(mTrackedViews.mVisibleTrackedIds);
+                pw.print(pfx2); pw.print("invisible:"); pw.println(mTrackedViews.mInvisibleTrackedIds);
+            }
+            pw.print(pfx); pw.print("fillable ids: "); pw.println(mFillableIds);
+            pw.print(pfx); pw.print("entered ids: "); pw.println(mEnteredIds);
+            if (mEnteredForAugmentedAutofillIds != null) {
+                pw.print(pfx); pw.print("entered ids for augmented autofill: ");
+                pw.println(mEnteredForAugmentedAutofillIds);
+            }
+            if (mForAugmentedAutofillOnly) {
+                pw.print(pfx); pw.println("For Augmented Autofill Only");
+            }
+            pw.print(pfx); pw.print("save trigger id: "); pw.println(mSaveTriggerId);
+            pw.print(pfx); pw.print("save on finish(): "); pw.println(mSaveOnFinish);
+            if (mOptions != null) {
+                pw.print(pfx); pw.print("options: "); mOptions.dumpShort(pw); pw.println();
+            }
             pw.print(pfx); pw.print("fill dialog enabled: "); pw.println(mIsFillDialogEnabled);
             pw.print(pfx); pw.print("fill dialog enabled hints: ");
             pw.println(Arrays.toString(mFillDialogEnabledHints));
+            pw.print(pfx); pw.print("compat mode enabled: ");
             if (mCompatibilityBridge != null) {
                 final String pfx2 = pfx + "  ";
                 pw.println("true");
@@ -3547,9 +3547,9 @@
             } else {
                 pw.println("false");
             }
+            pw.print(pfx); pw.print("debug: "); pw.print(sDebug);
+            pw.print(" verbose: "); pw.println(sVerbose);
         }
-        pw.print(pfx); pw.print("debug: "); pw.print(sDebug);
-        pw.print(" verbose: "); pw.println(sVerbose);
     }
 
     @GuardedBy("mLock")
diff --git a/core/java/android/view/flags/view_flags.aconfig b/core/java/android/view/flags/view_flags.aconfig
index 0b3581e..6cf89d6 100644
--- a/core/java/android/view/flags/view_flags.aconfig
+++ b/core/java/android/view/flags/view_flags.aconfig
@@ -41,4 +41,11 @@
   bug: "322887144"
   # Referenced in WM where WM starts before DeviceConfig
   is_fixed_read_only: true
-}
\ No newline at end of file
+}
+
+flag {
+    name: "enable_arrow_icon_on_hover_when_clickable"
+    namespace: "toolkit"
+    description: "Enable default arrow icon when hovering on buttons or clickable widgets."
+    bug: "299269803"
+}
diff --git a/core/java/android/view/inputmethod/ConnectionlessHandwritingCallback.java b/core/java/android/view/inputmethod/ConnectionlessHandwritingCallback.java
new file mode 100644
index 0000000..d985732
--- /dev/null
+++ b/core/java/android/view/inputmethod/ConnectionlessHandwritingCallback.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2024 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 android.view.inputmethod;
+
+import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.view.View;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.Executor;
+
+/**
+ * Interface to receive the result of starting a connectionless stylus handwriting session using
+ * one of {@link InputMethodManager#startConnectionlessStylusHandwriting(View, CursorAnchorInfo,
+ * Executor,ConnectionlessHandwritingCallback)}, {@link
+ * InputMethodManager#startConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo,
+ * Executor, ConnectionlessHandwritingCallback)}, or {@link
+ * InputMethodManager#startConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo,
+ * String, Executor, ConnectionlessHandwritingCallback)}.
+ */
+@FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+public interface ConnectionlessHandwritingCallback {
+
+    /** @hide */
+    @IntDef(prefix = {"CONNECTIONLESS_HANDWRITING_ERROR_"}, value = {
+            CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED,
+            CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED,
+            CONNECTIONLESS_HANDWRITING_ERROR_OTHER
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface ConnectionlessHandwritingError {
+    }
+
+    /**
+     * Error code indicating that the connectionless handwriting session started and completed
+     * but no text was recognized.
+     */
+    int CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED = 0;
+
+    /**
+     * Error code indicating that the connectionless handwriting session was not started as the
+     * current IME does not support it.
+     */
+    int CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED = 1;
+
+    /**
+     * Error code for any other reason that the connectionless handwriting session did not complete
+     * successfully. Either the session could not start, or the session started but did not complete
+     * successfully.
+     */
+    int CONNECTIONLESS_HANDWRITING_ERROR_OTHER = 2;
+
+    /**
+     * Callback when the connectionless handwriting session completed successfully and
+     * recognized text.
+     */
+    void onResult(@NonNull CharSequence text);
+
+    /** Callback when the connectionless handwriting session did not complete successfully. */
+    void onError(@ConnectionlessHandwritingError int errorCode);
+}
diff --git a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
index 89da041..dc5e0e5 100644
--- a/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
+++ b/core/java/android/view/inputmethod/IInputMethodManagerGlobalInvoker.java
@@ -34,6 +34,7 @@
 import android.window.ImeOnBackInvokedDispatcher;
 
 import com.android.internal.inputmethod.DirectBootAwareness;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IImeTracker;
 import com.android.internal.inputmethod.IInputMethodClient;
 import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
@@ -492,6 +493,27 @@
     }
 
     @AnyThread
+    static boolean startConnectionlessStylusHandwriting(
+            @NonNull IInputMethodClient client,
+            @UserIdInt int userId,
+            @Nullable CursorAnchorInfo cursorAnchorInfo,
+            @Nullable String delegatePackageName,
+            @Nullable String delegatorPackageName,
+            @NonNull IConnectionlessHandwritingCallback callback) {
+        final IInputMethodManager service = getService();
+        if (service == null) {
+            return false;
+        }
+        try {
+            service.startConnectionlessStylusHandwriting(client, userId, cursorAnchorInfo,
+                    delegatePackageName, delegatorPackageName, callback);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return true;
+    }
+
+    @AnyThread
     static void prepareStylusHandwritingDelegation(
             @NonNull IInputMethodClient client,
             @UserIdInt int userId,
@@ -530,13 +552,14 @@
 
     @AnyThread
     @RequiresPermission(value = Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)
-    static boolean isStylusHandwritingAvailableAsUser(@UserIdInt int userId) {
+    static boolean isStylusHandwritingAvailableAsUser(
+            @UserIdInt int userId, boolean connectionless) {
         final IInputMethodManager service = getService();
         if (service == null) {
             return false;
         }
         try {
-            return service.isStylusHandwritingAvailableAsUser(userId);
+            return service.isStylusHandwritingAvailableAsUser(userId, connectionless);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java
index 31c0363..74e1d10 100644
--- a/core/java/android/view/inputmethod/ImeTracker.java
+++ b/core/java/android/view/inputmethod/ImeTracker.java
@@ -180,7 +180,8 @@
             PHASE_CLIENT_ANIMATION_RUNNING,
             PHASE_CLIENT_ANIMATION_CANCEL,
             PHASE_CLIENT_ANIMATION_FINISHED_SHOW,
-            PHASE_CLIENT_ANIMATION_FINISHED_HIDE
+            PHASE_CLIENT_ANIMATION_FINISHED_HIDE,
+            PHASE_WM_ABORT_SHOW_IME_POST_LAYOUT,
     })
     @Retention(RetentionPolicy.SOURCE)
     @interface Phase {}
@@ -239,7 +240,7 @@
     /** Applied the IME visibility. */
     int PHASE_SERVER_APPLY_IME_VISIBILITY = ImeProtoEnums.PHASE_SERVER_APPLY_IME_VISIBILITY;
 
-    /** Created the show IME runner. */
+    /** Started the show IME runner. */
     int PHASE_WM_SHOW_IME_RUNNER = ImeProtoEnums.PHASE_WM_SHOW_IME_RUNNER;
 
     /** Ready to show IME. */
@@ -318,6 +319,10 @@
     /** Finished the IME window insets hide animation. */
     int PHASE_CLIENT_ANIMATION_FINISHED_HIDE = ImeProtoEnums.PHASE_CLIENT_ANIMATION_FINISHED_HIDE;
 
+    /** Aborted the request to show the IME post layout. */
+    int PHASE_WM_ABORT_SHOW_IME_POST_LAYOUT =
+            ImeProtoEnums.PHASE_WM_ABORT_SHOW_IME_POST_LAYOUT;
+
     /**
      * Creates an IME show request tracking token.
      *
diff --git a/core/java/android/view/inputmethod/InputMethod.java b/core/java/android/view/inputmethod/InputMethod.java
index 5b4efd8..33f34c5 100644
--- a/core/java/android/view/inputmethod/InputMethod.java
+++ b/core/java/android/view/inputmethod/InputMethod.java
@@ -32,6 +32,7 @@
 import android.view.MotionEvent;
 import android.view.View;
 
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputMethod;
 import com.android.internal.inputmethod.InlineSuggestionsRequestInfo;
@@ -387,10 +388,20 @@
     /**
      * Checks if IME is ready to start stylus handwriting session.
      * If yes, {@link #startStylusHandwriting(int, InputChannel, List)} is called.
-     * @param requestId
+     *
+     * @param requestId identifier for the session start request
+     * @param connectionlessCallback the callback to receive the session result if starting a
+     *     connectionless handwriting session, or null if starting a regular session
+     * @param cursorAnchorInfo optional positional information about the view receiving stylus
+     *     events for a connectionless handwriting session
+     * @param isConnectionlessForDelegation whether the connectionless handwriting session is for
+     *     delegation. If true, the recognised text should be saved and can later be committed by
+     *     {@link #commitHandwritingDelegationTextIfAvailable}.
      * @hide
      */
-    default void canStartStylusHandwriting(int requestId) {
+    default void canStartStylusHandwriting(int requestId,
+            @Nullable IConnectionlessHandwritingCallback connectionlessCallback,
+            @Nullable CursorAnchorInfo cursorAnchorInfo, boolean isConnectionlessForDelegation) {
         // intentionally empty
     }
 
@@ -413,6 +424,26 @@
     }
 
     /**
+     * Commits recognised text that was previously saved from a connectionless handwriting session
+     * for delegation.
+     *
+     * @hide
+     */
+    default void commitHandwritingDelegationTextIfAvailable() {
+        // intentionally empty
+    }
+
+    /**
+     * Discards recognised text that was previously saved from a connectionless handwriting session
+     * for delegation.
+     *
+     * @hide
+     */
+    default void discardHandwritingDelegationText() {
+        // intentionally empty
+    }
+
+    /**
      * Initialize Ink window early-on.
      * @hide
      */
diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java
index b60efc1..7c9678f 100644
--- a/core/java/android/view/inputmethod/InputMethodInfo.java
+++ b/core/java/android/view/inputmethod/InputMethodInfo.java
@@ -204,6 +204,9 @@
      */
     private final boolean mSupportsStylusHandwriting;
 
+    /** The flag whether this IME supports connectionless stylus handwriting sessions. */
+    private final boolean mSupportsConnectionlessStylusHandwriting;
+
     /**
      * The stylus handwriting setting activity's name, used by the system settings to
      * launch the stylus handwriting specific setting activity of this input method.
@@ -330,6 +333,9 @@
                     com.android.internal.R.styleable.InputMethod_configChanges, 0);
             mSupportsStylusHandwriting = sa.getBoolean(
                     com.android.internal.R.styleable.InputMethod_supportsStylusHandwriting, false);
+            mSupportsConnectionlessStylusHandwriting = sa.getBoolean(
+                    com.android.internal.R.styleable
+                            .InputMethod_supportsConnectionlessStylusHandwriting, false);
             stylusHandwritingSettingsActivity = sa.getString(
                     com.android.internal.R.styleable.InputMethod_stylusHandwritingSettingsActivity);
             sa.recycle();
@@ -442,6 +448,7 @@
         mSubtypes = source.mSubtypes;
         mHandledConfigChanges = source.mHandledConfigChanges;
         mSupportsStylusHandwriting = source.mSupportsStylusHandwriting;
+        mSupportsConnectionlessStylusHandwriting = source.mSupportsConnectionlessStylusHandwriting;
         mForceDefault = source.mForceDefault;
         mStylusHandwritingSettingsActivityAttr = source.mStylusHandwritingSettingsActivityAttr;
     }
@@ -463,6 +470,7 @@
         mSubtypes = new InputMethodSubtypeArray(source);
         mHandledConfigChanges = source.readInt();
         mSupportsStylusHandwriting = source.readBoolean();
+        mSupportsConnectionlessStylusHandwriting = source.readBoolean();
         mStylusHandwritingSettingsActivityAttr = source.readString8();
         mForceDefault = false;
     }
@@ -479,6 +487,7 @@
                 false /* inlineSuggestionsEnabled */, false /* isVrOnly */,
                 false /* isVirtualDeviceOnly */, 0 /* handledConfigChanges */,
                 false /* supportsStylusHandwriting */,
+                false /* supportConnectionlessStylusHandwriting */,
                 null /* stylusHandwritingSettingsActivityAttr */,
                 false /* inlineSuggestionsEnabled */);
     }
@@ -488,9 +497,11 @@
      * @hide
      */
     @TestApi
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
     public InputMethodInfo(@NonNull String packageName, @NonNull String className,
             @NonNull CharSequence label, @NonNull String settingsActivity,
             @NonNull String languageSettingsActivity, boolean supportStylusHandwriting,
+            boolean supportConnectionlessStylusHandwriting,
             @NonNull String stylusHandwritingSettingsActivityAttr) {
         this(buildFakeResolveInfo(packageName, className, label), false /* isAuxIme */,
                 settingsActivity, languageSettingsActivity, null /* subtypes */,
@@ -498,8 +509,8 @@
                 true /* supportsSwitchingToNextInputMethod */,
                 false /* inlineSuggestionsEnabled */, false /* isVrOnly */,
                 false /* isVirtualDeviceOnly */, 0 /* handledConfigChanges */,
-                supportStylusHandwriting, stylusHandwritingSettingsActivityAttr,
-                false /* inlineSuggestionsEnabled */);
+                supportStylusHandwriting, supportConnectionlessStylusHandwriting,
+                stylusHandwritingSettingsActivityAttr, false /* inlineSuggestionsEnabled */);
     }
 
     /**
@@ -517,6 +528,7 @@
                 false /* inlineSuggestionsEnabled */, false /* isVrOnly */,
                 false /* isVirtualDeviceOnly */, handledConfigChanges,
                 false /* supportsStylusHandwriting */,
+                false /* supportConnectionlessStylusHandwriting */,
                 null /* stylusHandwritingSettingsActivityAttr */,
                 false /* inlineSuggestionsEnabled */);
     }
@@ -533,6 +545,7 @@
                 true /* supportsSwitchingToNextInputMethod */, false /* inlineSuggestionsEnabled */,
                 false /* isVrOnly */, false /* isVirtualDeviceOnly */, 0 /* handledconfigChanges */,
                 false /* supportsStylusHandwriting */,
+                false /* supportConnectionlessStylusHandwriting */,
                 null /* stylusHandwritingSettingsActivityAttr */,
                 false /* inlineSuggestionsEnabled */);
     }
@@ -549,6 +562,7 @@
                 supportsSwitchingToNextInputMethod, false /* inlineSuggestionsEnabled */, isVrOnly,
                 false /* isVirtualDeviceOnly */,
                 0 /* handledConfigChanges */, false /* supportsStylusHandwriting */,
+                false /* supportConnectionlessStylusHandwriting */,
                 null /* stylusHandwritingSettingsActivityAttr */,
                 false /* inlineSuggestionsEnabled */);
     }
@@ -562,7 +576,8 @@
             int isDefaultResId, boolean forceDefault,
             boolean supportsSwitchingToNextInputMethod, boolean inlineSuggestionsEnabled,
             boolean isVrOnly, boolean isVirtualDeviceOnly, int handledConfigChanges,
-            boolean supportsStylusHandwriting, String stylusHandwritingSettingsActivityAttr,
+            boolean supportsStylusHandwriting, boolean supportsConnectionlessStylusHandwriting,
+            String stylusHandwritingSettingsActivityAttr,
             boolean supportsInlineSuggestionsWithTouchExploration) {
         final ServiceInfo si = ri.serviceInfo;
         mService = ri;
@@ -583,6 +598,7 @@
         mIsVirtualDeviceOnly = isVirtualDeviceOnly;
         mHandledConfigChanges = handledConfigChanges;
         mSupportsStylusHandwriting = supportsStylusHandwriting;
+        mSupportsConnectionlessStylusHandwriting = supportsConnectionlessStylusHandwriting;
         mStylusHandwritingSettingsActivityAttr = stylusHandwritingSettingsActivityAttr;
     }
 
@@ -763,6 +779,16 @@
     }
 
     /**
+     * Returns whether the IME supports connectionless stylus handwriting sessions.
+     *
+     * @attr ref android.R.styleable#InputMethod_supportsConnectionlessStylusHandwriting
+     */
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+    public boolean supportsConnectionlessStylusHandwriting() {
+        return mSupportsConnectionlessStylusHandwriting;
+    }
+
+    /**
      * Returns {@link Intent} for stylus handwriting settings activity with
      * {@link Intent#getAction() Intent action} {@link #ACTION_STYLUS_HANDWRITING_SETTINGS}
      * if IME {@link #supportsStylusHandwriting() supports stylus handwriting}, else
@@ -828,6 +854,8 @@
                 + " mSuppressesSpellChecker=" + mSuppressesSpellChecker
                 + " mShowInInputMethodPicker=" + mShowInInputMethodPicker
                 + " mSupportsStylusHandwriting=" + mSupportsStylusHandwriting
+                + " mSupportsConnectionlessStylusHandwriting="
+                + mSupportsConnectionlessStylusHandwriting
                 + " mStylusHandwritingSettingsActivityAttr="
                         + mStylusHandwritingSettingsActivityAttr);
         pw.println(prefix + "mIsDefaultResId=0x"
@@ -947,6 +975,7 @@
         mSubtypes.writeToParcel(dest);
         dest.writeInt(mHandledConfigChanges);
         dest.writeBoolean(mSupportsStylusHandwriting);
+        dest.writeBoolean(mSupportsConnectionlessStylusHandwriting);
         dest.writeString8(mStylusHandwritingSettingsActivityAttr);
     }
 
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 3b07f27..f4b09df 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -38,6 +38,7 @@
 import static com.android.internal.inputmethod.StartInputReason.BOUND_TO_IMMS;
 
 import android.Manifest;
+import android.annotation.CallbackExecutor;
 import android.annotation.DisplayContext;
 import android.annotation.DrawableRes;
 import android.annotation.DurationMillisLong;
@@ -108,6 +109,7 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.inputmethod.DirectBootAwareness;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInputMethodClient;
 import com.android.internal.inputmethod.IInputMethodSession;
 import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
@@ -134,6 +136,7 @@
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.function.Consumer;
@@ -566,8 +569,15 @@
     @GuardedBy("mH")
     private PropertyInvalidatedCache<Integer, Boolean> mStylusHandwritingAvailableCache;
 
+    /** Cached value for {@link #isConnectionlessStylusHandwritingAvailable} for userId. */
+    @GuardedBy("mH")
+    private PropertyInvalidatedCache<Integer, Boolean>
+            mConnectionlessStylusHandwritingAvailableCache;
+
     private static final String CACHE_KEY_STYLUS_HANDWRITING_PROPERTY =
             "cache_key.system_server.stylus_handwriting";
+    private static final String CACHE_KEY_CONNECTIONLESS_STYLUS_HANDWRITING_PROPERTY =
+            "cache_key.system_server.connectionless_stylus_handwriting";
 
     @GuardedBy("mH")
     private int mCursorSelStart;
@@ -691,6 +701,17 @@
         PropertyInvalidatedCache.invalidateCache(CACHE_KEY_STYLUS_HANDWRITING_PROPERTY);
     }
 
+    /**
+     * Calling this will invalidate the local connectionless stylus handwriting availability cache,
+     * which forces the next query in any process to recompute the cache.
+     *
+     * @hide
+     */
+    public static void invalidateLocalConnectionlessStylusHandwritingAvailabilityCaches() {
+        PropertyInvalidatedCache.invalidateCache(
+                CACHE_KEY_CONNECTIONLESS_STYLUS_HANDWRITING_PROPERTY);
+    }
+
     private static boolean isAutofillUIShowing(View servedView) {
         AutofillManager afm = servedView.getContext().getSystemService(AutofillManager.class);
         return afm != null && afm.isAutofillUiShowing();
@@ -1584,7 +1605,7 @@
                     @Override
                     public Boolean recompute(Integer userId) {
                         return IInputMethodManagerGlobalInvoker.isStylusHandwritingAvailableAsUser(
-                                userId);
+                                userId, /* connectionless= */ false);
                     }
                 };
             }
@@ -1594,6 +1615,30 @@
     }
 
     /**
+     * Returns {@code true} if the currently selected IME supports connectionless stylus handwriting
+     * sessions and is enabled.
+     */
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+    public boolean isConnectionlessStylusHandwritingAvailable() {
+        if (ActivityThread.currentApplication() == null) {
+            return false;
+        }
+        synchronized (mH) {
+            if (mConnectionlessStylusHandwritingAvailableCache == null) {
+                mConnectionlessStylusHandwritingAvailableCache = new PropertyInvalidatedCache<>(
+                        /* maxEntries= */ 4, CACHE_KEY_CONNECTIONLESS_STYLUS_HANDWRITING_PROPERTY) {
+                    @Override
+                    public Boolean recompute(@NonNull Integer userId) {
+                        return IInputMethodManagerGlobalInvoker.isStylusHandwritingAvailableAsUser(
+                                userId, /* connectionless= */ true);
+                    }
+                };
+            }
+            return mConnectionlessStylusHandwritingAvailableCache.query(UserHandle.myUserId());
+        }
+    }
+
+    /**
      * Returns the list of installed input methods for the specified user.
      *
      * <p>{@link Manifest.permission#INTERACT_ACROSS_USERS_FULL} is required when and only when
@@ -2433,6 +2478,127 @@
     }
 
     /**
+     * Starts a connectionless stylus handwriting session. A connectionless session differs from a
+     * regular stylus handwriting session in that the IME does not use an input connection to
+     * communicate with a text editor. Instead, the IME directly returns recognised handwritten text
+     * via a callback.
+     *
+     * <p>The {code cursorAnchorInfo} may be used by the IME to improve the handwriting recognition
+     * accuracy and user experience of the handwriting session. Usually connectionless handwriting
+     * is used for a view which appears like a text editor but does not really support text editing.
+     * For best results, the {code cursorAnchorInfo} should be populated as it would be for a real
+     * text editor (for example, the insertion marker location can be set to where the user would
+     * expect it to be, even if there is no visible cursor).
+     *
+     * @param view the view receiving stylus events
+     * @param cursorAnchorInfo positional information about the view receiving stylus events
+     * @param callbackExecutor the executor to run the callback on
+     * @param callback the callback to receive the result
+     */
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+    public void startConnectionlessStylusHandwriting(@NonNull View view,
+            @Nullable CursorAnchorInfo cursorAnchorInfo,
+            @NonNull @CallbackExecutor Executor callbackExecutor,
+            @NonNull ConnectionlessHandwritingCallback callback) {
+        startConnectionlessStylusHandwritingInternal(
+                view, cursorAnchorInfo, null, null, callbackExecutor, callback);
+    }
+
+    /**
+     * Starts a connectionless stylus handwriting session (see {@link
+     * #startConnectionlessStylusHandwriting}) and additionally enables the recognised handwritten
+     * text to be later committed to a text editor using {@link
+     * #acceptStylusHandwritingDelegation(View)}.
+     *
+     * <p>After a connectionless session started using this method completes successfully, a text
+     * editor view, called the delegate view, may call {@link
+     * #acceptStylusHandwritingDelegation(View)} which will request the IME to commit the recognised
+     * handwritten text from the connectionless session to the delegate view.
+     *
+     * <p>The delegate view must belong to the same package as the delegator view for the delegation
+     * to succeed. If the delegate view belongs to a different package, use {@link
+     * #startConnectionlessStylusHandwritingForDelegation(View, CursorAnchorInfo, String, Executor,
+     * ConnectionlessHandwritingCallback)} instead.
+     *
+     * @param delegatorView the view receiving stylus events
+     * @param cursorAnchorInfo positional information about the view receiving stylus events
+     * @param callbackExecutor the executor to run the callback on
+     * @param callback the callback to receive the result
+     */
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+    public void startConnectionlessStylusHandwritingForDelegation(@NonNull View delegatorView,
+            @Nullable CursorAnchorInfo cursorAnchorInfo,
+            @NonNull @CallbackExecutor Executor callbackExecutor,
+            @NonNull ConnectionlessHandwritingCallback callback) {
+        String delegatorPackageName = delegatorView.getContext().getOpPackageName();
+        startConnectionlessStylusHandwritingInternal(delegatorView, cursorAnchorInfo,
+                delegatorPackageName, delegatorPackageName, callbackExecutor, callback);
+    }
+
+    /**
+     * Starts a connectionless stylus handwriting session (see {@link
+     * #startConnectionlessStylusHandwriting}) and additionally enables the recognised handwritten
+     * text to be later committed to a text editor using {@link
+     * #acceptStylusHandwritingDelegation(View, String)}.
+     *
+     * <p>After a connectionless session started using this method completes successfully, a text
+     * editor view, called the delegate view, may call {@link
+     * #acceptStylusHandwritingDelegation(View, String)} which will request the IME to commit the
+     * recognised handwritten text from the connectionless session to the delegate view.
+     *
+     * <p>The delegate view must belong to {@code delegatePackageName} for the delegation to
+     * succeed.
+     *
+     * @param delegatorView the view receiving stylus events
+     * @param cursorAnchorInfo positional information about the view receiving stylus events
+     * @param delegatePackageName name of the package containing the delegate view which will accept
+     *     the delegation
+     * @param callbackExecutor the executor to run the callback on
+     * @param callback the callback to receive the result
+     */
+    @FlaggedApi(Flags.FLAG_CONNECTIONLESS_HANDWRITING)
+    public void startConnectionlessStylusHandwritingForDelegation(@NonNull View delegatorView,
+            @Nullable CursorAnchorInfo cursorAnchorInfo,
+            @NonNull String delegatePackageName,
+            @NonNull @CallbackExecutor Executor callbackExecutor,
+            @NonNull ConnectionlessHandwritingCallback callback) {
+        Objects.requireNonNull(delegatePackageName);
+        String delegatorPackageName = delegatorView.getContext().getOpPackageName();
+        startConnectionlessStylusHandwritingInternal(delegatorView, cursorAnchorInfo,
+                delegatorPackageName, delegatePackageName, callbackExecutor, callback);
+    }
+
+    private void startConnectionlessStylusHandwritingInternal(@NonNull View view,
+            @Nullable CursorAnchorInfo cursorAnchorInfo,
+            @Nullable String delegatorPackageName,
+            @Nullable String delegatePackageName,
+            @NonNull @CallbackExecutor Executor callbackExecutor,
+            @NonNull ConnectionlessHandwritingCallback callback) {
+        Objects.requireNonNull(view);
+        Objects.requireNonNull(callbackExecutor);
+        Objects.requireNonNull(callback);
+        // Re-dispatch if there is a context mismatch.
+        final InputMethodManager fallbackImm = getFallbackInputMethodManagerIfNecessary(view);
+        if (fallbackImm != null) {
+            fallbackImm.startConnectionlessStylusHandwritingInternal(view, cursorAnchorInfo,
+                    delegatorPackageName, delegatePackageName, callbackExecutor, callback);
+        }
+
+        checkFocus();
+        synchronized (mH) {
+            if (view.getViewRootImpl() != mCurRootView) {
+                Log.w(TAG, "Ignoring startConnectionlessStylusHandwriting: "
+                        + "View's window does not have focus.");
+                return;
+            }
+            IInputMethodManagerGlobalInvoker.startConnectionlessStylusHandwriting(
+                    mClient, UserHandle.myUserId(), cursorAnchorInfo,
+                    delegatePackageName, delegatorPackageName,
+                    new ConnectionlessHandwritingCallbackProxy(callbackExecutor, callback));
+        }
+    }
+
+    /**
      * Prepares delegation of starting stylus handwriting session to a different editor in same
      * or different window than the view on which initial handwriting stroke was detected.
      *
@@ -2511,12 +2677,18 @@
      * {@link #acceptStylusHandwritingDelegation(View, String)} instead.</p>
      *
      * @param delegateView delegate view capable of receiving input via {@link InputConnection}
-     *  on which {@link #startStylusHandwriting(View)} will be called.
      * @return {@code true} if view belongs to same application package as used in
-     *  {@link #prepareStylusHandwritingDelegation(View)} and handwriting session can start.
-     * @see #acceptStylusHandwritingDelegation(View, String)
+     *  {@link #prepareStylusHandwritingDelegation(View)} and delegation is accepted
      * @see #prepareStylusHandwritingDelegation(View)
+     * @see #acceptStylusHandwritingDelegation(View, String)
      */
+    // TODO(b/300979854): Once connectionless APIs are finalised, update documentation to add:
+    // <p>Otherwise, if the delegator view previously started delegation using {@link
+    // #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver, CursorAnchorInfo)},
+    // requests the IME to commit the recognised handwritten text from the connectionless session to
+    // the delegate view.
+    // @see #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver,
+    //     CursorAnchorInfo)
     public boolean acceptStylusHandwritingDelegation(@NonNull View delegateView) {
         return startStylusHandwritingInternal(
                 delegateView, delegateView.getContext().getOpPackageName(),
@@ -2533,13 +2705,19 @@
      * {@link #acceptStylusHandwritingDelegation(View)} instead.</p>
      *
      * @param delegateView delegate view capable of receiving input via {@link InputConnection}
-     *  on which {@link #startStylusHandwriting(View)} will be called.
      * @param delegatorPackageName package name of the delegator that handled initial stylus stroke.
-     * @return {@code true} if view belongs to allowed delegate package declared in
-     *  {@link #prepareStylusHandwritingDelegation(View, String)} and handwriting session can start.
+     * @return {@code true} if view belongs to allowed delegate package declared in {@link
+     *     #prepareStylusHandwritingDelegation(View, String)} and delegation is accepted
      * @see #prepareStylusHandwritingDelegation(View, String)
      * @see #acceptStylusHandwritingDelegation(View)
      */
+    // TODO(b/300979854): Once connectionless APIs are finalised, update documentation to add:
+    // <p>Otherwise, if the delegator view previously started delegation using {@link
+    // #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver, CursorAnchorInfo,
+    // String)}, requests the IME to commit the recognised handwritten text from the connectionless
+    // session to the delegate view.
+    // @see #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver,
+    //     CursorAnchorInfo, String)
     public boolean acceptStylusHandwritingDelegation(
             @NonNull View delegateView, @NonNull String delegatorPackageName) {
         Objects.requireNonNull(delegatorPackageName);
@@ -2556,15 +2734,21 @@
      * <p>Note: If delegator and delegate are in the same application package, use {@link
      * #acceptStylusHandwritingDelegation(View)} instead.
      *
-     * @param delegateView delegate view capable of receiving input via {@link InputConnection} on
-     *     which {@link #startStylusHandwriting(View)} will be called.
+     * @param delegateView delegate view capable of receiving input via {@link InputConnection}
      * @param delegatorPackageName package name of the delegator that handled initial stylus stroke.
      * @param flags {@link #HANDWRITING_DELEGATE_FLAG_HOME_DELEGATOR_ALLOWED} or {@code 0}
      * @return {@code true} if view belongs to allowed delegate package declared in {@link
-     *     #prepareStylusHandwritingDelegation(View, String)} and handwriting session can start.
+     *     #prepareStylusHandwritingDelegation(View, String)} and delegation is accepted
      * @see #prepareStylusHandwritingDelegation(View, String)
      * @see #acceptStylusHandwritingDelegation(View)
      */
+    // TODO(b/300979854): Once connectionless APIs are finalised, update documentation to add:
+    // <p>Otherwise, if the delegator view previously started delegation using {@link
+    // #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver, CursorAnchorInfo,
+    // String)}, requests the IME to commit the recognised handwritten text from the connectionless
+    // session to the delegate view.
+    // @see #startConnectionlessStylusHandwritingForDelegation(View, ResultReceiver,
+    //     CursorAnchorInfo, String)
     @FlaggedApi(FLAG_HOME_SCREEN_HANDWRITING_DELEGATOR)
     public boolean acceptStylusHandwritingDelegation(
             @NonNull View delegateView, @NonNull String delegatorPackageName,
@@ -4315,6 +4499,73 @@
         public void onFinishedInputEvent(Object token, boolean handled);
     }
 
+    private static class ConnectionlessHandwritingCallbackProxy
+            extends IConnectionlessHandwritingCallback.Stub {
+        private final Object mLock = new Object();
+
+        @Nullable
+        @GuardedBy("mLock")
+        private Executor mExecutor;
+
+        @Nullable
+        @GuardedBy("mLock")
+        private ConnectionlessHandwritingCallback mCallback;
+
+        ConnectionlessHandwritingCallbackProxy(
+                @NonNull Executor executor, @NonNull ConnectionlessHandwritingCallback callback) {
+            mExecutor = executor;
+            mCallback = callback;
+        }
+
+        @Override
+        public void onResult(CharSequence text) {
+            Executor executor;
+            ConnectionlessHandwritingCallback callback;
+            synchronized (mLock) {
+                if (mExecutor == null || mCallback == null) {
+                    return;
+                }
+                executor = mExecutor;
+                callback = mCallback;
+                mExecutor = null;
+                mCallback = null;
+            }
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                if (TextUtils.isEmpty(text)) {
+                    executor.execute(() -> callback.onError(
+                            ConnectionlessHandwritingCallback
+                                    .CONNECTIONLESS_HANDWRITING_ERROR_NO_TEXT_RECOGNIZED));
+                } else {
+                    executor.execute(() -> callback.onResult(text));
+                }
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+
+        @Override
+        public void onError(int errorCode) {
+            Executor executor;
+            ConnectionlessHandwritingCallback callback;
+            synchronized (mLock) {
+                if (mExecutor == null || mCallback == null) {
+                    return;
+                }
+                executor = mExecutor;
+                callback = mCallback;
+                mExecutor = null;
+                mCallback = null;
+            }
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                executor.execute(() -> callback.onError(errorCode));
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+    }
+
     private final class ImeInputEventSender extends InputEventSender {
         public ImeInputEventSender(InputChannel inputChannel, Looper looper) {
             super(inputChannel, looper);
diff --git a/core/java/android/view/inputmethod/flags.aconfig b/core/java/android/view/inputmethod/flags.aconfig
index 8b91bcb..55986e7 100644
--- a/core/java/android/view/inputmethod/flags.aconfig
+++ b/core/java/android/view/inputmethod/flags.aconfig
@@ -70,3 +70,11 @@
     bug: "308827131"
     is_fixed_read_only: true
 }
+
+flag {
+    name: "connectionless_handwriting"
+    namespace: "input_method"
+    description: "Feature flag for connectionless stylus handwriting APIs"
+    bug: "300979854"
+    is_fixed_read_only: true
+}
diff --git a/core/java/android/view/textclassifier/TextClassificationConstants.java b/core/java/android/view/textclassifier/TextClassificationConstants.java
index 5f3159c..d0ed8ee 100644
--- a/core/java/android/view/textclassifier/TextClassificationConstants.java
+++ b/core/java/android/view/textclassifier/TextClassificationConstants.java
@@ -22,6 +22,8 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.IndentingPrintWriter;
 
+import java.util.Optional;
+
 /**
  * TextClassifier specific settings.
  *
@@ -36,43 +38,35 @@
  */
 // TODO: Rename to TextClassifierSettings.
 public final class TextClassificationConstants {
-    /**
-     * Whether the smart linkify feature is enabled.
-     */
+    /** Whether the smart linkify feature is enabled. */
     private static final String SMART_LINKIFY_ENABLED = "smart_linkify_enabled";
-    /**
-     * Whether SystemTextClassifier is enabled.
-     */
+
+    /** Whether SystemTextClassifier is enabled. */
     static final String SYSTEM_TEXT_CLASSIFIER_ENABLED = "system_textclassifier_enabled";
-    /**
-     * Whether TextClassifierImpl is enabled.
-     */
+
+    /** Whether TextClassifierImpl is enabled. */
     @VisibleForTesting
     static final String LOCAL_TEXT_CLASSIFIER_ENABLED = "local_textclassifier_enabled";
-    /**
-     * Enable smart selection without a visible UI changes.
-     */
+
+    /** Enable smart selection without a visible UI changes. */
     private static final String MODEL_DARK_LAUNCH_ENABLED = "model_dark_launch_enabled";
-    /**
-     * Whether the smart selection feature is enabled.
-     */
+
+    /** Whether the smart selection feature is enabled. */
     private static final String SMART_SELECTION_ENABLED = "smart_selection_enabled";
-    /**
-     * Whether the smart text share feature is enabled.
-     */
+
+    /** Whether the smart text share feature is enabled. */
     private static final String SMART_TEXT_SHARE_ENABLED = "smart_text_share_enabled";
-    /**
-     * Whether animation for smart selection is enabled.
-     */
-    private static final String SMART_SELECT_ANIMATION_ENABLED =
-            "smart_select_animation_enabled";
-    /**
-     * Max length of text that generateLinks can accept.
-     */
+
+    /** Whether animation for smart selection is enabled. */
+    private static final String SMART_SELECT_ANIMATION_ENABLED = "smart_select_animation_enabled";
+
+    /** Max length of text that generateLinks can accept. */
     @VisibleForTesting
     static final String GENERATE_LINKS_MAX_TEXT_LENGTH = "generate_links_max_text_length";
+
     /**
      * The TextClassifierService which would like to use. Example of setting the package:
+     *
      * <pre>
      * adb shell cmd device_config put textclassifier textclassifier_service_package_override \
      *      com.android.textclassifier
@@ -83,8 +77,8 @@
             "textclassifier_service_package_override";
 
     /**
-     * The timeout value in seconds used by {@link SystemTextClassifier} for each TextClassifier
-     * API calls.
+     * The timeout value in seconds used by {@link SystemTextClassifier} for each TextClassifier API
+     * calls.
      */
     @VisibleForTesting
     static final String SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND =
@@ -109,64 +103,144 @@
     private static final long SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND_DEFAULT = 60;
     private static final int SMART_SELECTION_TRIM_DELTA_DEFAULT = 120;
 
+    private static final Object sLock = new Object();
+    private static volatile boolean sMemoizedValuesInitialized;
+    private static boolean sLocalTextClassifierEnabled;
+    private static boolean sSystemTextClassifierEnabled;
+    private static boolean sModelDarkLaunchEnabled;
+    private static boolean sSmartSelectionEnabled;
+    private static boolean sSmartTextShareEnabled;
+    private static boolean sSmartLinkifyEnabled;
+    private static boolean sSmartSelectAnimationEnabled;
+    private static int sGenerateLinksMaxTextLength;
+    private static long sSystemTextClassifierApiTimeoutInSecond;
+    private static int sSmartSelectionTrimDelta;
+
+    /**
+     * For DeviceConfig values where we don't care if they change at runtime, fetch them once and
+     * memoize their values.
+     */
+    private static void ensureMemoizedValues() {
+        if (sMemoizedValuesInitialized) {
+            return;
+        }
+        synchronized (sLock) {
+            if (sMemoizedValuesInitialized) {
+                return;
+            }
+
+            // Read all namespace properties so we get a single snapshot (values
+            // fetched aren't updated in the interim).
+            DeviceConfig.Properties properties =
+                    DeviceConfig.getProperties(DeviceConfig.NAMESPACE_TEXTCLASSIFIER);
+            sLocalTextClassifierEnabled =
+                    properties.getBoolean(
+                            LOCAL_TEXT_CLASSIFIER_ENABLED,
+                            LOCAL_TEXT_CLASSIFIER_ENABLED_DEFAULT);
+            sSystemTextClassifierEnabled =
+                    properties.getBoolean(
+                            SYSTEM_TEXT_CLASSIFIER_ENABLED,
+                            SYSTEM_TEXT_CLASSIFIER_ENABLED_DEFAULT);
+            sModelDarkLaunchEnabled =
+                    properties.getBoolean(
+                            MODEL_DARK_LAUNCH_ENABLED,
+                            MODEL_DARK_LAUNCH_ENABLED_DEFAULT);
+            sSmartSelectionEnabled =
+                    properties.getBoolean(
+                            SMART_SELECTION_ENABLED,
+                            SMART_SELECTION_ENABLED_DEFAULT);
+            sSmartTextShareEnabled =
+                    properties.getBoolean(
+                            SMART_TEXT_SHARE_ENABLED,
+                            SMART_TEXT_SHARE_ENABLED_DEFAULT);
+            sSmartLinkifyEnabled =
+                    properties.getBoolean(
+                            SMART_LINKIFY_ENABLED,
+                            SMART_LINKIFY_ENABLED_DEFAULT);
+            sSmartSelectAnimationEnabled =
+                    properties.getBoolean(
+                            SMART_SELECT_ANIMATION_ENABLED,
+                            SMART_SELECT_ANIMATION_ENABLED_DEFAULT);
+            sGenerateLinksMaxTextLength =
+                    properties.getInt(
+                            GENERATE_LINKS_MAX_TEXT_LENGTH,
+                            GENERATE_LINKS_MAX_TEXT_LENGTH_DEFAULT);
+            sSystemTextClassifierApiTimeoutInSecond =
+                    properties.getLong(
+                            SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND,
+                            SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND_DEFAULT);
+            sSmartSelectionTrimDelta =
+                    properties.getInt(
+                            SMART_SELECTION_TRIM_DELTA,
+                            SMART_SELECTION_TRIM_DELTA_DEFAULT);
+
+            sMemoizedValuesInitialized = true;
+        }
+    }
+
+    @VisibleForTesting
+    public static void resetMemoizedValues() {
+      sMemoizedValuesInitialized = false;
+    }
+
     @Nullable
     public String getTextClassifierServicePackageOverride() {
-        return DeviceConfig.getString(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
+        // Don't memoize this value because we want to be able to receive config
+        // updates at runtime.
+        return DeviceConfig.getString(
+                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                 TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE,
                 DEFAULT_TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE);
     }
 
     public boolean isLocalTextClassifierEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                LOCAL_TEXT_CLASSIFIER_ENABLED, LOCAL_TEXT_CLASSIFIER_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sLocalTextClassifierEnabled;
     }
 
     public boolean isSystemTextClassifierEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SYSTEM_TEXT_CLASSIFIER_ENABLED,
-                SYSTEM_TEXT_CLASSIFIER_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sSystemTextClassifierEnabled;
     }
 
     public boolean isModelDarkLaunchEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                MODEL_DARK_LAUNCH_ENABLED, MODEL_DARK_LAUNCH_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sModelDarkLaunchEnabled;
     }
 
     public boolean isSmartSelectionEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SMART_SELECTION_ENABLED, SMART_SELECTION_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sSmartSelectionEnabled;
     }
 
     public boolean isSmartTextShareEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SMART_TEXT_SHARE_ENABLED, SMART_TEXT_SHARE_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sSmartTextShareEnabled;
     }
 
     public boolean isSmartLinkifyEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER, SMART_LINKIFY_ENABLED,
-                SMART_LINKIFY_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sSmartLinkifyEnabled;
     }
 
     public boolean isSmartSelectionAnimationEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SMART_SELECT_ANIMATION_ENABLED, SMART_SELECT_ANIMATION_ENABLED_DEFAULT);
+        ensureMemoizedValues();
+        return sSmartSelectAnimationEnabled;
     }
 
     public int getGenerateLinksMaxTextLength() {
-        return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                GENERATE_LINKS_MAX_TEXT_LENGTH, GENERATE_LINKS_MAX_TEXT_LENGTH_DEFAULT);
+        ensureMemoizedValues();
+        return sGenerateLinksMaxTextLength;
     }
 
     public long getSystemTextClassifierApiTimeoutInSecond() {
-        return DeviceConfig.getLong(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND,
-                SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND_DEFAULT);
+        ensureMemoizedValues();
+        return sSystemTextClassifierApiTimeoutInSecond;
     }
 
     public int getSmartSelectionTrimDelta() {
-        return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
-                SMART_SELECTION_TRIM_DELTA,
-                SMART_SELECTION_TRIM_DELTA_DEFAULT);
+        ensureMemoizedValues();
+        return sSmartSelectionTrimDelta;
     }
 
     void dump(IndentingPrintWriter pw) {
@@ -180,11 +254,15 @@
         pw.print(SMART_SELECTION_ENABLED, isSmartSelectionEnabled()).println();
         pw.print(SMART_TEXT_SHARE_ENABLED, isSmartTextShareEnabled()).println();
         pw.print(SYSTEM_TEXT_CLASSIFIER_ENABLED, isSystemTextClassifierEnabled()).println();
-        pw.print(TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE,
-                getTextClassifierServicePackageOverride()).println();
-        pw.print(SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND,
-                getSystemTextClassifierApiTimeoutInSecond()).println();
+        pw.print(
+                        TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE,
+                        getTextClassifierServicePackageOverride())
+                .println();
+        pw.print(
+                        SYSTEM_TEXT_CLASSIFIER_API_TIMEOUT_IN_SECOND,
+                        getSystemTextClassifierApiTimeoutInSecond())
+                .println();
         pw.print(SMART_SELECTION_TRIM_DELTA, getSmartSelectionTrimDelta()).println();
         pw.decreaseIndent();
     }
-}
\ No newline at end of file
+}
diff --git a/core/java/android/webkit/IWebViewUpdateService.aidl b/core/java/android/webkit/IWebViewUpdateService.aidl
index c6bd20c..aeb746c 100644
--- a/core/java/android/webkit/IWebViewUpdateService.aidl
+++ b/core/java/android/webkit/IWebViewUpdateService.aidl
@@ -45,6 +45,7 @@
      * it would then try to update the provider to such a package while in reality the update
      * service would switch to another one.
      */
+    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)")
     String changeProviderAndSetting(String newProvider);
 
     /**
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index f5b81b0..f336b5d 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3087,14 +3087,22 @@
             return webviewPackage;
         }
 
-        IWebViewUpdateService service = WebViewFactory.getUpdateService();
-        if (service == null) {
-            return null;
-        }
-        try {
-            return service.getCurrentWebViewPackage();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
+        if (Flags.updateServiceIpcWrapper()) {
+            WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
+            if (manager == null) {
+                return null;
+            }
+            return manager.getCurrentWebViewPackage();
+        } else {
+            IWebViewUpdateService service = WebViewFactory.getUpdateService();
+            if (service == null) {
+                return null;
+            }
+            try {
+                return service.getCurrentWebViewPackage();
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
         }
     }
 
diff --git a/core/java/android/webkit/WebViewBootstrapFrameworkInitializer.java b/core/java/android/webkit/WebViewBootstrapFrameworkInitializer.java
new file mode 100644
index 0000000..9b15ab3
--- /dev/null
+++ b/core/java/android/webkit/WebViewBootstrapFrameworkInitializer.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2024 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 android.webkit;
+
+import android.annotation.FlaggedApi;
+import android.annotation.SystemApi;
+import android.app.SystemServiceRegistry;
+import android.content.Context;
+
+/**
+ * Class for performing registration for webviewupdate service.
+ *
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_UPDATE_SERVICE_IPC_WRAPPER)
+@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+public class WebViewBootstrapFrameworkInitializer {
+    private WebViewBootstrapFrameworkInitializer() {}
+
+    /**
+     * Called by {@link SystemServiceRegistry}'s static initializer and registers webviewupdate
+     * service to {@link Context}, so that {@link Context#getSystemService} can return them.
+     *
+     * @throws IllegalStateException if this is called from anywhere besides
+     * {@link SystemServiceRegistry}
+     */
+    public static void registerServiceWrappers() {
+        SystemServiceRegistry.registerForeverStaticService(Context.WEBVIEW_UPDATE_SERVICE,
+                WebViewUpdateManager.class,
+                (b) -> new WebViewUpdateManager(IWebViewUpdateService.Stub.asInterface(b)));
+    }
+}
diff --git a/core/java/android/webkit/WebViewDelegate.java b/core/java/android/webkit/WebViewDelegate.java
index 8e89541..3fc0a30 100644
--- a/core/java/android/webkit/WebViewDelegate.java
+++ b/core/java/android/webkit/WebViewDelegate.java
@@ -16,8 +16,6 @@
 
 package android.webkit;
 
-import static android.webkit.Flags.updateServiceV2;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
@@ -207,7 +205,12 @@
      * Returns whether WebView should run in multiprocess mode.
      */
     public boolean isMultiProcessEnabled() {
-        if (updateServiceV2()) {
+        if (Flags.updateServiceV2()) {
+            return true;
+        } else if (Flags.updateServiceIpcWrapper()) {
+            // We don't want to support this method in the new wrapper because updateServiceV2 is
+            // intended to ship in the same release (or sooner). It's only possible to disable it
+            // with an obscure adb command, so just return true here too.
             return true;
         }
         try {
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index 53b047a..c748a57 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -285,10 +285,16 @@
             return LIBLOAD_WRONG_PACKAGE_NAME;
         }
 
+        Application initialApplication = AppGlobals.getInitialApplication();
         WebViewProviderResponse response = null;
         try {
-            response = getUpdateService().waitForAndGetProvider();
-        } catch (RemoteException e) {
+            if (Flags.updateServiceIpcWrapper()) {
+                response = initialApplication.getSystemService(WebViewUpdateManager.class)
+                        .waitForAndGetProvider();
+            } else {
+                response = getUpdateService().waitForAndGetProvider();
+            }
+        } catch (Exception e) {
             Log.e(LOGTAG, "error waiting for relro creation", e);
             return LIBLOAD_FAILED_WAITING_FOR_WEBVIEW_REASON_UNKNOWN;
         }
@@ -302,7 +308,7 @@
             return LIBLOAD_WRONG_PACKAGE_NAME;
         }
 
-        PackageManager packageManager = AppGlobals.getInitialApplication().getPackageManager();
+        PackageManager packageManager = initialApplication.getPackageManager();
         String libraryFileName;
         try {
             PackageInfo packageInfo = packageManager.getPackageInfo(packageName,
@@ -436,7 +442,12 @@
             Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW,
                     "WebViewUpdateService.waitForAndGetProvider()");
             try {
-                response = getUpdateService().waitForAndGetProvider();
+                if (Flags.updateServiceIpcWrapper()) {
+                    response = initialApplication.getSystemService(WebViewUpdateManager.class)
+                            .waitForAndGetProvider();
+                } else {
+                    response = getUpdateService().waitForAndGetProvider();
+                }
             } finally {
                 Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW);
             }
diff --git a/core/java/android/webkit/WebViewLibraryLoader.java b/core/java/android/webkit/WebViewLibraryLoader.java
index 91412d7..a68a577 100644
--- a/core/java/android/webkit/WebViewLibraryLoader.java
+++ b/core/java/android/webkit/WebViewLibraryLoader.java
@@ -24,7 +24,6 @@
 import android.content.pm.PackageInfo;
 import android.os.Build;
 import android.os.Process;
-import android.os.RemoteException;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -87,8 +86,12 @@
             } finally {
                 // We must do our best to always notify the update service, even if something fails.
                 try {
-                    WebViewFactory.getUpdateServiceUnchecked().notifyRelroCreationCompleted();
-                } catch (RemoteException e) {
+                    if (Flags.updateServiceIpcWrapper()) {
+                        WebViewUpdateManager.getInstance().notifyRelroCreationCompleted();
+                    } else {
+                        WebViewFactory.getUpdateServiceUnchecked().notifyRelroCreationCompleted();
+                    }
+                } catch (Exception e) {
                     Log.e(LOGTAG, "error notifying update service", e);
                 }
 
@@ -114,8 +117,12 @@
             public void run() {
                 try {
                     Log.e(LOGTAG, "relro file creator for " + abi + " crashed. Proceeding without");
-                    WebViewFactory.getUpdateService().notifyRelroCreationCompleted();
-                } catch (RemoteException e) {
+                    if (Flags.updateServiceIpcWrapper()) {
+                        WebViewUpdateManager.getInstance().notifyRelroCreationCompleted();
+                    } else {
+                        WebViewFactory.getUpdateService().notifyRelroCreationCompleted();
+                    }
+                } catch (Exception e) {
                     Log.e(LOGTAG, "Cannot reach WebViewUpdateService. " + e.getMessage());
                 }
             }
diff --git a/core/java/android/webkit/WebViewProviderResponse.java b/core/java/android/webkit/WebViewProviderResponse.java
index 02e48dd..84e34a3 100644
--- a/core/java/android/webkit/WebViewProviderResponse.java
+++ b/core/java/android/webkit/WebViewProviderResponse.java
@@ -16,17 +16,42 @@
 
 package android.webkit;
 
+import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.pm.PackageInfo;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 /** @hide */
+@FlaggedApi(Flags.FLAG_UPDATE_SERVICE_IPC_WRAPPER)
+@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class WebViewProviderResponse implements Parcelable {
 
-    public WebViewProviderResponse(PackageInfo packageInfo, int status) {
+    @IntDef(
+            prefix = {"STATUS_"},
+            value = {
+                STATUS_SUCCESS,
+                STATUS_FAILED_WAITING_FOR_RELRO,
+                STATUS_FAILED_LISTING_WEBVIEW_PACKAGES,
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    private @interface WebViewProviderStatus {}
+
+    public static final int STATUS_SUCCESS = WebViewFactory.LIBLOAD_SUCCESS;
+    public static final int STATUS_FAILED_WAITING_FOR_RELRO =
+            WebViewFactory.LIBLOAD_FAILED_WAITING_FOR_RELRO;
+    public static final int STATUS_FAILED_LISTING_WEBVIEW_PACKAGES =
+            WebViewFactory.LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES;
+
+    public WebViewProviderResponse(
+            @Nullable PackageInfo packageInfo, @WebViewProviderStatus int status) {
         this.packageInfo = packageInfo;
         this.status = status;
     }
@@ -54,13 +79,11 @@
     }
 
     @Override
-    public void writeToParcel(Parcel out, int flags) {
+    public void writeToParcel(@NonNull Parcel out, int flags) {
         out.writeTypedObject(packageInfo, flags);
         out.writeInt(status);
     }
 
-    @UnsupportedAppUsage
-    @Nullable
-    public final PackageInfo packageInfo;
-    public final int status;
+    @UnsupportedAppUsage public final @Nullable PackageInfo packageInfo;
+    public final @WebViewProviderStatus int status;
 }
diff --git a/core/java/android/webkit/WebViewUpdateManager.java b/core/java/android/webkit/WebViewUpdateManager.java
new file mode 100644
index 0000000..8ada598
--- /dev/null
+++ b/core/java/android/webkit/WebViewUpdateManager.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2024 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 android.webkit;
+
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
+import android.app.SystemServiceRegistry;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.os.RemoteException;
+
+/** @hide */
+@FlaggedApi(Flags.FLAG_UPDATE_SERVICE_IPC_WRAPPER)
+@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+public final class WebViewUpdateManager {
+    private final IWebViewUpdateService mService;
+
+    /** @hide */
+    public WebViewUpdateManager(@NonNull IWebViewUpdateService service) {
+        mService = service;
+    }
+
+    /**
+     * Get the singleton instance of the manager.
+     *
+     * This exists for the benefit of callsites without a {@link Context}; prefer
+     * {@link Context#getSystemService(Class)} otherwise.
+     */
+    @SuppressLint("ManagerLookup") // service opts in to getSystemServiceWithNoContext()
+    public static @Nullable WebViewUpdateManager getInstance() {
+        return (WebViewUpdateManager) SystemServiceRegistry.getSystemServiceWithNoContext(
+                Context.WEBVIEW_UPDATE_SERVICE);
+    }
+
+    /**
+     * Block until system-level WebView preparations are complete.
+     *
+     * This also makes the current WebView provider package visible to the caller.
+     *
+     * @return the status of WebView preparation and the current provider package.
+     */
+    public @NonNull WebViewProviderResponse waitForAndGetProvider() {
+        try {
+            return mService.waitForAndGetProvider();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the package that is the system's current WebView implementation.
+     *
+     * @return the package, or null if no valid implementation is present.
+     */
+    public @Nullable PackageInfo getCurrentWebViewPackage() {
+        try {
+            return mService.getCurrentWebViewPackage();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the complete list of supported WebView providers for this device.
+     *
+     * This includes all configured providers, regardless of whether they are currently available
+     * or valid.
+     */
+    @SuppressLint({"ParcelableList", "ArrayReturn"})
+    public @NonNull WebViewProviderInfo[] getAllWebViewPackages() {
+        try {
+            return mService.getAllWebViewPackages();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the list of currently-valid WebView providers for this device.
+     *
+     * This only includes providers that are currently present on the device and meet the validity
+     * criteria (signature, version, etc), but does not check if the provider is installed and
+     * enabled for all users.
+     */
+    @SuppressLint({"ParcelableList", "ArrayReturn"})
+    public @NonNull WebViewProviderInfo[] getValidWebViewPackages() {
+        try {
+            return mService.getValidWebViewPackages();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the package name of the current WebView implementation.
+     *
+     * @return the package name, or null if no valid implementation is present.
+     */
+    public @Nullable String getCurrentWebViewPackageName() {
+        try {
+            return mService.getCurrentWebViewPackageName();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Ask the system to switch to a specific WebView implementation if possible.
+     *
+     * This choice will be stored persistently.
+     *
+     * @param newProvider the package name to use, or null to reset to default.
+     * @return the package name which is now in use, which may not be the
+     *         requested one if it was not usable.
+     */
+    @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS)
+    public @Nullable String changeProviderAndSetting(@NonNull String newProvider) {
+        try {
+            return mService.changeProviderAndSetting(newProvider);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Used by the relro file creator to notify the service that it's done.
+     * @hide
+     */
+    void notifyRelroCreationCompleted() {
+        try {
+            mService.notifyRelroCreationCompleted();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the WebView provider which will be used if no explicit choice has been made.
+     *
+     * The default provider is not guaranteed to be currently valid/usable.
+     *
+     * @return the default WebView provider.
+     */
+    @FlaggedApi(Flags.FLAG_UPDATE_SERVICE_V2)
+    public @NonNull WebViewProviderInfo getDefaultWebViewPackage() {
+        try {
+            return mService.getDefaultWebViewPackage();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+}
diff --git a/core/java/android/webkit/WebViewUpdateService.java b/core/java/android/webkit/WebViewUpdateService.java
index 9152b43..6f53dde 100644
--- a/core/java/android/webkit/WebViewUpdateService.java
+++ b/core/java/android/webkit/WebViewUpdateService.java
@@ -33,14 +33,22 @@
      * Fetch all packages that could potentially implement WebView.
      */
     public static WebViewProviderInfo[] getAllWebViewPackages() {
-        IWebViewUpdateService service = getUpdateService();
-        if (service == null) {
-            return new WebViewProviderInfo[0];
-        }
-        try {
-            return service.getAllWebViewPackages();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
+        if (Flags.updateServiceIpcWrapper()) {
+            WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
+            if (manager == null) {
+                return new WebViewProviderInfo[0];
+            }
+            return manager.getAllWebViewPackages();
+        } else {
+            IWebViewUpdateService service = getUpdateService();
+            if (service == null) {
+                return new WebViewProviderInfo[0];
+            }
+            try {
+                return service.getAllWebViewPackages();
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
         }
     }
 
@@ -48,14 +56,22 @@
      * Fetch all packages that could potentially implement WebView and are currently valid.
      */
     public static WebViewProviderInfo[] getValidWebViewPackages() {
-        IWebViewUpdateService service = getUpdateService();
-        if (service == null) {
-            return new WebViewProviderInfo[0];
-        }
-        try {
-            return service.getValidWebViewPackages();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
+        if (Flags.updateServiceIpcWrapper()) {
+            WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
+            if (manager == null) {
+                return new WebViewProviderInfo[0];
+            }
+            return manager.getValidWebViewPackages();
+        } else {
+            IWebViewUpdateService service = getUpdateService();
+            if (service == null) {
+                return new WebViewProviderInfo[0];
+            }
+            try {
+                return service.getValidWebViewPackages();
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
         }
     }
 
@@ -63,14 +79,22 @@
      * Used by DevelopmentSetting to get the name of the WebView provider currently in use.
      */
     public static String getCurrentWebViewPackageName() {
-        IWebViewUpdateService service = getUpdateService();
-        if (service == null) {
-            return null;
-        }
-        try {
-            return service.getCurrentWebViewPackageName();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
+        if (Flags.updateServiceIpcWrapper()) {
+            WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
+            if (manager == null) {
+                return null;
+            }
+            return manager.getCurrentWebViewPackageName();
+        } else {
+            IWebViewUpdateService service = getUpdateService();
+            if (service == null) {
+                return null;
+            }
+            try {
+                return service.getCurrentWebViewPackageName();
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
         }
     }
 
diff --git a/core/java/android/widget/Button.java b/core/java/android/widget/Button.java
index 405099d..98c00ac 100644
--- a/core/java/android/widget/Button.java
+++ b/core/java/android/widget/Button.java
@@ -16,6 +16,10 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
+import android.annotation.FlaggedApi;
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.InputDevice;
@@ -24,7 +28,6 @@
 import android.view.PointerIcon;
 import android.widget.RemoteViews.RemoteView;
 
-
 /**
  * A user interface element the user can tap or click to perform an action.
  *
@@ -172,10 +175,16 @@
         return Button.class.getName();
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
-        if (getPointerIcon() == null && isClickable() && isEnabled()
-                && event.isFromSource(InputDevice.SOURCE_MOUSE)) {
+        // By default the pointer icon is an arrow. More specifically, when the pointer icon is set
+        // to null, it will be an arrow. Therefore, we don't need to change the icon when
+        // enableArrowIconOnHoverWhenClickable() and the pointer icon is a null. We only need to do
+        // that when we want the hand icon for hover.
+        if (!enableArrowIconOnHoverWhenClickable() && getPointerIcon() == null && isClickable()
+                && isEnabled() && event.isFromSource(InputDevice.SOURCE_MOUSE)
+        ) {
             return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
         }
         return super.onResolvePointerIcon(event, pointerIndex);
diff --git a/core/java/android/widget/ImageButton.java b/core/java/android/widget/ImageButton.java
index b6c5396c..b3d084e 100644
--- a/core/java/android/widget/ImageButton.java
+++ b/core/java/android/widget/ImageButton.java
@@ -16,6 +16,10 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
+import android.annotation.FlaggedApi;
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.InputDevice;
@@ -98,11 +102,16 @@
         return ImageButton.class.getName();
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
         if (getPointerIcon() == null && isClickable() && isEnabled()
                 && event.isFromSource(InputDevice.SOURCE_MOUSE)) {
-            return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+
+            int pointerIcon = enableArrowIconOnHoverWhenClickable()
+                    ? PointerIcon.TYPE_ARROW
+                    : PointerIcon.TYPE_HAND;
+            return PointerIcon.getSystemIcon(getContext(), pointerIcon);
         }
         return super.onResolvePointerIcon(event, pointerIndex);
     }
diff --git a/core/java/android/widget/RadialTimePickerView.java b/core/java/android/widget/RadialTimePickerView.java
index edf0f48..26d1268 100644
--- a/core/java/android/widget/RadialTimePickerView.java
+++ b/core/java/android/widget/RadialTimePickerView.java
@@ -16,7 +16,11 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
 import android.animation.ObjectAnimator;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -1056,6 +1060,7 @@
         invalidate();
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
         if (!isEnabled()) {
@@ -1064,7 +1069,10 @@
         if (event.isFromSource(InputDevice.SOURCE_MOUSE)) {
             final int degrees = getDegreesFromXY(event.getX(), event.getY(), false);
             if (degrees != -1) {
-                return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+                int pointerIcon = enableArrowIconOnHoverWhenClickable()
+                        ? PointerIcon.TYPE_ARROW
+                        : PointerIcon.TYPE_HAND;
+                return PointerIcon.getSystemIcon(getContext(), pointerIcon);
             }
         }
         return super.onResolvePointerIcon(event, pointerIndex);
diff --git a/core/java/android/widget/SimpleMonthView.java b/core/java/android/widget/SimpleMonthView.java
index 1317b51..3898646 100644
--- a/core/java/android/widget/SimpleMonthView.java
+++ b/core/java/android/widget/SimpleMonthView.java
@@ -16,6 +16,10 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
+import android.annotation.FlaggedApi;
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -1037,6 +1041,7 @@
         return true;
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
         if (!isEnabled()) {
@@ -1049,7 +1054,10 @@
             final int y = (int) (event.getY() + 0.5f);
             final int dayUnderPointer = getDayAtLocation(x, y);
             if (dayUnderPointer >= 0) {
-                return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+                int pointerIcon = enableArrowIconOnHoverWhenClickable()
+                        ? PointerIcon.TYPE_ARROW
+                        : PointerIcon.TYPE_HAND;
+                return PointerIcon.getSystemIcon(getContext(), pointerIcon);
             }
         }
         return super.onResolvePointerIcon(event, pointerIndex);
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index ecc41a5..b9bf315 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -16,7 +16,11 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
 import android.annotation.DrawableRes;
+import android.annotation.FlaggedApi;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
 import android.annotation.Widget;
@@ -934,11 +938,15 @@
         }
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public PointerIcon onResolvePointerIcon(MotionEvent event, int pointerIndex) {
         if (getPointerIcon() == null && isClickable() && isEnabled()
                 && event.isFromSource(InputDevice.SOURCE_MOUSE)) {
-            return PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND);
+            int pointerIcon = enableArrowIconOnHoverWhenClickable()
+                    ? PointerIcon.TYPE_ARROW
+                    : PointerIcon.TYPE_HAND;
+            return PointerIcon.getSystemIcon(getContext(), pointerIcon);
         }
         return super.onResolvePointerIcon(event, pointerIndex);
     }
diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
index 36abf3a..31bf72f 100644
--- a/core/java/android/widget/TabWidget.java
+++ b/core/java/android/widget/TabWidget.java
@@ -16,7 +16,11 @@
 
 package android.widget;
 
+import static android.view.flags.Flags.enableArrowIconOnHoverWhenClickable;
+import static android.view.flags.Flags.FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE;
+
 import android.annotation.DrawableRes;
+import android.annotation.FlaggedApi;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -517,6 +521,7 @@
         }
     }
 
+    @FlaggedApi(FLAG_ENABLE_ARROW_ICON_ON_HOVER_WHEN_CLICKABLE)
     @Override
     public void addView(View child) {
         if (child.getLayoutParams() == null) {
@@ -530,7 +535,11 @@
         child.setFocusable(true);
         child.setClickable(true);
 
-        if (child.getPointerIcon() == null) {
+        // By default the pointer icon is an arrow. More specifically, when the pointer icon is set
+        // to null, it will be an arrow. Therefore, we don't need to change the icon when
+        // enableArrowIconOnHoverWhenClickable() and the pointer icon is a null. We only need to do
+        // that when we want the hand icon for hover.
+        if (!enableArrowIconOnHoverWhenClickable() && child.getPointerIcon() == null) {
             child.setPointerIcon(PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_HAND));
         }
 
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 57e4e6a..9847cb1 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -181,6 +181,7 @@
 import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.ViewDebug;
+import android.view.ViewGroup;
 import android.view.ViewGroup.LayoutParams;
 import android.view.ViewHierarchyEncoder;
 import android.view.ViewParent;
@@ -866,6 +867,7 @@
     private final boolean mUseTextPaddingForUiTranslation;
 
     private boolean mUseBoundsForWidth;
+    private boolean mShiftDrawingOffsetForStartOverhang;
     @Nullable private Paint.FontMetrics mMinimumFontMetrics;
     @Nullable private Paint.FontMetrics mLocalePreferredFontMetrics;
     private boolean mUseLocalePreferredLineHeightForMinimum;
@@ -1621,6 +1623,10 @@
                     hasUseBoundForWidthValue = true;
                     break;
                 case com.android.internal.R.styleable
+                        .TextView_shiftDrawingOffsetForStartOverhang:
+                    mShiftDrawingOffsetForStartOverhang = a.getBoolean(attr, false);
+                    break;
+                case com.android.internal.R.styleable
                         .TextView_useLocalePreferredLineHeightForMinimum:
                     mUseLocalePreferredLineHeightForMinimum = a.getBoolean(attr, false);
                     break;
@@ -4922,6 +4928,8 @@
      * @param useBoundsForWidth true for using bounding box for width. false for using advances for
      *                          width.
      * @see #getUseBoundsForWidth()
+     * @see #setShiftDrawingOffsetForStartOverhang(boolean)
+     * @see #getShiftDrawingOffsetForStartOverhang()
      */
     @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
     public void setUseBoundsForWidth(boolean useBoundsForWidth) {
@@ -4939,6 +4947,8 @@
      * Returns true if using bounding box as a width, false for using advance as a width.
      *
      * @see #setUseBoundsForWidth(boolean)
+     * @see #setShiftDrawingOffsetForStartOverhang(boolean)
+     * @see #getShiftDrawingOffsetForStartOverhang()
      * @return True if using bounding box for width, false if using advance for width.
      */
     @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
@@ -4947,6 +4957,53 @@
     }
 
     /**
+     * Set true for shifting the drawing x offset for showing overhang at the start position.
+     *
+     * This flag is ignored if the {@link #getUseBoundsForWidth()} is false.
+     *
+     * If this value is false, the TextView draws text from the zero even if there is a glyph stroke
+     * in a region where the x coordinate is negative. TextView clips the stroke in the region where
+     * the X coordinate is negative unless the parents has {@link ViewGroup#getClipChildren()} to
+     * true. This is useful for aligning multiple TextViews vertically.
+     *
+     * If this value is true, the TextView draws text with shifting the x coordinate of the drawing
+     * bounding box. This prevents the clipping even if the parents doesn't have
+     * {@link ViewGroup#getClipChildren()} to true.
+     *
+     * This value is false by default.
+     *
+     * @param shiftDrawingOffsetForStartOverhang true for shifting the drawing offset for showing
+     *                                           the stroke that is in the region whre the x
+     *                                           coorinate is negative.
+     * @see #setUseBoundsForWidth(boolean)
+     * @see #getUseBoundsForWidth()
+     */
+    @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+    public void setShiftDrawingOffsetForStartOverhang(boolean shiftDrawingOffsetForStartOverhang) {
+        if (mShiftDrawingOffsetForStartOverhang != shiftDrawingOffsetForStartOverhang) {
+            mShiftDrawingOffsetForStartOverhang = shiftDrawingOffsetForStartOverhang;
+            if (mLayout != null) {
+                nullLayouts();
+                requestLayout();
+                invalidate();
+            }
+        }
+    }
+
+    /**
+     * Returns true if shifting the drawing x offset for start overhang.
+     *
+     * @see #setShiftDrawingOffsetForStartOverhang(boolean)
+     * @see #setUseBoundsForWidth(boolean)
+     * @see #getUseBoundsForWidth()
+     * @return True if shifting the drawing x offset for start overhang.
+     */
+    @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH)
+    public boolean getShiftDrawingOffsetForStartOverhang() {
+        return mShiftDrawingOffsetForStartOverhang;
+    }
+
+    /**
      * Set the minimum font metrics used for line spacing.
      *
      * <p>
@@ -11001,6 +11058,7 @@
                                 null,
                                 boring,
                                 mUseBoundsForWidth,
+                                mShiftDrawingOffsetForStartOverhang,
                                 getResolvedMinimumFontMetrics());
                     }
 
@@ -11028,6 +11086,7 @@
                                 effectiveEllipsize,
                                 boring,
                                 mUseBoundsForWidth,
+                                mShiftDrawingOffsetForStartOverhang,
                                 getResolvedMinimumFontMetrics());
                     }
                 }
diff --git a/core/java/android/window/BackProgressAnimator.java b/core/java/android/window/BackProgressAnimator.java
index e7280d0..40e28cb 100644
--- a/core/java/android/window/BackProgressAnimator.java
+++ b/core/java/android/window/BackProgressAnimator.java
@@ -17,6 +17,7 @@
 package android.window;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.util.FloatProperty;
 
 import com.android.internal.dynamicanimation.animation.DynamicAnimation;
@@ -44,6 +45,14 @@
     private float mProgress = 0;
     private BackMotionEvent mLastBackEvent;
     private boolean mBackAnimationInProgress = false;
+    @Nullable
+    private Runnable mBackCancelledFinishRunnable;
+    private final DynamicAnimation.OnAnimationEndListener mOnAnimationEndListener =
+            (animation, canceled, value, velocity) -> {
+                invokeBackCancelledRunnable();
+                reset();
+            };
+
 
     private void setProgress(float progress) {
         mProgress = progress;
@@ -116,6 +125,11 @@
      * Resets the back progress animation. This should be called when back is invoked or cancelled.
      */
     public void reset() {
+        if (mBackCancelledFinishRunnable != null) {
+            // Ensure that last progress value that apps see is 0
+            updateProgressValue(0);
+            invokeBackCancelledRunnable();
+        }
         mSpring.animateToFinalPosition(0);
         if (mSpring.canSkipToEnd()) {
             mSpring.skipToEnd();
@@ -136,17 +150,8 @@
      * @param finishCallback the callback to be invoked when the progress is reach to 0.
      */
     public void onBackCancelled(@NonNull Runnable finishCallback) {
-        final DynamicAnimation.OnAnimationEndListener listener =
-                new DynamicAnimation.OnAnimationEndListener() {
-            @Override
-            public void onAnimationEnd(DynamicAnimation animation, boolean canceled, float value,
-                    float velocity) {
-                mSpring.removeEndListener(this);
-                finishCallback.run();
-                reset();
-            }
-        };
-        mSpring.addEndListener(listener);
+        mBackCancelledFinishRunnable = finishCallback;
+        mSpring.addEndListener(mOnAnimationEndListener);
         mSpring.animateToFinalPosition(0);
     }
 
@@ -164,4 +169,10 @@
                         progress / SCALE_FACTOR, mLastBackEvent.getSwipeEdge()));
     }
 
-}
+    private void invokeBackCancelledRunnable() {
+        mSpring.removeEndListener(mOnAnimationEndListener);
+        mBackCancelledFinishRunnable.run();
+        mBackCancelledFinishRunnable = null;
+    }
+
+}
\ No newline at end of file
diff --git a/core/java/android/window/InputTransferToken.java b/core/java/android/window/InputTransferToken.java
index 0601b2a..e572853 100644
--- a/core/java/android/window/InputTransferToken.java
+++ b/core/java/android/window/InputTransferToken.java
@@ -16,20 +16,40 @@
 
 package android.window;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.os.Binder;
 import android.os.IBinder;
+import android.os.Looper;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.view.Choreographer;
+import android.view.SurfaceControl;
+import android.view.SurfaceControlInputReceiver;
 import android.view.SurfaceControlViewHost;
 
+import com.android.window.flags.Flags;
+
 import java.util.Objects;
 
 /**
  * A token that can be used to request focus on or to transfer touch gesture to a
  * {@link SurfaceControlViewHost} or {@link android.view.SurfaceControl} that has an input channel.
- * @hide
+ * <p>
+ * The {@link android.view.SurfaceControl} needs to have been registered for input via
+ * {@link android.view.WindowManager#registerUnbatchedSurfaceControlInputReceiver(int,
+ * InputTransferToken, SurfaceControl, Looper, SurfaceControlInputReceiver)} or
+ * {@link android.view.WindowManager#registerBatchedSurfaceControlInputReceiver(int,
+ * InputTransferToken, SurfaceControl, Choreographer, SurfaceControlInputReceiver)} and the
+ * returned token can be used to call
+ * {@link android.view.WindowManager#transferTouchGesture(InputTransferToken, InputTransferToken)}
+ * <p>
+ * For {@link SurfaceControlViewHost}, the token can be retrieved via
+ * {@link SurfaceControlViewHost.SurfacePackage#getInputTransferToken()}
+ *
+ * @see android.view.WindowManager#transferTouchGesture(InputTransferToken, InputTransferToken)
  */
+@FlaggedApi(Flags.FLAG_SURFACE_CONTROL_INPUT_RECEIVER)
 public final class InputTransferToken implements Parcelable {
     /**
      * @hide
diff --git a/core/java/android/window/TrustedPresentationThresholds.java b/core/java/android/window/TrustedPresentationThresholds.java
index 90f8834..a30c8fa 100644
--- a/core/java/android/window/TrustedPresentationThresholds.java
+++ b/core/java/android/window/TrustedPresentationThresholds.java
@@ -19,15 +19,15 @@
 import android.annotation.FlaggedApi;
 import android.annotation.FloatRange;
 import android.annotation.IntRange;
-import android.annotation.SuppressLint;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.view.SurfaceControl;
 
 import androidx.annotation.NonNull;
 
 import com.android.window.flags.Flags;
 
+import java.util.Objects;
+
 /**
  * Threshold values that are sent with
  * {@link android.view.WindowManager#registerTrustedPresentationListener(IBinder,
@@ -36,33 +36,53 @@
 @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
 public final class TrustedPresentationThresholds implements Parcelable {
     /**
-     * The min alpha the {@link SurfaceControl} is required to have to be considered inside the
+     * The min alpha the Window is required to have to be considered inside the
      * threshold.
      */
     @FloatRange(from = 0f, fromInclusive = false, to = 1f)
-    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
-    @SuppressLint("InternalField") // simple data class
-    public final float minAlpha;
+    private final float mMinAlpha;
 
     /**
-     * The min fraction of the SurfaceControl that was presented to the user to be considered
+     * The min fraction of the Window that was presented to the user to be considered
      * inside the threshold.
      */
     @FloatRange(from = 0f, fromInclusive = false, to = 1f)
-    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
-    @SuppressLint("InternalField") // simple data class
-    public final float minFractionRendered;
+    private final float mMinFractionRendered;
 
     /**
-     * The time in milliseconds required for the {@link SurfaceControl} to be in the threshold.
+     * The time in milliseconds required for the Window to be in the threshold.
      */
     @IntRange(from = 1)
+    private final int mStabilityRequirementMs;
+
+    /**
+     * The min alpha the Window is required to have to be considered inside the
+     * threshold.
+     */
     @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
-    @SuppressLint("InternalField") // simple data class
-    public final int stabilityRequirementMs;
+    public @FloatRange(from = 0f, fromInclusive = false, to = 1f) float getMinAlpha() {
+        return mMinAlpha;
+    }
+
+    /**
+     * The min fraction of the Window that was presented to the user to be considered
+     * inside the threshold.
+     */
+    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
+    public @FloatRange(from = 0f, fromInclusive = false, to = 1f) float getMinFractionRendered() {
+        return mMinFractionRendered;
+    }
+
+    /**
+     * The time in milliseconds required for the Window to be in the threshold.
+     */
+    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
+    public @IntRange(from = 1) int getStabilityRequirementMillis() {
+        return mStabilityRequirementMs;
+    }
 
     private void checkValid() {
-        if (minAlpha <= 0 || minFractionRendered <= 0 || stabilityRequirementMs < 1) {
+        if (mMinAlpha <= 0 || mMinFractionRendered <= 0 || mStabilityRequirementMs < 1) {
             throw new IllegalArgumentException(
                     "TrustedPresentationThresholds values are invalid");
         }
@@ -71,23 +91,23 @@
     /**
      * Creates a new TrustedPresentationThresholds.
      *
-     * @param minAlpha               The min alpha the {@link SurfaceControl} is required to
+     * @param minAlpha               The min alpha the Window is required to
      *                               have to be considered inside the
      *                               threshold.
-     * @param minFractionRendered    The min fraction of the SurfaceControl that was presented
+     * @param minFractionRendered    The min fraction of the Window that was presented
      *                               to the user to be considered
      *                               inside the threshold.
      * @param stabilityRequirementMs The time in milliseconds required for the
-     *                               {@link SurfaceControl} to be in the threshold.
+     *                               Window to be in the threshold.
      */
     @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
     public TrustedPresentationThresholds(
             @FloatRange(from = 0f, fromInclusive = false, to = 1f) float minAlpha,
             @FloatRange(from = 0f, fromInclusive = false, to = 1f) float minFractionRendered,
             @IntRange(from = 1) int stabilityRequirementMs) {
-        this.minAlpha = minAlpha;
-        this.minFractionRendered = minFractionRendered;
-        this.stabilityRequirementMs = stabilityRequirementMs;
+        this.mMinAlpha = minAlpha;
+        this.mMinFractionRendered = minFractionRendered;
+        this.mStabilityRequirementMs = stabilityRequirementMs;
         checkValid();
     }
 
@@ -95,18 +115,18 @@
     @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
     public String toString() {
         return "TrustedPresentationThresholds { "
-                + "minAlpha = " + minAlpha + ", "
-                + "minFractionRendered = " + minFractionRendered + ", "
-                + "stabilityRequirementMs = " + stabilityRequirementMs
+                + "minAlpha = " + mMinAlpha + ", "
+                + "minFractionRendered = " + mMinFractionRendered + ", "
+                + "stabilityRequirementMs = " + mStabilityRequirementMs
                 + " }";
     }
 
     @Override
     @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeFloat(minAlpha);
-        dest.writeFloat(minFractionRendered);
-        dest.writeInt(stabilityRequirementMs);
+        dest.writeFloat(mMinAlpha);
+        dest.writeFloat(mMinFractionRendered);
+        dest.writeInt(mStabilityRequirementMs);
     }
 
     @Override
@@ -115,13 +135,34 @@
         return 0;
     }
 
+
+    @Override
+    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
+    public int hashCode() {
+        return Objects.hash(mMinAlpha, mMinFractionRendered, mStabilityRequirementMs);
+    }
+
+    @Override
+    @FlaggedApi(Flags.FLAG_TRUSTED_PRESENTATION_LISTENER_FOR_WINDOW)
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof TrustedPresentationThresholds that)) {
+            return false;
+        }
+        return mMinAlpha == that.mMinAlpha
+                && mMinFractionRendered == that.mMinFractionRendered
+                && mStabilityRequirementMs == that.mStabilityRequirementMs;
+    }
+
     /**
      * @hide
      */
     TrustedPresentationThresholds(@NonNull Parcel in) {
-        minAlpha = in.readFloat();
-        minFractionRendered = in.readFloat();
-        stabilityRequirementMs = in.readInt();
+        mMinAlpha = in.readFloat();
+        mMinFractionRendered = in.readFloat();
+        mStabilityRequirementMs = in.readInt();
 
         checkValid();
     }
diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java
index efc71d7..76a34ae 100644
--- a/core/java/android/window/WindowContainerTransaction.java
+++ b/core/java/android/window/WindowContainerTransaction.java
@@ -676,18 +676,20 @@
      *                 This identifies them.
      * @param type     The {@link InsetsType} of the insets source.
      * @param frame    The rectangle area of the insets source.
+     * @param boundingRects The bounding rects within this inset, relative to the |frame|.
      * @hide
      */
     @NonNull
     public WindowContainerTransaction addInsetsSource(
             @NonNull WindowContainerToken receiver,
-            IBinder owner, int index, @InsetsType int type, Rect frame) {
+            IBinder owner, int index, @InsetsType int type, Rect frame, Rect[] boundingRects) {
         final HierarchyOp hierarchyOp =
                 new HierarchyOp.Builder(HierarchyOp.HIERARCHY_OP_TYPE_ADD_INSETS_FRAME_PROVIDER)
                         .setContainer(receiver.asBinder())
                         .setInsetsFrameProvider(new InsetsFrameProvider(owner, index, type)
                                 .setSource(InsetsFrameProvider.SOURCE_ARBITRARY_RECTANGLE)
-                                .setArbitraryRectangle(frame))
+                                .setArbitraryRectangle(frame)
+                                .setBoundingRects(boundingRects))
                         .setInsetsFrameOwner(owner)
                         .build();
         mHierarchyOps.add(hierarchyOp);
diff --git a/core/java/android/window/WindowOnBackInvokedDispatcher.java b/core/java/android/window/WindowOnBackInvokedDispatcher.java
index 5c911f4..45d7767 100644
--- a/core/java/android/window/WindowOnBackInvokedDispatcher.java
+++ b/core/java/android/window/WindowOnBackInvokedDispatcher.java
@@ -371,11 +371,11 @@
                 }
                 final OnBackAnimationCallback callback = getBackAnimationCallback();
                 if (callback != null) {
+                    mProgressAnimator.reset();
                     callback.onBackStarted(new BackEvent(
                             backEvent.getTouchX(), backEvent.getTouchY(),
                             backEvent.getProgress(), backEvent.getSwipeEdge()));
-                    mProgressAnimator.onBackStarted(backEvent, event ->
-                            callback.onBackProgressed(event));
+                    mProgressAnimator.onBackStarted(backEvent, callback::onBackProgressed);
                 }
             });
         }
diff --git a/core/java/android/window/flags/window_surfaces.aconfig b/core/java/android/window/flags/window_surfaces.aconfig
index 069affb..8b3bd97 100644
--- a/core/java/android/window/flags/window_surfaces.aconfig
+++ b/core/java/android/window/flags/window_surfaces.aconfig
@@ -20,21 +20,6 @@
 
 flag {
     namespace: "window_surfaces"
-    name: "get_host_token_api"
-    description: "Feature flag to associate the host and embedded windows"
-    is_fixed_read_only: true
-    bug: "304508760"
-}
-
-flag {
-    namespace: "window_surfaces"
-    name: "transfer_gesture_to_embedded"
-    description: "Enable public API for Window Surfaces"
-    bug: "287076178"
-}
-
-flag {
-    namespace: "window_surfaces"
     name: "delete_capture_display"
     description: "Delete uses of ScreenCapture#captureDisplay"
     is_fixed_read_only: true
diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig
index bc63881..ce74848 100644
--- a/core/java/android/window/flags/windowing_sdk.aconfig
+++ b/core/java/android/window/flags/windowing_sdk.aconfig
@@ -69,4 +69,12 @@
     name: "embedded_activity_back_nav_flag"
     description: "Refines embedded activity back navigation behavior"
     bug: "293642394"
+}
+
+flag {
+    namespace: "windowing_sdk"
+    name: "cover_display_opt_in"
+    description: "Properties to allow apps and activities to opt-in to cover display rendering"
+    bug: "312530526"
+    is_fixed_read_only: true
 }
\ No newline at end of file
diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
index de0f070..840e2a1 100644
--- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
+++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
@@ -110,6 +110,8 @@
             new ComponentName("com.android.server.accessibility", "OneHandedModeTile");
     public static final ComponentName REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME =
             new ComponentName("com.android.server.accessibility", "ReduceBrightColorsTile");
+    public static final ComponentName FONT_SIZE_TILE_COMPONENT_NAME =
+            new ComponentName("com.android.server.accessibility", "FontSizeTile");
 
     private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
             .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 3a321e5..3ec7064 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -162,4 +162,5 @@
             int attributionFlags, int attributionChainId);
     void finishOperationForDevice(IBinder clientId, int code, int uid, String packageName,
             @nullable String attributionTag, int virtualDeviceId);
+   List<AppOpsManager.PackageOps> getPackagesForOpsForDevice(in int[] ops, String persistentDeviceId);
 }
diff --git a/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl b/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl
index a65877c..5cb5963 100644
--- a/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl
+++ b/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl
@@ -20,7 +20,6 @@
 import android.service.voice.HotwordDetectedResult;
 import android.service.voice.HotwordDetectionServiceFailure;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
 import android.service.voice.SoundTriggerFailure;
 import android.service.voice.VisualQueryDetectionServiceFailure;
 import com.android.internal.infra.AndroidFuture;
@@ -41,6 +40,13 @@
             in SoundTrigger.KeyphraseRecognitionEvent recognitionEvent,
             in HotwordDetectedResult result);
 
+    /**
+     * Called when the keyphrase is detected from audio coming from an external source.
+     *
+     * @param result Successful detection result payload.
+     */
+    void onKeyphraseDetectedFromExternalSource(in HotwordDetectedResult result);
+
    /**
      * Called when a generic sound trigger event is witnessed.
      *
@@ -60,12 +66,6 @@
     void onRejected(in HotwordRejectedResult result);
 
     /**
-     * Called by {@link HotwordDetectionService} to egress training data to the
-     * {@link HotwordDetector}.
-     */
-    void onTrainingData(in HotwordTrainingData data);
-
-    /**
      * Called when the detection fails due to an error occurs in the
      * {@link HotwordDetectionService}.
      *
diff --git a/core/java/com/android/internal/app/IVisualQueryDetectionAttentionListener.aidl b/core/java/com/android/internal/app/IVisualQueryDetectionAttentionListener.aidl
index 3e48da7..eeaa3ef 100644
--- a/core/java/com/android/internal/app/IVisualQueryDetectionAttentionListener.aidl
+++ b/core/java/com/android/internal/app/IVisualQueryDetectionAttentionListener.aidl
@@ -16,6 +16,8 @@
 
 package com.android.internal.app;
 
+import android.service.voice.VisualQueryAttentionResult;
+
 /**
  * Allows sysui to notify users the assistant is ready to take a query without notifying the
  * assistant app.
@@ -24,10 +26,10 @@
    /**
     * Called when attention signal is sent.
     */
-   void onAttentionGained();
+   void onAttentionGained(in VisualQueryAttentionResult attentionResult);
 
    /**
-    * Called when a attention signal is lost.
+    * Called when a attention signal is lost for a certain interaction intention.
     */
-   void onAttentionLost();
+   void onAttentionLost(int interactionIntention);
 }
\ No newline at end of file
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index e92c6a6..314ed69 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -359,12 +359,6 @@
             in IHotwordRecognitionStatusCallback callback);
 
     /**
-     * Test API to reset training data egress count for test.
-     */
-    @EnforcePermission("RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT")
-    void resetHotwordTrainingDataEgressCountForTest();
-
-    /**
      * Starts to listen the status of visible activity.
      */
     void startListeningVisibleActivityChanged(in IBinder token);
@@ -388,14 +382,4 @@
     oneway void notifyActivityEventChanged(
             in IBinder activityToken,
             int type);
-
-    /**
-      * Allows/disallows receiving training data from trusted process.
-      * Caller must be the active assistant and a preinstalled assistant.
-      *
-      * @param allowed whether to allow/disallow receiving training data produced during
-      * sandboxed detection (from trusted process).
-      */
-      @EnforcePermission("MANAGE_HOTWORD_DETECTION")
-      void setShouldReceiveSandboxedTrainingData(boolean allowed);
 }
diff --git a/core/java/com/android/internal/content/ReferrerIntent.java b/core/java/com/android/internal/content/ReferrerIntent.java
index 6af03dd..2c68203 100644
--- a/core/java/com/android/internal/content/ReferrerIntent.java
+++ b/core/java/com/android/internal/content/ReferrerIntent.java
@@ -18,6 +18,7 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Intent;
+import android.os.IBinder;
 import android.os.Parcel;
 
 import java.util.Objects;
@@ -29,20 +30,29 @@
     @UnsupportedAppUsage
     public final String mReferrer;
 
+    public final IBinder mCallerToken;
+
     @UnsupportedAppUsage
     public ReferrerIntent(Intent baseIntent, String referrer) {
+        this(baseIntent, referrer, /* callerToken */ null);
+    }
+
+    public ReferrerIntent(Intent baseIntent, String referrer, IBinder callerToken) {
         super(baseIntent);
         mReferrer = referrer;
+        mCallerToken = callerToken;
     }
 
     public void writeToParcel(Parcel dest, int parcelableFlags) {
         super.writeToParcel(dest, parcelableFlags);
         dest.writeString(mReferrer);
+        dest.writeStrongBinder(mCallerToken);
     }
 
     ReferrerIntent(Parcel in) {
         readFromParcel(in);
         mReferrer = in.readString();
+        mCallerToken = in.readStrongBinder();
     }
 
     public static final Creator<ReferrerIntent> CREATOR = new Creator<ReferrerIntent>() {
@@ -60,7 +70,8 @@
             return false;
         }
         final ReferrerIntent other = (ReferrerIntent) obj;
-        return filterEquals(other) && Objects.equals(mReferrer, other.mReferrer);
+        return filterEquals(other) && Objects.equals(mReferrer, other.mReferrer)
+                && Objects.equals(mCallerToken, other.mCallerToken);
     }
 
     @Override
@@ -68,6 +79,7 @@
         int result = 17;
         result = 31 * result + filterHashCode();
         result = 31 * result + Objects.hashCode(mReferrer);
+        result = 31 * result + Objects.hashCode(mCallerToken);
         return result;
     }
 }
diff --git a/location/java/android/location/IGeocodeListener.aidl b/core/java/com/android/internal/inputmethod/IConnectionlessHandwritingCallback.aidl
similarity index 63%
copy from location/java/android/location/IGeocodeListener.aidl
copy to core/java/com/android/internal/inputmethod/IConnectionlessHandwritingCallback.aidl
index 8e10411..e564599 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/core/java/com/android/internal/inputmethod/IConnectionlessHandwritingCallback.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,10 @@
  * limitations under the License.
  */
 
-package android.location;
+package com.android.internal.inputmethod;
 
-import android.location.Address;
-
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
+/** Binder interface to receive a result from a connectionless stylus handwriting session. */
+oneway interface IConnectionlessHandwritingCallback {
+    void onResult(in CharSequence text);
+    void onError(int errorCode);
 }
diff --git a/core/java/com/android/internal/inputmethod/IInputMethod.aidl b/core/java/com/android/internal/inputmethod/IInputMethod.aidl
index 8cb568d..6abd9e8 100644
--- a/core/java/com/android/internal/inputmethod/IInputMethod.aidl
+++ b/core/java/com/android/internal/inputmethod/IInputMethod.aidl
@@ -20,11 +20,13 @@
 import android.os.ResultReceiver;
 import android.view.InputChannel;
 import android.view.MotionEvent;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputBinding;
 import android.view.inputmethod.InputMethodSubtype;
 import android.window.ImeOnBackInvokedDispatcher;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
 import com.android.internal.inputmethod.IInputMethodSession;
@@ -79,11 +81,17 @@
 
     void changeInputMethodSubtype(in InputMethodSubtype subtype);
 
-    void canStartStylusHandwriting(int requestId);
+    void canStartStylusHandwriting(int requestId,
+            in IConnectionlessHandwritingCallback connectionlessCallback,
+            in CursorAnchorInfo cursorAnchorInfo, boolean isConnectionlessForDelegation);
 
     void startStylusHandwriting(int requestId, in InputChannel channel,
             in List<MotionEvent> events);
 
+    void commitHandwritingDelegationTextIfAvailable();
+
+    void discardHandwritingDelegationText();
+
     void initInkWindow();
 
     void finishStylusHandwriting();
diff --git a/core/java/com/android/internal/os/BatteryStatsHistory.java b/core/java/com/android/internal/os/BatteryStatsHistory.java
index 0b7593a..c5c17cf 100644
--- a/core/java/com/android/internal/os/BatteryStatsHistory.java
+++ b/core/java/com/android/internal/os/BatteryStatsHistory.java
@@ -1146,7 +1146,7 @@
             mHistoryCur.batteryHealth = (byte) health;
             mHistoryCur.batteryPlugType = (byte) plugType;
             mHistoryCur.batteryTemperature = (short) temperature;
-            mHistoryCur.batteryVoltage = (char) voltageMv;
+            mHistoryCur.batteryVoltage = (short) voltageMv;
             mHistoryCur.batteryChargeUah = chargeUah;
         }
     }
@@ -2010,7 +2010,11 @@
         int bits = 0;
         bits = setBitField(bits, h.batteryLevel, 25, 0xfe000000 /* 7F << 25 */);
         bits = setBitField(bits, h.batteryTemperature, 15, 0x01ff8000 /* 3FF << 15 */);
-        bits = setBitField(bits, h.batteryVoltage, 1, 0x00007ffe /* 3FFF << 1 */);
+        short voltage = (short) h.batteryVoltage;
+        if (voltage == -1) {
+            voltage = 0x3FFF;
+        }
+        bits = setBitField(bits, voltage, 1, 0x00007ffe /* 3FFF << 1 */);
         return bits;
     }
 
diff --git a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
index 739ee48..b2a6a93 100644
--- a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
+++ b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java
@@ -309,7 +309,12 @@
     private static void readBatteryLevelInt(int batteryLevelInt, BatteryStats.HistoryItem out) {
         out.batteryLevel = (byte) ((batteryLevelInt & 0xfe000000) >>> 25);
         out.batteryTemperature = (short) ((batteryLevelInt & 0x01ff8000) >>> 15);
-        out.batteryVoltage = (char) ((batteryLevelInt & 0x00007ffe) >>> 1);
+        int voltage = ((batteryLevelInt & 0x00007ffe) >>> 1);
+        if (voltage == 0x3FFF) {
+            voltage = -1;
+        }
+
+        out.batteryVoltage = (short) voltage;
     }
 
     /**
diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
index ed943cb..eef6ce7 100644
--- a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
+++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java
@@ -57,7 +57,7 @@
  */
 @android.ravenwood.annotation.RavenwoodKeepWholeClass
 @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-        "com.android.hoststubgen.nativesubstitution.LongArrayMultiStateCounter_host")
+        "com.android.platform.test.ravenwood.nativesubstitution.LongArrayMultiStateCounter_host")
 public final class LongArrayMultiStateCounter implements Parcelable {
 
     /**
@@ -65,7 +65,7 @@
      */
     @android.ravenwood.annotation.RavenwoodKeepWholeClass
     @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-            "com.android.hoststubgen.nativesubstitution"
+            "com.android.platform.test.ravenwood.nativesubstitution"
             + ".LongArrayMultiStateCounter_host$LongArrayContainer_host")
     public static class LongArrayContainer {
         private static NativeAllocationRegistry sRegistry;
diff --git a/core/java/com/android/internal/os/LongMultiStateCounter.java b/core/java/com/android/internal/os/LongMultiStateCounter.java
index 064609f..e5662c7 100644
--- a/core/java/com/android/internal/os/LongMultiStateCounter.java
+++ b/core/java/com/android/internal/os/LongMultiStateCounter.java
@@ -57,7 +57,7 @@
  */
 @android.ravenwood.annotation.RavenwoodKeepWholeClass
 @android.ravenwood.annotation.RavenwoodNativeSubstitutionClass(
-        "com.android.hoststubgen.nativesubstitution.LongMultiStateCounter_host")
+        "com.android.platform.test.ravenwood.nativesubstitution.LongMultiStateCounter_host")
 public final class LongMultiStateCounter implements Parcelable {
 
     private static NativeAllocationRegistry sRegistry;
diff --git a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
index d433ca3..73df5e8 100644
--- a/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
+++ b/core/java/com/android/internal/pm/parsing/pkg/PackageImpl.java
@@ -408,6 +408,7 @@
     // Derived fields
     private long mLongVersionCode;
     private int mLocaleConfigRes;
+    private boolean mAllowCrossUidActivitySwitchFromBelow;
 
     private List<AndroidPackageSplit> mSplits;
 
@@ -1542,6 +1543,11 @@
     }
 
     @Override
+    public boolean isAllowCrossUidActivitySwitchFromBelow() {
+        return mAllowCrossUidActivitySwitchFromBelow;
+    }
+
+    @Override
     public boolean hasPreserveLegacyExternalStorage() {
         return getBoolean(Booleans.PRESERVE_LEGACY_EXTERNAL_STORAGE);
     }
@@ -2199,6 +2205,12 @@
     }
 
     @Override
+    public ParsingPackage setAllowCrossUidActivitySwitchFromBelow(boolean value) {
+        mAllowCrossUidActivitySwitchFromBelow = value;
+        return this;
+    }
+
+    @Override
     public PackageImpl setResourceOverlay(boolean value) {
         return setBoolean(Booleans.OVERLAY, value);
     }
@@ -2656,6 +2668,7 @@
         if (!mKnownActivityEmbeddingCerts.isEmpty()) {
             appInfo.setKnownActivityEmbeddingCerts(mKnownActivityEmbeddingCerts);
         }
+        appInfo.allowCrossUidActivitySwitchFromBelow = mAllowCrossUidActivitySwitchFromBelow;
 
         return appInfo;
     }
@@ -3250,6 +3263,7 @@
         dest.writeInt(this.uid);
         dest.writeLong(this.mBooleans);
         dest.writeLong(this.mBooleans2);
+        dest.writeBoolean(this.mAllowCrossUidActivitySwitchFromBelow);
     }
 
     public PackageImpl(Parcel in) {
@@ -3411,6 +3425,7 @@
         this.uid = in.readInt();
         this.mBooleans = in.readLong();
         this.mBooleans2 = in.readLong();
+        this.mAllowCrossUidActivitySwitchFromBelow = in.readBoolean();
 
         assignDerivedFields();
         assignDerivedFields2();
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackage.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackage.java
index ef106e0..5d185af 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackage.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackage.java
@@ -374,6 +374,9 @@
 
     ParsingPackage setZygotePreloadName(String zygotePreloadName);
 
+    ParsingPackage setAllowCrossUidActivitySwitchFromBelow(
+            boolean allowCrossUidActivitySwitchFromBelow);
+
     ParsingPackage sortActivities();
 
     ParsingPackage sortReceivers();
@@ -518,6 +521,8 @@
     @Nullable
     String getZygotePreloadName();
 
+    boolean isAllowCrossUidActivitySwitchFromBelow();
+
     boolean isBackupAllowed();
 
     boolean isTaskReparentingAllowed();
diff --git a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
index e0fdbc6..2e6053d 100644
--- a/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
+++ b/core/java/com/android/internal/pm/pkg/parsing/ParsingPackageUtils.java
@@ -2374,8 +2374,10 @@
                 .setRestrictedAccountType(string(R.styleable.AndroidManifestApplication_restrictedAccountType, sa))
                 .setZygotePreloadName(string(R.styleable.AndroidManifestApplication_zygotePreloadName, sa))
                 // Non-Config String
-                .setPermission(nonConfigString(0, R.styleable.AndroidManifestApplication_permission, sa));
-        // CHECKSTYLE:on
+                .setPermission(nonConfigString(0, R.styleable.AndroidManifestApplication_permission, sa))
+                .setAllowCrossUidActivitySwitchFromBelow(bool(true, R.styleable.AndroidManifestApplication_allowCrossUidActivitySwitchFromBelow, sa));
+
+       // CHECKSTYLE:on
         //@formatter:on
     }
 
diff --git a/core/java/com/android/internal/protolog/OWNERS b/core/java/com/android/internal/protolog/OWNERS
new file mode 100644
index 0000000..18cf2be
--- /dev/null
+++ b/core/java/com/android/internal/protolog/OWNERS
@@ -0,0 +1,3 @@
+# ProtoLog owners
+# Bug component: 1157642
+include platform/development:/tools/winscope/OWNERS
diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
index fc60f06..b83b2d2 100644
--- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl
@@ -17,6 +17,7 @@
 package com.android.internal.statusbar;
 
 import android.app.Notification;
+import android.app.StatusBarManager;
 import android.content.ComponentName;
 import android.graphics.drawable.Icon;
 import android.graphics.Rect;
@@ -52,9 +53,9 @@
     void togglePanel();
     @UnsupportedAppUsage
     void disable(int what, IBinder token, String pkg);
-    void disableForUser(int what, IBinder token, String pkg, int userId);
     void disable2(int what, IBinder token, String pkg);
-    void disable2ForUser(int what, IBinder token, String pkg, int userId);
+    void disableForUser(in StatusBarManager.DisableInfo info, IBinder token, String pkg, int userId, String reason);
+
     int[] getDisableFlags(IBinder token, int userId);
     void setIcon(String slot, String iconPackage, int iconId, int iconLevel, String contentDescription);
     @UnsupportedAppUsage
diff --git a/core/java/com/android/internal/util/CollectionUtils.java b/core/java/com/android/internal/util/CollectionUtils.java
index 4191936..af9de41 100644
--- a/core/java/com/android/internal/util/CollectionUtils.java
+++ b/core/java/com/android/internal/util/CollectionUtils.java
@@ -43,6 +43,7 @@
  * Unless a method specifies otherwise, a null value for a collection is treated as an empty
  * collection of that type.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class CollectionUtils {
     private CollectionUtils() { /* cannot be instantiated */ }
 
diff --git a/core/java/com/android/internal/util/FileRotator.java b/core/java/com/android/internal/util/FileRotator.java
index c9d9926..71a14a4 100644
--- a/core/java/com/android/internal/util/FileRotator.java
+++ b/core/java/com/android/internal/util/FileRotator.java
@@ -53,6 +53,8 @@
  *
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class FileRotator {
     private static final String TAG = "FileRotator";
     private static final boolean LOGD = false;
diff --git a/core/java/com/android/internal/util/HexDump.java b/core/java/com/android/internal/util/HexDump.java
index 6468caf..cf0af37 100644
--- a/core/java/com/android/internal/util/HexDump.java
+++ b/core/java/com/android/internal/util/HexDump.java
@@ -19,6 +19,8 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class HexDump
 {
     private final static char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
diff --git a/core/java/com/android/internal/util/IndentingPrintWriter.java b/core/java/com/android/internal/util/IndentingPrintWriter.java
index 520f518..5e1af7f 100644
--- a/core/java/com/android/internal/util/IndentingPrintWriter.java
+++ b/core/java/com/android/internal/util/IndentingPrintWriter.java
@@ -25,6 +25,8 @@
  * @deprecated Use {@link android.util.IndentingPrintWriter}
  */
 @Deprecated
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class IndentingPrintWriter extends android.util.IndentingPrintWriter {
 
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553)
diff --git a/core/java/com/android/internal/util/IntPair.java b/core/java/com/android/internal/util/IntPair.java
index 7992507..7fd000e 100644
--- a/core/java/com/android/internal/util/IntPair.java
+++ b/core/java/com/android/internal/util/IntPair.java
@@ -21,6 +21,7 @@
  *
  * @hide
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class IntPair {
     private IntPair() {}
 
diff --git a/core/java/com/android/internal/util/LocalLog.java b/core/java/com/android/internal/util/LocalLog.java
index 057dc8f..29a7e27 100644
--- a/core/java/com/android/internal/util/LocalLog.java
+++ b/core/java/com/android/internal/util/LocalLog.java
@@ -28,6 +28,8 @@
  * of a system service's dumpsys output.
  * @hide
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class LocalLog {
     private final String mTag;
     private final int mMaxLines = 20;
diff --git a/core/java/com/android/internal/util/MessageUtils.java b/core/java/com/android/internal/util/MessageUtils.java
index e733c30..e884208 100644
--- a/core/java/com/android/internal/util/MessageUtils.java
+++ b/core/java/com/android/internal/util/MessageUtils.java
@@ -26,6 +26,8 @@
 /**
  * Static utility class for dealing with {@link Message} objects.
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class MessageUtils {
 
     private static final String TAG = MessageUtils.class.getSimpleName();
diff --git a/core/java/com/android/internal/util/SizedInputStream.java b/core/java/com/android/internal/util/SizedInputStream.java
index 00a729d..33bb58d 100644
--- a/core/java/com/android/internal/util/SizedInputStream.java
+++ b/core/java/com/android/internal/util/SizedInputStream.java
@@ -16,8 +16,6 @@
 
 package com.android.internal.util;
 
-import libcore.io.Streams;
-
 import java.io.IOException;
 import java.io.InputStream;
 
@@ -25,6 +23,7 @@
  * Reads exact number of bytes from wrapped stream, returning EOF once those
  * bytes have been read.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class SizedInputStream extends InputStream {
     private final InputStream mWrapped;
     private long mLength;
@@ -42,7 +41,9 @@
 
     @Override
     public int read() throws IOException {
-        return Streams.readSingleByte(this);
+        byte[] buffer = new byte[1];
+        int result = read(buffer, 0, 1);
+        return (result != -1) ? buffer[0] & 0xff : -1;
     }
 
     @Override
diff --git a/core/java/com/android/internal/util/TokenBucket.java b/core/java/com/android/internal/util/TokenBucket.java
index a163ceb..fcdbf1b 100644
--- a/core/java/com/android/internal/util/TokenBucket.java
+++ b/core/java/com/android/internal/util/TokenBucket.java
@@ -36,6 +36,8 @@
  *
  * {@hide}
  */
+// Exported to Mainline modules; cannot use annotations
+// @android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class TokenBucket {
 
     private final int mFillDelta; // Time in ms it takes to generate one token.
diff --git a/core/java/com/android/internal/util/XmlPullParserWrapper.java b/core/java/com/android/internal/util/XmlPullParserWrapper.java
index efa17ef..375ea5c 100644
--- a/core/java/com/android/internal/util/XmlPullParserWrapper.java
+++ b/core/java/com/android/internal/util/XmlPullParserWrapper.java
@@ -29,6 +29,7 @@
 /**
  * Wrapper which delegates all calls through to the given {@link XmlPullParser}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class XmlPullParserWrapper implements XmlPullParser {
     private final XmlPullParser mWrapped;
 
diff --git a/core/java/com/android/internal/util/XmlSerializerWrapper.java b/core/java/com/android/internal/util/XmlSerializerWrapper.java
index 9f28d90a..f541e1f 100644
--- a/core/java/com/android/internal/util/XmlSerializerWrapper.java
+++ b/core/java/com/android/internal/util/XmlSerializerWrapper.java
@@ -28,6 +28,7 @@
 /**
  * Wrapper which delegates all calls through to the given {@link XmlSerializer}.
  */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class XmlSerializerWrapper implements XmlSerializer {
     private final XmlSerializer mWrapped;
 
diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java
index af5e3b3..7e554cf 100644
--- a/core/java/com/android/internal/util/XmlUtils.java
+++ b/core/java/com/android/internal/util/XmlUtils.java
@@ -51,6 +51,7 @@
 import java.util.Set;
 
 /** {@hide} */
+@android.ravenwood.annotation.RavenwoodKeepWholeClass
 public class XmlUtils {
     private static final String STRING_ARRAY_SEPARATOR = ":";
 
diff --git a/core/java/com/android/internal/view/IInputMethodManager.aidl b/core/java/com/android/internal/view/IInputMethodManager.aidl
index 595bf3b..e95127b 100644
--- a/core/java/com/android/internal/view/IInputMethodManager.aidl
+++ b/core/java/com/android/internal/view/IInputMethodManager.aidl
@@ -17,12 +17,14 @@
 package com.android.internal.view;
 
 import android.os.ResultReceiver;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputMethodInfo;
 import android.view.inputmethod.InputMethodSubtype;
 import android.view.inputmethod.EditorInfo;
 import android.window.ImeOnBackInvokedDispatcher;
 
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IImeTracker;
 import com.android.internal.inputmethod.IInputMethodClient;
 import com.android.internal.inputmethod.IRemoteAccessibilityInputConnection;
@@ -144,6 +146,9 @@
 
     /** Start Stylus handwriting session **/
     void startStylusHandwriting(in IInputMethodClient client);
+    oneway void startConnectionlessStylusHandwriting(in IInputMethodClient client, int userId,
+            in CursorAnchorInfo cursorAnchorInfo, in String delegatePackageName,
+            in String delegatorPackageName, in IConnectionlessHandwritingCallback callback);
 
     /** Prepares delegation of starting stylus handwriting session to a different editor **/
     void prepareStylusHandwritingDelegation(in IInputMethodClient client,
@@ -158,7 +163,7 @@
     /** Returns {@code true} if currently selected IME supports Stylus handwriting. */
     @JavaPassthrough(annotation="@android.annotation.RequiresPermission(value = "
             + "android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, conditional = true)")
-    boolean isStylusHandwritingAvailableAsUser(int userId);
+    boolean isStylusHandwritingAvailableAsUser(int userId, boolean connectionless);
 
     /** add virtual stylus id for test Stylus handwriting session **/
     @EnforcePermission("TEST_INPUT_METHOD")
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index b5b3a48..e46b8d7 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -1615,7 +1615,8 @@
                         STRONG_AUTH_REQUIRED_AFTER_TIMEOUT,
                         STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN,
                         STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT,
-                        SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED})
+                        SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED,
+                        SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST})
         @Retention(RetentionPolicy.SOURCE)
         public @interface StrongAuthFlags {}
 
@@ -1641,7 +1642,8 @@
 
         /**
          * Strong authentication is required because the user has been locked out after too many
-         * attempts.
+         * attempts using primary auth methods (i.e. PIN/pattern/password) from the lock screen,
+         * Android Settings, and BiometricPrompt where user authentication is required.
          */
         public static final int STRONG_AUTH_REQUIRED_AFTER_LOCKOUT = 0x8;
 
@@ -1674,12 +1676,23 @@
         public static final int SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED = 0x100;
 
         /**
+         * Some authentication is required because adaptive auth has requested to lock device due to
+         * repeated failed primary auth (i.e. PIN/pattern/password) or biometric auth attempts which
+         * can come from Android Settings or BiometricPrompt where user authentication is required,
+         * in addition to from the lock screen. When a risk is determined, adaptive auth will
+         * proactively prompt the lock screen and will require users to re-enter the device with
+         * either primary auth or biometric auth (if not prohibited by other flags).
+         */
+        public static final int SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST = 0x200;
+
+        /**
          * Strong auth flags that do not prevent biometric methods from being accepted as auth.
          * If any other flags are set, biometric authentication is disabled.
          */
         private static final int ALLOWING_BIOMETRIC = STRONG_AUTH_NOT_REQUIRED
                 | SOME_AUTH_REQUIRED_AFTER_USER_REQUEST
-                | SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED;
+                | SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED
+                | SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
 
         private final SparseIntArray mStrongAuthRequiredForUser = new SparseIntArray();
         private final H mHandler;
diff --git a/core/java/com/android/internal/widget/NotificationOptimizedLinearLayout.java b/core/java/com/android/internal/widget/NotificationOptimizedLinearLayout.java
index b5e9b8f..0ceba25 100644
--- a/core/java/com/android/internal/widget/NotificationOptimizedLinearLayout.java
+++ b/core/java/com/android/internal/widget/NotificationOptimizedLinearLayout.java
@@ -53,6 +53,7 @@
  * - LinearLayout doesn't have <code>weightSum</code>.
  * - Horizontal LinearLayout's width should be measured EXACTLY.
  * - Horizontal LinearLayout shouldn't need baseLineAlignment.
+ * - Horizontal LinearLayout shouldn't have any child that has negative left or right margin.
  * - Vertical LinearLayout shouldn't have MATCH_PARENT children when it is not measured EXACTLY.
  *
  * @hide
@@ -88,7 +89,7 @@
         final View weightedChildView = getSingleWeightedChild();
         mShouldUseOptimizedLayout =
                 isUseOptimizedLinearLayoutFlagEnabled() && weightedChildView != null
-                        && isLinearLayoutUsable(widthMeasureSpec, heightMeasureSpec);
+                        && isOptimizationPossible(widthMeasureSpec, heightMeasureSpec);
 
         if (mShouldUseOptimizedLayout) {
             onMeasureOptimized(weightedChildView, widthMeasureSpec, heightMeasureSpec);
@@ -118,7 +119,7 @@
      * @param heightMeasureSpec The height measurement specification.
      * @return `true` if optimization is possible, `false` otherwise.
      */
-    private boolean isLinearLayoutUsable(int widthMeasureSpec, int heightMeasureSpec) {
+    private boolean isOptimizationPossible(int widthMeasureSpec, int heightMeasureSpec) {
         final boolean hasWeightSum = getWeightSum() > 0.0f;
         if (hasWeightSum) {
             logSkipOptimizedOnMeasure("Has weightSum.");
@@ -142,10 +143,36 @@
             logSkipOptimizedOnMeasure("Need to apply baseline.");
             return false;
         }
+
+        if (requiresNegativeMarginHandlingForHorizontalLinearLayout()) {
+            logSkipOptimizedOnMeasure("Need to handle negative margins.");
+            return false;
+        }
         return true;
     }
 
     /**
+     * @return if the horizontal linearlayout requires to handle negative margins in its children.
+     * In that case, we can't use excessSpace because LinearLayout negative margin handling for
+     * excess space and WRAP_CONTENT is different.
+     */
+    private boolean requiresNegativeMarginHandlingForHorizontalLinearLayout() {
+        if (getOrientation() == VERTICAL) {
+            return false;
+        }
+
+        final List<View> activeChildren = getActiveChildren();
+        for (int i = 0; i < activeChildren.size(); i++) {
+            final View child = activeChildren.get(i);
+            final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
+            if (lp.leftMargin < 0 || lp.rightMargin < 0) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
      * @return if the vertical linearlayout requires match_parent children remeasure
      */
     private boolean requiresMatchParentRemeasureForVerticalLinearLayout(int widthMeasureSpec) {
@@ -337,94 +364,81 @@
      */
     private void measureVerticalOptimized(@NonNull View weightedChildView, int widthMeasureSpec,
             int heightMeasureSpec) {
-        final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
-        final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
+        int totalLength = 0;
         int maxWidth = 0;
-        int usedHeight = 0;
-        final List<View> activeChildren = getActiveChildren();
-        final int activeChildCount = activeChildren.size();
+        final int availableHeight = MeasureSpec.getSize(heightMeasureSpec);
+        final int heightMode = MeasureSpec.getMode(heightMeasureSpec);
 
-        final boolean isContentFirstItem = !activeChildren.isEmpty() && activeChildren.get(0)
-                == weightedChildView;
-
-        final boolean isContentLastItem = !activeChildren.isEmpty() && activeChildren.get(
-                activeChildCount - 1) == weightedChildView;
-
-        final int horizontalPaddings = getPaddingLeft() + getPaddingRight();
-
-        // 1. Measure other child views.
-        for (int i = 0; i < activeChildCount; i++) {
-            final View child = activeChildren.get(i);
-            if (child == weightedChildView) {
+        // 1. Measure all unweighted children
+        for (int i = 0; i < getChildCount(); i++) {
+            final View child = getChildAt(i);
+            if (child == null || child.getVisibility() == GONE) {
                 continue;
             }
+
             final MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
 
-            int requiredVerticalPadding = lp.topMargin + lp.bottomMargin;
-            if (!isContentFirstItem && i == 0) {
-                requiredVerticalPadding += getPaddingTop();
-            }
-            if (!isContentLastItem && i == activeChildCount - 1) {
-                requiredVerticalPadding += getPaddingBottom();
+            if (child == weightedChildView) {
+                // In excessMode, LinearLayout add  weighted child top and bottom margins to
+                // totalLength when their sum is positive.
+                if (lp.height == 0 && heightMode == MeasureSpec.EXACTLY) {
+                    totalLength = Math.max(totalLength, totalLength + lp.topMargin
+                            + lp.bottomMargin);
+                }
+                continue;
             }
 
-            child.measure(ViewGroup.getChildMeasureSpec(widthMeasureSpec,
-                            horizontalPaddings + lp.leftMargin + lp.rightMargin,
-                            child.getLayoutParams().width),
-                    ViewGroup.getChildMeasureSpec(heightMeasureSpec, requiredVerticalPadding,
-                            lp.height));
+            measureChildWithMargins(child, widthMeasureSpec, 0, heightMeasureSpec, 0);
+            // LinearLayout only adds measured children heights and its top and bottom margins
+            // to totalLength when their sum is positive.
+            totalLength = Math.max(totalLength,
+                    totalLength + child.getMeasuredHeight() + lp.topMargin + lp.bottomMargin);
             maxWidth = Math.max(maxWidth,
                     child.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
-            usedHeight += child.getMeasuredHeight() + requiredVerticalPadding;
         }
 
-        // measure content
+        // Add padding to totalLength that we are going to use for remaining space.
+        totalLength += mPaddingTop + mPaddingBottom;
+
+        // 2. generate measure spec for weightedChildView.
         final MarginLayoutParams lp = (MarginLayoutParams) weightedChildView.getLayoutParams();
+        // height should be AT_MOST for non EXACT cases.
+        final int childHeightMeasureMode =
+                heightMode == MeasureSpec.EXACTLY ? MeasureSpec.EXACTLY : MeasureSpec.AT_MOST;
+        final int childHeightMeasureSpec;
 
-        int usedSpace = usedHeight + lp.topMargin + lp.bottomMargin;
-        if (isContentFirstItem) {
-            usedSpace += getPaddingTop();
+        // In excess mode, LinearLayout measures weighted children with remaining space. Otherwise,
+        // it is measured with remaining space just like other children.
+        if (lp.height == 0 && heightMode == MeasureSpec.EXACTLY) {
+            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
+                    Math.max(0, availableHeight - totalLength), childHeightMeasureMode);
+        } else {
+            final int usedHeight = lp.topMargin + lp.bottomMargin + totalLength;
+            childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
+                    Math.max(0, availableHeight - usedHeight), childHeightMeasureMode);
         }
-        if (isContentLastItem) {
-            usedSpace += getPaddingBottom();
-        }
+        final int childWidthMeasureSpec = getChildMeasureSpec(widthMeasureSpec,
+                mPaddingLeft + mPaddingRight + lp.leftMargin + lp.rightMargin, lp.width);
 
-        final int availableWidth = MeasureSpec.getSize(widthMeasureSpec);
-        final int availableHeight = MeasureSpec.getSize(heightMeasureSpec);
-
-        final int childWidthMeasureSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec,
-                horizontalPaddings + lp.leftMargin + lp.rightMargin, lp.width);
-
-        // 2. Calculate remaining height for weightedChildView.
-        final int childHeightMeasureSpec = MeasureSpec.makeMeasureSpec(
-                Math.max(0, availableHeight - usedSpace), MeasureSpec.AT_MOST);
-
-        // 3. Measure weightedChildView with the remaining remaining space.
+        // 3. Measure weightedChildView with the remaining space.
         weightedChildView.measure(childWidthMeasureSpec, childHeightMeasureSpec);
+
+        totalLength = Math.max(totalLength,
+                totalLength + weightedChildView.getMeasuredHeight() + lp.topMargin
+                        + lp.bottomMargin);
+
         maxWidth = Math.max(maxWidth,
                 weightedChildView.getMeasuredWidth() + lp.leftMargin + lp.rightMargin);
 
-        final int totalUsedHeight = usedSpace + weightedChildView.getMeasuredHeight();
+        // Add padding to width
+        maxWidth += getPaddingLeft() + getPaddingRight();
 
-        final int measuredWidth;
-        if (widthMode == MeasureSpec.EXACTLY) {
-            measuredWidth = availableWidth;
-        } else {
-            measuredWidth = maxWidth + getPaddingStart() + getPaddingEnd();
-        }
-
-        final int measuredHeight;
-        if (heightMode == MeasureSpec.EXACTLY) {
-            measuredHeight = availableHeight;
-        } else {
-            measuredHeight = totalUsedHeight;
-        }
-
-        // 4. Set the container size
-        setMeasuredDimension(
-                resolveSize(Math.max(getSuggestedMinimumWidth(), measuredWidth),
-                        widthMeasureSpec),
-                Math.max(getSuggestedMinimumHeight(), measuredHeight));
+        // Resolve final dimensions
+        final int finalWidth = resolveSizeAndState(Math.max(maxWidth, getSuggestedMinimumWidth()),
+                widthMeasureSpec, 0);
+        final int finalHeight = resolveSizeAndState(
+                Math.max(totalLength, getSuggestedMinimumHeight()), heightMeasureSpec, 0);
+        setMeasuredDimension(finalWidth, finalHeight);
     }
 
     @NonNull
diff --git a/core/java/com/android/server/pm/pkg/AndroidPackage.java b/core/java/com/android/server/pm/pkg/AndroidPackage.java
index 096f246..d430fe3 100644
--- a/core/java/com/android/server/pm/pkg/AndroidPackage.java
+++ b/core/java/com/android/server/pm/pkg/AndroidPackage.java
@@ -1507,4 +1507,11 @@
      * @hide
      */
     boolean isVisibleToInstantApps();
+
+    /**
+     * @see ApplicationInfo#allowCrossUidActivitySwitchFromBelow
+     * @see R.styleable#AndroidManifestApplication_allowCrossUidActivitySwitchFromBelow
+     * @hide
+     */
+    boolean isAllowCrossUidActivitySwitchFromBelow();
 }
diff --git a/core/jni/LayoutlibLoader.cpp b/core/jni/LayoutlibLoader.cpp
index 200ddef..01e9f43 100644
--- a/core/jni/LayoutlibLoader.cpp
+++ b/core/jni/LayoutlibLoader.cpp
@@ -416,11 +416,17 @@
                                                            env->NewStringUTF("icu.data.path"),
                                                            env->NewStringUTF(""));
     const char* path = env->GetStringUTFChars(stringPath, 0);
-    bool icuInitialized = init_icu(path);
-    env->ReleaseStringUTFChars(stringPath, path);
-    if (!icuInitialized) {
-        return JNI_ERR;
+
+    if (strcmp(path, "**n/a**") != 0) {
+        bool icuInitialized = init_icu(path);
+        if (!icuInitialized) {
+            fprintf(stderr, "Failed to initialize ICU\n");
+            return JNI_ERR;
+        }
+    } else {
+        fprintf(stderr, "Skip initializing ICU\n");
     }
+    env->ReleaseStringUTFChars(stringPath, path);
 
     jstring useJniProperty =
             (jstring)env->CallStaticObjectMethod(system, getPropertyMethod,
@@ -449,12 +455,18 @@
     // Use English locale for number format to ensure correct parsing of floats when using strtof
     setlocale(LC_NUMERIC, "en_US.UTF-8");
 
-    auto keyboardPathsString =
+    auto keyboardPathsJString =
             (jstring)env->CallStaticObjectMethod(system, getPropertyMethod,
                                                  env->NewStringUTF("keyboard_paths"),
                                                  env->NewStringUTF(""));
-    vector<string> keyboardPaths = parseCsv(env, keyboardPathsString);
-    init_keyboard(env, keyboardPaths);
+    const char* keyboardPathsString = env->GetStringUTFChars(keyboardPathsJString, 0);
+    if (strcmp(keyboardPathsString, "**n/a**") != 0) {
+        vector<string> keyboardPaths = parseCsv(env, keyboardPathsJString);
+        init_keyboard(env, keyboardPaths);
+    } else {
+        fprintf(stderr, "Skip initializing keyboard\n");
+    }
+    env->ReleaseStringUTFChars(keyboardPathsJString, keyboardPathsString);
 
     return JNI_VERSION_1_6;
 }
diff --git a/core/jni/android_os_VintfObject.cpp b/core/jni/android_os_VintfObject.cpp
index ce4a337..8dc9d0a 100644
--- a/core/jni/android_os_VintfObject.cpp
+++ b/core/jni/android_os_VintfObject.cpp
@@ -39,6 +39,7 @@
 using vintf::HalManifest;
 using vintf::Level;
 using vintf::SchemaType;
+using vintf::SepolicyVersion;
 using vintf::to_string;
 using vintf::toXml;
 using vintf::Version;
@@ -139,7 +140,7 @@
         return nullptr;
     }
 
-    Version latest;
+    SepolicyVersion latest;
     for (const auto& range : versions) {
         latest = std::max(latest, range.maxVer());
     }
diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp
index 3d0ab4e..3ee15ab 100644
--- a/core/jni/android_util_AssetManager.cpp
+++ b/core/jni/android_util_AssetManager.cpp
@@ -314,8 +314,7 @@
 }
 
 static void NativeSetApkAssets(JNIEnv* env, jclass /*clazz*/, jlong ptr,
-                               jobjectArray apk_assets_array, jboolean invalidate_caches,
-                               jboolean preset) {
+                               jobjectArray apk_assets_array, jboolean invalidate_caches) {
   ATRACE_NAME("AssetManager::SetApkAssets");
 
   const jsize apk_assets_len = env->GetArrayLength(apk_assets_array);
@@ -344,11 +343,7 @@
   }
 
   auto assetmanager = LockAndStartAssetManager(ptr);
-  if (preset) {
-    assetmanager->PresetApkAssets(apk_assets);
-  } else {
-    assetmanager->SetApkAssets(apk_assets, invalidate_caches);
-  }
+  assetmanager->SetApkAssets(apk_assets, invalidate_caches);
 }
 
 static void NativeSetConfiguration(JNIEnv* env, jclass /*clazz*/, jlong ptr, jint mcc, jint mnc,
@@ -358,7 +353,7 @@
                                    jint screen_height, jint smallest_screen_width_dp,
                                    jint screen_width_dp, jint screen_height_dp, jint screen_layout,
                                    jint ui_mode, jint color_mode, jint grammatical_gender,
-                                   jint major_version, jboolean force_refresh) {
+                                   jint major_version) {
   ATRACE_NAME("AssetManager::SetConfiguration");
 
   const jsize locale_count = (locales == NULL) ? 0 : env->GetArrayLength(locales);
@@ -418,7 +413,7 @@
   }
 
   auto assetmanager = LockAndStartAssetManager(ptr);
-  assetmanager->SetConfigurations(std::move(configs), force_refresh != JNI_FALSE);
+  assetmanager->SetConfigurations(configs);
   assetmanager->SetDefaultLocale(default_locale_int);
 }
 
@@ -1527,8 +1522,8 @@
         // AssetManager setup methods.
         {"nativeCreate", "()J", (void*)NativeCreate},
         {"nativeDestroy", "(J)V", (void*)NativeDestroy},
-        {"nativeSetApkAssets", "(J[Landroid/content/res/ApkAssets;ZZ)V", (void*)NativeSetApkAssets},
-        {"nativeSetConfiguration", "(JIILjava/lang/String;[Ljava/lang/String;IIIIIIIIIIIIIIIIZ)V",
+        {"nativeSetApkAssets", "(J[Landroid/content/res/ApkAssets;Z)V", (void*)NativeSetApkAssets},
+        {"nativeSetConfiguration", "(JIILjava/lang/String;[Ljava/lang/String;IIIIIIIIIIIIIIII)V",
          (void*)NativeSetConfiguration},
         {"nativeGetAssignedPackageIdentifiers", "(JZZ)Landroid/util/SparseArray;",
          (void*)NativeGetAssignedPackageIdentifiers},
diff --git a/core/proto/OWNERS b/core/proto/OWNERS
index c65794e..b900fa6 100644
--- a/core/proto/OWNERS
+++ b/core/proto/OWNERS
@@ -22,7 +22,6 @@
 per-file android/hardware/location/context_hub_info.proto = file:/services/core/java/com/android/server/location/contexthub/OWNERS
 
 # Biometrics
-jaggies@google.com
 jbolinger@google.com
 
 # Launcher
diff --git a/core/proto/android/app/appstartinfo.proto b/core/proto/android/app/appstartinfo.proto
index 8c33041..d9ed911 100644
--- a/core/proto/android/app/appstartinfo.proto
+++ b/core/proto/android/app/appstartinfo.proto
@@ -39,4 +39,5 @@
     optional AppStartStartType start_type = 9;
     optional bytes start_intent = 10;
     optional AppStartLaunchMode launch_mode = 11;
+    optional bool was_force_stopped = 12;
 }
diff --git a/core/proto/android/content/package_item_info.proto b/core/proto/android/content/package_item_info.proto
index b9905e8..b7408a4 100644
--- a/core/proto/android/content/package_item_info.proto
+++ b/core/proto/android/content/package_item_info.proto
@@ -113,6 +113,7 @@
         optional int32 enable_gwp_asan = 19;
         optional int32 enable_memtag = 20;
         optional bool native_heap_zero_init = 21;
+        optional bool allow_cross_uid_activity_switch_from_below = 22;
     }
     optional Detail detail = 17;
     repeated string overlay_paths = 18;
diff --git a/core/proto/android/hardware/sensorprivacy.proto b/core/proto/android/hardware/sensorprivacy.proto
index 9359528..e368c6a 100644
--- a/core/proto/android/hardware/sensorprivacy.proto
+++ b/core/proto/android/hardware/sensorprivacy.proto
@@ -91,6 +91,9 @@
     enum StateType {
         ENABLED = 1;
         DISABLED = 2;
+        AUTO_DRIVER_ASSISTANCE_HELPFUL_APPS = 3;
+        AUTO_DRIVER_ASSISTANCE_REQUIRED_APPS = 4;
+        AUTO_DRIVER_ASSISTANCE_APPS = 5;
     }
 
     // DEPRECATED
@@ -134,4 +137,4 @@
     // Source for which sensor privacy was toggled.
     optional Source source = 1;
 
-}
\ No newline at end of file
+}
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index c62e536..4fc9b40 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -144,6 +144,7 @@
         optional SettingProto long_press_home_enabled = 11 [ (android.privacy).dest = DEST_AUTOMATIC ];
         optional SettingProto search_press_hold_nav_handle_enabled = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
         optional SettingProto search_long_press_home_enabled = 13 [ (android.privacy).dest = DEST_AUTOMATIC ];
+        optional SettingProto visual_query_accessibility_detection_enabled = 14 [ (android.privacy).dest = DEST_AUTOMATIC ];
     }
     optional Assist assist = 7;
 
diff --git a/core/res/Android.bp b/core/res/Android.bp
index 34c4045..277824c 100644
--- a/core/res/Android.bp
+++ b/core/res/Android.bp
@@ -154,6 +154,14 @@
     },
 
     generate_product_characteristics_rro: true,
+
+    flags_packages: [
+        "android.content.pm.flags-aconfig",
+        "android.provider.flags-aconfig",
+        "camera_platform_flags",
+        "com.android.net.flags-aconfig",
+        "com.android.window.flags.window-aconfig",
+    ],
 }
 
 java_genrule {
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index a425bb0..71f06f1 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -835,6 +835,8 @@
     <!-- Added in V -->
     <protected-broadcast android:name="android.intent.action.PROFILE_AVAILABLE" />
     <protected-broadcast android:name="android.intent.action.PROFILE_UNAVAILABLE" />
+    <protected-broadcast android:name="android.app.action.CONSOLIDATED_NOTIFICATION_POLICY_CHANGED" />
+    <protected-broadcast android:name="android.intent.action.MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED" />
 
     <!-- ====================================================================== -->
     <!--                          RUNTIME PERMISSIONS                           -->
@@ -892,7 +894,8 @@
                 android:permissionGroup="android.permission-group.UNDEFINED"
                 android:label="@string/permlab_writeVerificationStateE2eeContactKeys"
                 android:description="@string/permdesc_writeVerificationStateE2eeContactKeys"
-                android:protectionLevel="signature|privileged" />
+                android:protectionLevel="signature|privileged"
+                android:featureFlag="android.provider.user_keys" />
 
     <!-- Allows an application to set default account for new contacts.
         <p> This permission is only granted to system applications fulfilling the Contacts app role.
@@ -1728,7 +1731,18 @@
         android:permissionGroup="android.permission-group.UNDEFINED"
         android:label="@string/permlab_cameraHeadlessSystemUser"
         android:description="@string/permdesc_cameraHeadlessSystemUser"
-        android:protectionLevel="signature" />
+        android:protectionLevel="signature"
+        android:featureFlag="com.android.internal.camera.flags.camera_hsum_permission" />
+
+
+    <!-- @SystemApi Allows camera access of allowlisted driver assistance apps
+         to be controlled separately.
+         <p> Not for use by third-party applications.
+         @FlaggedApi("com.android.internal.camera.flags.camera_privacy_allowlist")
+         @hide
+    -->
+    <permission android:name="android.permission.CAMERA_PRIVACY_ALLOWLIST"
+        android:protectionLevel="signature|privileged" />
 
     <!-- ====================================================================== -->
     <!-- Permissions for accessing the device sensors                           -->
@@ -2321,7 +2335,8 @@
         @hide This should only be used by system apps.
     -->
     <permission android:name="android.permission.REGISTER_NSD_OFFLOAD_ENGINE"
-        android:protectionLevel="signature" />
+        android:protectionLevel="signature"
+        android:featureFlag="com.android.net.flags.register_nsd_offload_engine" />
 
     <!-- ======================================= -->
     <!-- Permissions for short range, peripheral networks -->
@@ -2390,7 +2405,8 @@
          them from running without explicit user action.
     -->
     <permission android:name="android.permission.QUARANTINE_APPS"
-        android:protectionLevel="signature|verifier" />
+        android:protectionLevel="signature|verifier"
+        android:featureFlag="android.content.pm.quarantined_enabled" />
 
     <!-- Allows applications to discover and pair bluetooth devices.
          <p>Protection level: normal
@@ -2650,7 +2666,8 @@
          @FlaggedApi("com.android.window.flags.screen_recording_callbacks")
     -->
     <permission android:name="android.permission.DETECT_SCREEN_RECORDING"
-                android:protectionLevel="normal" />
+                android:protectionLevel="normal"
+                android:featureFlag="com.android.window.flags.screen_recording_callbacks" />
 
     <!-- ======================================== -->
     <!-- Permissions for factory reset protection -->
@@ -3617,6 +3634,13 @@
     <permission android:name="android.permission.MANAGE_DEVICE_POLICY_THREAD_NETWORK"
                 android:protectionLevel="internal|role" />
 
+    <!-- Allows an application to set policy related to sending assist content to a
+        privileged app such as the Assistant app.
+        @FlaggedApi("android.app.admin.flags.assist_content_user_restriction_enabled")
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_ASSIST_CONTENT"
+        android:protectionLevel="internal|role" />
+
     <!-- Allows an application to set policy related to windows.
         <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is
         required to call APIs protected by this permission on users different to the calling user.
@@ -3666,6 +3690,14 @@
     <permission android:name="android.permission.MANAGE_DEVICE_POLICY_SECURITY_LOGGING"
                 android:protectionLevel="internal|role" />
 
+    <!-- Allows an application to use audit logging API.
+        @hide
+        @SystemApi
+        @FlaggedApi("android.app.admin.flags.security_log_v2_enabled")
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING"
+        android:protectionLevel="internal|role" />
+
     <!-- Allows an application to set policy related to system updates.
         <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is
         required to call APIs protected by this permission on users different to the calling user.
@@ -3769,6 +3801,14 @@
     <permission android:name="android.permission.MANAGE_DEVICE_POLICY_LOCK"
                 android:protectionLevel="internal|role" />
 
+    <!-- Allows an application to manage policy related to theft detection.
+        @FlaggedApi("android.app.admin.flags.device_theft_api_enabled")
+        @hide
+        @SystemApi
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_THEFT_DETECTION"
+                android:protectionLevel="internal|role" />
+
     <!-- Allows an application to manage policy related to system apps.
         <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
         APIs protected by this permission on users different to the calling user.
@@ -3799,6 +3839,31 @@
     <permission android:name="android.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION"
                 android:protectionLevel="internal|role" />
 
+    <!-- Allows an application to set policy related to subscriptions downloaded by an admin.
+        <p>{@link Manifest.permission#MANAGE_DEVICE_POLICY_ACROSS_USERS_FULL} is required to call
+            APIs protected by this permission on users different to the calling user.
+        @FlaggedApi("android.app.admin.flags.esim_management_enabled") -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS"
+        android:protectionLevel="internal|role" />
+
+    <!-- Allows an application to manage policy related to block package uninstallation.
+        @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled")
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL"
+        android:protectionLevel="internal|role" />
+
+    <!-- Allows an application to manage policy related to camera toggle.
+        @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled")
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_CAMERA_TOGGLE"
+        android:protectionLevel="internal|role" />
+
+    <!-- Allows an application to manage policy related to microphone toggle.
+        @FlaggedApi("android.app.admin.flags.dedicated_device_control_api_enabled")
+    -->
+    <permission android:name="android.permission.MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE"
+        android:protectionLevel="internal|role" />
+
     <!-- Allows an application to set device policies outside the current user
         that are critical for securing data within the current user.
         <p>Holding this permission allows the use of other held MANAGE_DEVICE_POLICY_*
@@ -3829,6 +3894,7 @@
         @hide This is not a third-party API (intended for OEMs and system apps). -->
     <permission android:name="android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES"
                 android:protectionLevel="signature|installer" />
+    <uses-permission android:name="android.permission.MANAGE_ENHANCED_CONFIRMATION_STATES" />
 
     <!-- @SystemApi @hide Allows an application to set a device owner on retail demo devices.-->
     <permission android:name="android.permission.PROVISION_DEMO_DEVICE"
@@ -5921,7 +5987,7 @@
     <permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"
         android:protectionLevel="signature|privileged" />
 
-    <!-- Allows an application to collect usage infomation about brightness slider changes.
+    <!-- Allows an application to collect usage information about brightness slider changes.
          <p>Not for use by third-party applications.</p>
          @hide
          @SystemApi
@@ -7033,12 +7099,16 @@
 
     <!-- Allows the holder to read blocked numbers. See
          {@link android.provider.BlockedNumberContract}.
+         @SystemApi
+         @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies")
          @hide -->
     <permission android:name="android.permission.READ_BLOCKED_NUMBERS"
                 android:protectionLevel="signature" />
 
     <!-- Allows the holder to write blocked numbers. See
          {@link android.provider.BlockedNumberContract}.
+         @SystemApi
+         @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies")
          @hide -->
     <permission android:name="android.permission.WRITE_BLOCKED_NUMBERS"
                 android:protectionLevel="signature" />
@@ -7989,14 +8059,6 @@
     <permission android:name="android.permission.MANAGE_DISPLAYS"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows apps to reset hotword training data egress count for testing.
-     <p>CTS tests will use UiAutomation.AdoptShellPermissionIdentity() to gain access.
-     <p>Protection level: signature
-     @FlaggedApi("android.service.voice.flags.allow_training_data_egress_from_hds")
-     @hide -->
-    <permission android:name="android.permission.RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT"
-                android:protectionLevel="signature" />
-
     <!-- @SystemApi Allows an app to track all preparations for a complete factory reset.
      <p>Protection level: signature|privileged
      @FlaggedApi("android.permission.flags.factory_reset_prep_permission_apis")
diff --git a/core/res/OWNERS b/core/res/OWNERS
index 332ad2a..6924248 100644
--- a/core/res/OWNERS
+++ b/core/res/OWNERS
@@ -8,7 +8,6 @@
 hackbod@android.com
 hackbod@google.com
 ilyamaty@google.com
-jaggies@google.com
 jbolinger@google.com
 jsharkey@android.com
 jsharkey@google.com
diff --git a/core/res/res/drawable/ic_private_profile_badge.xml b/core/res/res/drawable/ic_private_profile_badge.xml
index 28c0f8a..b042c39 100644
--- a/core/res/res/drawable/ic_private_profile_badge.xml
+++ b/core/res/res/drawable/ic_private_profile_badge.xml
@@ -20,6 +20,6 @@
         android:viewportWidth="24"
         android:viewportHeight="24">
         <path
-            android:pathData="M10.5,15H13.5L12.925,11.775C13.258,11.608 13.517,11.367 13.7,11.05C13.9,10.733 14,10.383 14,10C14,9.45 13.8,8.983 13.4,8.6C13.017,8.2 12.55,8 12,8C11.45,8 10.975,8.2 10.575,8.6C10.192,8.983 10,9.45 10,10C10,10.383 10.092,10.733 10.275,11.05C10.475,11.367 10.742,11.608 11.075,11.775L10.5,15ZM12,22C9.683,21.417 7.767,20.092 6.25,18.025C4.75,15.942 4,13.633 4,11.1V5L12,2L20,5V11.1C20,13.633 19.242,15.942 17.725,18.025C16.225,20.092 14.317,21.417 12,22ZM12,19.9C13.733,19.35 15.167,18.25 16.3,16.6C17.433,14.95 18,13.117 18,11.1V6.375L12,4.125L6,6.375V11.1C6,13.117 6.567,14.95 7.7,16.6C8.833,18.25 10.267,19.35 12,19.9Z"
-            android:fillColor="@android:color/system_accent1_900"/>
+            android:pathData="M5,3H19C20.1,3 21,3.9 21,5V19C21,20.1 20.1,21 19,21H5C3.9,21 3,20.1 3,19V5C3,3.9 3.9,3 5,3ZM13.5,15.501L12.93,12.271C13.57,11.941 14,11.271 14,10.501C14,9.401 13.1,8.501 12,8.501C10.9,8.501 10,9.401 10,10.501C10,11.271 10.43,11.941 11.07,12.271L10.5,15.501H13.5Z"
+            android:fillColor="#3C4043"/>
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/ic_private_profile_icon_badge.xml b/core/res/res/drawable/ic_private_profile_icon_badge.xml
index 5cb6a9d..5f1f1b7 100644
--- a/core/res/res/drawable/ic_private_profile_icon_badge.xml
+++ b/core/res/res/drawable/ic_private_profile_icon_badge.xml
@@ -25,7 +25,7 @@
         android:translateX="42"
         android:translateY="42">
             <path
-                android:pathData="M10.5,15H13.5L12.925,11.775C13.258,11.608 13.517,11.367 13.7,11.05C13.9,10.733 14,10.383 14,10C14,9.45 13.8,8.983 13.4,8.6C13.017,8.2 12.55,8 12,8C11.45,8 10.975,8.2 10.575,8.6C10.192,8.983 10,9.45 10,10C10,10.383 10.092,10.733 10.275,11.05C10.475,11.367 10.742,11.608 11.075,11.775L10.5,15ZM12,22C9.683,21.417 7.767,20.092 6.25,18.025C4.75,15.942 4,13.633 4,11.1V5L12,2L20,5V11.1C20,13.633 19.242,15.942 17.725,18.025C16.225,20.092 14.317,21.417 12,22ZM12,19.9C13.733,19.35 15.167,18.25 16.3,16.6C17.433,14.95 18,13.117 18,11.1V6.375L12,4.125L6,6.375V11.1C6,13.117 6.567,14.95 7.7,16.6C8.833,18.25 10.267,19.35 12,19.9Z"
-                android:fillColor="@android:color/system_accent1_900"/>
+                android:pathData="M5,3H19C20.1,3 21,3.9 21,5V19C21,20.1 20.1,21 19,21H5C3.9,21 3,20.1 3,19V5C3,3.9 3.9,3 5,3ZM13.5,15.501L12.93,12.271C13.57,11.941 14,11.271 14,10.501C14,9.401 13.1,8.501 12,8.501C10.9,8.501 10,9.401 10,10.501C10,11.271 10.43,11.941 11.07,12.271L10.5,15.501H13.5Z"
+                android:fillColor="#3C4043"/>
     </group>
 </vector>
\ No newline at end of file
diff --git a/core/res/res/drawable/stat_sys_private_profile_status.xml b/core/res/res/drawable/stat_sys_private_profile_status.xml
index 98cc88d..429070e 100644
--- a/core/res/res/drawable/stat_sys_private_profile_status.xml
+++ b/core/res/res/drawable/stat_sys_private_profile_status.xml
@@ -21,5 +21,5 @@
         android:viewportHeight="24">
     <path
         android:fillColor="@android:color/white"
-        android:pathData="M10.5,15H13.5L12.925,11.775C13.258,11.608 13.517,11.367 13.7,11.05C13.9,10.733 14,10.383 14,10C14,9.45 13.8,8.983 13.4,8.6C13.017,8.2 12.55,8 12,8C11.45,8 10.975,8.2 10.575,8.6C10.192,8.983 10,9.45 10,10C10,10.383 10.092,10.733 10.275,11.05C10.475,11.367 10.742,11.608 11.075,11.775L10.5,15ZM12,22C9.683,21.417 7.767,20.092 6.25,18.025C4.75,15.942 4,13.633 4,11.1V5L12,2L20,5V11.1C20,13.633 19.242,15.942 17.725,18.025C16.225,20.092 14.317,21.417 12,22ZM12,19.9C13.733,19.35 15.167,18.25 16.3,16.6C17.433,14.95 18,13.117 18,11.1V6.375L12,4.125L6,6.375V11.1C6,13.117 6.567,14.95 7.7,16.6C8.833,18.25 10.267,19.35 12,19.9Z"/>
+        android:pathData="M5,3H19C20.1,3 21,3.9 21,5V19C21,20.1 20.1,21 19,21H5C3.9,21 3,20.1 3,19V5C3,3.9 3.9,3 5,3ZM13.5,15.501L12.93,12.271C13.57,11.941 14,11.271 14,10.501C14,9.401 13.1,8.501 12,8.501C10.9,8.501 10,9.401 10,10.501C10,11.271 10.43,11.941 11.07,12.271L10.5,15.501H13.5Z"/>
 </vector>
\ No newline at end of file
diff --git a/core/res/res/layout/app_perms_summary.xml b/core/res/res/layout/app_perms_summary.xml
index b8d93ac..509b988 100644
--- a/core/res/res/layout/app_perms_summary.xml
+++ b/core/res/res/layout/app_perms_summary.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 
-<!-- Describes permission item consisting of a group name and the list of permisisons under the group -->
+<!-- Describes permission item consisting of a group name and the list of permissions under the group -->
 
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 6803a07..cc6460e 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3643,6 +3643,18 @@
              <p> The default value is 40dp for {@link android.widget.TextView} and
              {@link android.widget.EditText}, and 0dp for all other views. -->
         <attr name="handwritingBoundsOffsetBottom" format="dimension" />
+
+        <!-- Sets whether this view renders sensitive content. -->
+        <!-- @FlaggedApi("android.view.flags.sensitive_content_app_protection_api") -->
+        <attr name="contentSensitivity">
+            <!-- Let the Android System use its heuristics to determine if the view renders
+             sensitive content. -->
+            <enum name="auto" value="0" />
+            <!-- This view renders sensitive content. -->
+            <enum name="sensitive" value="0x1" />
+            <!-- This view doesn't render sensitive content. -->
+            <enum name="notSensitive" value="0x2" />
+        </attr>
     </declare-styleable>
 
     <!-- Attributes that can be assigned to a tag for a particular View. -->
@@ -3968,6 +3980,26 @@
             {@link android.inputmethodservice.InputMethodService#onFinishInput()}.
         -->
         <attr name="supportsStylusHandwriting" format="boolean" />
+        <!-- Specifies whether the IME supports connectionless stylus handwriting sessions. A
+             connectionless session differs from a regular session in that the IME does not use an
+             input connection to communicate with a text editor. Instead, the IME directly returns
+             recognised handwritten text via an {@link
+             android.inputmethodservice.InputMethodService} handwriting lifecycle API.
+
+             <p>If the IME supports connectionless sessions, apps or framework may start a
+             connectionless session when a stylus motion event sequence begins. {@link
+             android.inputmethodservice.InputMethodService#onStartConnectionlessStylusHandwriting}
+             is called. If the IME is ready for stylus input, it should return {code true} to start
+             the basic mode session. As in the regular session, the IME will receive stylus motion
+             events to the stylus handwriting window and should render ink to a view in this window.
+             When the user has stopped handwriting, the IME should end the session and deliver the
+             result by calling {@link
+             android.inputmethodservice.InputMethodService#finishConnectionlessStylusHandwriting}.
+
+             The default value is {code false}. If {code true}, {@link
+             android.R.attr#supportsStylusHandwriting} should also be {code true}.
+        -->
+        <attr name="supportsConnectionlessStylusHandwriting" format="boolean" />
         <!-- Class name of an activity that allows the user to modify the stylus handwriting
             settings for this service -->
         <attr name="stylusHandwritingSettingsActivity" format="string" />
@@ -5859,6 +5891,17 @@
           use glyph bound's as a source of text width.  -->
         <!-- @FlaggedApi("com.android.text.flags.use_bounds_for_width") -->
         <attr name="useBoundsForWidth" format="boolean" />
+
+
+        <!-- Whether to shift the drawing offset for prevent clipping start drawing offset.
+          This value is ignored when the useBoundsForWidth attribute is false.
+
+          If this value is false, the TextView draws text from the zero X coordinate. This is
+          useful for aligning multiple TextViews vertically.
+          If this value is true, the TextView shift the drawing offset not to clip the
+          stroke in the region where the X coordinate is negative. -->
+        <!-- @FlaggedApi("com.android.text.flags.use_bounds_for_width") -->
+        <attr name="shiftDrawingOffsetForStartOverhang" format="boolean" />
         <!-- Whether to use the locale preferred line height for the minimum line height.
 
           This flag is useful for preventing jitter of entering letters into empty EditText.
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 4741012..b2e0be7c 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -1618,13 +1618,15 @@
         <!-- Data (photo, file, account) upload/download, backup/restore, import/export, fetch,
             transfer over network between device and cloud.
 
-            <p>For apps with <code>targetSdkVersion</code>
-            {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE} and above, this type should NOT
-            be used: calling
-            {@link android.app.Service#startForeground(int, android.app.Notification, int)} with
-            this type on devices running {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}
-            is still allowed, but calling it with this type on devices running future platform
-            releases may get a {@link android.app.InvalidForegroundServiceTypeException}.
+            <p><b>THIS TYPE IS DEPRECATED.</b>
+            <p><em>Note: For apps with <code>targetSdkVersion</code>
+            {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} and above, this type should
+            <b>NOT</b> be used: calling
+            {@link android.app.Service#startForeground(int, android.app.Notification, int)}
+            with this type on devices running
+            {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM} is still allowed, but it may
+            throw an {@link android.app.InvalidForegroundServiceTypeException} in future platform
+            releases.</em>
         -->
         <flag name="dataSync" value="0x01" />
         <!-- Music, video, news or other media play.
@@ -1917,6 +1919,12 @@
              try to load its code when launching components.  The default is true
              for normal behavior. -->
         <attr name="hasCode" format="boolean" />
+        <!-- Specifies if activities can be launched on top of this application by activities from
+             other applications in the same task. If set to false, activity launches which would
+             replace this application with another when in the user's view will be blocked.
+             The default is true. -->
+        <!-- @FlaggedApi("android.security.asm_restrictions_enabled") -->
+        <attr name="allowCrossUidActivitySwitchFromBelow" format="boolean" />
         <attr name="persistent" />
         <attr name="persistentWhenFeatureAvailable" />
         <attr name="requiredForAllUsers" />
@@ -3287,7 +3295,8 @@
              {@link java.lang.SecurityException}.
 
              <p> Note that the enforcement works for content URIs inside
-             {@link android.content.Intent#getData} and {@link android.content.Intent#getClipData}.
+             {@link android.content.Intent#getData}, {@link android.content.Intent#EXTRA_STREAM},
+             and {@link android.content.Intent#getClipData}.
              @FlaggedApi("android.security.content_uri_permission_apis") -->
         <attr name="requireContentUriPermissionFromCaller" format="string">
             <!-- Default, no specific permissions are required. -->
diff --git a/core/res/res/values/config_telephony.xml b/core/res/res/values/config_telephony.xml
index 78ce2d9..104b7cd 100644
--- a/core/res/res/values/config_telephony.xml
+++ b/core/res/res/values/config_telephony.xml
@@ -58,6 +58,12 @@
     <integer name="auto_data_switch_availability_stability_time_threshold_millis">10000</integer>
     <java-symbol type="integer" name="auto_data_switch_availability_stability_time_threshold_millis" />
 
+    <!-- Define the bar of considering the RAT and signal strength advantage of a subscription to be
+     stable in milliseconds, where 0 means immediate switch, and negative milliseconds indicates the
+     switch base on RAT and signal strength feature is disabled.-->
+    <integer name="auto_data_switch_performance_stability_time_threshold_millis">120000</integer>
+    <java-symbol type="integer" name="auto_data_switch_performance_stability_time_threshold_millis" />
+
     <!-- Define the maximum retry times when a validation for switching failed.-->
     <integer name="auto_data_switch_validation_max_retry">7</integer>
     <java-symbol type="integer" name="auto_data_switch_validation_max_retry" />
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 0acccee..291a593 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -65,7 +65,7 @@
     <!-- Width of the navigation bar when it is placed vertically on the screen -->
     <dimen name="navigation_bar_width">48dp</dimen>
     <!-- Height of the bottom taskbar not including decorations like rounded corners. -->
-    <dimen name="taskbar_frame_height">60dp</dimen>
+    <dimen name="taskbar_frame_height">56dp</dimen>
     <!-- How much we expand the touchable region of the status bar below the notch to catch touches
          that just start below the notch. -->
     <dimen name="display_cutout_touchable_region_size">12dp</dimen>
diff --git a/core/res/res/values/public-staging.xml b/core/res/res/values/public-staging.xml
index 58b2c61..8af8cb8 100644
--- a/core/res/res/values/public-staging.xml
+++ b/core/res/res/values/public-staging.xml
@@ -155,6 +155,16 @@
     <public name="languageSettingsActivity"/>
     <!-- @FlaggedApi("com.android.text.flags.fix_line_height_for_locale") -->
     <public name="useLocalePreferredLineHeightForMinimum"/>
+    <!-- @FlaggedApi("android.view.flags.sensitive_content_app_protection_api") -->
+    <public name="contentSensitivity" />
+    <!-- @FlaggedApi("android.view.inputmethod.connectionless_handwriting") -->
+    <public name="supportsConnectionlessStylusHandwriting" />
+    <!-- @FlaggedApi("android.nfc.Flags.FLAG_OBSERVE_MODE") -->
+    <public name="defaultToObserveMode"/>
+    <!-- @FlaggedApi("android.security.asm_restrictions_enabled") -->
+    <public name="allowCrossUidActivitySwitchFromBelow"/>
+    <!-- @FlaggedApi("com.android.text.flags.use_bounds_for_width") -->
+    <public name="shiftDrawingOffsetForStartOverhang" />
   </staging-public-group>
 
   <staging-public-group type="id" first-id="0x01bc0000">
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index be96cc2..e999695 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -1893,15 +1893,15 @@
     <string name="face_authenticated_confirmation_required">Face authenticated, please press confirm</string>
 
     <!-- Error message shown when the fingerprint hardware can't be accessed -->
-    <string name="fingerprint_error_hw_not_available">Fingerprint hardware not available.</string>
+    <string name="fingerprint_error_hw_not_available">Fingerprint hardware not available</string>
     <!-- Error message shown when the fingerprint hardware has run out of room for storing fingerprints -->
     <string name="fingerprint_error_no_space">Can\u2019t set up fingerprint</string>
     <!-- Error message shown when the fingerprint hardware timer has expired and the user needs to restart the operation. -->
     <string name="fingerprint_error_timeout">Fingerprint setup timed out. Try again.</string>
     <!-- Generic error message shown when the fingerprint operation (e.g. enrollment or authentication) is canceled. Generally not shown to the user-->
-    <string name="fingerprint_error_canceled">Fingerprint operation canceled.</string>
+    <string name="fingerprint_error_canceled">Fingerprint operation canceled</string>
     <!-- Generic error message shown when the fingerprint authentication operation is canceled due to user input. Generally not shown to the user -->
-    <string name="fingerprint_error_user_canceled">Fingerprint operation canceled by user.</string>
+    <string name="fingerprint_error_user_canceled">Fingerprint operation canceled by user</string>
     <!-- Generic error message shown when the fingerprint operation fails because too many attempts have been made. -->
     <string name="fingerprint_error_lockout">Too many attempts. Use screen lock instead.</string>
     <!-- Generic error message shown when the fingerprint operation fails because strong authentication is required -->
@@ -1909,13 +1909,13 @@
     <!-- Generic error message shown when the fingerprint hardware can't recognize the fingerprint -->
     <string name="fingerprint_error_unable_to_process">Can\u2019t process fingerprint. Try again.</string>
     <!-- Generic error message shown when the user has no enrolled fingerprints -->
-    <string name="fingerprint_error_no_fingerprints">No fingerprints enrolled.</string>
+    <string name="fingerprint_error_no_fingerprints">No fingerprints enrolled</string>
     <!-- Generic error message shown when the app requests fingerprint authentication on a device without a sensor -->
-    <string name="fingerprint_error_hw_not_present">This device does not have a fingerprint sensor.</string>
+    <string name="fingerprint_error_hw_not_present">This device does not have a fingerprint sensor</string>
     <!-- Generic error message shown when fingerprint is not available due to a security vulnerability. [CHAR LIMIT=50] -->
-    <string name="fingerprint_error_security_update_required">Sensor temporarily disabled.</string>
+    <string name="fingerprint_error_security_update_required">Sensor temporarily disabled</string>
     <!-- Generic error message shown when fingerprint needs calibration [CHAR LIMIT=150] -->
-    <string name="fingerprint_error_bad_calibration">Can\u2019t use fingerprint sensor. Visit a repair provider</string>
+    <string name="fingerprint_error_bad_calibration">Can\u2019t use fingerprint sensor. Visit a repair provider.</string>
     <!-- Generic error message shown when the power button has been pressed. [CHAR LIMIT=150] -->
     <string name="fingerprint_error_power_pressed">Power button pressed</string>
 
diff --git a/core/tests/BroadcastRadioTests/Android.bp b/core/tests/BroadcastRadioTests/Android.bp
index 6be553b..beffb9a 100644
--- a/core/tests/BroadcastRadioTests/Android.bp
+++ b/core/tests/BroadcastRadioTests/Android.bp
@@ -18,6 +18,7 @@
     // all of the 'license_kinds' from "frameworks_base_license"
     // to get the below license kinds:
     //   SPDX-license-identifier-Apache-2.0
+    default_team: "trendy_team_aaos_framework",
     default_applicable_licenses: ["frameworks_base_license"],
 }
 
diff --git a/core/tests/BroadcastRadioTests/TEST_MAPPING b/core/tests/BroadcastRadioTests/TEST_MAPPING
index b085a27..5637063 100644
--- a/core/tests/BroadcastRadioTests/TEST_MAPPING
+++ b/core/tests/BroadcastRadioTests/TEST_MAPPING
@@ -1,5 +1,5 @@
 {
-  "postsubmit": [
+  "presubmit": [
     {
       "name": "BroadcastRadioTests"
     }
diff --git a/core/tests/BroadcastRadioTests/src/android/hardware/radio/TunerAdapterTest.java b/core/tests/BroadcastRadioTests/src/android/hardware/radio/TunerAdapterTest.java
index 5aace81..e4cf7ac 100644
--- a/core/tests/BroadcastRadioTests/src/android/hardware/radio/TunerAdapterTest.java
+++ b/core/tests/BroadcastRadioTests/src/android/hardware/radio/TunerAdapterTest.java
@@ -286,7 +286,7 @@
         int scanStatus = mRadioTuner.scan(RadioTuner.DIRECTION_DOWN, /* skipSubChannel= */ false);
 
         verify(mTunerMock).seek(/* directionDown= */ true, /* skipSubChannel= */ false);
-        assertWithMessage("Status for scaning")
+        assertWithMessage("Status for scanning")
                 .that(scanStatus).isEqualTo(RadioManager.STATUS_OK);
         verify(mCallbackMock, timeout(CALLBACK_TIMEOUT_MS)).onProgramInfoChanged(FM_PROGRAM_INFO);
     }
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java
index 0806fa0..db95d7a 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java
@@ -99,7 +99,7 @@
         }
     }
 
-    public int getSoftApInterations() {
+    public int getSoftApIterations() {
         return mSoftApIterations;
     }
 
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
index 2327b20..48ef7e6 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
@@ -40,6 +40,7 @@
 import android.app.Application;
 import android.app.IApplicationThread;
 import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
 import android.app.ResourcesManager;
 import android.app.servertransaction.ActivityConfigurationChangeItem;
 import android.app.servertransaction.ActivityLifecycleItem;
@@ -706,6 +707,9 @@
         final TestActivity activity = mActivityTestRule.launchActivity(startIntent);
         final ActivityThread activityThread = activity.getActivityThread();
         final ActivityClientRecord r = getActivityClientRecord(activity);
+        if (android.app.Flags.enablePipUiStateCallbackOnEntering()) {
+            activity.mPipUiStateLatch = new CountDownLatch(1);
+        }
 
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
             activityThread.handlePictureInPictureRequested(r);
@@ -940,6 +944,11 @@
          * latch reaches 0.
          */
         volatile CountDownLatch mConfigLatch;
+        /**
+         * A latch used to notify tests that we're about to wait for the
+         * onPictureInPictureUiStateChanged callback.
+         */
+        volatile CountDownLatch mPipUiStateLatch;
 
         @Override
         protected void onCreate(Bundle savedInstanceState) {
@@ -974,6 +983,14 @@
             if (getIntent().getBooleanExtra(PIP_REQUESTED_OVERRIDE_ENTER, false)) {
                 enterPictureInPictureMode(new PictureInPictureParams.Builder().build());
                 mPipEntered = true;
+                // Await for onPictureInPictureUiStateChanged callback if applicable
+                if (mPipUiStateLatch != null) {
+                    try {
+                        mPipUiStateLatch.await(TIMEOUT_SEC, TimeUnit.SECONDS);
+                    } catch (InterruptedException e) {
+                        throw new IllegalStateException(e);
+                    }
+                }
                 return true;
             } else if (getIntent().getBooleanExtra(PIP_REQUESTED_OVERRIDE_SKIP, false)) {
                 mPipEnterSkipped = true;
@@ -982,6 +999,13 @@
             return super.onPictureInPictureRequested();
         }
 
+        @Override
+        public void onPictureInPictureUiStateChanged(PictureInPictureUiState pipState) {
+            if (mPipUiStateLatch != null && pipState.isEnteringPip()) {
+                mPipUiStateLatch.countDown();
+            }
+        }
+
         boolean pipRequested() {
             return mPipRequested;
         }
diff --git a/core/tests/coretests/src/android/app/assist/AssistStructureTest.java b/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
index 0e5f2e1..abeb08c 100644
--- a/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
+++ b/core/tests/coretests/src/android/app/assist/AssistStructureTest.java
@@ -22,11 +22,20 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
 import android.app.assist.AssistStructure.ViewNode;
 import android.app.assist.AssistStructure.ViewNodeBuilder;
 import android.app.assist.AssistStructure.ViewNodeParcelable;
 import android.content.Context;
+import android.credentials.CredentialOption;
+import android.credentials.GetCredentialException;
+import android.credentials.GetCredentialRequest;
+import android.credentials.GetCredentialResponse;
+import android.os.Bundle;
 import android.os.LocaleList;
+import android.os.OutcomeReceiver;
 import android.os.Parcel;
 import android.os.SystemClock;
 import android.text.InputFilter;
@@ -38,6 +47,7 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
 import androidx.test.InstrumentationRegistry;
 import androidx.test.rule.ActivityTestRule;
 import androidx.test.runner.AndroidJUnit4;
@@ -74,6 +84,28 @@
     private static final int BIG_VIEW_SIZE = 10_000_000;
     private static final char BIG_VIEW_CHAR = '6';
     private static final String BIG_STRING = repeat(BIG_VIEW_CHAR, BIG_VIEW_SIZE);
+
+    private static final GetCredentialRequest GET_CREDENTIAL_REQUEST = new
+            GetCredentialRequest.Builder(Bundle.EMPTY)
+            .addCredentialOption(new CredentialOption(
+                    "TYPE_OPTION",
+                    new Bundle(),
+                    new Bundle(),
+                    false))
+            .build();
+
+    private static final OutcomeReceiver<GetCredentialResponse,
+            GetCredentialException> GET_CREDENTIAL_REQUEST_CALLBACK = new OutcomeReceiver<>() {
+                @Override
+                public void onResult(@NonNull GetCredentialResponse response) {
+                    // Do nothing
+                }
+
+                @Override
+                public void onError(@NonNull GetCredentialException e) {
+                    // Do nothing
+                }
+            };
     // Cannot be much big because it could hang test due to blocking GC
     private static final int NUMBER_SMALL_VIEWS = 10_000;
 
@@ -224,6 +256,53 @@
     }
 
     @Test
+    public void testViewNodeParcelableForCredentialManager() {
+        Log.d(TAG, "Adding view with " + BIG_VIEW_SIZE + " chars");
+
+        View view = newCredentialView();
+        mActivity.addView(view);
+        waitUntilViewsAreLaidOff();
+
+        assertThat(view.getViewRootImpl()).isNotNull();
+        ViewNodeBuilder viewStructure = new ViewNodeBuilder();
+        viewStructure.setAutofillId(view.getAutofillId());
+        viewStructure.setCredentialManagerRequest(view.getCredentialManagerRequest(),
+                view.getCredentialManagerCallback());
+        view.onProvideAutofillStructure(viewStructure, /* flags= */ 0);
+        ViewNodeParcelable viewNodeParcelable = new ViewNodeParcelable(viewStructure.getViewNode());
+
+        // Check properties on "original" view node.
+        assertCredentialView(viewNodeParcelable.getViewNode());
+
+        // Check properties on "cloned" view node.
+        ViewNodeParcelable clone = cloneThroughParcel(viewNodeParcelable);
+        assertCredentialView(clone.getViewNode());
+    }
+
+    @Test
+    public void testViewNodeClearCredentialManagerRequest() {
+        Log.d(TAG, "Adding view with " + BIG_VIEW_SIZE + " chars");
+
+        View view = newCredentialView();
+        mActivity.addView(view);
+        waitUntilViewsAreLaidOff();
+
+        assertThat(view.getViewRootImpl()).isNotNull();
+        ViewNodeBuilder viewStructure = new ViewNodeBuilder();
+        viewStructure.setCredentialManagerRequest(view.getCredentialManagerRequest(),
+                view.getCredentialManagerCallback());
+
+        assertEquals(viewStructure.getCredentialManagerRequest(), GET_CREDENTIAL_REQUEST);
+        assertEquals(viewStructure.getCredentialManagerCallback(),
+                GET_CREDENTIAL_REQUEST_CALLBACK);
+
+        viewStructure.clearCredentialManagerRequest();
+
+        assertNull(viewStructure.getCredentialManagerRequest());
+        assertNull(viewStructure.getCredentialManagerCallback());
+    }
+
+    @Test
     public void testViewNodeParcelableForAutofill() {
         Log.d(TAG, "Adding view with " + BIG_VIEW_SIZE + " chars");
 
@@ -307,6 +386,14 @@
         EditText view = new EditText(mContext);
         view.setText("Big Hint in Little View");
         view.setAutofillHints(BIG_STRING);
+        view.setCredentialManagerRequest(GET_CREDENTIAL_REQUEST, GET_CREDENTIAL_REQUEST_CALLBACK);
+        return view;
+    }
+
+    private EditText newCredentialView() {
+        EditText view = new EditText(mContext);
+        view.setText("Credential Request");
+        view.setCredentialManagerRequest(GET_CREDENTIAL_REQUEST, GET_CREDENTIAL_REQUEST_CALLBACK);
         return view;
     }
 
@@ -316,6 +403,7 @@
         assertThat(view.getIdEntry()).isNull();
         assertThat(view.getAutofillId()).isNotNull();
         assertThat(view.getText().toString()).isEqualTo("Big Hint in Little View");
+        assertThat(view.getText().toString()).isEqualTo("Big Hint in Little View");
 
         String[] hints = view.getAutofillHints();
         assertThat(hints.length).isEqualTo(1);
@@ -326,6 +414,17 @@
         assertThat(hint.charAt(BIG_VIEW_SIZE - 1)).isEqualTo(BIG_VIEW_CHAR);
     }
 
+    private void assertCredentialView(ViewNode view) {
+        assertThat(view.getClassName()).isEqualTo(EditText.class.getName());
+        assertThat(view.getChildCount()).isEqualTo(0);
+        assertThat(view.getIdEntry()).isNull();
+        assertThat(view.getAutofillId()).isNotNull();
+        assertThat(view.getText().toString()).isEqualTo("Big Hint in Little View");
+
+        assertThat(view.getCredentialManagerRequest()).isEqualTo(GET_CREDENTIAL_REQUEST);
+        assertThat(view.getCredentialManagerCallback()).isEqualTo(GET_CREDENTIAL_REQUEST_CALLBACK);
+    }
+
     /**
      * Assert the lowest and highest bit control flags.
      *
diff --git a/core/tests/coretests/src/android/content/pm/CrossProfileAppsTest.java b/core/tests/coretests/src/android/content/pm/CrossProfileAppsTest.java
index 661b210..402d08e 100644
--- a/core/tests/coretests/src/android/content/pm/CrossProfileAppsTest.java
+++ b/core/tests/coretests/src/android/content/pm/CrossProfileAppsTest.java
@@ -27,6 +27,8 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import android.app.admin.DevicePolicyManager;
 import android.app.admin.DevicePolicyResourcesManager;
@@ -118,12 +120,55 @@
     public void initUsers() throws Exception {
         when(mUserManager.isManagedProfile(PERSONAL_PROFILE.getIdentifier())).thenReturn(false);
         when(mUserManager.isManagedProfile(MANAGED_PROFILE.getIdentifier())).thenReturn(true);
+        when(mUserManager.isProfile(PERSONAL_PROFILE.getIdentifier())).thenReturn(false);
+        when(mUserManager.isProfile(MANAGED_PROFILE.getIdentifier())).thenReturn(true);
 
         mTargetProfiles = new ArrayList<>();
         when(mService.getTargetUserProfiles(MY_PACKAGE)).thenReturn(mTargetProfiles);
     }
 
     @Test
+    public void isProfile_managedProfile_returnsTrue() {
+        setValidTargetProfile(MANAGED_PROFILE);
+
+        boolean result = mCrossProfileApps.isProfile(MANAGED_PROFILE);
+
+        assertTrue(result);
+    }
+
+    @Test
+    public void isProfile_personalProfile_returnsFalse() {
+        setValidTargetProfile(PERSONAL_PROFILE);
+
+        boolean result = mCrossProfileApps.isProfile(PERSONAL_PROFILE);
+
+        assertFalse(result);
+    }
+
+    @Test
+    public void isManagedProfile_managedProfile_returnsTrue() {
+        setValidTargetProfile(MANAGED_PROFILE);
+
+        boolean result = mCrossProfileApps.isManagedProfile(MANAGED_PROFILE);
+
+        assertTrue(result);
+    }
+
+    @Test
+    public void isManagedProfile_personalProfile_returnsFalse() {
+        setValidTargetProfile(PERSONAL_PROFILE);
+
+        boolean result = mCrossProfileApps.isManagedProfile(PERSONAL_PROFILE);
+
+        assertFalse(result);
+    }
+
+    @Test(expected = SecurityException.class)
+    public void isManagedProfile_notValidTarget_throwsSecurityException() {
+        mCrossProfileApps.isManagedProfile(PERSONAL_PROFILE);
+    }
+
+    @Test
     public void getProfileSwitchingLabel_managedProfile() {
         setValidTargetProfile(MANAGED_PROFILE);
         when(mApplicationInfo.loadSafeLabel(any(), anyFloat(), anyInt())).thenReturn("app");
diff --git a/core/tests/coretests/src/android/os/CancellationSignalTest.java b/core/tests/coretests/src/android/os/CancellationSignalTest.java
new file mode 100644
index 0000000..5cd2873
--- /dev/null
+++ b/core/tests/coretests/src/android/os/CancellationSignalTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2024 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 android.os;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class CancellationSignalTest {
+    @Rule
+    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
+            .setProvideMainThread(true)
+            .build();
+
+    @Test
+    public void testSimple() throws Exception {
+        final CancellationSignal signal = new CancellationSignal();
+        final CountDownLatch latch = new CountDownLatch(1);
+        signal.setOnCancelListener(() -> {
+            latch.countDown();
+        });
+
+        assertFalse(signal.isCanceled());
+        signal.cancel();
+        assertTrue(signal.isCanceled());
+        assertTrue(latch.await(100, TimeUnit.MILLISECONDS));
+    }
+}
diff --git a/core/tests/coretests/src/android/os/RemoteCallbackListTest.java b/core/tests/coretests/src/android/os/RemoteCallbackListTest.java
new file mode 100644
index 0000000..cc342cf
--- /dev/null
+++ b/core/tests/coretests/src/android/os/RemoteCallbackListTest.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2024 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 android.os;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@RunWith(AndroidJUnit4.class)
+public class RemoteCallbackListTest {
+    private RemoteCallbackList<IRemoteCallback> mList;
+    private MyRemoteCallback mRed;
+    private MyRemoteCallback mGreen;
+    private MyRemoteCallback mBlue;
+    private Object mCookie;
+
+    public static class MyRemoteCallback {
+        public final CountDownLatch mLatch = new CountDownLatch(1);
+        public final RemoteCallback mCallback = new RemoteCallback((bundle) -> {
+            mLatch.countDown();
+        });
+        public final IRemoteCallback mInterface = mCallback.getInterface();
+    }
+
+    @Before
+    public void setUp() {
+        mList = new RemoteCallbackList<>();
+        mRed = new MyRemoteCallback();
+        mGreen = new MyRemoteCallback();
+        mBlue = new MyRemoteCallback();
+        mCookie = new Object();
+    }
+
+    @Test
+    public void testInspection() {
+        assertEquals(0, mList.getRegisteredCallbackCount());
+
+        mList.register(mRed.mInterface);
+        mList.register(mGreen.mInterface, mCookie);
+        assertEquals(2, mList.getRegisteredCallbackCount());
+
+        final List<IRemoteCallback> list = new ArrayList<>();
+        for (int i = 0; i < mList.getRegisteredCallbackCount(); i++) {
+            list.add(mList.getRegisteredCallbackItem(i));
+        }
+        final int redIndex = list.indexOf(mRed.mInterface);
+        final int greenIndex = list.indexOf(mGreen.mInterface);
+        assertTrue(redIndex >= 0);
+        assertTrue(greenIndex >= 0);
+        assertEquals(null, mList.getRegisteredCallbackCookie(redIndex));
+        assertEquals(mCookie, mList.getRegisteredCallbackCookie(greenIndex));
+
+        mList.unregister(mRed.mInterface);
+        assertEquals(1, mList.getRegisteredCallbackCount());
+        assertEquals(mGreen.mInterface, mList.getRegisteredCallbackItem(0));
+        assertEquals(mCookie, mList.getRegisteredCallbackCookie(0));
+    }
+
+    @Test
+    public void testEmpty_Manual() {
+        final int num = mList.beginBroadcast();
+        assertEquals(0, num);
+        mList.finishBroadcast();
+    }
+
+    @Test
+    public void testEmpty_Functional() {
+        final AtomicInteger count = new AtomicInteger();
+        mList.broadcast((e) -> {
+            count.incrementAndGet();
+        });
+        assertEquals(0, count.get());
+    }
+
+    @Test
+    public void testSimple_Manual() throws Exception {
+        mList.register(mRed.mInterface);
+        mList.register(mGreen.mInterface);
+
+        final int num = mList.beginBroadcast();
+        for (int i = num - 1; i >= 0; i--) {
+            mList.getBroadcastItem(i).sendResult(Bundle.EMPTY);
+        }
+        mList.finishBroadcast();
+
+        assertEquals(0, mRed.mLatch.getCount());
+        assertEquals(0, mGreen.mLatch.getCount());
+        assertEquals(1, mBlue.mLatch.getCount());
+    }
+
+    @Test
+    public void testSimple_Functional() throws Exception {
+        mList.register(mRed.mInterface);
+        mList.register(mGreen.mInterface);
+
+        mList.broadcast((e) -> {
+            try {
+                e.sendResult(Bundle.EMPTY);
+            } catch (RemoteException ignored) {
+            }
+        });
+
+        assertEquals(0, mRed.mLatch.getCount());
+        assertEquals(0, mGreen.mLatch.getCount());
+        assertEquals(1, mBlue.mLatch.getCount());
+    }
+}
diff --git a/core/tests/coretests/src/android/os/RemoteCallbackTest.java b/core/tests/coretests/src/android/os/RemoteCallbackTest.java
new file mode 100644
index 0000000..192c3d01
--- /dev/null
+++ b/core/tests/coretests/src/android/os/RemoteCallbackTest.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2024 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 android.os;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class RemoteCallbackTest {
+    @Rule
+    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
+            .setProvideMainThread(true)
+            .build();
+
+    @Test
+    public void testSimple() throws Exception {
+        final CountDownLatch latch = new CountDownLatch(1);
+        final RemoteCallback cb = new RemoteCallback((bundle) -> {
+            latch.countDown();
+        }, new Handler(Looper.getMainLooper()));
+
+        assertEquals(1, latch.getCount());
+        cb.sendResult(Bundle.EMPTY);
+        assertTrue(latch.await(100, TimeUnit.MILLISECONDS));
+    }
+}
diff --git a/core/tests/coretests/src/android/os/ResultReceiverTest.java b/core/tests/coretests/src/android/os/ResultReceiverTest.java
new file mode 100644
index 0000000..8ee873b
--- /dev/null
+++ b/core/tests/coretests/src/android/os/ResultReceiverTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2024 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 android.os;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public class ResultReceiverTest {
+    @Rule
+    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
+            .setProvideMainThread(true)
+            .build();
+
+    @Test
+    public void testSimple() throws Exception {
+        final CountDownLatch latch = new CountDownLatch(1);
+        final ResultReceiver receiver = new ResultReceiver(new Handler(Looper.getMainLooper())) {
+            @Override
+            protected void onReceiveResult(int resultCode, Bundle resultData) {
+                latch.countDown();
+            }
+        };
+
+        assertEquals(1, latch.getCount());
+        receiver.send(42, Bundle.EMPTY);
+        assertTrue(latch.await(100, TimeUnit.MILLISECONDS));
+    }
+}
diff --git a/core/tests/coretests/src/android/util/FloatMathTest.java b/core/tests/coretests/src/android/util/FloatMathTest.java
new file mode 100644
index 0000000..f748acd
--- /dev/null
+++ b/core/tests/coretests/src/android/util/FloatMathTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class FloatMathTest {
+    private static float DELTA = 0.0f;
+
+    private static float[] TEST_VALUES = new float[] {
+            0,
+            1,
+            30,
+            90,
+            123,
+            360,
+            1000,
+    };
+
+    @Test
+    public void testSqrt() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.sqrt(value), FloatMath.sqrt(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testFloor() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.floor(value), FloatMath.floor(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testCeil() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.ceil(value), FloatMath.ceil(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testCos() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.cos(value), FloatMath.cos(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testSin() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.sin(value), FloatMath.sin(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testExp() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.exp(value), FloatMath.exp(value), DELTA);
+        }
+    }
+
+    @Test
+    public void testPow() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.pow(value, value), FloatMath.pow(value, value), DELTA);
+        }
+    }
+
+    @Test
+    public void testHypot() {
+        for (float value : TEST_VALUES) {
+            assertEquals((float) Math.hypot(value, value), FloatMath.hypot(value, value), DELTA);
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/util/LogWriterTest.java b/core/tests/coretests/src/android/util/LogWriterTest.java
new file mode 100644
index 0000000..890a401
--- /dev/null
+++ b/core/tests/coretests/src/android/util/LogWriterTest.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class LogWriterTest {
+    @Test
+    public void testSimple() throws Exception {
+        // Since we can't inspect the log output, the best we can do is make sure we don't crash
+        final LogWriter writer = new LogWriter(Log.DEBUG, "Example");
+        writer.write("Message");
+        writer.write("Message\nMessage");
+    }
+}
diff --git a/core/tests/coretests/src/android/util/MutableTest.java b/core/tests/coretests/src/android/util/MutableTest.java
new file mode 100644
index 0000000..dfdff4d
--- /dev/null
+++ b/core/tests/coretests/src/android/util/MutableTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class MutableTest {
+    @Test
+    public void testMutableBoolean() {
+        MutableBoolean mut = new MutableBoolean(false);
+        assertFalse(mut.value);
+        mut = new MutableBoolean(true);
+        assertTrue(mut.value);
+    }
+
+    @Test
+    public void testMutableByte() {
+        MutableByte mut = new MutableByte((byte) 127);
+        assertEquals(127, mut.value);
+        mut = new MutableByte((byte) -128);
+        assertEquals(-128, mut.value);
+    }
+
+    @Test
+    public void testMutableChar() {
+        MutableChar mut = new MutableChar('a');
+        assertEquals('a', mut.value);
+        mut = new MutableChar('b');
+        assertEquals('b', mut.value);
+    }
+
+    @Test
+    public void testMutableDouble() {
+        MutableDouble mut = new MutableDouble(0);
+        assertEquals(0, mut.value, 0);
+        mut = new MutableDouble(Double.MAX_VALUE);
+        assertEquals(Double.MAX_VALUE, mut.value, 0);
+    }
+
+    @Test
+    public void testMutableFloat() {
+        MutableFloat mut = new MutableFloat(0f);
+        assertEquals(0f, mut.value, 0);
+        mut = new MutableFloat(Float.MAX_VALUE);
+        assertEquals(Float.MAX_VALUE, mut.value, 0);
+    }
+
+    @Test
+    public void testMutableShort() {
+        MutableShort mut = new MutableShort((short) 0);
+        assertEquals(0, mut.value);
+        mut = new MutableShort(Short.MAX_VALUE);
+        assertEquals(Short.MAX_VALUE, mut.value);
+    }
+
+    @Test
+    public void testMutableInt() {
+        MutableInt mut = new MutableInt(42);
+        assertEquals(42, mut.value);
+        mut = new MutableInt(21);
+        assertEquals(21, mut.value);
+    }
+
+    @Test
+    public void testMutableLong() {
+        MutableLong mut = new MutableLong(42L);
+        assertEquals(42L, mut.value);
+        mut = new MutableLong(21L);
+        assertEquals(21L, mut.value);
+    }
+}
diff --git a/core/tests/coretests/src/android/util/PoolsTest.java b/core/tests/coretests/src/android/util/PoolsTest.java
new file mode 100644
index 0000000..bdbc9b1
--- /dev/null
+++ b/core/tests/coretests/src/android/util/PoolsTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class PoolsTest {
+    private static final int POOL_SIZE = 2;
+
+    private final Object mRed = new Object();
+    private final Object mGreen = new Object();
+    private final Object mBlue = new Object();
+
+    @Test
+    public void testSimple() throws Exception {
+        doTest(new Pools.SimplePool<Object>(POOL_SIZE));
+    }
+
+    @Test
+    public void testSynchronized() throws Exception {
+        doTest(new Pools.SynchronizedPool<Object>(POOL_SIZE));
+    }
+
+    private void doTest(Pools.SimplePool<Object> pool) throws Exception {
+        // Pools are empty by default
+        assertNull(pool.acquire());
+
+        // Verify single item in pool
+        pool.release(mRed);
+        assertEquals(mRed, pool.acquire());
+        assertNull(pool.acquire());
+
+        // Verify pool doesn't get over-full
+        pool.release(mRed);
+        pool.release(mGreen);
+        pool.release(mBlue);
+        assertEquals(mGreen, pool.acquire());
+        assertEquals(mRed, pool.acquire());
+        assertNull(pool.acquire());
+    }
+}
diff --git a/core/tests/coretests/src/android/util/PrefixPrinterTest.java b/core/tests/coretests/src/android/util/PrefixPrinterTest.java
new file mode 100644
index 0000000..a8d48ee
--- /dev/null
+++ b/core/tests/coretests/src/android/util/PrefixPrinterTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class PrefixPrinterTest {
+    @Test
+    public void testSimple() throws Exception {
+        final StringBuilder builder = new StringBuilder();
+        final Printer printer = new Printer() {
+            @Override
+            public void println(String x) {
+                builder.append(x).append('\n');
+            }
+        };
+
+        final Printer prefixed = PrefixPrinter.create(printer, "  ");
+        prefixed.println("Test");
+        prefixed.println("Test");
+        assertEquals("  Test\n  Test\n", builder.toString());
+    }
+}
diff --git a/core/tests/coretests/src/android/util/TeeWriterTest.java b/core/tests/coretests/src/android/util/TeeWriterTest.java
new file mode 100644
index 0000000..c78376a
--- /dev/null
+++ b/core/tests/coretests/src/android/util/TeeWriterTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2024 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 android.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.ByteArrayOutputStream;
+import java.io.OutputStreamWriter;
+
+@RunWith(AndroidJUnit4.class)
+public class TeeWriterTest {
+    @Test
+    public void testEmpty() throws Exception {
+        // Verify we don't crash when writing nowhere
+        final TeeWriter writer = new TeeWriter();
+        writer.write("EXAMPLE!");
+    }
+
+    @Test
+    public void testSimple() throws Exception {
+        final ByteArrayOutputStream first = new ByteArrayOutputStream();
+        final ByteArrayOutputStream second = new ByteArrayOutputStream();
+        final ByteArrayOutputStream third = new ByteArrayOutputStream();
+
+        final TeeWriter writer = new TeeWriter(
+                new OutputStreamWriter(first),
+                new OutputStreamWriter(second),
+                new OutputStreamWriter(third));
+
+        writer.write("EXAMPLE!");
+        writer.flush();
+        assertEquals("EXAMPLE!", first.toString());
+        assertEquals("EXAMPLE!", second.toString());
+        assertEquals("EXAMPLE!", third.toString());
+    }
+}
diff --git a/core/tests/coretests/src/android/view/InsetsSourceTest.java b/core/tests/coretests/src/android/view/InsetsSourceTest.java
index e1bcd4a..936f4d7 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceTest.java
@@ -279,5 +279,204 @@
         }
     }
 
+    @Test
+    public void testCalculateBoundingRects_noBoundingRects_createsSingleRect() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(null);
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 1000, 1000), false);
+
+        assertEquals(1, rects.length);
+        assertEquals(new Rect(0, 0, 1000, 100), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_noBoundingRectsAndLargerFrame_singleRectFitsRelFrame() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(null);
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 500, 1000), false);
+
+        assertEquals(1, rects.length);
+        assertEquals(new Rect(0, 0, 500, 100), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_frameAtOrigin_resultRelativeToRelFrame() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 300, 100),
+                new Rect(800, 0, 1000, 100),
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 1000, 1000), false);
+
+        assertEquals(2, rects.length);
+        assertEquals(new Rect(0, 0, 300, 100), rects[0]);
+        assertEquals(new Rect(800, 0, 1000, 100), rects[1]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_notAtOrigin_resultRelativeToRelFrame() {
+        mSource.setFrame(new Rect(100, 100, 1100, 200));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 300, 100),    // 300x100, aligned left
+                new Rect(800, 0, 1000, 100), // 200x100, aligned right
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(100, 100, 1100, 1100), false);
+
+        assertEquals(2, rects.length);
+        assertEquals(new Rect(0, 0, 300, 100), rects[0]);
+        assertEquals(new Rect(800, 0, 1000, 100), rects[1]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_boundingRectFullyInsideFrameInWindow() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(100, 0, 400, 100), // Inside |frame| and |relativeFrame|.
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 500, 100), false);
+
+        assertEquals(1, rects.length);
+        assertEquals(new Rect(100, 0, 400, 100), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_boundingRectOutsideFrameInWindow_dropped() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(700, 0, 1000, 100), // Inside |frame|, but outside |relativeFrame|.
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 500, 100), false);
+
+        assertEquals(0, rects.length);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_boundingRectPartlyOutsideFrameInWindow_cropped() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(400, 0, 600, 100), // Inside |frame|, and only half inside |relativeFrame|.
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 500, 100), false);
+
+        assertEquals(1, rects.length);
+        assertEquals(new Rect(400, 0, 500, 100), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_framesNotAtOrigin_resultRelativeToWindowFrame() {
+        mSource.setFrame(new Rect(100, 100, 1100, 200));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 300, 100), // 300x100 aligned to left.
+                new Rect(800, 0, 1000, 100) // 200x100 align to right.
+        });
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(100, 100, 1100, 1100), false);
+
+        assertEquals(2, rects.length);
+        assertEquals(new Rect(0, 0, 300, 100), rects[0]);
+        assertEquals(new Rect(800, 0, 1000, 100), rects[1]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_captionBar() {
+        mCaptionSource.setFrame(new Rect(0, 0, 1000, 100));
+        mCaptionSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 200, 100), // 200x100, aligned left.
+                new Rect(800, 0, 1000, 100) // 200x100, aligned right.
+        });
+
+        final Rect[] rects = mCaptionSource.calculateBoundingRects(
+                new Rect(0, 0, 1000, 1000), false);
+
+        assertEquals(2, rects.length);
+        assertEquals(new Rect(0, 0, 200, 100), rects[0]);
+        assertEquals(new Rect(800, 0, 1000, 100), rects[1]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_captionBarFrameMisaligned_rectsFixedToTop() {
+        mCaptionSource.setFrame(new Rect(500, 500, 1500, 600));
+        mCaptionSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 100, 100), // 100x100, aligned to left/top of frame
+        });
+
+        final Rect[] rects = mCaptionSource.calculateBoundingRects(
+                new Rect(495, 495, 1500, 1500), false);
+
+        assertEquals(1, rects.length);
+        // rect should be aligned to the top of relative frame, as if the caption frame had been
+        // corrected to be aligned at the top.
+        assertEquals(new Rect(0, 0, 100, 100), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_imeCaptionBarFrameMisaligned_rectsFixedToBottom() {
+        mImeCaptionSource.setFrame(new Rect(500, 1400, 1500, 1500));
+        mImeCaptionSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 100, 100), // 100x100, aligned to left/top of frame
+        });
+
+        final Rect[] rects = mImeCaptionSource.calculateBoundingRects(
+                new Rect(495, 495, 1500, 1500), false);
+
+        assertEquals(1, rects.length);
+        // rect should be aligned to the bottom of relative frame, as if the ime caption frame had
+        // been corrected to be aligned at the top.
+        assertEquals(new Rect(0, 905, 100, 1005), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_imeCaptionBar() {
+        mImeCaptionSource.setFrame(new Rect(0, 900, 1000, 1000)); // Frame at the bottom.
+        mImeCaptionSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 200, 100), // 200x100, aligned left.
+        });
+
+        final Rect[] rects = mImeCaptionSource.calculateBoundingRects(
+                new Rect(0, 0, 1000, 1000), false);
+
+        assertEquals(1, rects.length);
+        assertEquals(new Rect(0, 900, 200, 1000), rects[0]);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_invisible() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 300, 100),
+                new Rect(800, 0, 1000, 100),
+        });
+        mSource.setVisible(false);
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 1000, 1000),
+                false /* ignoreVisibility */);
+
+        assertEquals(0, rects.length);
+    }
+
+    @Test
+    public void testCalculateBoundingRects_ignoreVisibility() {
+        mSource.setFrame(new Rect(0, 0, 1000, 100));
+        mSource.setBoundingRects(new Rect[]{
+                new Rect(0, 0, 300, 100),
+                new Rect(800, 0, 1000, 100),
+        });
+        mSource.setVisible(false);
+
+        final Rect[] rects = mSource.calculateBoundingRects(new Rect(0, 0, 1000, 1000),
+                true /* ignoreVisibility */);
+
+        assertEquals(2, rects.length);
+        assertEquals(new Rect(0, 0, 300, 100), rects[0]);
+        assertEquals(new Rect(800, 0, 1000, 100), rects[1]);
+    }
+
     // Parcel and equals already tested via InsetsStateTest
 }
diff --git a/core/tests/coretests/src/android/view/InsetsStateTest.java b/core/tests/coretests/src/android/view/InsetsStateTest.java
index 672875a..16bd20a 100644
--- a/core/tests/coretests/src/android/view/InsetsStateTest.java
+++ b/core/tests/coretests/src/android/view/InsetsStateTest.java
@@ -63,6 +63,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.List;
+
 /**
  * Tests for {@link InsetsState}.
  *
@@ -88,6 +90,8 @@
             null /* owner */, 1 /* index */, navigationBars());
     private static final int ID_BOTTOM_GESTURES = InsetsSource.createId(
             null /* owner */, 0 /* index */, systemGestures());
+    private static final int ID_EXTRA_CAPTION_BAR = InsetsSource.createId(
+            null /* owner */, 2 /* index */, captionBar());
 
     private final InsetsState mState = new InsetsState();
     private final InsetsState mState2 = new InsetsState();
@@ -420,9 +424,11 @@
     public void testEquals_visibility() {
         mState.getOrCreateSource(ID_IME, ime())
                 .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 10, 10) })
                 .setVisible(true);
         mState2.getOrCreateSource(ID_IME, ime())
-                .setFrame(new Rect(0, 0, 100, 100));
+                .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 10, 10) });
         assertNotEqualsAndHashCode();
     }
 
@@ -441,6 +447,30 @@
     }
 
     @Test
+    public void testEquals_sameBoundingRects() {
+        mState.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 10, 10) })
+                .setVisible(true);
+        mState2.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 10, 10) });
+        assertEqualsAndHashCode();
+    }
+
+    @Test
+    public void testEquals_differentBoundingRects() {
+        mState.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 10, 10) })
+                .setVisible(true);
+        mState2.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 100, 100))
+                .setBoundingRects(new Rect[]{ new Rect(0, 0, 20, 20) });
+        assertNotEqualsAndHashCode();
+    }
+
+    @Test
     public void testEquals_samePrivacyIndicator() {
         Rect one = new Rect(0, 1, 2, 3);
         Rect two = new Rect(4, 5, 6, 7);
@@ -734,4 +764,94 @@
         assertEquals(1, onIdNotFoundInState2Called[0]); // 1000.
         assertEquals(1, onFinishCalled[0]);
     }
+
+    @Test
+    public void testCalculateBoundingRects() {
+        mState.getOrCreateSource(ID_STATUS_BAR, statusBars())
+                .setFrame(new Rect(0, 0, 1000, 100))
+                .setBoundingRects(null)
+                .setVisible(true);
+        mState.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 1000, 100))
+                .setBoundingRects(new Rect[]{
+                        new Rect(0, 0, 200, 100),
+                        new Rect(800, 0, 1000, 100)
+                })
+                .setVisible(true);
+        SparseIntArray typeSideMap = new SparseIntArray();
+
+        WindowInsets insets = mState.calculateInsets(new Rect(0, 0, 1000, 1000), null, false,
+                SOFT_INPUT_ADJUST_RESIZE, 0, 0, TYPE_APPLICATION, ACTIVITY_TYPE_UNDEFINED,
+                typeSideMap);
+
+        assertEquals(
+                List.of(new Rect(0, 0, 1000, 100)),
+                insets.getBoundingRects(Type.statusBars())
+        );
+        assertEquals(
+                List.of(
+                        new Rect(0, 0, 200, 100),
+                        new Rect(800, 0, 1000, 100)
+                ),
+                insets.getBoundingRects(Type.captionBar())
+        );
+    }
+
+    @Test
+    public void testCalculateBoundingRects_multipleSourcesOfSameType_concatenated() {
+        mState.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 1000, 100))
+                .setBoundingRects(new Rect[]{new Rect(0, 0, 200, 100)})
+                .setVisible(true);
+        mState.getOrCreateSource(ID_EXTRA_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 1000, 100))
+                .setBoundingRects(new Rect[]{new Rect(800, 0, 1000, 100)})
+                .setVisible(true);
+        SparseIntArray typeSideMap = new SparseIntArray();
+
+        WindowInsets insets = mState.calculateInsets(new Rect(0, 0, 1000, 1000), null, false,
+                SOFT_INPUT_ADJUST_RESIZE, 0, 0, TYPE_APPLICATION, ACTIVITY_TYPE_UNDEFINED,
+                typeSideMap);
+
+        final List<Rect> expected = List.of(
+                new Rect(0, 0, 200, 100),
+                new Rect(800, 0, 1000, 100)
+        );
+        final List<Rect> actual = insets.getBoundingRects(captionBar());
+        assertEquals(expected.size(), actual.size());
+
+        // Order does not matter.
+        assertTrue(actual.containsAll(expected));
+    }
+
+    @Test
+    public void testCalculateBoundingRects_captionBar_reportedAsSysGesturesAndTappableElement() {
+        mState.getOrCreateSource(ID_CAPTION_BAR, captionBar())
+                .setFrame(new Rect(0, 0, 1000, 100))
+                .setBoundingRects(new Rect[]{new Rect(0, 0, 200, 100)})
+                .setVisible(true);
+        SparseIntArray typeSideMap = new SparseIntArray();
+
+        WindowInsets insets = mState.calculateInsets(new Rect(0, 0, 1000, 1000), null, false,
+                SOFT_INPUT_ADJUST_RESIZE, 0, 0, TYPE_APPLICATION, ACTIVITY_TYPE_UNDEFINED,
+                typeSideMap);
+
+        assertEquals(
+                List.of(new Rect(0, 0, 200, 100)),
+                insets.getBoundingRects(Type.captionBar())
+        );
+        assertEquals(
+                List.of(new Rect(0, 0, 200, 100)),
+                insets.getBoundingRects(Type.systemGestures())
+        );
+        assertEquals(
+                List.of(new Rect(0, 0, 200, 100)),
+                insets.getBoundingRects(Type.mandatorySystemGestures())
+        );
+        assertEquals(
+                List.of(new Rect(0, 0, 200, 100)),
+                insets.getBoundingRects(Type.tappableElement())
+        );
+
+    }
 }
diff --git a/core/tests/coretests/src/android/view/ViewRootImplTest.java b/core/tests/coretests/src/android/view/ViewRootImplTest.java
index 0657e4b..433d353 100644
--- a/core/tests/coretests/src/android/view/ViewRootImplTest.java
+++ b/core/tests/coretests/src/android/view/ViewRootImplTest.java
@@ -660,10 +660,22 @@
     public void votePreferredFrameRate_voteFrameRateCategory_aggregate() {
         View view = new View(sContext);
         attachViewToWindow(view);
+        ViewRootImpl viewRootImpl = view.getViewRootImpl();
         sInstrumentation.runOnMainSync(() -> {
-            ViewRootImpl viewRootImpl = view.getViewRootImpl();
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                     FRAME_RATE_CATEGORY_NO_PREFERENCE);
+        });
+
+        // reset the frame rate category counts
+        for (int i = 0; i < 5; i++) {
+            sInstrumentation.runOnMainSync(() -> {
+                view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
+                view.invalidate();
+            });
+            sInstrumentation.waitForIdleSync();
+        }
+
+        sInstrumentation.runOnMainSync(() -> {
             viewRootImpl.votePreferredFrameRateCategory(FRAME_RATE_CATEGORY_LOW);
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_LOW);
             viewRootImpl.votePreferredFrameRateCategory(FRAME_RATE_CATEGORY_NORMAL);
@@ -699,6 +711,8 @@
             viewRootImpl.votePreferredFrameRate(24);
             assertEquals(viewRootImpl.getPreferredFrameRate(), 24, 0.1);
             viewRootImpl.votePreferredFrameRate(30);
+            assertEquals(viewRootImpl.getPreferredFrameRate(), 30, 0.1);
+            viewRootImpl.votePreferredFrameRate(60);
             assertEquals(viewRootImpl.getPreferredFrameRate(), 60, 0.1);
             viewRootImpl.votePreferredFrameRate(120);
             assertEquals(viewRootImpl.getPreferredFrameRate(), 120, 0.1);
@@ -721,6 +735,18 @@
         sInstrumentation.runOnMainSync(() -> {
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                     FRAME_RATE_CATEGORY_NO_PREFERENCE);
+        });
+
+        // reset the frame rate category counts
+        for (int i = 0; i < 5; i++) {
+            sInstrumentation.runOnMainSync(() -> {
+                view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
+                view.invalidate();
+            });
+            sInstrumentation.waitForIdleSync();
+        }
+
+        sInstrumentation.runOnMainSync(() -> {
             view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_LOW);
             view.invalidate();
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_LOW);
@@ -847,7 +873,18 @@
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
                     FRAME_RATE_CATEGORY_NO_PREFERENCE);
             assertEquals(viewRootImpl.getPreferredFrameRate(), frameRate, 0.1);
+        });
 
+        // reset the frame rate category counts
+        for (int i = 0; i < 5; i++) {
+            sInstrumentation.runOnMainSync(() -> {
+                view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
+                view.invalidate();
+            });
+            sInstrumentation.waitForIdleSync();
+        }
+
+        sInstrumentation.runOnMainSync(() -> {
             view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_LOW);
             view.invalidate();
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_LOW);
@@ -882,18 +919,6 @@
 
         ViewRootImpl viewRootImpl = view.getViewRootImpl();
 
-        // Frequent update
-        sInstrumentation.runOnMainSync(() -> {
-            assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
-                    FRAME_RATE_CATEGORY_NO_PREFERENCE);
-            view.invalidate();
-            assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
-            view.invalidate();
-            assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
-            view.invalidate();
-            assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
-        });
-
         // In transistion from frequent update to infrequent update
         Thread.sleep(delay);
         sInstrumentation.runOnMainSync(() -> {
@@ -901,9 +926,28 @@
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_HIGH);
         });
 
+        // reset the frame rate category counts
+        for (int i = 0; i < 5; i++) {
+            sInstrumentation.runOnMainSync(() -> {
+                view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
+                view.invalidate();
+            });
+            sInstrumentation.waitForIdleSync();
+        }
+
+        // In transistion from frequent update to infrequent update
+        Thread.sleep(delay);
+        sInstrumentation.runOnMainSync(() -> {
+            view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_NO_PREFERENCE);
+            view.invalidate();
+            assertEquals(viewRootImpl.getPreferredFrameRateCategory(),
+                    FRAME_RATE_CATEGORY_NO_PREFERENCE);
+        });
+
         // Infrequent update
         Thread.sleep(delay);
         sInstrumentation.runOnMainSync(() -> {
+            view.setRequestedFrameRate(view.REQUESTED_FRAME_RATE_CATEGORY_DEFAULT);
             view.invalidate();
             assertEquals(viewRootImpl.getPreferredFrameRateCategory(), FRAME_RATE_CATEGORY_NORMAL);
         });
diff --git a/core/tests/coretests/src/android/view/WindowInsetsTest.java b/core/tests/coretests/src/android/view/WindowInsetsTest.java
index 69abf5f..ab4543c 100644
--- a/core/tests/coretests/src/android/view/WindowInsetsTest.java
+++ b/core/tests/coretests/src/android/view/WindowInsetsTest.java
@@ -41,14 +41,14 @@
     public void systemWindowInsets_afterConsuming_isConsumed() {
         assertTrue(new WindowInsets(WindowInsets.createCompatTypeMap(new Rect(1, 2, 3, 4)), null,
                 null, false, 0, 0, null, null, null, null,
-                WindowInsets.Type.systemBars(), false)
+                WindowInsets.Type.systemBars(), false, null, null, 0, 0)
                 .consumeSystemWindowInsets().isConsumed());
     }
 
     @Test
     public void multiNullConstructor_isConsumed() {
         assertTrue(new WindowInsets(null, null, null, false, 0, 0, null, null, null, null,
-                WindowInsets.Type.systemBars(), false).isConsumed());
+                WindowInsets.Type.systemBars(), false, null, null, 0, 0).isConsumed());
     }
 
     @Test
@@ -65,7 +65,7 @@
         WindowInsets.assignCompatInsets(insets, new Rect(0, 0, 0, 0));
         WindowInsets windowInsets = new WindowInsets(insets, maxInsets, visible, false, 0,
                 0, null, null, null, DisplayShape.NONE, systemBars(),
-                true /* compatIgnoreVisibility */);
+                true /* compatIgnoreVisibility */, null, null, 0, 0);
         assertEquals(Insets.of(0, 10, 0, 0), windowInsets.getSystemWindowInsets());
     }
 }
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
index 16e750a..a567b4b 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationConstantsTest.java
@@ -23,6 +23,7 @@
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -32,6 +33,11 @@
 @RunWith(AndroidJUnit4.class)
 public class TextClassificationConstantsTest {
 
+    @Before
+    public void setup() {
+        TextClassificationConstants.resetMemoizedValues();
+    }
+
     @Test
     public void booleanSettings() {
         assertSettings(
diff --git a/core/tests/coretests/src/com/android/internal/util/CollectionUtilsTest.java b/core/tests/coretests/src/com/android/internal/util/CollectionUtilsTest.java
new file mode 100644
index 0000000..ac954d6a
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/CollectionUtilsTest.java
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2024 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 com.android.internal.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@RunWith(AndroidJUnit4.class)
+public class CollectionUtilsTest {
+    private static final Object RED = new Object();
+    private static final Object GREEN = new Object();
+    private static final Object BLUE = new Object();
+
+    @Test
+    public void testList() throws Exception {
+        List<Object> res = null;
+        assertEquals(0, CollectionUtils.size(res));
+        assertTrue(CollectionUtils.isEmpty(res));
+        assertNull(CollectionUtils.firstOrNull(res));
+        assertFalse(CollectionUtils.contains(res, RED));
+        assertFalse(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.add(res, RED);
+        assertEquals(1, CollectionUtils.size(res));
+        assertFalse(CollectionUtils.isEmpty(res));
+        assertEquals(RED, CollectionUtils.firstOrNull(res));
+        assertTrue(CollectionUtils.contains(res, RED));
+        assertFalse(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.add(res, GREEN);
+        assertEquals(2, CollectionUtils.size(res));
+        assertFalse(CollectionUtils.isEmpty(res));
+        assertEquals(RED, CollectionUtils.firstOrNull(res));
+        assertTrue(CollectionUtils.contains(res, RED));
+        assertTrue(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.remove(res, GREEN);
+        assertNotNull(res);
+        res = CollectionUtils.remove(res, RED);
+        assertNotNull(res);
+
+        // Once drained we don't return to null
+        assertEquals(0, CollectionUtils.size(res));
+        assertTrue(CollectionUtils.isEmpty(res));
+    }
+
+    @Test
+    public void testList_Dupes() throws Exception {
+        List<Object> res = null;
+        res = CollectionUtils.add(res, RED);
+        res = CollectionUtils.add(res, RED);
+        assertEquals(2, CollectionUtils.size(res));
+    }
+
+    @Test
+    public void testSet() throws Exception {
+        Set<Object> res = null;
+        assertEquals(0, CollectionUtils.size(res));
+        assertTrue(CollectionUtils.isEmpty(res));
+        assertFalse(CollectionUtils.contains(res, RED));
+        assertFalse(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.add(res, RED);
+        assertEquals(1, CollectionUtils.size(res));
+        assertFalse(CollectionUtils.isEmpty(res));
+        assertTrue(CollectionUtils.contains(res, RED));
+        assertFalse(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.add(res, GREEN);
+        assertEquals(2, CollectionUtils.size(res));
+        assertFalse(CollectionUtils.isEmpty(res));
+        assertTrue(CollectionUtils.contains(res, RED));
+        assertTrue(CollectionUtils.contains(res, GREEN));
+
+        res = CollectionUtils.remove(res, GREEN);
+        assertNotNull(res);
+        res = CollectionUtils.remove(res, RED);
+        assertNotNull(res);
+
+        // Once drained we don't return to null
+        assertEquals(0, CollectionUtils.size(res));
+        assertTrue(CollectionUtils.isEmpty(res));
+    }
+
+    @Test
+    public void testSet_Dupes() throws Exception {
+        Set<Object> res = null;
+        res = CollectionUtils.add(res, RED);
+        res = CollectionUtils.add(res, RED);
+        assertEquals(1, CollectionUtils.size(res));
+    }
+
+    @Test
+    public void testEmptyIfNull() throws Exception {
+        assertTrue(CollectionUtils.emptyIfNull((Set<Object>) null).isEmpty());
+        assertTrue(CollectionUtils.emptyIfNull((List<Object>) null).isEmpty());
+        assertTrue(CollectionUtils.emptyIfNull((Map<Object, Object>) null).isEmpty());
+    }
+}
diff --git a/core/tests/coretests/src/com/android/internal/util/IntPairTest.java b/core/tests/coretests/src/com/android/internal/util/IntPairTest.java
new file mode 100644
index 0000000..af6503f
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/IntPairTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2024 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 com.android.internal.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class IntPairTest {
+    @Test
+    public void testSimple() throws Exception {
+        final long pair = IntPair.of(1, 2);
+        assertEquals(1, IntPair.first(pair));
+        assertEquals(2, IntPair.second(pair));
+    }
+
+    @Test
+    public void testNegative() throws Exception {
+        final long pair = IntPair.of(-1, -2);
+        assertEquals(-1, IntPair.first(pair));
+        assertEquals(-2, IntPair.second(pair));
+    }
+
+    @Test
+    public void testFullFirst() throws Exception {
+        final long pair = IntPair.of(~0, 0);
+        assertEquals(~0, IntPair.first(pair));
+        assertEquals(0, IntPair.second(pair));
+    }
+
+    @Test
+    public void testFullSecond() throws Exception {
+        final long pair = IntPair.of(0, ~0);
+        assertEquals(0, IntPair.first(pair));
+        assertEquals(~0, IntPair.second(pair));
+    }
+}
diff --git a/core/tests/coretests/src/com/android/internal/util/SizedInputStreamTest.java b/core/tests/coretests/src/com/android/internal/util/SizedInputStreamTest.java
new file mode 100644
index 0000000..efef7ff
--- /dev/null
+++ b/core/tests/coretests/src/com/android/internal/util/SizedInputStreamTest.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2024 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 com.android.internal.util;
+
+import static org.junit.Assert.assertEquals;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.ByteArrayInputStream;
+
+@RunWith(AndroidJUnit4.class)
+public class SizedInputStreamTest {
+    @Test
+    public void testSimple() throws Exception {
+        final ByteArrayInputStream in = new ByteArrayInputStream(new byte[]{1, 2, 3, 4});
+        final SizedInputStream sized = new SizedInputStream(in, 2);
+        assertEquals(1, sized.read());
+        assertEquals(2, sized.read());
+        assertEquals(-1, sized.read());
+    }
+}
diff --git a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
index 84dd274..8d66cfc 100644
--- a/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/ActionBarOverlayLayoutTest.java
@@ -169,7 +169,8 @@
 
     private WindowInsets insetsWith(Insets content, DisplayCutout cutout) {
         return new WindowInsets(WindowInsets.createCompatTypeMap(content.toRect()), null, null,
-                false, 0, 0, cutout, null, null, null, WindowInsets.Type.systemBars(), false);
+                false, 0, 0, cutout, null, null, null, WindowInsets.Type.systemBars(), false,
+                null, null, 0, 0);
     }
 
     private ViewGroup createViewGroupWithId(int id) {
diff --git a/core/tests/coretests/src/com/android/internal/widget/NotificationOptimizedLinearLayoutComparisonTest.java b/core/tests/coretests/src/com/android/internal/widget/NotificationOptimizedLinearLayoutComparisonTest.java
index 08333ec..bf9221a 100644
--- a/core/tests/coretests/src/com/android/internal/widget/NotificationOptimizedLinearLayoutComparisonTest.java
+++ b/core/tests/coretests/src/com/android/internal/widget/NotificationOptimizedLinearLayoutComparisonTest.java
@@ -31,6 +31,7 @@
 import android.view.View.MeasureSpec;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.TextView;
 import android.widget.flags.Flags;
 
 import androidx.test.InstrumentationRegistry;
@@ -73,7 +74,7 @@
 
     private static final int[] LAYOUT_PARAMS = {MATCH_PARENT, WRAP_CONTENT, 0, 50};
     private static final int[] CHILD_WEIGHTS = {0, 1};
-
+    private static final int[] CHILD_MARGINS = {0, 10, -10};
     @Rule
     public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
 
@@ -84,35 +85,96 @@
         mContext = InstrumentationRegistry.getTargetContext();
     }
 
+
     @Test
     public void test() throws Throwable {
+        final List<View> controlChildren =
+                new ArrayList<>();
+        final List<View> testChildren =
+                new ArrayList<>();
+
+        final View controlChild1 = buildChildView();
+        final View controlChild2 = buildChildView();
+        controlChildren.add(controlChild1);
+        controlChildren.add(controlChild2);
+
+        final View testChild1 = buildChildView();
+        final View testChild2 = buildChildView();
+        testChildren.add(testChild1);
+        testChildren.add(testChild2);
+
+        final LinearLayout controlContainer = buildLayout(false, controlChildren);
+
+        final LinearLayout testContainer = buildLayout(true, testChildren);
+
+        final LinearLayout.LayoutParams firstChildLayoutParams = new LinearLayout.LayoutParams(0,
+                0);
+        final LinearLayout.LayoutParams secondChildLayoutParams = new LinearLayout.LayoutParams(0,
+                0);
+        controlChild1.setLayoutParams(firstChildLayoutParams);
+        controlChild2.setLayoutParams(secondChildLayoutParams);
+        testChild1.setLayoutParams(firstChildLayoutParams);
+        testChild2.setLayoutParams(secondChildLayoutParams);
+
         for (int orientation : ORIENTATIONS) {
-            for (int widthSpec : MEASURE_SPECS) {
-                for (int heightSpec : MEASURE_SPECS) {
-                    for (int firstChildGravity : GRAVITIES) {
-                        for (int secondChildGravity : GRAVITIES) {
-                            for (int firstChildLayoutWidth : LAYOUT_PARAMS) {
-                                for (int firstChildLayoutHeight : LAYOUT_PARAMS) {
-                                    for (int secondChildLayoutWidth : LAYOUT_PARAMS) {
-                                        for (int secondChildLayoutHeight : LAYOUT_PARAMS) {
+            controlContainer.setOrientation(orientation);
+            testContainer.setOrientation(orientation);
+
+            for (int firstChildLayoutWidth : LAYOUT_PARAMS) {
+                firstChildLayoutParams.width = firstChildLayoutWidth;
+                for (int firstChildLayoutHeight : LAYOUT_PARAMS) {
+                    firstChildLayoutParams.height = firstChildLayoutHeight;
+
+                    for (int secondChildLayoutWidth : LAYOUT_PARAMS) {
+                        secondChildLayoutParams.width = secondChildLayoutWidth;
+                        for (int secondChildLayoutHeight : LAYOUT_PARAMS) {
+                            secondChildLayoutParams.height = secondChildLayoutHeight;
+
+                            for (int firstChildMargin : CHILD_MARGINS) {
+                                firstChildLayoutParams.setMargins(firstChildMargin,
+                                        firstChildMargin, firstChildMargin, firstChildMargin);
+                                for (int secondChildMargin : CHILD_MARGINS) {
+                                    secondChildLayoutParams.setMargins(secondChildMargin,
+                                            secondChildMargin, secondChildMargin,
+                                            secondChildMargin);
+
+                                    for (int firstChildGravity : GRAVITIES) {
+                                        firstChildLayoutParams.gravity = firstChildGravity;
+                                        for (int secondChildGravity : GRAVITIES) {
+                                            secondChildLayoutParams.gravity = secondChildGravity;
+
                                             for (int firstChildWeight : CHILD_WEIGHTS) {
+                                                firstChildLayoutParams.weight = firstChildWeight;
                                                 for (int secondChildWeight : CHILD_WEIGHTS) {
-                                                    executeTest(/*testSpec =*/createTestSpec(
-                                                            orientation,
-                                                            widthSpec, heightSpec,
-                                                            firstChildLayoutWidth,
-                                                            firstChildLayoutHeight,
-                                                            secondChildLayoutWidth,
-                                                            secondChildLayoutHeight,
-                                                            firstChildGravity,
-                                                            secondChildGravity,
-                                                            firstChildWeight,
-                                                            secondChildWeight));
+                                                    secondChildLayoutParams.weight =
+                                                            secondChildWeight;
+
+                                                    for (int widthSpec : MEASURE_SPECS) {
+                                                        for (int heightSpec : MEASURE_SPECS) {
+                                                            executeTest(controlContainer,
+                                                                    testContainer,
+                                                                    createTestSpec(
+                                                                            orientation,
+                                                                            widthSpec, heightSpec,
+                                                                            firstChildLayoutWidth,
+                                                                            firstChildLayoutHeight,
+                                                                            secondChildLayoutWidth,
+                                                                            secondChildLayoutHeight,
+                                                                            firstChildGravity,
+                                                                            secondChildGravity,
+                                                                            firstChildWeight,
+                                                                            secondChildWeight,
+                                                                            firstChildMargin,
+                                                                            secondChildMargin)
+                                                            );
+                                                        }
+                                                    }
                                                 }
                                             }
                                         }
                                     }
                                 }
+
                             }
                         }
                     }
@@ -121,47 +183,8 @@
         }
     }
 
-    private void executeTest(TestSpec testSpec) {
-        // GIVEN
-        final List<View> controlChildren =
-                new ArrayList<>();
-        final List<View> testChildren =
-                new ArrayList<>();
-
-        controlChildren.add(
-                buildChildView(
-                        testSpec.mFirstChildLayoutWidth,
-                        testSpec.mFirstChildLayoutHeight,
-                        testSpec.mFirstChildGravity,
-                        testSpec.mFirstChildWeight));
-        controlChildren.add(
-                buildChildView(
-                        testSpec.mSecondChildLayoutWidth,
-                        testSpec.mSecondChildLayoutHeight,
-                        testSpec.mSecondChildGravity,
-                        testSpec.mSecondChildWeight));
-
-        testChildren.add(
-                buildChildView(
-                        testSpec.mFirstChildLayoutWidth,
-                        testSpec.mFirstChildLayoutHeight,
-                        testSpec.mFirstChildGravity,
-                        testSpec.mFirstChildWeight));
-        testChildren.add(
-                buildChildView(
-                        testSpec.mSecondChildLayoutWidth,
-                        testSpec.mSecondChildLayoutHeight,
-                        testSpec.mSecondChildGravity,
-                        testSpec.mSecondChildWeight));
-
-        final LinearLayout controlContainer = buildLayout(false,
-                testSpec.mOrientation,
-                controlChildren);
-
-        final LinearLayout testContainer = buildLayout(true,
-                testSpec.mOrientation,
-                testChildren);
-
+    private void executeTest(LinearLayout controlContainer, LinearLayout testContainer,
+            TestSpec testSpec) {
         // WHEN
         controlContainer.measure(testSpec.mWidthSpec, testSpec.mHeightSpec);
         testContainer.measure(testSpec.mWidthSpec, testSpec.mHeightSpec);
@@ -171,6 +194,7 @@
         assertLayoutsEqual("Test Case:" + testSpec, controlContainer, testContainer);
     }
 
+
     private static class TestSpec {
         private final int mOrientation;
         private final int mWidthSpec;
@@ -183,6 +207,8 @@
         private final int mSecondChildGravity;
         private final int mFirstChildWeight;
         private final int mSecondChildWeight;
+        private final int mFirstChildMargin;
+        private final int mSecondChildMargin;
 
         TestSpec(
                 int orientation,
@@ -195,7 +221,9 @@
                 int firstChildGravity,
                 int secondChildGravity,
                 int firstChildWeight,
-                int secondChildWeight) {
+                int secondChildWeight,
+                int firstChildMargin,
+                int secondChildMargin) {
             mOrientation = orientation;
             mWidthSpec = widthSpec;
             mHeightSpec = heightSpec;
@@ -207,6 +235,8 @@
             mSecondChildGravity = secondChildGravity;
             mFirstChildWeight = firstChildWeight;
             mSecondChildWeight = secondChildWeight;
+            mFirstChildMargin = firstChildMargin;
+            mSecondChildMargin = secondChildMargin;
         }
 
         @Override
@@ -223,6 +253,8 @@
                     + ", mSecondChildGravity=" + mSecondChildGravity
                     + ", mFirstChildWeight=" + mFirstChildWeight
                     + ", mSecondChildWeight=" + mSecondChildWeight
+                    + ", mFirstChildMargin=" + mFirstChildMargin
+                    + ", mSecondChildMargin=" + mSecondChildMargin
                     + '}';
         }
 
@@ -246,15 +278,13 @@
         }
     }
 
-    private LinearLayout buildLayout(boolean isNotificationOptimized,
-            @LinearLayout.OrientationMode int orientation, List<View> children) {
+    private LinearLayout buildLayout(boolean isNotificationOptimized, List<View> children) {
         final LinearLayout linearLayout;
         if (isNotificationOptimized) {
             linearLayout = new NotificationOptimizedLinearLayout(mContext);
         } else {
             linearLayout = new LinearLayout(mContext);
         }
-        linearLayout.setOrientation(orientation);
         for (int i = 0; i < children.size(); i++) {
             linearLayout.addView(children.get(i));
         }
@@ -262,7 +292,8 @@
     }
 
     private void assertLayoutsEqual(String testCase, View controlView, View testView) {
-        mExpect.withMessage("MeasuredWidths are not equal. Test Case:" + testCase)
+        mExpect.withMessage(
+                        "MeasuredWidths are not equal. Test Case:" + testCase)
                 .that(testView.getMeasuredWidth()).isEqualTo(controlView.getMeasuredWidth());
         mExpect.withMessage("MeasuredHeights are not equal. Test Case:" + testCase)
                 .that(testView.getMeasuredHeight()).isEqualTo(controlView.getMeasuredHeight());
@@ -286,23 +317,12 @@
         }
     }
 
-    private static class TestView extends View {
-        TestView(Context context) {
-            super(context);
-        }
-
-        @Override
-        public int getBaseline() {
-            return 5;
-        }
-    }
-
-
     private TestSpec createTestSpec(int orientation,
             int widthSpec, int heightSpec,
             int firstChildLayoutWidth, int firstChildLayoutHeight, int secondChildLayoutWidth,
             int secondChildLayoutHeight, int firstChildGravity, int secondChildGravity,
-            int firstChildWeight, int secondChildWeight) {
+            int firstChildWeight, int secondChildWeight, int firstChildMargin,
+            int secondChildMargin) {
 
         return new TestSpec(
                 orientation,
@@ -314,16 +334,16 @@
                 firstChildGravity,
                 secondChildGravity,
                 firstChildWeight,
-                secondChildWeight);
+                secondChildWeight,
+                firstChildMargin,
+                secondChildMargin);
     }
 
-    private View buildChildView(int childLayoutWidth, int childLayoutHeight,
-            int childGravity, int childWeight) {
-        final View childView = new TestView(mContext);
-        // Set desired size using LayoutParams
-        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(childLayoutWidth,
-                childLayoutHeight, childWeight);
-        params.gravity = childGravity;
+    private View buildChildView() {
+        final View childView = new TextView(mContext);
+        // this is initial value. We are going to mutate this layout params during the test.
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(MATCH_PARENT,
+                WRAP_CONTENT);
         childView.setLayoutParams(params);
         return childView;
     }
diff --git a/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java b/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
index 7723d58..f91172d 100644
--- a/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/FastXmlSerializerTest.java
@@ -45,7 +45,6 @@
  */
 @SmallTest
 @RunWith(AndroidJUnit4.class)
-@IgnoreUnderRavenwood(blockedBy = Xml.class)
 public class FastXmlSerializerTest {
     private static final String TAG = "FastXmlSerializerTest";
 
@@ -146,6 +145,7 @@
 
     @Test
     @LargeTest
+    @IgnoreUnderRavenwood(reason = "Long test runtime")
     public void testAllCharacters() throws Exception {
         boolean ok = true;
         for (int i = 0; i < 0xffff; i++) {
diff --git a/data/etc/com.android.launcher3.xml b/data/etc/com.android.launcher3.xml
index 5616d1d..47e2e38 100644
--- a/data/etc/com.android.launcher3.xml
+++ b/data/etc/com.android.launcher3.xml
@@ -26,5 +26,6 @@
         <permission name="android.permission.STATUS_BAR"/>
         <permission name="android.permission.STOP_APP_SWITCHES"/>
         <permission name="android.permission.ACCESS_SHORTCUTS"/>
+        <permission name="android.permission.ACCESS_HIDDEN_PROFILES_FULL"/>
     </privapp-permissions>
 </permissions>
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index d8713f7a..4edfb09 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -316,6 +316,8 @@
         <permission name="android.permission.SET_LOW_POWER_STANDBY_PORTS" />
         <permission name="android.permission.MANAGE_ROLLBACKS"/>
         <permission name="android.permission.MANAGE_USB"/>
+        <!-- Permission required to test Launcher Apps APIs for hidden profiles -->
+        <permission name="android.permission.ACCESS_HIDDEN_PROFILES_FULL" />
         <!-- Needed for tests only -->
         <permission name="android.permission.MANAGE_CLOUDSEARCH" />
         <permission name="android.permission.MANAGE_WALLPAPER_EFFECTS_GENERATION" />
@@ -575,8 +577,13 @@
         <permission name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER"/>
         <!-- Permissions required for CTS test - CtsContactKeysProviderPrivilegedApp -->
         <permission name="android.permission.WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS"/>
+        <!-- Permission required for CTS test BlockedNumberContractTest -->
+        <permission name="android.permission.WRITE_BLOCKED_NUMBERS" />
+        <permission name="android.permission.READ_BLOCKED_NUMBERS" />
         <!-- Permission required for CTS test - PackageManagerTest -->
         <permission name="android.permission.DOMAIN_VERIFICATION_AGENT"/>
+        <!-- Permission required for CTS test CtsInputTestCases -->
+        <permission name="android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW" />
     </privapp-permissions>
 
     <privapp-permissions package="com.android.statementservice">
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index c8cbb98..42e3387 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -2077,6 +2077,12 @@
       "group": "WM_DEBUG_LOCKTASK",
       "at": "com\/android\/server\/wm\/LockTaskController.java"
     },
+    "-315778658": {
+      "message": "transferTouchGesture failed because args transferFromToken or transferToToken is null",
+      "level": "ERROR",
+      "group": "WM_DEBUG_EMBEDDED_WINDOWS",
+      "at": "com\/android\/server\/wm\/WindowManagerService.java"
+    },
     "-312353598": {
       "message": "Executing finish of activity: %s",
       "level": "VERBOSE",
@@ -2293,12 +2299,6 @@
       "group": "WM_DEBUG_ANIM",
       "at": "com\/android\/server\/wm\/WindowState.java"
     },
-    "-90559682": {
-      "message": "Config is skipping already pausing %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_CONFIGURATION",
-      "at": "com\/android\/server\/wm\/ActivityRecord.java"
-    },
     "-87705714": {
       "message": "findFocusedWindow: focusedApp=null using new focus @ %s",
       "level": "VERBOSE",
@@ -3547,12 +3547,6 @@
       "group": "WM_ERROR",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
-    "1011462000": {
-      "message": "Re-launching after pause: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_STATES",
-      "at": "com\/android\/server\/wm\/TaskFragment.java"
-    },
     "1015746067": {
       "message": "Display id=%d is ignoring orientation request for %d, return %d following a per-app override for %s",
       "level": "VERBOSE",
diff --git a/graphics/java/android/graphics/BitmapFactory.java b/graphics/java/android/graphics/BitmapFactory.java
index 1da8e18..d915b74 100644
--- a/graphics/java/android/graphics/BitmapFactory.java
+++ b/graphics/java/android/graphics/BitmapFactory.java
@@ -25,10 +25,13 @@
 import android.content.res.Resources;
 import android.os.Build;
 import android.os.Trace;
+import android.system.OsConstants;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.TypedValue;
 
+import libcore.io.IoBridge;
+
 import java.io.FileDescriptor;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -523,19 +526,19 @@
     public static Bitmap decodeFile(String pathName, Options opts) {
         validate(opts);
         Bitmap bm = null;
-        InputStream stream = null;
+        FileDescriptor fd = null;
         try {
-            stream = new FileInputStream(pathName);
-            bm = decodeStream(stream, null, opts);
+            fd = IoBridge.open(pathName, OsConstants.O_RDONLY);
+            bm = decodeFileDescriptor(fd, null, opts);
         } catch (Exception e) {
             /*  do nothing.
                 If the exception happened on open, bm will be null.
             */
-            Log.e("BitmapFactory", "Unable to decode stream: " + e);
+            Log.e("BitmapFactory", "Unable to decode file: " + e);
         } finally {
-            if (stream != null) {
+            if (fd != null) {
                 try {
-                    stream.close();
+                    IoBridge.closeAndSignalBlockedThreads(fd);
                 } catch (IOException e) {
                     // do nothing here
                 }
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index b33a5d2..f3bb217 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -1128,6 +1128,30 @@
         return false;
     }
 
+    /**
+     * Intersect the current clip with the specified shader.
+     * The shader will be treated as an alpha mask, taking the intersection of the two.
+     *
+     * @param shader The shader to intersect with the current clip
+     */
+    @FlaggedApi(Flags.FLAG_CLIP_SHADER)
+    public void clipShader(@NonNull Shader shader) {
+        nClipShader(mNativeCanvasWrapper, shader.getNativeInstance(),
+                Region.Op.INTERSECT.nativeInt);
+    }
+
+    /**
+     * Set the clip to the difference of the current clip and the shader.
+     * The shader will be treated as an alpha mask, taking the difference of the two.
+     *
+     * @param shader The shader to intersect with the current clip
+     */
+    @FlaggedApi(Flags.FLAG_CLIP_SHADER)
+    public void clipOutShader(@NonNull Shader shader) {
+        nClipShader(mNativeCanvasWrapper, shader.getNativeInstance(),
+                Region.Op.DIFFERENCE.nativeInt);
+    }
+
     public @Nullable DrawFilter getDrawFilter() {
         return mDrawFilter;
     }
@@ -1472,6 +1496,8 @@
     @CriticalNative
     private static native boolean nClipPath(long nativeCanvas, long nativePath, int regionOp);
     @CriticalNative
+    private static native void nClipShader(long nativeCanvas, long nativeShader, int regionOp);
+    @CriticalNative
     private static native void nSetDrawFilter(long nativeCanvas, long nativeFilter);
     @CriticalNative
     private static native void nGetMatrix(long nativeCanvas, long nativeMatrix);
diff --git a/graphics/java/android/view/PixelCopy.java b/graphics/java/android/view/PixelCopy.java
index e6de597..9159a00 100644
--- a/graphics/java/android/view/PixelCopy.java
+++ b/graphics/java/android/view/PixelCopy.java
@@ -96,7 +96,7 @@
      *
      * The contents of the source will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the SurfaceView's Surface will be used as the source of the copy.
      *
      * @param source The source from which to copy
@@ -117,7 +117,7 @@
      *
      * The contents of the source will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the SurfaceView's Surface will be used as the source of the copy.
      *
      * @param source The source from which to copy
@@ -143,7 +143,7 @@
      *
      * The contents of the source will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the Surface will be used as the source of the copy.
      *
      * @param source The source from which to copy
@@ -164,7 +164,7 @@
      *
      * The contents of the source rect will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the Surface will be used as the source of the copy.
      *
      * @param source The source from which to copy
@@ -201,7 +201,7 @@
      *
      * The contents of the source will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the Window's Surface will be used as the source of the copy.
      *
      * Note: This is limited to being able to copy from Window's with a non-null
@@ -231,7 +231,7 @@
      *
      * The contents of the source rect will be scaled to fit exactly inside the bitmap.
      * The pixel format of the source buffer will be converted, as part of the copy,
-     * to fit the the bitmap's {@link Bitmap.Config}. The most recently queued buffer
+     * to fit the bitmap's {@link Bitmap.Config}. The most recently queued buffer
      * in the Window's Surface will be used as the source of the copy.
      *
      * Note: This is limited to being able to copy from Window's with a non-null
diff --git a/keystore/aaid/aidl/android/security/keystore/IKeyAttestationApplicationIdProvider.aidl b/keystore/aaid/aidl/android/security/keystore/IKeyAttestationApplicationIdProvider.aidl
index c360cb8..cfc5980 100644
--- a/keystore/aaid/aidl/android/security/keystore/IKeyAttestationApplicationIdProvider.aidl
+++ b/keystore/aaid/aidl/android/security/keystore/IKeyAttestationApplicationIdProvider.aidl
@@ -20,8 +20,14 @@
 
 /** @hide */
 interface IKeyAttestationApplicationIdProvider {
+    const int ERROR_GET_ATTESTATION_APPLICATION_ID_FAILED = 1;
+
     /**
      * Provides information describing the possible applications identified by a UID.
+     *
+     * In case of not getting package ids from uid return
+     * {@link #ERROR_GET_ATTESTATION_APPLICATION_ID_FAILED} to the caller.
+     *
      * @hide
      */
     KeyAttestationApplicationId getKeyAttestationApplicationId(int uid);
diff --git a/keystore/java/android/security/keystore/KeyGenParameterSpec.java b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
index 4982f37..244fe30 100644
--- a/keystore/java/android/security/keystore/KeyGenParameterSpec.java
+++ b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
@@ -618,7 +618,7 @@
      * @see #isMgf1DigestsSpecified()
      */
     @NonNull
-    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
     public @KeyProperties.DigestEnum Set<String> getMgf1Digests() {
         if (mMgf1Digests.isEmpty()) {
             throw new IllegalStateException("Mask generation function (MGF) not specified");
@@ -633,7 +633,7 @@
      * @see #getMgf1Digests()
      */
     @NonNull
-    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
     public boolean isMgf1DigestsSpecified() {
         return !mMgf1Digests.isEmpty();
     }
@@ -1292,7 +1292,7 @@
          * <p>See {@link KeyProperties}.{@code DIGEST} constants.
          */
         @NonNull
-        @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+        @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
         public Builder setMgf1Digests(@NonNull @KeyProperties.DigestEnum String... mgf1Digests) {
             mMgf1Digests = Set.of(mgf1Digests);
             return this;
diff --git a/keystore/java/android/security/keystore/KeyProtection.java b/keystore/java/android/security/keystore/KeyProtection.java
index 7b6b2d1..2495d1a 100644
--- a/keystore/java/android/security/keystore/KeyProtection.java
+++ b/keystore/java/android/security/keystore/KeyProtection.java
@@ -401,7 +401,7 @@
      * @see #isMgf1DigestsSpecified()
      */
     @NonNull
-    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
     public @KeyProperties.DigestEnum Set<String> getMgf1Digests() {
         if (mMgf1Digests.isEmpty()) {
             throw new IllegalStateException("Mask generation function (MGF) not specified");
@@ -416,7 +416,7 @@
      * @see #getMgf1Digests()
      */
     @NonNull
-    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+    @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
     public boolean isMgf1DigestsSpecified() {
         return !mMgf1Digests.isEmpty();
     }
@@ -799,7 +799,7 @@
          * <p>See {@link KeyProperties}.{@code DIGEST} constants.
          */
         @NonNull
-        @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER)
+        @FlaggedApi(android.security.Flags.FLAG_MGF1_DIGEST_SETTER_V2)
         public Builder setMgf1Digests(@Nullable @KeyProperties.DigestEnum String... mgf1Digests) {
             mMgf1Digests = Set.of(mgf1Digests);
             return this;
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java
index 83ddfc5..e6c652c 100644
--- a/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreKeyPairGeneratorSpi.java
@@ -974,7 +974,7 @@
 
     private static boolean getMgf1DigestSetterFlag() {
         try {
-            return Flags.mgf1DigestSetter();
+            return Flags.mgf1DigestSetterV2();
         } catch (SecurityException e) {
             Log.w(TAG, "Cannot read MGF1 Digest setter flag value", e);
             return false;
diff --git a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
index 2d8c5a3..e6a63b9 100644
--- a/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
+++ b/keystore/java/android/security/keystore2/AndroidKeyStoreSpi.java
@@ -259,7 +259,7 @@
 
     private static boolean getMgf1DigestSetterFlag() {
         try {
-            return Flags.mgf1DigestSetter();
+            return Flags.mgf1DigestSetterV2();
         } catch (SecurityException e) {
             Log.w(NAME, "Cannot read MGF1 Digest setter flag value", e);
             return false;
diff --git a/libs/WindowManager/Shell/Android.bp b/libs/WindowManager/Shell/Android.bp
index a12fa5f..310300d 100644
--- a/libs/WindowManager/Shell/Android.bp
+++ b/libs/WindowManager/Shell/Android.bp
@@ -19,6 +19,7 @@
     // to get the below license kinds:
     //   SPDX-license-identifier-Apache-2.0
     default_applicable_licenses: ["frameworks_base_license"],
+    default_team: "trendy_team_multitasking_windowing",
 }
 
 // Begin ProtoLog
diff --git a/libs/WindowManager/Shell/res/drawable/pip_split.xml b/libs/WindowManager/Shell/res/drawable/pip_split.xml
deleted file mode 100644
index 2cfdf6e..0000000
--- a/libs/WindowManager/Shell/res/drawable/pip_split.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ Copyright (C) 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.
-  -->
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="@dimen/pip_expand_action_inner_size"
-        android:height="@dimen/pip_expand_action_inner_size"
-        android:viewportWidth="24"
-        android:viewportHeight="24">
-
-    <path
-        android:fillColor="#FFFFFF"
-        android:pathData="M20,18h-5V6h5V18z M22,18V6c0-1.1-0.9-2-2-2h-5c-1.1,0-2,0.9-2,2v12c0,1.1,0.9,2,2,2h5C21.1,20,22,19.1,22,18z M9,18H4V6h5
-		V18z M11,18V6c0-1.1-0.9-2-2-2H4C2.9,4,2,4.9,2,6v12c0,1.1,0.9,2,2,2h5C10.1,20,11,19.1,11,18z" />
-</vector>
diff --git a/libs/WindowManager/Shell/res/layout/pip_menu.xml b/libs/WindowManager/Shell/res/layout/pip_menu.xml
index 1dd17ba..258f506 100644
--- a/libs/WindowManager/Shell/res/layout/pip_menu.xml
+++ b/libs/WindowManager/Shell/res/layout/pip_menu.xml
@@ -79,16 +79,6 @@
             android:src="@drawable/pip_ic_settings"
             android:background="?android:selectableItemBackgroundBorderless" />
 
-        <ImageButton
-            android:id="@+id/enter_split"
-            android:layout_width="@dimen/pip_split_icon_size"
-            android:layout_height="@dimen/pip_split_icon_size"
-            android:layout_gravity="top|start"
-            android:layout_margin="@dimen/pip_split_icon_margin"
-            android:gravity="center"
-            android:contentDescription="@string/pip_phone_enter_split"
-            android:src="@drawable/pip_split"
-            android:background="?android:selectableItemBackgroundBorderless" />
     </LinearLayout>
 
     <!--TODO (b/156917828): Add content description for a11y purposes?-->
diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml
index a80afe2..8baaf2f 100644
--- a/libs/WindowManager/Shell/res/values/config.xml
+++ b/libs/WindowManager/Shell/res/values/config.xml
@@ -48,9 +48,6 @@
     <!-- PiP minimum size, which is a % based off the shorter side of display width and height -->
     <fraction name="config_pipShortestEdgePercent">40%</fraction>
 
-    <!-- Show PiP enter split icon, which allows apps to directly enter splitscreen from PiP. -->
-    <bool name="config_pipEnableEnterSplitButton">false</bool>
-
     <!-- Time (duration in milliseconds) that the shell waits for an app to close the PiP by itself
          if a custom action is present before closing it. -->
     <integer name="config_pipForceCloseDelay">1000</integer>
diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml
index 28e7098..f73775b 100644
--- a/libs/WindowManager/Shell/res/values/dimen.xml
+++ b/libs/WindowManager/Shell/res/values/dimen.xml
@@ -67,10 +67,6 @@
     <dimen name="pip_resize_handle_margin">4dp</dimen>
     <dimen name="pip_resize_handle_padding">0dp</dimen>
 
-    <!-- PIP Split icon size and margin. -->
-    <dimen name="pip_split_icon_size">24dp</dimen>
-    <dimen name="pip_split_icon_margin">12dp</dimen>
-
     <!-- PIP stash offset size, which is the width of visible PIP region when stashed. -->
     <dimen name="pip_stash_offset">32dp</dimen>
 
@@ -266,6 +262,10 @@
     <dimen name="bubble_bar_manage_menu_item_height">52dp</dimen>
     <!-- Size of the icons in the bubble bar manage menu. -->
     <dimen name="bubble_bar_manage_menu_item_icon_size">20dp</dimen>
+    <!-- Corner radius for expanded view when bubble bar is used -->
+    <dimen name="bubble_bar_expanded_view_corner_radius">16dp</dimen>
+    <!-- Corner radius for expanded view while it is being dragged -->
+    <dimen name="bubble_bar_expanded_view_corner_radius_dragged">28dp</dimen>
 
     <!-- Bottom and end margin for compat buttons. -->
     <dimen name="compat_button_margin">24dp</dimen>
@@ -435,6 +435,9 @@
          Text varies in size, we will calculate that width separately. -->
     <dimen name="desktop_mode_app_details_width_minus_text">62dp</dimen>
 
+    <!-- 22dp padding + 24dp app icon + 16dp expand button + 86dp text (max) -->
+    <dimen name="desktop_mode_app_details_max_width">148dp</dimen>
+
     <!-- The width of the maximize menu in desktop mode. -->
     <dimen name="desktop_mode_maximize_menu_width">287dp</dimen>
 
diff --git a/libs/WindowManager/Shell/res/values/strings.xml b/libs/WindowManager/Shell/res/values/strings.xml
index 3e66bbb..812a81b 100644
--- a/libs/WindowManager/Shell/res/values/strings.xml
+++ b/libs/WindowManager/Shell/res/values/strings.xml
@@ -24,9 +24,6 @@
     <!-- Label for PIP settings button [CHAR LIMIT=NONE]-->
     <string name="pip_phone_settings">Settings</string>
 
-    <!-- Label for the PIP enter split button [CHAR LIMIT=NONE] -->
-    <string name="pip_phone_enter_split">Enter split screen</string>
-
     <!-- Title of menu shown over picture-in-picture. Used for accessibility. -->
     <string name="pip_menu_title">Menu</string>
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index df9ba63..123693d 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -176,7 +176,9 @@
     private float mCornerRadius = 0f;
     private int mBackgroundColorFloating;
     private boolean mUsingMaxHeight;
+    private int mLeftClip = 0;
     private int mTopClip = 0;
+    private int mRightClip = 0;
     private int mBottomClip = 0;
     @Nullable private Bubble mBubble;
     private PendingIntent mPendingIntent;
@@ -353,7 +355,8 @@
         mExpandedViewContainer.setOutlineProvider(new ViewOutlineProvider() {
             @Override
             public void getOutline(View view, Outline outline) {
-                Rect clip = new Rect(0, mTopClip, view.getWidth(), view.getHeight() - mBottomClip);
+                Rect clip = new Rect(mLeftClip, mTopClip, view.getWidth() - mRightClip,
+                        view.getHeight() - mBottomClip);
                 outline.setRoundRect(clip, mCornerRadius);
             }
         });
@@ -756,8 +759,26 @@
         onContainerClipUpdate();
     }
 
+    /**
+     * Sets the clipping for the view.
+     */
+    public void setTaskViewClip(Rect rect) {
+        mLeftClip = rect.left;
+        mTopClip = rect.top;
+        mRightClip = rect.right;
+        mBottomClip = rect.bottom;
+        onContainerClipUpdate();
+    }
+
+    /**
+     * Returns a rect representing the clipping for the view.
+     */
+    public Rect getTaskViewClip() {
+        return new Rect(mLeftClip, mTopClip, mRightClip, mBottom);
+    }
+
     private void onContainerClipUpdate() {
-        if (mTopClip == 0 && mBottomClip == 0) {
+        if (mTopClip == 0 && mBottomClip == 0 && mRightClip == 0 && mLeftClip == 0) {
             if (mIsClipping) {
                 mIsClipping = false;
                 if (mTaskView != null) {
@@ -775,8 +796,10 @@
             }
             mExpandedViewContainer.invalidateOutline();
             if (mTaskView != null) {
-                mTaskView.setClipBounds(new Rect(0, mTopClip, mTaskView.getWidth(),
-                        mTaskView.getHeight() - mBottomClip));
+                Rect clipBounds = new Rect(mLeftClip, mTopClip,
+                        mTaskView.getWidth() - mRightClip,
+                        mTaskView.getHeight() - mBottomClip);
+                mTaskView.setClipBounds(clipBounds);
             }
         }
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index 35c1e8c..b23fd52 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -441,43 +441,42 @@
     /** Magnet listener that handles animating and dismissing individual dragged-out bubbles. */
     private final MagnetizedObject.MagnetListener mIndividualBubbleMagnetListener =
             new MagnetizedObject.MagnetListener() {
+
                 @Override
-                public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) {
-                    if (mExpandedAnimationController.getDraggedOutBubble() == null) {
-                        return;
+                public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject draggedObject) {
+                    if (draggedObject.getUnderlyingObject() instanceof View view) {
+                        animateDismissBubble(view, true);
                     }
-                    animateDismissBubble(
-                            mExpandedAnimationController.getDraggedOutBubble(), true);
                 }
 
                 @Override
                 public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject draggedObject,
                         float velX, float velY, boolean wasFlungOut) {
-                    if (mExpandedAnimationController.getDraggedOutBubble() == null) {
-                        return;
-                    }
-                    animateDismissBubble(
-                            mExpandedAnimationController.getDraggedOutBubble(), false);
+                    if (draggedObject.getUnderlyingObject() instanceof View view) {
+                        animateDismissBubble(view, false);
 
-                    if (wasFlungOut) {
-                        mExpandedAnimationController.snapBubbleBack(
-                                mExpandedAnimationController.getDraggedOutBubble(), velX, velY);
-                        mDismissView.hide();
-                    } else {
-                        mExpandedAnimationController.onUnstuckFromTarget();
+                        if (wasFlungOut) {
+                            mExpandedAnimationController.snapBubbleBack(view, velX, velY);
+                            mDismissView.hide();
+                        } else {
+                            mExpandedAnimationController.onUnstuckFromTarget();
+                        }
                     }
                 }
 
                 @Override
-                public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
-                    if (mExpandedAnimationController.getDraggedOutBubble() == null) {
-                        return;
+                public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject<?> draggedObject) {
+                    if (draggedObject.getUnderlyingObject() instanceof View view) {
+                        mExpandedAnimationController.dismissDraggedOutBubble(
+                                view /* bubble */,
+                                mDismissView.getHeight() /* translationYBy */,
+                                () -> dismissBubbleIfExists(
+                                        mBubbleData.getBubbleWithView(view)) /* after */);
                     }
 
-                    mExpandedAnimationController.dismissDraggedOutBubble(
-                            mExpandedAnimationController.getDraggedOutBubble() /* bubble */,
-                            mDismissView.getHeight() /* translationYBy */,
-                            BubbleStackView.this::dismissMagnetizedObject /* after */);
                     mDismissView.hide();
                 }
             };
@@ -487,12 +486,14 @@
             new MagnetizedObject.MagnetListener() {
                 @Override
                 public void onStuckToTarget(
-                        @NonNull MagnetizedObject.MagneticTarget target) {
+                        @NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject<?> draggedObject) {
                     animateDismissBubble(mBubbleContainer, true);
                 }
 
                 @Override
                 public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject<?> draggedObject,
                         float velX, float velY, boolean wasFlungOut) {
                     animateDismissBubble(mBubbleContainer, false);
                     if (wasFlungOut) {
@@ -505,14 +506,14 @@
                 }
 
                 @Override
-                public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+                public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                        @NonNull MagnetizedObject<?> draggedObject) {
                     mStackAnimationController.animateStackDismissal(
                             mDismissView.getHeight() /* translationYBy */,
                             () -> {
+                                mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
                                 resetDismissAnimator();
-                                dismissMagnetizedObject();
-                            }
-                    );
+                            } /*after */);
                     mDismissView.hide();
                 }
             };
@@ -2759,19 +2760,6 @@
         return mMagnetizedObject != null && mMagnetizedObject.maybeConsumeMotionEvent(event);
     }
 
-    /**
-     * Dismisses the magnetized object - either an individual bubble, if we're expanded, or the
-     * stack, if we're collapsed.
-     */
-    private void dismissMagnetizedObject() {
-        if (mIsExpanded) {
-            final View draggedOutBubbleView = (View) mMagnetizedObject.getUnderlyingObject();
-            dismissBubbleIfExists(mBubbleData.getBubbleWithView(draggedOutBubbleView));
-        } else {
-            mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE);
-        }
-    }
-
     private void dismissBubbleIfExists(@Nullable BubbleViewProvider bubble) {
         if (bubble != null && mBubbleData.hasBubbleInStackWithKey(bubble.getKey())) {
             if (mIsExpanded && mBubbleData.getBubbles().size() > 1
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java
index 84a616f..4e995bc 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java
@@ -15,17 +15,28 @@
  */
 package com.android.wm.shell.bubbles.bar;
 
+import static android.view.View.SCALE_X;
+import static android.view.View.SCALE_Y;
+import static android.view.View.TRANSLATION_X;
+import static android.view.View.TRANSLATION_Y;
 import static android.view.View.VISIBLE;
+import static android.view.View.X;
+import static android.view.View.Y;
+
+import static com.android.wm.shell.animation.Interpolators.EMPHASIZED;
+import static com.android.wm.shell.animation.Interpolators.EMPHASIZED_DECELERATE;
+import static com.android.wm.shell.bubbles.bar.BubbleBarExpandedView.CORNER_RADIUS;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
+import android.animation.AnimatorSet;
+import android.animation.ObjectAnimator;
 import android.animation.ValueAnimator;
 import android.content.Context;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.util.Log;
 import android.util.Size;
-import android.view.View;
 import android.widget.FrameLayout;
 
 import androidx.annotation.Nullable;
@@ -48,15 +59,16 @@
     private static final float EXPANDED_VIEW_ANIMATE_SCALE_AMOUNT = 0.1f;
     private static final float EXPANDED_VIEW_ANIMATE_OUT_SCALE_AMOUNT = .75f;
     private static final int EXPANDED_VIEW_ALPHA_ANIMATION_DURATION = 150;
-    private static final int EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION = 100;
-    private static final int EXPANDED_VIEW_ANIMATE_POSITION_DURATION = 300;
+    private static final int EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION = 400;
+    private static final int EXPANDED_VIEW_ANIMATE_TO_REST_DURATION = 400;
     private static final int EXPANDED_VIEW_DISMISS_DURATION = 250;
-    private static final int EXPANDED_VIEW_DRAG_ANIMATION_DURATION = 150;
+    private static final int EXPANDED_VIEW_DRAG_ANIMATION_DURATION = 400;
     /**
      * Additional scale applied to expanded view when it is positioned inside a magnetic target.
      */
-    private static final float EXPANDED_VIEW_IN_TARGET_SCALE = 0.6f;
-    private static final float EXPANDED_VIEW_DRAG_SCALE = 0.5f;
+    private static final float EXPANDED_VIEW_IN_TARGET_SCALE = 0.2f;
+    private static final float EXPANDED_VIEW_DRAG_SCALE = 0.4f;
+    private static final float DISMISS_VIEW_SCALE = 1.25f;
 
     /** Spring config for the expanded view scale-in animation. */
     private final PhysicsAnimator.SpringConfig mScaleInSpringConfig =
@@ -72,6 +84,9 @@
     /** Animator for animating the expanded view's alpha (including the TaskView inside it). */
     private final ValueAnimator mExpandedViewAlphaAnimator = ValueAnimator.ofFloat(0f, 1f);
 
+    @Nullable
+    private Animator mRunningDragAnimator;
+
     private final Context mContext;
     private final BubbleBarLayerView mLayerView;
     private final BubblePositioner mPositioner;
@@ -232,14 +247,18 @@
             Log.w(TAG, "Trying to animate start drag without a bubble");
             return;
         }
-        bbev.setPivotX(bbev.getWidth() / 2f);
-        bbev.setPivotY(0f);
-        bbev.animate()
-                .scaleX(EXPANDED_VIEW_DRAG_SCALE)
-                .scaleY(EXPANDED_VIEW_DRAG_SCALE)
-                .setInterpolator(Interpolators.EMPHASIZED)
-                .setDuration(EXPANDED_VIEW_DRAG_ANIMATION_DURATION)
-                .start();
+        setDragPivot(bbev);
+        AnimatorSet animatorSet = new AnimatorSet();
+        // Corner radius gets scaled, apply the reverse scale to ensure we have the desired radius
+        final float cornerRadius = bbev.getDraggedCornerRadius() / EXPANDED_VIEW_DRAG_SCALE;
+        animatorSet.playTogether(
+                ObjectAnimator.ofFloat(bbev, SCALE_X, EXPANDED_VIEW_DRAG_SCALE),
+                ObjectAnimator.ofFloat(bbev, SCALE_Y, EXPANDED_VIEW_DRAG_SCALE),
+                ObjectAnimator.ofFloat(bbev, CORNER_RADIUS, cornerRadius)
+        );
+        animatorSet.setDuration(EXPANDED_VIEW_DRAG_ANIMATION_DURATION).setInterpolator(EMPHASIZED);
+        animatorSet.addListener(new DragAnimatorListenerAdapter(bbev));
+        startNewDragAnimation(animatorSet);
     }
 
     /**
@@ -258,6 +277,7 @@
         int[] location = bbev.getLocationOnScreen();
         int diffFromBottom = mPositioner.getScreenRect().bottom - location[1];
 
+        cancelAnimations();
         bbev.animate()
                 // 2x distance from bottom so the view flies out
                 .translationYBy(diffFromBottom * 2)
@@ -276,19 +296,24 @@
             return;
         }
         Point restPoint = getExpandedViewRestPosition(getExpandedViewSize());
-        bbev.animate()
-                .x(restPoint.x)
-                .y(restPoint.y)
-                .scaleX(1f)
-                .scaleY(1f)
-                .setDuration(EXPANDED_VIEW_ANIMATE_POSITION_DURATION)
-                .setInterpolator(Interpolators.EMPHASIZED_DECELERATE)
-                .withStartAction(() -> bbev.setAnimating(true))
-                .withEndAction(() -> {
-                    bbev.setAnimating(false);
-                    bbev.resetPivot();
-                })
-                .start();
+
+        AnimatorSet animatorSet = new AnimatorSet();
+        animatorSet.playTogether(
+                ObjectAnimator.ofFloat(bbev, X, restPoint.x),
+                ObjectAnimator.ofFloat(bbev, Y, restPoint.y),
+                ObjectAnimator.ofFloat(bbev, SCALE_X, 1f),
+                ObjectAnimator.ofFloat(bbev, SCALE_Y, 1f),
+                ObjectAnimator.ofFloat(bbev, CORNER_RADIUS, bbev.getRestingCornerRadius())
+        );
+        animatorSet.setDuration(EXPANDED_VIEW_ANIMATE_TO_REST_DURATION).setInterpolator(EMPHASIZED);
+        animatorSet.addListener(new DragAnimatorListenerAdapter(bbev) {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                bbev.resetPivot();
+            }
+        });
+        startNewDragAnimation(animatorSet);
     }
 
     /**
@@ -304,17 +329,7 @@
             return;
         }
 
-        // Calculate scale of expanded view so it fits inside the magnetic target
-        float bbevMaxSide = Math.max(bbev.getWidth(), bbev.getHeight());
-        View targetView = target.getTargetView();
-        float targetMaxSide = Math.max(targetView.getWidth(), targetView.getHeight());
-        // Reduce target size to have some padding between the target and expanded view
-        targetMaxSide *= EXPANDED_VIEW_IN_TARGET_SCALE;
-        float scaleInTarget = targetMaxSide / bbevMaxSide;
-
-        // Scale around the top center of the expanded view. Same as when dragging.
-        bbev.setPivotX(bbev.getWidth() / 2f);
-        bbev.setPivotY(0);
+        setDragPivot(bbev);
 
         // When the view animates into the target, it is scaled down with the pivot at center top.
         // Find the point on the view that would be the center of the view at its final scale.
@@ -330,13 +345,13 @@
         // Get scaled width of the view and adjust mTmpLocation so that point on x-axis is at the
         // center of the view at its current size.
         float currentWidth = bbev.getWidth() * bbev.getScaleX();
-        mTmpLocation[0] += currentWidth / 2;
+        mTmpLocation[0] += (int) (currentWidth / 2f);
         // Since pivotY is at the top of the view, at final scale, top coordinate of the view
         // remains the same.
         // Get height of the view at final scale and adjust mTmpLocation so that point on y-axis is
         // moved down by half of the height at final scale.
-        float targetHeight = bbev.getHeight() * scaleInTarget;
-        mTmpLocation[1] += targetHeight / 2;
+        float targetHeight = bbev.getHeight() * EXPANDED_VIEW_IN_TARGET_SCALE;
+        mTmpLocation[1] += (int) (targetHeight / 2f);
         // mTmpLocation is now set to the point on the view that will be the center of the view once
         // scale is applied.
 
@@ -344,41 +359,61 @@
         float xDiff = target.getCenterOnScreen().x - mTmpLocation[0];
         float yDiff = target.getCenterOnScreen().y - mTmpLocation[1];
 
-        bbev.animate()
-                .translationX(bbev.getTranslationX() + xDiff)
-                .translationY(bbev.getTranslationY() + yDiff)
-                .scaleX(scaleInTarget)
-                .scaleY(scaleInTarget)
-                .setDuration(EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION)
-                .setInterpolator(Interpolators.EMPHASIZED)
-                .withStartAction(() -> bbev.setAnimating(true))
-                .withEndAction(() -> {
-                    bbev.setAnimating(false);
-                    if (endRunnable != null) {
-                        endRunnable.run();
-                    }
-                })
-                .start();
+        // Corner radius gets scaled, apply the reverse scale to ensure we have the desired radius
+        final float cornerRadius = bbev.getDraggedCornerRadius() / EXPANDED_VIEW_IN_TARGET_SCALE;
+
+        AnimatorSet animatorSet = new AnimatorSet();
+        animatorSet.playTogether(
+                // Move expanded view to the center of dismiss view
+                ObjectAnimator.ofFloat(bbev, TRANSLATION_X, bbev.getTranslationX() + xDiff),
+                ObjectAnimator.ofFloat(bbev, TRANSLATION_Y, bbev.getTranslationY() + yDiff),
+                // Scale expanded view down
+                ObjectAnimator.ofFloat(bbev, SCALE_X, EXPANDED_VIEW_IN_TARGET_SCALE),
+                ObjectAnimator.ofFloat(bbev, SCALE_Y, EXPANDED_VIEW_IN_TARGET_SCALE),
+                // Update corner radius for expanded view
+                ObjectAnimator.ofFloat(bbev, CORNER_RADIUS, cornerRadius),
+                // Scale dismiss view up
+                ObjectAnimator.ofFloat(target.getTargetView(), SCALE_X, DISMISS_VIEW_SCALE),
+                ObjectAnimator.ofFloat(target.getTargetView(), SCALE_Y, DISMISS_VIEW_SCALE)
+        );
+        animatorSet.setDuration(EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION).setInterpolator(
+                EMPHASIZED_DECELERATE);
+        animatorSet.addListener(new DragAnimatorListenerAdapter(bbev) {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                if (endRunnable != null) {
+                    endRunnable.run();
+                }
+            }
+        });
+        startNewDragAnimation(animatorSet);
     }
 
     /**
      * Animate currently expanded view when it is released from dismiss view
      */
-    public void animateUnstuckFromDismissView() {
-        BubbleBarExpandedView expandedView = getExpandedView();
-        if (expandedView == null) {
+    public void animateUnstuckFromDismissView(MagneticTarget target) {
+        BubbleBarExpandedView bbev = getExpandedView();
+        if (bbev == null) {
             Log.w(TAG, "Trying to unsnap the expanded view from dismiss without a bubble");
             return;
         }
-        expandedView
-                .animate()
-                .scaleX(EXPANDED_VIEW_DRAG_SCALE)
-                .scaleY(EXPANDED_VIEW_DRAG_SCALE)
-                .setDuration(EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION)
-                .setInterpolator(Interpolators.EMPHASIZED)
-                .withStartAction(() -> expandedView.setAnimating(true))
-                .withEndAction(() -> expandedView.setAnimating(false))
-                .start();
+        setDragPivot(bbev);
+        // Corner radius gets scaled, apply the reverse scale to ensure we have the desired radius
+        final float cornerRadius = bbev.getDraggedCornerRadius() / EXPANDED_VIEW_DRAG_SCALE;
+        AnimatorSet animatorSet = new AnimatorSet();
+        animatorSet.playTogether(
+                ObjectAnimator.ofFloat(bbev, SCALE_X, EXPANDED_VIEW_DRAG_SCALE),
+                ObjectAnimator.ofFloat(bbev, SCALE_Y, EXPANDED_VIEW_DRAG_SCALE),
+                ObjectAnimator.ofFloat(bbev, CORNER_RADIUS, cornerRadius),
+                ObjectAnimator.ofFloat(target.getTargetView(), SCALE_X, 1f),
+                ObjectAnimator.ofFloat(target.getTargetView(), SCALE_Y, 1f)
+        );
+        animatorSet.setDuration(EXPANDED_VIEW_SNAP_TO_DISMISS_DURATION).setInterpolator(
+                EMPHASIZED_DECELERATE);
+        animatorSet.addListener(new DragAnimatorListenerAdapter(bbev));
+        startNewDragAnimation(animatorSet);
     }
 
     /**
@@ -391,6 +426,10 @@
         if (bbev != null) {
             bbev.animate().cancel();
         }
+        if (mRunningDragAnimator != null) {
+            mRunningDragAnimator.cancel();
+            mRunningDragAnimator = null;
+        }
     }
 
     private @Nullable BubbleBarExpandedView getExpandedView() {
@@ -438,4 +477,35 @@
         final int height = mPositioner.getExpandedViewHeightForBubbleBar(isOverflowExpanded);
         return new Size(width, height);
     }
+
+    private void startNewDragAnimation(Animator animator) {
+        cancelAnimations();
+        mRunningDragAnimator = animator;
+        animator.start();
+    }
+
+    private static void setDragPivot(BubbleBarExpandedView bbev) {
+        bbev.setPivotX(bbev.getWidth() / 2f);
+        bbev.setPivotY(0f);
+    }
+
+    private class DragAnimatorListenerAdapter extends AnimatorListenerAdapter {
+
+        private final BubbleBarExpandedView mBubbleBarExpandedView;
+
+        DragAnimatorListenerAdapter(BubbleBarExpandedView bbev) {
+            mBubbleBarExpandedView = bbev;
+        }
+
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mBubbleBarExpandedView.setAnimating(true);
+        }
+
+        @Override
+        public void onAnimationEnd(Animator animation) {
+            mBubbleBarExpandedView.setAnimating(false);
+            mRunningDragAnimator = null;
+        }
+    }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
index ebb8e3e..eddd43f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java
@@ -27,13 +27,13 @@
 import android.graphics.Outline;
 import android.graphics.Rect;
 import android.util.AttributeSet;
+import android.util.FloatProperty;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewOutlineProvider;
 import android.widget.FrameLayout;
 
-import com.android.internal.policy.ScreenDecorationsUtils;
 import com.android.wm.shell.R;
 import com.android.wm.shell.bubbles.Bubble;
 import com.android.wm.shell.bubbles.BubbleExpandedViewManager;
@@ -61,6 +61,23 @@
         void onBackPressed();
     }
 
+    /**
+     * A property wrapper around corner radius for the expanded view, handled by
+     * {@link #setCornerRadius(float)} and {@link #getCornerRadius()} methods.
+     */
+    public static final FloatProperty<BubbleBarExpandedView> CORNER_RADIUS = new FloatProperty<>(
+            "cornerRadius") {
+        @Override
+        public void setValue(BubbleBarExpandedView bbev, float radius) {
+            bbev.setCornerRadius(radius);
+        }
+
+        @Override
+        public Float get(BubbleBarExpandedView bbev) {
+            return bbev.getCornerRadius();
+        }
+    };
+
     private static final String TAG = BubbleBarExpandedView.class.getSimpleName();
     private static final int INVALID_TASK_ID = -1;
 
@@ -78,7 +95,12 @@
     private int mCaptionHeight;
 
     private int mBackgroundColor;
-    private float mCornerRadius = 0f;
+    /** Corner radius used when view is resting */
+    private float mRestingCornerRadius = 0f;
+    /** Corner radius applied while dragging */
+    private float mDraggedCornerRadius = 0f;
+    /** Current corner radius */
+    private float mCurrentCornerRadius = 0f;
 
     /**
      * Whether we want the {@code TaskView}'s content to be visible (alpha = 1f). If
@@ -118,7 +140,7 @@
         setOutlineProvider(new ViewOutlineProvider() {
             @Override
             public void getOutline(View view, Outline outline) {
-                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), mCornerRadius);
+                outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), mCurrentCornerRadius);
             }
         });
     }
@@ -155,7 +177,7 @@
                     new FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT);
             addView(mTaskView, lp);
             mTaskView.setEnableSurfaceClipping(true);
-            mTaskView.setCornerRadius(mCornerRadius);
+            mTaskView.setCornerRadius(mCurrentCornerRadius);
             mTaskView.setVisibility(VISIBLE);
 
             // Handle view needs to draw on top of task view.
@@ -198,22 +220,24 @@
     // TODO (b/275087636): call this when theme/config changes
     /** Updates the view based on the current theme. */
     public void applyThemeAttrs() {
-        boolean supportsRoundedCorners = ScreenDecorationsUtils.supportsRoundedCornersOnWindows(
-                mContext.getResources());
+        mRestingCornerRadius = getResources().getDimensionPixelSize(
+                R.dimen.bubble_bar_expanded_view_corner_radius
+        );
+        mDraggedCornerRadius = getResources().getDimensionPixelSize(
+                R.dimen.bubble_bar_expanded_view_corner_radius_dragged
+        );
+
+        mCurrentCornerRadius = mRestingCornerRadius;
+
         final TypedArray ta = mContext.obtainStyledAttributes(new int[]{
-                android.R.attr.dialogCornerRadius,
                 android.R.attr.colorBackgroundFloating});
-        mCornerRadius = supportsRoundedCorners ? ta.getDimensionPixelSize(0, 0) : 0;
-        mCornerRadius = mCornerRadius / 2f;
-        mBackgroundColor = ta.getColor(1, Color.WHITE);
-
+        mBackgroundColor = ta.getColor(0, Color.WHITE);
         ta.recycle();
-
         mCaptionHeight = getResources().getDimensionPixelSize(
                 R.dimen.bubble_bar_expanded_view_caption_height);
 
         if (mTaskView != null) {
-            mTaskView.setCornerRadius(mCornerRadius);
+            mTaskView.setCornerRadius(mCurrentCornerRadius);
             updateHandleColor(true /* animated */);
         }
     }
@@ -396,4 +420,30 @@
     public boolean isAnimating() {
         return mIsAnimating;
     }
+
+    /** @return corner radius that should be applied while view is in rest */
+    public float getRestingCornerRadius() {
+        return mRestingCornerRadius;
+    }
+
+    /** @return corner radius that should be applied while view is being dragged */
+    public float getDraggedCornerRadius() {
+        return mDraggedCornerRadius;
+    }
+
+    /** @return current corner radius */
+    public float getCornerRadius() {
+        return mCurrentCornerRadius;
+    }
+
+    /** Update corner radius */
+    public void setCornerRadius(float cornerRadius) {
+        if (mCurrentCornerRadius != cornerRadius) {
+            mCurrentCornerRadius = cornerRadius;
+            if (mTaskView != null) {
+                mTaskView.setCornerRadius(cornerRadius);
+            }
+            invalidateOutline();
+        }
+    }
 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
index 5e634a2..7d37d60 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedViewDragController.kt
@@ -126,21 +126,28 @@
     }
 
     private inner class MagnetListener : MagnetizedObject.MagnetListener {
-        override fun onStuckToTarget(target: MagnetizedObject.MagneticTarget) {
+        override fun onStuckToTarget(
+                target: MagnetizedObject.MagneticTarget,
+                draggedObject: MagnetizedObject<*>
+        ) {
             isStuckToDismiss = true
         }
 
         override fun onUnstuckFromTarget(
-            target: MagnetizedObject.MagneticTarget,
-            velX: Float,
-            velY: Float,
-            wasFlungOut: Boolean
+                target: MagnetizedObject.MagneticTarget,
+                draggedObject: MagnetizedObject<*>,
+                velX: Float,
+                velY: Float,
+                wasFlungOut: Boolean
         ) {
             isStuckToDismiss = false
-            animationHelper.animateUnstuckFromDismissView()
+            animationHelper.animateUnstuckFromDismissView(target)
         }
 
-        override fun onReleasedInTarget(target: MagnetizedObject.MagneticTarget) {
+        override fun onReleasedInTarget(
+                target: MagnetizedObject.MagneticTarget,
+                draggedObject: MagnetizedObject<*>
+        ) {
             onDismissed()
             dismissView.hide()
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/magnetictarget/MagnetizedObject.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/magnetictarget/MagnetizedObject.kt
index 7c931df..11e4777 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/magnetictarget/MagnetizedObject.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/magnetictarget/MagnetizedObject.kt
@@ -91,8 +91,9 @@
          * to [onUnstuckFromTarget] or [onReleasedInTarget].
          *
          * @param target The target that the object is now stuck to.
+         * @param draggedObject The object that is stuck to the target.
          */
-        fun onStuckToTarget(target: MagneticTarget)
+        fun onStuckToTarget(target: MagneticTarget, draggedObject: MagnetizedObject<*>)
 
         /**
          * Called when the object is no longer stuck to a target. This means that either touch
@@ -110,6 +111,7 @@
          * and [maybeConsumeMotionEvent] is now returning false.
          *
          * @param target The target that this object was just unstuck from.
+         * @param draggedObject The object being unstuck from the target.
          * @param velX The X velocity of the touch gesture when it exited the magnetic field.
          * @param velY The Y velocity of the touch gesture when it exited the magnetic field.
          * @param wasFlungOut Whether the object was unstuck via a fling gesture. This means that
@@ -119,6 +121,7 @@
          */
         fun onUnstuckFromTarget(
             target: MagneticTarget,
+            draggedObject: MagnetizedObject<*>,
             velX: Float,
             velY: Float,
             wasFlungOut: Boolean
@@ -129,8 +132,9 @@
          * velocity to reach it.
          *
          * @param target The target that the object was released in.
+         * @param draggedObject The object released in the target.
          */
-        fun onReleasedInTarget(target: MagneticTarget)
+        fun onReleasedInTarget(target: MagneticTarget, draggedObject: MagnetizedObject<*>)
     }
 
     private val animator: PhysicsAnimator<T> = PhysicsAnimator.getInstance(underlyingObject)
@@ -386,7 +390,7 @@
             // animate sticking to the magnet.
             targetObjectIsStuckTo = targetObjectIsInMagneticFieldOf
             cancelAnimations()
-            magnetListener.onStuckToTarget(targetObjectIsInMagneticFieldOf!!)
+            magnetListener.onStuckToTarget(targetObjectIsInMagneticFieldOf!!, this)
             animateStuckToTarget(targetObjectIsInMagneticFieldOf, velX, velY, false, null)
 
             vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
@@ -397,7 +401,8 @@
             // move the object out of the target using its own movement logic.
             cancelAnimations()
             magnetListener.onUnstuckFromTarget(
-                    targetObjectIsStuckTo!!, velocityTracker.xVelocity, velocityTracker.yVelocity,
+                    targetObjectIsStuckTo!!, this,
+                    velocityTracker.xVelocity, velocityTracker.yVelocity,
                     wasFlungOut = false)
             targetObjectIsStuckTo = null
 
@@ -420,10 +425,11 @@
                     // the upward direction, tell the listener so the object can be animated out of
                     // the target.
                     magnetListener.onUnstuckFromTarget(
-                            targetObjectIsStuckTo!!, velX, velY, wasFlungOut = true)
+                            targetObjectIsStuckTo!!, this,
+                            velX, velY, wasFlungOut = true)
                 } else {
                     // If the object is stuck and not flung away, it was released inside the target.
-                    magnetListener.onReleasedInTarget(targetObjectIsStuckTo!!)
+                    magnetListener.onReleasedInTarget(targetObjectIsStuckTo!!, this)
                     vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
                 }
 
@@ -440,11 +446,11 @@
             if (flungToTarget != null) {
                 // If this is a fling-to-target, animate the object to the magnet and then release
                 // it.
-                magnetListener.onStuckToTarget(flungToTarget)
+                magnetListener.onStuckToTarget(flungToTarget, this)
                 targetObjectIsStuckTo = flungToTarget
 
                 animateStuckToTarget(flungToTarget, velX, velY, true) {
-                    magnetListener.onReleasedInTarget(flungToTarget)
+                    magnetListener.onReleasedInTarget(flungToTarget, this)
                     targetObjectIsStuckTo = null
                     vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
                 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java
index 68d26da..df589df 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java
@@ -260,7 +260,7 @@
 
         mStashedState = stashedState;
         try {
-            ActivityTaskManager.getService().onPictureInPictureStateChanged(
+            ActivityTaskManager.getService().onPictureInPictureUiStateChanged(
                     new PictureInPictureUiState(stashedState != STASH_TYPE_NONE /* isStashed */)
             );
         } catch (RemoteException | IllegalStateException e) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMenuController.java
index 2f1189a..85353d3 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMenuController.java
@@ -102,11 +102,6 @@
     default void updateMenuBounds(Rect destinationBounds) {}
 
     /**
-     * Update when the current focused task changes.
-     */
-    default void onFocusTaskChanged(RunningTaskInfo taskInfo) {}
-
-    /**
      * Returns a default LayoutParams for the PIP Menu.
      * @param context the context.
      * @param width the PIP stack width.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java
index ba882c4..8053369 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java
@@ -124,12 +124,11 @@
     static PhonePipMenuController providesPipPhoneMenuController(Context context,
             PipBoundsState pipBoundsState, PipMediaController pipMediaController,
             SystemWindows systemWindows,
-            Optional<SplitScreenController> splitScreenOptional,
             PipUiEventLogger pipUiEventLogger,
             @ShellMainThread ShellExecutor mainExecutor,
             @ShellMainThread Handler mainHandler) {
         return new PhonePipMenuController(context, pipBoundsState, pipMediaController,
-                systemWindows, splitScreenOptional, pipUiEventLogger, mainExecutor, mainHandler);
+                systemWindows, pipUiEventLogger, mainExecutor, mainHandler);
     }
 
     @WMSingleton
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
index fd91ac0..e1e41ee 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt
@@ -58,7 +58,7 @@
             return false
         }
 
-        return controller.moveToDesktopWithoutDecor(taskId, WindowContainerTransaction())
+        return controller.moveToDesktop(taskId, WindowContainerTransaction())
     }
 
     override fun printShellCommandHelp(pw: PrintWriter, prefix: String) {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
index e872849..837cb99 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt
@@ -70,8 +70,8 @@
 import com.android.wm.shell.transition.OneShotRemoteHandler
 import com.android.wm.shell.transition.Transitions
 import com.android.wm.shell.util.KtProtoLog
-import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration
 import com.android.wm.shell.windowdecor.MoveToDesktopAnimator
+import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener
 import java.io.PrintWriter
 import java.util.concurrent.Executor
 import java.util.function.Consumer
@@ -175,6 +175,12 @@
         )
     }
 
+    fun setOnTaskResizeAnimationListener(listener: OnTaskResizeAnimationListener) {
+        toggleResizeDesktopTaskTransitionHandler.setOnTaskResizeAnimationListener(listener)
+        enterDesktopTaskTransitionHandler.setOnTaskResizeAnimationListener(listener)
+        dragToDesktopTransitionHandler.setOnTaskResizeAnimatorListener(listener)
+    }
+
     /** Setter needed to avoid cyclic dependency. */
     fun setSplitScreenController(controller: SplitScreenController) {
         splitScreenController = controller
@@ -236,54 +242,19 @@
 
     /** Move a task with given `taskId` to desktop */
     fun moveToDesktop(
-            decor: DesktopModeWindowDecoration,
             taskId: Int,
             wct: WindowContainerTransaction = WindowContainerTransaction()
-    ) {
-        shellTaskOrganizer.getRunningTaskInfo(taskId)?.let {
-            task -> moveToDesktop(decor, task, wct)
-        }
-    }
-
-    /** Move a task with given `taskId` to desktop without decor */
-    fun moveToDesktopWithoutDecor(
-        taskId: Int,
-        wct: WindowContainerTransaction
     ): Boolean {
-        val task = shellTaskOrganizer.getRunningTaskInfo(taskId) ?: return false
-        moveToDesktopWithoutDecor(task, wct)
+        shellTaskOrganizer.getRunningTaskInfo(taskId)?.let {
+            task -> moveToDesktop(task, wct)
+        } ?: return false
         return true
     }
 
     /**
-     * Move a task to desktop without decor
-     */
-    private fun moveToDesktopWithoutDecor(
-        task: RunningTaskInfo,
-        wct: WindowContainerTransaction
-    ) {
-        KtProtoLog.v(
-            WM_SHELL_DESKTOP_MODE,
-            "DesktopTasksController: moveToDesktopWithoutDecor taskId=%d",
-            task.taskId
-        )
-        exitSplitIfApplicable(wct, task)
-        // Bring other apps to front first
-        bringDesktopAppsToFront(task.displayId, wct)
-        addMoveToDesktopChanges(wct, task)
-
-        if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            transitions.startTransition(TRANSIT_CHANGE, wct, null /* handler */)
-        } else {
-            shellTaskOrganizer.applyTransaction(wct)
-        }
-    }
-
-    /**
      * Move a task to desktop
      */
     fun moveToDesktop(
-            decor: DesktopModeWindowDecoration,
             task: RunningTaskInfo,
             wct: WindowContainerTransaction = WindowContainerTransaction()
     ) {
@@ -298,7 +269,7 @@
         addMoveToDesktopChanges(wct, task)
 
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            enterDesktopTaskTransitionHandler.moveToDesktop(wct, decor)
+            enterDesktopTaskTransitionHandler.moveToDesktop(wct)
         } else {
             shellTaskOrganizer.applyTransaction(wct)
         }
@@ -311,7 +282,6 @@
     fun startDragToDesktop(
             taskInfo: RunningTaskInfo,
             dragToDesktopValueAnimator: MoveToDesktopAnimator,
-            windowDecor: DesktopModeWindowDecoration
     ) {
         KtProtoLog.v(
                 WM_SHELL_DESKTOP_MODE,
@@ -320,8 +290,7 @@
         )
         dragToDesktopTransitionHandler.startDragToDesktopTransition(
                 taskInfo.taskId,
-                dragToDesktopValueAnimator,
-                windowDecor
+                dragToDesktopValueAnimator
         )
     }
 
@@ -522,7 +491,7 @@
     }
 
     /** Quick-resizes a desktop task, toggling between the stable bounds and the default bounds. */
-    fun toggleDesktopTaskSize(taskInfo: RunningTaskInfo, windowDecor: DesktopModeWindowDecoration) {
+    fun toggleDesktopTaskSize(taskInfo: RunningTaskInfo) {
         val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return
 
         val stableBounds = Rect()
@@ -543,11 +512,7 @@
 
         val wct = WindowContainerTransaction().setBounds(taskInfo.token, destinationBounds)
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            toggleResizeDesktopTaskTransitionHandler.startTransition(
-                wct,
-                taskInfo.taskId,
-                windowDecor
-            )
+            toggleResizeDesktopTaskTransitionHandler.startTransition(wct)
         } else {
             shellTaskOrganizer.applyTransaction(wct)
         }
@@ -558,11 +523,7 @@
      *
      * @param position the portion of the screen (RIGHT or LEFT) we want to snap the task to.
      */
-    fun snapToHalfScreen(
-            taskInfo: RunningTaskInfo,
-            windowDecor: DesktopModeWindowDecoration,
-            position: SnapPosition
-    ) {
+    fun snapToHalfScreen(taskInfo: RunningTaskInfo, position: SnapPosition) {
         val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return
 
         val stableBounds = Rect()
@@ -592,11 +553,7 @@
 
         val wct = WindowContainerTransaction().setBounds(taskInfo.token, destinationBounds)
         if (Transitions.ENABLE_SHELL_TRANSITIONS) {
-            toggleResizeDesktopTaskTransitionHandler.startTransition(
-                    wct,
-                    taskInfo.taskId,
-                    windowDecor
-            )
+            toggleResizeDesktopTaskTransitionHandler.startTransition(wct)
         } else {
             shellTaskOrganizer.applyTransaction(wct)
         }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
index 39610e3..af26e29 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandler.kt
@@ -34,9 +34,9 @@
 import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
 import com.android.wm.shell.transition.Transitions.TransitionHandler
 import com.android.wm.shell.util.KtProtoLog
-import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration
 import com.android.wm.shell.windowdecor.MoveToDesktopAnimator
 import com.android.wm.shell.windowdecor.MoveToDesktopAnimator.Companion.DRAG_FREEFORM_SCALE
+import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener
 import java.util.function.Supplier
 
 /**
@@ -69,6 +69,7 @@
     private var dragToDesktopStateListener: DragToDesktopStateListener? = null
     private var splitScreenController: SplitScreenController? = null
     private var transitionState: TransitionState? = null
+    private lateinit var onTaskResizeAnimationListener: OnTaskResizeAnimationListener
 
     /** Whether a drag-to-desktop transition is in progress. */
     val inProgress: Boolean
@@ -84,6 +85,10 @@
         splitScreenController = controller
     }
 
+    fun setOnTaskResizeAnimatorListener(listener: OnTaskResizeAnimationListener) {
+        onTaskResizeAnimationListener = listener
+    }
+
     /**
      * Starts a transition that performs a transient launch of Home so that Home is brought to the
      * front while still keeping the currently focused task that is being dragged resumed. This
@@ -96,7 +101,6 @@
     fun startDragToDesktopTransition(
             taskId: Int,
             dragToDesktopAnimator: MoveToDesktopAnimator,
-            windowDecoration: DesktopModeWindowDecoration
     ) {
         if (inProgress) {
             KtProtoLog.v(
@@ -128,14 +132,12 @@
             TransitionState.FromSplit(
                     draggedTaskId = taskId,
                     dragAnimator = dragToDesktopAnimator,
-                    windowDecoration = windowDecoration,
                     startTransitionToken = startTransitionToken
             )
         } else {
             TransitionState.FromFullscreen(
                     draggedTaskId = taskId,
                     dragAnimator = dragToDesktopAnimator,
-                    windowDecoration = windowDecoration,
                     startTransitionToken = startTransitionToken
             )
         }
@@ -405,7 +407,7 @@
             // Accept the merge by applying the merging transaction (applied by #showResizeVeil)
             // and finish callback. Show the veil and position the task at the first frame before
             // starting the final animation.
-            state.windowDecoration.showResizeVeil(t, animStartBounds)
+            onTaskResizeAnimationListener.onAnimationStart(state.draggedTaskId, t, animStartBounds)
             finishCallback.onTransitionFinished(null /* wct */)
 
             // Because the task surface was scaled down during the drag, we must use the animated
@@ -429,11 +431,15 @@
                                         animBounds.height()
                                 )
                             }
-                            state.windowDecoration.updateResizeVeil(tx, animBounds)
+                            onTaskResizeAnimationListener.onBoundsChange(
+                                    state.draggedTaskId,
+                                    tx,
+                                    animBounds
+                            )
                         }
                         addListener(object : AnimatorListenerAdapter() {
                             override fun onAnimationEnd(animation: Animator) {
-                                state.windowDecoration.hideResizeVeil()
+                                onTaskResizeAnimationListener.onAnimationEnd(state.draggedTaskId)
                                 startTransitionFinishCb.onTransitionFinished(null /* null */)
                                 clearState()
                             }
@@ -576,7 +582,6 @@
     sealed class TransitionState {
         abstract val draggedTaskId: Int
         abstract val dragAnimator: MoveToDesktopAnimator
-        abstract val windowDecoration: DesktopModeWindowDecoration
         abstract val startTransitionToken: IBinder
         abstract var startTransitionFinishCb: Transitions.TransitionFinishCallback?
         abstract var startTransitionFinishTransaction: SurfaceControl.Transaction?
@@ -589,7 +594,6 @@
         data class FromFullscreen(
                 override val draggedTaskId: Int,
                 override val dragAnimator: MoveToDesktopAnimator,
-                override val windowDecoration: DesktopModeWindowDecoration,
                 override val startTransitionToken: IBinder,
                 override var startTransitionFinishCb: Transitions.TransitionFinishCallback? = null,
                 override var startTransitionFinishTransaction: SurfaceControl.Transaction? = null,
@@ -603,7 +607,6 @@
         data class FromSplit(
                 override val draggedTaskId: Int,
                 override val dragAnimator: MoveToDesktopAnimator,
-                override val windowDecoration: DesktopModeWindowDecoration,
                 override val startTransitionToken: IBinder,
                 override var startTransitionFinishCb: Transitions.TransitionFinishCallback? = null,
                 override var startTransitionFinishTransaction: SurfaceControl.Transaction? = null,
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
index ba08b09..07cf202 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/EnterDesktopTaskTransitionHandler.java
@@ -38,7 +38,7 @@
 import androidx.annotation.Nullable;
 
 import com.android.wm.shell.transition.Transitions;
-import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration;
+import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -59,8 +59,8 @@
     public static final int FREEFORM_ANIMATION_DURATION = 336;
 
     private final List<IBinder> mPendingTransitionTokens = new ArrayList<>();
-    private DesktopModeWindowDecoration mDesktopModeWindowDecoration;
 
+    private OnTaskResizeAnimationListener mOnTaskResizeAnimationListener;
     public EnterDesktopTaskTransitionHandler(
             Transitions transitions) {
         this(transitions, SurfaceControl.Transaction::new);
@@ -73,14 +73,15 @@
         mTransactionSupplier = supplier;
     }
 
+    void setOnTaskResizeAnimationListener(OnTaskResizeAnimationListener listener) {
+        mOnTaskResizeAnimationListener =  listener;
+    }
+
     /**
      * Starts Transition of type TRANSIT_MOVE_TO_DESKTOP
      * @param wct WindowContainerTransaction for transition
-     * @param decor {@link DesktopModeWindowDecoration} of task being animated
      */
-    public void moveToDesktop(@NonNull WindowContainerTransaction wct,
-            DesktopModeWindowDecoration decor) {
-        mDesktopModeWindowDecoration = decor;
+    public void moveToDesktop(@NonNull WindowContainerTransaction wct) {
         final IBinder token = mTransitions.startTransition(TRANSIT_MOVE_TO_DESKTOP, wct, this);
         mPendingTransitionTokens.add(token);
     }
@@ -136,18 +137,18 @@
             @NonNull TransitionInfo.Change change,
             @NonNull SurfaceControl.Transaction startT,
             @NonNull Transitions.TransitionFinishCallback finishCallback) {
-        if (mDesktopModeWindowDecoration == null) {
-            Slog.e(TAG, "Window Decoration is not available for this transition");
+        final SurfaceControl leash = change.getLeash();
+        final Rect startBounds = change.getStartAbsBounds();
+        final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo();
+        if (mOnTaskResizeAnimationListener == null) {
+            Slog.e(TAG, "onTaskResizeAnimationListener is not available for this transition");
             return false;
         }
 
-        final SurfaceControl leash = change.getLeash();
-        final Rect startBounds = change.getStartAbsBounds();
         startT.setPosition(leash, startBounds.left, startBounds.top)
                 .setWindowCrop(leash, startBounds.width(), startBounds.height())
                 .show(leash);
-        mDesktopModeWindowDecoration.showResizeVeil(startT, startBounds);
-
+        mOnTaskResizeAnimationListener.onAnimationStart(taskInfo.taskId, startT, startBounds);
         final ValueAnimator animator = ValueAnimator.ofObject(new RectEvaluator(),
                 change.getStartAbsBounds(), change.getEndAbsBounds());
         animator.setDuration(FREEFORM_ANIMATION_DURATION);
@@ -157,12 +158,12 @@
             t.setPosition(leash, animationValue.left, animationValue.top)
                     .setWindowCrop(leash, animationValue.width(), animationValue.height())
                     .show(leash);
-            mDesktopModeWindowDecoration.updateResizeVeil(t, animationValue);
+            mOnTaskResizeAnimationListener.onBoundsChange(taskInfo.taskId, t, animationValue);
         });
         animator.addListener(new AnimatorListenerAdapter() {
             @Override
             public void onAnimationEnd(Animator animation) {
-                mDesktopModeWindowDecoration.hideResizeVeil();
+                mOnTaskResizeAnimationListener.onAnimationEnd(taskInfo.taskId);
                 mTransitions.getMainExecutor().execute(
                         () -> finishCallback.onTransitionFinished(null));
             }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt
index 0218493..c469e65 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/ToggleResizeDesktopTaskTransitionHandler.kt
@@ -21,7 +21,6 @@
 import android.animation.ValueAnimator
 import android.graphics.Rect
 import android.os.IBinder
-import android.util.SparseArray
 import android.view.SurfaceControl
 import android.view.WindowManager.TRANSIT_CHANGE
 import android.window.TransitionInfo
@@ -30,7 +29,7 @@
 import androidx.core.animation.addListener
 import com.android.wm.shell.transition.Transitions
 import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE
-import com.android.wm.shell.windowdecor.DesktopModeWindowDecoration
+import com.android.wm.shell.windowdecor.OnTaskResizeAnimationListener
 import java.util.function.Supplier
 
 /** Handles the animation of quick resizing of desktop tasks. */
@@ -40,7 +39,7 @@
 ) : Transitions.TransitionHandler {
 
     private val rectEvaluator = RectEvaluator(Rect())
-    private val taskToDecorationMap = SparseArray<DesktopModeWindowDecoration>()
+    private lateinit var onTaskResizeAnimationListener: OnTaskResizeAnimationListener
 
     private var boundsAnimator: Animator? = null
 
@@ -49,13 +48,12 @@
     ) : this(transitions, Supplier { SurfaceControl.Transaction() })
 
     /** Starts a quick resize transition. */
-    fun startTransition(
-        wct: WindowContainerTransaction,
-        taskId: Int,
-        windowDecoration: DesktopModeWindowDecoration
-    ) {
+    fun startTransition(wct: WindowContainerTransaction) {
         transitions.startTransition(TRANSIT_DESKTOP_MODE_TOGGLE_RESIZE, wct, this)
-        taskToDecorationMap.put(taskId, windowDecoration)
+    }
+
+    fun setOnTaskResizeAnimationListener(listener: OnTaskResizeAnimationListener) {
+        onTaskResizeAnimationListener = listener
     }
 
     override fun startAnimation(
@@ -70,9 +68,6 @@
         val taskId = checkNotNull(change.taskInfo).taskId
         val startBounds = change.startAbsBounds
         val endBounds = change.endAbsBounds
-        val windowDecor =
-            taskToDecorationMap.removeReturnOld(taskId)
-                ?: throw IllegalStateException("Window decoration not found for task $taskId")
 
         val tx = transactionSupplier.get()
         boundsAnimator?.cancel()
@@ -90,7 +85,11 @@
                                 )
                                 .setWindowCrop(leash, startBounds.width(), startBounds.height())
                                 .show(leash)
-                            windowDecor.showResizeVeil(startTransaction, startBounds)
+                            onTaskResizeAnimationListener.onAnimationStart(
+                                    taskId,
+                                    startTransaction,
+                                    startBounds
+                            )
                         },
                         onEnd = {
                             finishTransaction
@@ -101,7 +100,7 @@
                                 )
                                 .setWindowCrop(leash, endBounds.width(), endBounds.height())
                                 .show(leash)
-                            windowDecor.hideResizeVeil()
+                            onTaskResizeAnimationListener.onAnimationEnd(taskId)
                             finishCallback.onTransitionFinished(null)
                             boundsAnimator = null
                         }
@@ -111,7 +110,7 @@
                         tx.setPosition(leash, rect.left.toFloat(), rect.top.toFloat())
                             .setWindowCrop(leash, rect.width(), rect.height())
                             .show(leash)
-                        windowDecor.updateResizeVeil(tx, rect)
+                        onTaskResizeAnimationListener.onBoundsChange(taskId, tx, rect)
                     }
                     start()
                 }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
index 445ba89..619f624 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/draganddrop/DragLayout.java
@@ -16,11 +16,11 @@
 
 package com.android.wm.shell.draganddrop;
 
+import static android.app.StatusBarManager.DISABLE2_NONE;
 import static android.app.StatusBarManager.DISABLE_NONE;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
 import static android.content.pm.ActivityInfo.CONFIG_ASSETS_PATHS;
 import static android.content.pm.ActivityInfo.CONFIG_UI_MODE;
-import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 
 import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
@@ -445,18 +445,20 @@
     }
 
     private void animateFullscreenContainer(boolean visible) {
-        mStatusBarManager.disable(visible
-                ? HIDE_STATUS_BAR_FLAGS
-                : DISABLE_NONE);
+        int flags = visible ? HIDE_STATUS_BAR_FLAGS : DISABLE_NONE;
+        StatusBarManager.DisableInfo disableInfo = new StatusBarManager.DisableInfo(flags,
+                DISABLE2_NONE);
+        mStatusBarManager.requestDisabledComponent(disableInfo, "animateFullscreenContainer");
         // We're only using the first drop zone if there is one fullscreen target
         mDropZoneView1.setShowingMargin(visible);
         mDropZoneView1.setShowingHighlight(visible);
     }
 
     private void animateSplitContainers(boolean visible, Runnable animCompleteCallback) {
-        mStatusBarManager.disable(visible
-                ? HIDE_STATUS_BAR_FLAGS
-                : DISABLE_NONE);
+        int flags = visible ? HIDE_STATUS_BAR_FLAGS : DISABLE_NONE;
+        StatusBarManager.DisableInfo disableInfo = new StatusBarManager.DisableInfo(flags,
+                DISABLE2_NONE);
+        mStatusBarManager.requestDisabledComponent(disableInfo, "animateSplitContainers");
         mDropZoneView1.setShowingMargin(visible);
         mDropZoneView2.setShowingMargin(visible);
         Animator animator = mDropZoneView1.getAnimator();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java
index a80241e..f2bdcae 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java
@@ -16,6 +16,8 @@
 
 package com.android.wm.shell.freeform;
 
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+
 import static com.android.wm.shell.ShellTaskOrganizer.TASK_LISTENER_TYPE_FREEFORM;
 
 import android.app.ActivityManager.RunningTaskInfo;
@@ -151,6 +153,9 @@
 
     @Override
     public void onFocusTaskChanged(RunningTaskInfo taskInfo) {
+        if (taskInfo.getWindowingMode() != WINDOWING_MODE_FREEFORM) {
+            return;
+        }
         ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TASK_ORG,
                 "Freeform Task Focus Changed: #%d focused=%b",
                 taskInfo.taskId, taskInfo.isFocused);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
index 9f73f1b..271a939 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java
@@ -25,7 +25,6 @@
 
 import static com.android.wm.shell.ShellTaskOrganizer.TASK_LISTENER_TYPE_PIP;
 import static com.android.wm.shell.ShellTaskOrganizer.taskListenerTypeToString;
-import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT;
 import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT;
 import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED;
 import static com.android.wm.shell.pip.PipAnimationController.ANIM_TYPE_ALPHA;
@@ -112,7 +111,7 @@
  * see also {@link PipMotionHelper}.
  */
 public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener,
-        DisplayController.OnDisplaysChangedListener, ShellTaskOrganizer.FocusListener {
+        DisplayController.OnDisplaysChangedListener {
     private static final String TAG = PipTaskOrganizer.class.getSimpleName();
 
     /**
@@ -390,7 +389,6 @@
             mMainExecutor.execute(() -> {
                 mTaskOrganizer.addListenerForType(this, TASK_LISTENER_TYPE_PIP);
             });
-            mTaskOrganizer.addFocusListener(this);
             mPipTransitionController.setPipOrganizer(this);
             displayController.addDisplayWindowListener(this);
             pipTransitionController.registerPipTransitionCallback(mPipTransitionCallback);
@@ -1026,11 +1024,6 @@
     }
 
     @Override
-    public void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {
-        mPipMenuController.onFocusTaskChanged(taskInfo);
-    }
-
-    @Override
     public boolean supportCompatUI() {
         // PIP doesn't support compat.
         return false;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
index d1fd207..6191fea 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java
@@ -23,12 +23,16 @@
 import static com.android.wm.shell.pip.PipAnimationController.isInPipDirection;
 
 import android.annotation.Nullable;
+import android.app.ActivityTaskManager;
+import android.app.Flags;
 import android.app.PictureInPictureParams;
+import android.app.PictureInPictureUiState;
 import android.app.TaskInfo;
 import android.content.ComponentName;
 import android.content.pm.ActivityInfo;
 import android.graphics.Rect;
 import android.os.IBinder;
+import android.os.RemoteException;
 import android.view.SurfaceControl;
 import android.view.WindowManager;
 import android.window.TransitionInfo;
@@ -37,11 +41,13 @@
 
 import androidx.annotation.NonNull;
 
+import com.android.internal.protolog.common.ProtoLog;
 import com.android.wm.shell.ShellTaskOrganizer;
 import com.android.wm.shell.common.pip.PipBoundsAlgorithm;
 import com.android.wm.shell.common.pip.PipBoundsState;
 import com.android.wm.shell.common.pip.PipMenuController;
 import com.android.wm.shell.common.split.SplitScreenUtils;
+import com.android.wm.shell.protolog.ShellProtoLogGroup;
 import com.android.wm.shell.sysui.ShellInit;
 import com.android.wm.shell.transition.Transitions;
 
@@ -181,6 +187,17 @@
             final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
             callback.onPipTransitionStarted(direction, pipBounds);
         }
+        if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) {
+            try {
+                ActivityTaskManager.getService().onPictureInPictureUiStateChanged(
+                        new PictureInPictureUiState.Builder()
+                                .setEnteringPip(true)
+                                .build());
+            } catch (RemoteException | IllegalStateException e) {
+                ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
+                        "Failed to set alert PiP state change.");
+            }
+        }
     }
 
     protected void sendOnPipTransitionFinished(
@@ -189,6 +206,17 @@
             final PipTransitionCallback callback = mPipTransitionCallbacks.get(i);
             callback.onPipTransitionFinished(direction);
         }
+        if (isInPipDirection(direction) && Flags.enablePipUiStateCallbackOnEntering()) {
+            try {
+                ActivityTaskManager.getService().onPictureInPictureUiStateChanged(
+                        new PictureInPictureUiState.Builder()
+                                .setEnteringPip(false)
+                                .build());
+            } catch (RemoteException | IllegalStateException e) {
+                ProtoLog.e(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE,
+                        "Failed to set alert PiP state change.");
+            }
+        }
     }
 
     protected void sendOnPipTransitionCancelled(
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
index d8e8b58..0169e8c 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java
@@ -19,12 +19,9 @@
 import static android.view.WindowManager.SHELL_ROOT_LAYER_PIP;
 
 import android.annotation.Nullable;
-import android.app.ActivityManager;
 import android.app.RemoteAction;
 import android.content.Context;
-import android.graphics.Matrix;
 import android.graphics.Rect;
-import android.graphics.RectF;
 import android.os.Debug;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -43,14 +40,11 @@
 import com.android.wm.shell.common.pip.PipMediaController.ActionListener;
 import com.android.wm.shell.common.pip.PipMenuController;
 import com.android.wm.shell.common.pip.PipUiEventLogger;
-import com.android.wm.shell.pip.PipSurfaceTransactionHelper;
 import com.android.wm.shell.protolog.ShellProtoLogGroup;
-import com.android.wm.shell.splitscreen.SplitScreenController;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Manages the PiP menu view which can show menu options or a scrim.
@@ -99,30 +93,18 @@
          * Called when the PIP requested to show the menu.
          */
         void onPipShowMenu();
-
-        /**
-         * Called when the PIP requested to enter Split.
-         */
-        void onEnterSplit();
     }
 
-    private final Matrix mMoveTransform = new Matrix();
-    private final Rect mTmpSourceBounds = new Rect();
-    private final RectF mTmpSourceRectF = new RectF();
-    private final RectF mTmpDestinationRectF = new RectF();
     private final Context mContext;
     private final PipBoundsState mPipBoundsState;
     private final PipMediaController mMediaController;
     private final ShellExecutor mMainExecutor;
     private final Handler mMainHandler;
 
-    private final PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
-            mSurfaceControlTransactionFactory;
     private final float[] mTmpTransform = new float[9];
 
     private final ArrayList<Listener> mListeners = new ArrayList<>();
     private final SystemWindows mSystemWindows;
-    private final Optional<SplitScreenController> mSplitScreenController;
     private final PipUiEventLogger mPipUiEventLogger;
 
     private List<RemoteAction> mAppActions;
@@ -145,7 +127,6 @@
 
     public PhonePipMenuController(Context context, PipBoundsState pipBoundsState,
             PipMediaController mediaController, SystemWindows systemWindows,
-            Optional<SplitScreenController> splitScreenOptional,
             PipUiEventLogger pipUiEventLogger,
             ShellExecutor mainExecutor, Handler mainHandler) {
         mContext = context;
@@ -154,11 +135,7 @@
         mSystemWindows = systemWindows;
         mMainExecutor = mainExecutor;
         mMainHandler = mainHandler;
-        mSplitScreenController = splitScreenOptional;
         mPipUiEventLogger = pipUiEventLogger;
-
-        mSurfaceControlTransactionFactory =
-                new PipSurfaceTransactionHelper.VsyncSurfaceControlTransactionFactory();
     }
 
     public boolean isMenuVisible() {
@@ -190,7 +167,7 @@
             detachPipMenuView();
         }
         mPipMenuView = new PipMenuView(mContext, this, mMainExecutor, mMainHandler,
-                mSplitScreenController, mPipUiEventLogger);
+                mPipUiEventLogger);
         mPipMenuView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
             @Override
             public void onViewAttachedToWindow(View v) {
@@ -251,13 +228,6 @@
         updateMenuLayout(destinationBounds);
     }
 
-    @Override
-    public void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {
-        if (mPipMenuView != null) {
-            mPipMenuView.onFocusTaskChanged(taskInfo);
-        }
-    }
-
     /**
      * Tries to grab a surface control from {@link PipMenuView}. If this isn't available for some
      * reason (ie. the window isn't ready yet, thus {@link android.view.ViewRootImpl} is
@@ -485,10 +455,6 @@
         mListeners.forEach(Listener::onPipDismiss);
     }
 
-    void onEnterSplit() {
-        mListeners.forEach(Listener::onEnterSplit);
-    }
-
     /**
      * @return the best set of actions to show in the PiP menu.
      */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java
index 4e75847..f929389 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java
@@ -131,7 +131,8 @@
                 });
         mMagnetizedPip.setMagnetListener(new MagnetizedObject.MagnetListener() {
             @Override
-            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
                 // Show the dismiss target, in case the initial touch event occurred within
                 // the magnetic field radius.
                 if (mEnableDismissDragToEdge) {
@@ -141,6 +142,7 @@
 
             @Override
             public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject,
                     float velX, float velY, boolean wasFlungOut) {
                 if (wasFlungOut) {
                     mMotionHelper.flingToSnapTarget(velX, velY, null /* endAction */);
@@ -151,7 +153,8 @@
             }
 
             @Override
-            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
                 if (mEnableDismissDragToEdge) {
                     mMainExecutor.executeDelayed(() -> {
                         mMotionHelper.notifyDismissalPending();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuIconsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuIconsAlgorithm.java
index 0644657..321b739 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuIconsAlgorithm.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuIconsAlgorithm.java
@@ -32,7 +32,6 @@
     protected ViewGroup mViewRoot;
     protected ViewGroup mTopEndContainer;
     protected View mDragHandle;
-    protected View mEnterSplitButton;
     protected View mSettingsButton;
     protected View mDismissButton;
 
@@ -43,11 +42,10 @@
      * Bind the necessary views.
      */
     public void bindViews(ViewGroup viewRoot, ViewGroup topEndContainer, View dragHandle,
-            View enterSplitButton, View settingsButton, View dismissButton) {
+            View settingsButton, View dismissButton) {
         mViewRoot = viewRoot;
         mTopEndContainer = topEndContainer;
         mDragHandle = dragHandle;
-        mEnterSplitButton = enterSplitButton;
         mSettingsButton = settingsButton;
         mDismissButton = dismissButton;
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
index 63cef9e..15342be 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java
@@ -16,7 +16,6 @@
 
 package com.android.wm.shell.pip.phone;
 
-import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.provider.Settings.ACTION_PICTURE_IN_PICTURE_SETTINGS;
@@ -35,10 +34,8 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.ActivityManager;
 import android.app.PendingIntent;
 import android.app.RemoteAction;
-import android.app.WindowConfiguration;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -69,14 +66,12 @@
 import com.android.wm.shell.common.pip.PipUiEventLogger;
 import com.android.wm.shell.common.pip.PipUtils;
 import com.android.wm.shell.protolog.ShellProtoLogGroup;
-import com.android.wm.shell.splitscreen.SplitScreenController;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
-import java.util.Optional;
 
 /**
  * Translucent window that gets started on top of a task in PIP to allow the user to control it.
@@ -114,7 +109,6 @@
     private boolean mAllowMenuTimeout = true;
     private boolean mAllowTouches = true;
     private int mDismissFadeOutDurationMs;
-    private boolean mFocusedTaskAllowSplitScreen;
 
     private final List<RemoteAction> mActions = new ArrayList<>();
     private RemoteAction mCloseAction;
@@ -127,7 +121,6 @@
 
     private AnimatorSet mMenuContainerAnimator;
     private final PhonePipMenuController mController;
-    private final Optional<SplitScreenController> mSplitScreenControllerOptional;
     private final PipUiEventLogger mPipUiEventLogger;
 
     private ValueAnimator.AnimatorUpdateListener mMenuBgUpdateListener =
@@ -152,7 +145,6 @@
     protected View mViewRoot;
     protected View mSettingsButton;
     protected View mDismissButton;
-    protected View mEnterSplitButton;
     protected View mTopEndContainer;
     protected PipMenuIconsAlgorithm mPipMenuIconsAlgorithm;
 
@@ -161,14 +153,12 @@
 
     public PipMenuView(Context context, PhonePipMenuController controller,
             ShellExecutor mainExecutor, Handler mainHandler,
-            Optional<SplitScreenController> splitScreenController,
             PipUiEventLogger pipUiEventLogger) {
         super(context, null, 0);
         mContext = context;
         mController = controller;
         mMainExecutor = mainExecutor;
         mMainHandler = mainHandler;
-        mSplitScreenControllerOptional = splitScreenController;
         mPipUiEventLogger = pipUiEventLogger;
 
         mAccessibilityManager = context.getSystemService(AccessibilityManager.class);
@@ -200,17 +190,6 @@
             }
         });
 
-        mEnterSplitButton = findViewById(R.id.enter_split);
-        mEnterSplitButton.setAlpha(0);
-        mEnterSplitButton.setOnClickListener(v -> {
-            if (mEnterSplitButton.getAlpha() != 0) {
-                enterSplit();
-            }
-        });
-
-        // this disables the ripples
-        mEnterSplitButton.setEnabled(false);
-
         findViewById(R.id.resize_handle).setAlpha(0);
 
         mActionsGroup = findViewById(R.id.actions_group);
@@ -218,8 +197,7 @@
                 R.dimen.pip_between_action_padding_land);
         mPipMenuIconsAlgorithm = new PipMenuIconsAlgorithm(mContext);
         mPipMenuIconsAlgorithm.bindViews((ViewGroup) mViewRoot, (ViewGroup) mTopEndContainer,
-                findViewById(R.id.resize_handle), mEnterSplitButton, mSettingsButton,
-                mDismissButton);
+                findViewById(R.id.resize_handle), mSettingsButton, mDismissButton);
         mDismissFadeOutDurationMs = context.getResources()
                 .getInteger(R.integer.config_pipExitAnimationDuration);
 
@@ -281,22 +259,10 @@
         return super.dispatchGenericMotionEvent(event);
     }
 
-    public void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {
-        final boolean isSplitScreen = mSplitScreenControllerOptional.isPresent()
-                && mSplitScreenControllerOptional.get().isTaskInSplitScreenForeground(
-                taskInfo.taskId);
-        mFocusedTaskAllowSplitScreen = isSplitScreen
-                || (taskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN
-                && taskInfo.supportsMultiWindow
-                && taskInfo.topActivityType != WindowConfiguration.ACTIVITY_TYPE_HOME);
-    }
-
     void showMenu(int menuState, Rect stackBounds, boolean allowMenuTimeout,
             boolean resizeMenuOnShow, boolean withDelay, boolean showResizeHandle) {
         mAllowMenuTimeout = allowMenuTimeout;
         mDidLastShowMenuResize = resizeMenuOnShow;
-        final boolean enableEnterSplit =
-                mContext.getResources().getBoolean(R.bool.config_pipEnableEnterSplitButton);
         if (mMenuState != menuState) {
             // Disallow touches if the menu needs to resize while showing, and we are transitioning
             // to/from a full menu state.
@@ -315,14 +281,8 @@
                     mSettingsButton.getAlpha(), 1f);
             ObjectAnimator dismissAnim = ObjectAnimator.ofFloat(mDismissButton, View.ALPHA,
                     mDismissButton.getAlpha(), 1f);
-            ObjectAnimator enterSplitAnim = ObjectAnimator.ofFloat(mEnterSplitButton, View.ALPHA,
-                    mEnterSplitButton.getAlpha(),
-                    enableEnterSplit && mFocusedTaskAllowSplitScreen ? 1f : 0f);
             if (menuState == MENU_STATE_FULL) {
-                mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim,
-                        enterSplitAnim);
-            } else {
-                mMenuContainerAnimator.playTogether(enterSplitAnim);
+                mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim);
             }
             mMenuContainerAnimator.setInterpolator(Interpolators.ALPHA_IN);
             mMenuContainerAnimator.setDuration(ANIMATION_HIDE_DURATION_MS);
@@ -375,7 +335,6 @@
         mMenuContainer.setAlpha(0f);
         mSettingsButton.setAlpha(0f);
         mDismissButton.setAlpha(0f);
-        mEnterSplitButton.setAlpha(0f);
     }
 
     void pokeMenu() {
@@ -415,10 +374,7 @@
                     mSettingsButton.getAlpha(), 0f);
             ObjectAnimator dismissAnim = ObjectAnimator.ofFloat(mDismissButton, View.ALPHA,
                     mDismissButton.getAlpha(), 0f);
-            ObjectAnimator enterSplitAnim = ObjectAnimator.ofFloat(mEnterSplitButton, View.ALPHA,
-                    mEnterSplitButton.getAlpha(), 0f);
-            mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim,
-                    enterSplitAnim);
+            mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim);
             mMenuContainerAnimator.setInterpolator(Interpolators.ALPHA_OUT);
             mMenuContainerAnimator.setDuration(getFadeOutDuration(animationType));
             mMenuContainerAnimator.addListener(new AnimatorListenerAdapter() {
@@ -439,7 +395,7 @@
 
     /**
      * @return Estimated minimum {@link Size} to hold the actions.
-     * See also {@link #updateActionViews(Rect)}
+     * See also {@link #updateActionViews(int, Rect)}
      */
     Size getEstimatedMinMenuSize() {
         final int pipActionSize = getResources().getDimensionPixelSize(R.dimen.pip_action_size);
@@ -608,13 +564,6 @@
         }
     }
 
-    private void enterSplit() {
-        // Do not notify menu visibility when hiding the menu, the controller will do this when it
-        // handles the message
-        hideMenu(mController::onEnterSplit, false /* notifyMenuVisibility */, true /* resize */,
-                ANIM_TYPE_HIDE);
-    }
-
 
     private void showSettings() {
         final Pair<ComponentName, Integer> topPipActivityInfo =
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
index 11c356d..d5925d1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java
@@ -149,11 +149,6 @@
         }
 
         @Override
-        public void onEnterSplit() {
-            mMotionHelper.expandIntoSplit();
-        }
-
-        @Override
         public void onPipDismiss() {
             mTouchState.removeDoubleTapTimeoutCallback();
             mMotionHelper.dismissPip();
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java
index 2478252..6e36a32 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PhonePipMenuController.java
@@ -19,12 +19,9 @@
 import static android.view.WindowManager.SHELL_ROOT_LAYER_PIP;
 
 import android.annotation.Nullable;
-import android.app.ActivityManager;
 import android.app.RemoteAction;
 import android.content.Context;
-import android.graphics.Matrix;
 import android.graphics.Rect;
-import android.graphics.RectF;
 import android.os.Debug;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -43,7 +40,6 @@
 import com.android.wm.shell.common.pip.PipMediaController.ActionListener;
 import com.android.wm.shell.common.pip.PipMenuController;
 import com.android.wm.shell.common.pip.PipUiEventLogger;
-import com.android.wm.shell.pip2.PipSurfaceTransactionHelper;
 import com.android.wm.shell.protolog.ShellProtoLogGroup;
 
 import java.io.PrintWriter;
@@ -97,27 +93,14 @@
          * Called when the PIP requested to show the menu.
          */
         void onPipShowMenu();
-
-        /**
-         * Called when the PIP requested to enter Split.
-         */
-        void onEnterSplit();
     }
 
-    private final Matrix mMoveTransform = new Matrix();
-    private final Rect mTmpSourceBounds = new Rect();
-    private final RectF mTmpSourceRectF = new RectF();
-    private final RectF mTmpDestinationRectF = new RectF();
     private final Context mContext;
     private final PipBoundsState mPipBoundsState;
     private final PipMediaController mMediaController;
     private final ShellExecutor mMainExecutor;
     private final Handler mMainHandler;
 
-    private final PipSurfaceTransactionHelper.SurfaceControlTransactionFactory
-            mSurfaceControlTransactionFactory;
-    private final float[] mTmpTransform = new float[9];
-
     private final ArrayList<Listener> mListeners = new ArrayList<>();
     private final SystemWindows mSystemWindows;
     private final PipUiEventLogger mPipUiEventLogger;
@@ -151,9 +134,6 @@
         mMainExecutor = mainExecutor;
         mMainHandler = mainHandler;
         mPipUiEventLogger = pipUiEventLogger;
-
-        mSurfaceControlTransactionFactory =
-                new PipSurfaceTransactionHelper.VsyncSurfaceControlTransactionFactory();
     }
 
     public boolean isMenuVisible() {
@@ -246,13 +226,6 @@
         updateMenuLayout(destinationBounds);
     }
 
-    @Override
-    public void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {
-        if (mPipMenuView != null) {
-            mPipMenuView.onFocusTaskChanged(taskInfo);
-        }
-    }
-
     /**
      * Tries to grab a surface control from {@link PipMenuView}. If this isn't available for some
      * reason (ie. the window isn't ready yet, thus {@link ViewRootImpl} is
@@ -480,10 +453,6 @@
         mListeners.forEach(Listener::onPipDismiss);
     }
 
-    void onEnterSplit() {
-        mListeners.forEach(Listener::onEnterSplit);
-    }
-
     /**
      * @return the best set of actions to show in the PiP menu.
      */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuIconsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuIconsAlgorithm.java
index b5e575b..ecb6ad6 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuIconsAlgorithm.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuIconsAlgorithm.java
@@ -32,7 +32,6 @@
     protected ViewGroup mViewRoot;
     protected ViewGroup mTopEndContainer;
     protected View mDragHandle;
-    protected View mEnterSplitButton;
     protected View mSettingsButton;
     protected View mDismissButton;
 
@@ -43,11 +42,10 @@
      * Bind the necessary views.
      */
     public void bindViews(ViewGroup viewRoot, ViewGroup topEndContainer, View dragHandle,
-            View enterSplitButton, View settingsButton, View dismissButton) {
+            View settingsButton, View dismissButton) {
         mViewRoot = viewRoot;
         mTopEndContainer = topEndContainer;
         mDragHandle = dragHandle;
-        mEnterSplitButton = enterSplitButton;
         mSettingsButton = settingsButton;
         mDismissButton = dismissButton;
     }
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuView.java
index a5b76c7..42b8e9f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/phone/PipMenuView.java
@@ -34,7 +34,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.ActivityManager;
 import android.app.PendingIntent;
 import android.app.RemoteAction;
 import android.content.ComponentName;
@@ -145,7 +144,6 @@
     protected View mViewRoot;
     protected View mSettingsButton;
     protected View mDismissButton;
-    protected View mEnterSplitButton;
     protected View mTopEndContainer;
     protected PipMenuIconsAlgorithm mPipMenuIconsAlgorithm;
 
@@ -190,17 +188,6 @@
             }
         });
 
-        mEnterSplitButton = findViewById(R.id.enter_split);
-        mEnterSplitButton.setAlpha(0);
-        mEnterSplitButton.setOnClickListener(v -> {
-            if (mEnterSplitButton.getAlpha() != 0) {
-                enterSplit();
-            }
-        });
-
-        // this disables the ripples
-        mEnterSplitButton.setEnabled(false);
-
         findViewById(R.id.resize_handle).setAlpha(0);
 
         mActionsGroup = findViewById(R.id.actions_group);
@@ -208,8 +195,7 @@
                 R.dimen.pip_between_action_padding_land);
         mPipMenuIconsAlgorithm = new PipMenuIconsAlgorithm(mContext);
         mPipMenuIconsAlgorithm.bindViews((ViewGroup) mViewRoot, (ViewGroup) mTopEndContainer,
-                findViewById(R.id.resize_handle), mEnterSplitButton, mSettingsButton,
-                mDismissButton);
+                findViewById(R.id.resize_handle), mSettingsButton, mDismissButton);
         mDismissFadeOutDurationMs = context.getResources()
                 .getInteger(R.integer.config_pipExitAnimationDuration);
 
@@ -271,14 +257,10 @@
         return super.dispatchGenericMotionEvent(event);
     }
 
-    void onFocusTaskChanged(ActivityManager.RunningTaskInfo taskInfo) {}
-
     void showMenu(int menuState, Rect stackBounds, boolean allowMenuTimeout,
             boolean resizeMenuOnShow, boolean withDelay, boolean showResizeHandle) {
         mAllowMenuTimeout = allowMenuTimeout;
         mDidLastShowMenuResize = resizeMenuOnShow;
-        final boolean enableEnterSplit =
-                mContext.getResources().getBoolean(R.bool.config_pipEnableEnterSplitButton);
         if (mMenuState != menuState) {
             // Disallow touches if the menu needs to resize while showing, and we are transitioning
             // to/from a full menu state.
@@ -351,7 +333,6 @@
         mMenuContainer.setAlpha(0f);
         mSettingsButton.setAlpha(0f);
         mDismissButton.setAlpha(0f);
-        mEnterSplitButton.setAlpha(0f);
     }
 
     void pokeMenu() {
@@ -391,10 +372,7 @@
                     mSettingsButton.getAlpha(), 0f);
             ObjectAnimator dismissAnim = ObjectAnimator.ofFloat(mDismissButton, View.ALPHA,
                     mDismissButton.getAlpha(), 0f);
-            ObjectAnimator enterSplitAnim = ObjectAnimator.ofFloat(mEnterSplitButton, View.ALPHA,
-                    mEnterSplitButton.getAlpha(), 0f);
-            mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim,
-                    enterSplitAnim);
+            mMenuContainerAnimator.playTogether(menuAnim, settingsAnim, dismissAnim);
             mMenuContainerAnimator.setInterpolator(Interpolators.ALPHA_OUT);
             mMenuContainerAnimator.setDuration(getFadeOutDuration(animationType));
             mMenuContainerAnimator.addListener(new AnimatorListenerAdapter() {
@@ -415,7 +393,7 @@
 
     /**
      * @return Estimated minimum {@link Size} to hold the actions.
-     * See also {@link #updateActionViews(Rect)}
+     * See also {@link #updateActionViews(int, Rect)}
      */
     Size getEstimatedMinMenuSize() {
         final int pipActionSize = getResources().getDimensionPixelSize(R.dimen.pip_action_size);
@@ -584,14 +562,6 @@
         }
     }
 
-    private void enterSplit() {
-        // Do not notify menu visibility when hiding the menu, the controller will do this when it
-        // handles the message
-        hideMenu(mController::onEnterSplit, false /* notifyMenuVisibility */, true /* resize */,
-                ANIM_TYPE_HIDE);
-    }
-
-
     private void showSettings() {
         final Pair<ComponentName, Integer> topPipActivityInfo =
                 PipUtils.getTopPipActivity(mContext);
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
index 97d3457..b5ea1b1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java
@@ -19,10 +19,12 @@
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
+import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS;
 import static android.view.WindowManager.TRANSIT_CHANGE;
 import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED;
 import static android.view.WindowManager.TRANSIT_SLEEP;
 import static android.view.WindowManager.TRANSIT_TO_FRONT;
+import static android.window.TransitionInfo.FLAG_TRANSLUCENT;
 
 import static com.android.wm.shell.util.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS;
 
@@ -591,7 +593,7 @@
                 cancel("transit_sleep");
                 return;
             }
-            if (mKeyguardLocked || (info.getFlags() & TRANSIT_FLAG_KEYGUARD_LOCKED) != 0) {
+            if (mKeyguardLocked || (info.getFlags() & KEYGUARD_VISIBILITY_TRANSIT_FLAGS) != 0) {
                 ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION,
                         "[%d] RecentsController.merge: keyguard is locked", mInstanceId);
                 // We will not accept new changes if we are swiping over the keyguard.
@@ -928,7 +930,14 @@
                 Slog.e(TAG, "Duplicate call to finish");
                 return;
             }
-            if (!toHome) {
+
+            boolean returningToApp = !toHome
+                    && !mWillFinishToHome
+                    && mPausingTasks != null
+                    && mState == STATE_NORMAL;
+            if (returningToApp && allAppsAreTranslucent(mPausingTasks)) {
+                mHomeTransitionObserver.notifyHomeVisibilityChanged(true);
+            } else if (!toHome) {
                 // For some transitions, we may have notified home activity that it became visible.
                 // We need to notify the observer that we are no longer going home.
                 mHomeTransitionObserver.notifyHomeVisibilityChanged(false);
@@ -947,7 +956,7 @@
                 if (toHome) wct.reorder(mRecentsTask, true /* toTop */);
                 else wct.restoreTransientOrder(mRecentsTask);
             }
-            if (!toHome && !mWillFinishToHome && mPausingTasks != null && mState == STATE_NORMAL) {
+            if (returningToApp) {
                 ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "  returning to app");
                 // The gesture is returning to the pausing-task(s) rather than continuing with
                 // recents, so end the transition by moving the app back to the top (and also
@@ -1047,6 +1056,18 @@
             }
         }
 
+        private boolean allAppsAreTranslucent(ArrayList<TaskState> tasks) {
+            if (tasks == null || tasks.isEmpty()) {
+                return false;
+            }
+            for (int i = tasks.size() - 1; i >= 0; --i) {
+                if (!tasks.get(i).mIsTranslucent) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
         private void cleanUpPausingOrClosingTask(TaskState task, WindowContainerTransaction wct,
                 SurfaceControl.Transaction finishTransaction, boolean sendUserLeaveHint) {
             if (!sendUserLeaveHint && task.isLeaf()) {
@@ -1117,6 +1138,9 @@
         /** The surface/leash of the task provided by Core. */
         SurfaceControl mTaskSurface;
 
+        /** True when the task is translucent.  */
+        final boolean mIsTranslucent;
+
         /** The (local) animation-leash created for this task. Only non-null for leafs. */
         @Nullable
         SurfaceControl mLeash;
@@ -1125,6 +1149,7 @@
             mToken = change.getContainer();
             mTaskInfo = change.getTaskInfo();
             mTaskSurface = change.getLeash();
+            mIsTranslucent = (change.getFlags() & FLAG_TRANSLUCENT) != 0;
             mLeash = leash;
         }
 
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java
index 93d7636..196e04e 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java
@@ -480,7 +480,7 @@
         WindowContainerTransaction wct = new WindowContainerTransaction();
         if (mCaptionInsets != null) {
             wct.addInsetsSource(mTaskToken, mCaptionInsetsOwner, 0,
-                    WindowInsets.Type.captionBar(), mCaptionInsets);
+                    WindowInsets.Type.captionBar(), mCaptionInsets, null /* boundingRects */);
         } else {
             wct.removeInsetsSource(mTaskToken, mCaptionInsetsOwner, 0,
                     WindowInsets.Type.captionBar());
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
index 891eea0..7db3d38 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java
@@ -211,6 +211,8 @@
         mShellCommandHandler.addDumpCallback(this::dump, this);
         mDisplayInsetsController.addInsetsChangedListener(mContext.getDisplayId(),
                 new DesktopModeOnInsetsChangedListener());
+        mDesktopTasksController.ifPresent(c -> c.setOnTaskResizeAnimationListener(
+                new DeskopModeOnTaskResizeAnimationListener()));
     }
 
     @Override
@@ -356,7 +358,7 @@
                     // App sometimes draws before the insets from WindowDecoration#relayout have
                     // been added, so they must be added here
                     mWindowDecorByTaskId.get(mTaskId).addCaptionInset(wct);
-                    mDesktopTasksController.get().moveToDesktop(decoration, mTaskId, wct);
+                    mDesktopTasksController.get().moveToDesktop(mTaskId, wct);
                     closeOtherSplitTask(mTaskId);
                 }
                 decoration.closeHandleMenu();
@@ -387,25 +389,23 @@
                     return;
                 }
                 final RunningTaskInfo taskInfo = decoration.mTaskInfo;
-                mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize(
-                        taskInfo, decoration));
+                mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize(taskInfo));
                 decoration.closeHandleMenu();
             } else if (id == R.id.maximize_menu_maximize_button) {
                 final RunningTaskInfo taskInfo = decoration.mTaskInfo;
-                mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize(
-                        taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId)));
+                mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize(taskInfo));
                 decoration.closeHandleMenu();
                 decoration.closeMaximizeMenu();
             } else if (id == R.id.maximize_menu_snap_left_button) {
                 final RunningTaskInfo taskInfo = decoration.mTaskInfo;
                 mDesktopTasksController.ifPresent(c -> c.snapToHalfScreen(
-                        taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId), SnapPosition.LEFT));
+                        taskInfo, SnapPosition.LEFT));
                 decoration.closeHandleMenu();
                 decoration.closeMaximizeMenu();
             } else if (id == R.id.maximize_menu_snap_right_button) {
                 final RunningTaskInfo taskInfo = decoration.mTaskInfo;
                 mDesktopTasksController.ifPresent(c -> c.snapToHalfScreen(
-                        taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId), SnapPosition.RIGHT));
+                        taskInfo, SnapPosition.RIGHT));
                 decoration.closeHandleMenu();
                 decoration.closeMaximizeMenu();
             }
@@ -558,7 +558,7 @@
             }
             mDesktopTasksController.ifPresent(c -> {
                 final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId);
-                c.toggleDesktopTaskSize(decoration.mTaskInfo, decoration);
+                c.toggleDesktopTaskSize(decoration.mTaskInfo);
             });
             return true;
         }
@@ -761,7 +761,7 @@
                                     relevantDecor.mTaskInfo, relevantDecor.mTaskSurface);
                             mDesktopTasksController.ifPresent(
                                     c -> c.startDragToDesktop(relevantDecor.mTaskInfo,
-                                            mMoveToDesktopAnimator, relevantDecor));
+                                            mMoveToDesktopAnimator));
                         }
                     }
                     if (mMoveToDesktopAnimator != null) {
@@ -1020,6 +1020,34 @@
         pw.println(innerPrefix + "mWindowDecorByTaskId=" + mWindowDecorByTaskId);
     }
 
+    private class DeskopModeOnTaskResizeAnimationListener
+            implements OnTaskResizeAnimationListener {
+        @Override
+        public void onAnimationStart(int taskId, Transaction t, Rect bounds) {
+            final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId);
+            if (decoration == null)  {
+                t.apply();
+                return;
+            }
+            decoration.showResizeVeil(t, bounds);
+        }
+
+        @Override
+        public void onBoundsChange(int taskId, Transaction t, Rect bounds) {
+            final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId);
+            if (decoration == null) return;
+            decoration.updateResizeVeil(t, bounds);
+        }
+
+        @Override
+        public void onAnimationEnd(int taskId) {
+            final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId);
+            if (decoration == null) return;
+            decoration.hideResizeVeil();
+        }
+    }
+
+
     private class DragStartListenerImpl
             implements DragPositioningCallbackUtility.DragStartListener {
         @Override
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
index 3f0a281..185365b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java
@@ -299,12 +299,34 @@
             ActivityManager.RunningTaskInfo taskInfo,
             boolean applyStartTransactionOnDraw,
             boolean shouldSetTaskPositionAndCrop) {
+        final int captionLayoutId = getDesktopModeWindowDecorLayoutId(taskInfo.getWindowingMode());
         relayoutParams.reset();
         relayoutParams.mRunningTaskInfo = taskInfo;
-        relayoutParams.mLayoutResId =
-            getDesktopModeWindowDecorLayoutId(taskInfo.getWindowingMode());
+        relayoutParams.mLayoutResId = captionLayoutId;
         relayoutParams.mCaptionHeightId = getCaptionHeightIdStatic(taskInfo.getWindowingMode());
         relayoutParams.mCaptionWidthId = getCaptionWidthId(relayoutParams.mLayoutResId);
+
+        // The "app controls" type caption bar should report the occluding elements as bounding
+        // rects to the insets system so that apps can draw in the empty space left in the center.
+        if (captionLayoutId == R.layout.desktop_mode_app_controls_window_decor) {
+            // The "app chip" section of the caption bar, it's aligned to the left and its width
+            // varies depending on the length of the app name, but we'll report its max width for
+            // now.
+            // TODO(b/316387515): consider reporting the true width after it's been laid out.
+            final RelayoutParams.OccludingCaptionElement appChipElement =
+                    new RelayoutParams.OccludingCaptionElement();
+            appChipElement.mWidthResId = R.dimen.desktop_mode_app_details_max_width;
+            appChipElement.mAlignment = RelayoutParams.OccludingCaptionElement.Alignment.START;
+            relayoutParams.mOccludingCaptionElements.add(appChipElement);
+            // The "controls" section of the caption bar (maximize, close btns). These are aligned
+            // to the right of the caption bar and have a fixed width.
+            // TODO(b/316387515): add additional padding for an exclusive drag-move region.
+            final RelayoutParams.OccludingCaptionElement controlsElement =
+                    new RelayoutParams.OccludingCaptionElement();
+            controlsElement.mWidthResId = R.dimen.desktop_mode_right_edge_buttons_width;
+            controlsElement.mAlignment = RelayoutParams.OccludingCaptionElement.Alignment.END;
+            relayoutParams.mOccludingCaptionElements.add(controlsElement);
+        }
         if (DesktopModeStatus.useWindowShadow(/* isFocusedWindow= */ taskInfo.isFocused)) {
             relayoutParams.mShadowRadiusId = taskInfo.isFocused
                     ? R.dimen.freeform_decor_shadow_focused_thickness
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/OnTaskResizeAnimationListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/OnTaskResizeAnimationListener.kt
new file mode 100644
index 0000000..09c62bf
--- /dev/null
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/OnTaskResizeAnimationListener.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 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 com.android.wm.shell.windowdecor
+
+import android.graphics.Rect
+import android.view.SurfaceControl
+
+import com.android.wm.shell.transition.Transitions.TransitionHandler
+/**
+ * Listener that allows implementations of [TransitionHandler] to notify when an
+ * animation that is resizing a task is starting, updating, and finishing the animation.
+ */
+interface OnTaskResizeAnimationListener {
+    /**
+     * Notifies that a transition animation is about to be started with the given bounds.
+     */
+    fun onAnimationStart(taskId: Int, t: SurfaceControl.Transaction, bounds: Rect)
+
+    /**
+     * Notifies that a transition animation is expanding or shrinking the task to the given bounds.
+     */
+    fun onBoundsChange(taskId: Int, t: SurfaceControl.Transaction, bounds: Rect)
+
+    /**
+     * Notifies that a transition animation is about to be finished.
+     */
+    fun onAnimationEnd(taskId: Int)
+}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
index afe837e..dc65855 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java
@@ -50,7 +50,10 @@
 import com.android.wm.shell.ShellTaskOrganizer;
 import com.android.wm.shell.common.DisplayController;
 import com.android.wm.shell.desktopmode.DesktopModeStatus;
+import com.android.wm.shell.windowdecor.WindowDecoration.RelayoutParams.OccludingCaptionElement;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.function.Supplier;
 
 /**
@@ -293,15 +296,39 @@
             outResult.mRootView.setTaskFocusState(mTaskInfo.isFocused);
 
             // Caption insets
-            mCaptionInsetsRect.set(taskBounds);
             if (mIsCaptionVisible) {
-                mCaptionInsetsRect.bottom =
-                        mCaptionInsetsRect.top + outResult.mCaptionHeight;
+                // Caption inset is the full width of the task with the |captionHeight| and
+                // positioned at the top of the task bounds, also in absolute coordinates.
+                // So just reuse the task bounds and adjust the bottom coordinate.
+                mCaptionInsetsRect.set(taskBounds);
+                mCaptionInsetsRect.bottom = mCaptionInsetsRect.top + outResult.mCaptionHeight;
+
+                // Caption bounding rectangles: these are optional, and are used to present finer
+                // insets than traditional |Insets| to apps about where their content is occluded.
+                // These are also in absolute coordinates.
+                final Rect[] boundingRects;
+                final int numOfElements = params.mOccludingCaptionElements.size();
+                if (numOfElements == 0) {
+                    boundingRects = null;
+                } else {
+                    boundingRects = new Rect[numOfElements];
+                    for (int i = 0; i < numOfElements; i++) {
+                        final OccludingCaptionElement element =
+                                params.mOccludingCaptionElements.get(i);
+                        final int elementWidthPx =
+                                resources.getDimensionPixelSize(element.mWidthResId);
+                        boundingRects[i] =
+                                calculateBoundingRect(element, elementWidthPx, mCaptionInsetsRect);
+                    }
+                }
+
+                // Add this caption as an inset source.
                 wct.addInsetsSource(mTaskInfo.token,
-                        mOwner, 0 /* index */, WindowInsets.Type.captionBar(), mCaptionInsetsRect);
+                        mOwner, 0 /* index */, WindowInsets.Type.captionBar(), mCaptionInsetsRect,
+                        boundingRects);
                 wct.addInsetsSource(mTaskInfo.token,
                         mOwner, 0 /* index */, WindowInsets.Type.mandatorySystemGestures(),
-                        mCaptionInsetsRect);
+                        mCaptionInsetsRect, null /* boundingRects */);
             } else {
                 wct.removeInsetsSource(mTaskInfo.token, mOwner, 0 /* index */,
                         WindowInsets.Type.captionBar());
@@ -377,6 +404,20 @@
         }
     }
 
+    private Rect calculateBoundingRect(@NonNull OccludingCaptionElement element,
+            int elementWidthPx, @NonNull Rect captionRect) {
+        switch (element.mAlignment) {
+            case START -> {
+                return new Rect(0, 0, elementWidthPx, captionRect.height());
+            }
+            case END -> {
+                return new Rect(captionRect.width() - elementWidthPx, 0,
+                        captionRect.width(), captionRect.height());
+            }
+        }
+        throw new IllegalArgumentException("Unexpected alignment " + element.mAlignment);
+    }
+
     /**
      * Checks if task has entered/exited immersive mode and requires a change in caption visibility.
      */
@@ -546,7 +587,7 @@
         final int captionHeight = loadDimensionPixelSize(mContext.getResources(), captionHeightId);
         final Rect captionInsets = new Rect(0, 0, 0, captionHeight);
         wct.addInsetsSource(mTaskInfo.token, mOwner, 0 /* index */, WindowInsets.Type.captionBar(),
-                captionInsets);
+                captionInsets, null /* boundingRects */);
     }
 
     static class RelayoutParams {
@@ -554,8 +595,9 @@
         int mLayoutResId;
         int mCaptionHeightId;
         int mCaptionWidthId;
-        int mShadowRadiusId;
+        final List<OccludingCaptionElement> mOccludingCaptionElements = new ArrayList<>();
 
+        int mShadowRadiusId;
         int mCornerRadius;
 
         Configuration mWindowDecorConfig;
@@ -567,14 +609,28 @@
             mLayoutResId = Resources.ID_NULL;
             mCaptionHeightId = Resources.ID_NULL;
             mCaptionWidthId = Resources.ID_NULL;
-            mShadowRadiusId = Resources.ID_NULL;
+            mOccludingCaptionElements.clear();
 
+            mShadowRadiusId = Resources.ID_NULL;
             mCornerRadius = 0;
 
             mApplyStartTransactionOnDraw = false;
             mSetTaskPositionAndCrop = false;
             mWindowDecorConfig = null;
         }
+
+        /**
+         * Describes elements within the caption bar that could occlude app content, and should be
+         * sent as bounding rectangles to the insets system.
+         */
+        static class OccludingCaptionElement {
+            int mWidthResId;
+            Alignment mAlignment;
+
+            enum Alignment {
+                START, END
+            }
+        }
     }
 
     static class RelayoutResult<T extends View & TaskFocusStateConsumer> {
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
index 144373f..2309c54 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt
@@ -8,6 +8,8 @@
 import android.graphics.Color
 import android.view.View
 import android.view.View.OnLongClickListener
+import android.view.WindowInsetsController.APPEARANCE_LIGHT_CAPTION_BARS
+import android.view.WindowInsetsController.APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND
 import android.widget.ImageButton
 import android.widget.ImageView
 import android.widget.TextView
@@ -79,6 +81,9 @@
 
     @ColorInt
     private fun getCaptionBackgroundColor(taskInfo: RunningTaskInfo): Int {
+        if (isTransparentBackgroundRequested(taskInfo)) {
+            return Color.TRANSPARENT
+        }
         val materialColorAttr: Int =
             if (isDarkMode()) {
                 if (!taskInfo.isFocused) {
@@ -102,6 +107,10 @@
     @ColorInt
     private fun getAppNameAndButtonColor(taskInfo: RunningTaskInfo): Int {
         val materialColorAttr = when {
+            isTransparentBackgroundRequested(taskInfo) &&
+                    isLightCaptionBar(taskInfo) -> materialColorOnSecondaryContainer
+            isTransparentBackgroundRequested(taskInfo) &&
+                    !isLightCaptionBar(taskInfo) -> materialColorOnSurface
             isDarkMode() -> materialColorOnSurface
             else -> materialColorOnSecondaryContainer
         }
@@ -132,6 +141,16 @@
                 Configuration.UI_MODE_NIGHT_YES
     }
 
+    private fun isTransparentBackgroundRequested(taskInfo: RunningTaskInfo): Boolean {
+        val appearance = taskInfo.taskDescription?.statusBarAppearance ?: 0
+        return (appearance and APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND) != 0
+    }
+
+    private fun isLightCaptionBar(taskInfo: RunningTaskInfo): Boolean {
+        val appearance = taskInfo.taskDescription?.statusBarAppearance ?: 0
+        return (appearance and APPEARANCE_LIGHT_CAPTION_BARS) != 0
+    }
+
     companion object {
         private const val TAG = "DesktopModeAppControlsWindowDecorationViewHolder"
         private const val DARK_THEME_UNFOCUSED_OPACITY = 140 // 55%
diff --git a/libs/WindowManager/Shell/tests/unittest/Android.bp b/libs/WindowManager/Shell/tests/unittest/Android.bp
index aadadd6..8c47116 100644
--- a/libs/WindowManager/Shell/tests/unittest/Android.bp
+++ b/libs/WindowManager/Shell/tests/unittest/Android.bp
@@ -19,6 +19,7 @@
     // to get the below license kinds:
     //   SPDX-license-identifier-Apache-2.0
     default_applicable_licenses: ["frameworks_base_license"],
+    default_team: "trendy_team_multitasking_windowing",
 }
 
 android_test {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
index 91503b1..7e26577 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/back/BackProgressAnimatorTest.java
@@ -18,6 +18,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 
 import android.os.Handler;
 import android.os.Looper;
@@ -28,6 +29,7 @@
 import android.window.BackProgressAnimator;
 
 import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -102,6 +104,36 @@
         assertEquals(mReceivedBackEvent.getProgress(), mTargetProgress, 0 /* delta */);
     }
 
+    @Test
+    public void testResetCallsCancelCallbackImmediately() throws InterruptedException {
+        // Give the animator some progress.
+        final BackMotionEvent backEvent = backMotionEventFrom(100, mTargetProgress);
+        mMainThreadHandler.post(
+                () -> mProgressAnimator.onBackProgressed(backEvent));
+        mTargetProgressCalled.await(1, TimeUnit.SECONDS);
+        assertNotNull(mReceivedBackEvent);
+
+        mTargetProgress = 0;
+        mReceivedBackEvent = null;
+        mTargetProgressCalled = new CountDownLatch(1);
+
+        CountDownLatch cancelCallbackCalled = new CountDownLatch(1);
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(
+                () -> mProgressAnimator.onBackCancelled(cancelCallbackCalled::countDown));
+
+        // verify onBackProgressed and onBackCancelled not yet called
+        assertNull(mReceivedBackEvent);
+        assertEquals(1, cancelCallbackCalled.getCount());
+
+        // call reset
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> mProgressAnimator.reset());
+
+        // verify that back event with progress 0 is sent and cancel callback is invoked
+        assertNotNull(mReceivedBackEvent);
+        assertEquals(mReceivedBackEvent.getProgress(), mTargetProgress, 0 /* delta */);
+        assertEquals(0, cancelCallbackCalled.getCount());
+    }
+
     private void onGestureProgress(BackEvent backEvent) {
         if (mTargetProgress == backEvent.getProgress()) {
             mReceivedBackEvent = backEvent;
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/magnetictarget/MagnetizedObjectTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/magnetictarget/MagnetizedObjectTest.kt
index a9f054e..a4fb350 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/magnetictarget/MagnetizedObjectTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/common/magnetictarget/MagnetizedObjectTest.kt
@@ -201,9 +201,11 @@
                 getMotionEvent(x = 200, y = 200))
 
         // You can't become unstuck if you were never stuck in the first place.
-        verify(magnetListener, never()).onStuckToTarget(magneticTarget)
+        verify(magnetListener, never()).onStuckToTarget(magneticTarget,
+                magnetizedObject)
         verify(magnetListener, never()).onUnstuckFromTarget(
-                eq(magneticTarget), ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
+                eq(magneticTarget), eq(magnetizedObject),
+                ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
                 eq(false))
 
         // Move into and then around inside the magnetic field.
@@ -213,9 +215,10 @@
                 getMotionEvent(x = targetCenterX + 100, y = targetCenterY + 100))
 
         // We should only have received one call to onStuckToTarget and none to unstuck.
-        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget)
+        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget, magnetizedObject)
         verify(magnetListener, never()).onUnstuckFromTarget(
-                eq(magneticTarget), ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
+                eq(magneticTarget), eq(magnetizedObject),
+                ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
                 eq(false))
 
         // Move out of the field and then release.
@@ -226,7 +229,8 @@
         // We should have received one unstuck call and no more stuck calls. We also should never
         // have received an onReleasedInTarget call.
         verify(magnetListener, times(1)).onUnstuckFromTarget(
-                eq(magneticTarget), ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
+                eq(magneticTarget), eq(magnetizedObject),
+                ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
                 eq(false))
         verifyNoMoreInteractions(magnetListener)
     }
@@ -242,8 +246,8 @@
                 getMotionEvent(
                         x = targetCenterX, y = targetCenterY))
 
-        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget)
-        verify(magnetListener, never()).onReleasedInTarget(magneticTarget)
+        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget, magnetizedObject)
+        verify(magnetListener, never()).onReleasedInTarget(magneticTarget, magnetizedObject)
 
         // Move back out.
         dispatchMotionEvents(
@@ -252,9 +256,11 @@
                         y = targetCenterY - magneticFieldRadius))
 
         verify(magnetListener, times(1)).onUnstuckFromTarget(
-                eq(magneticTarget), ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
+                eq(magneticTarget),
+                eq(magnetizedObject),
+                ArgumentMatchers.anyFloat(), ArgumentMatchers.anyFloat(),
                 eq(false))
-        verify(magnetListener, never()).onReleasedInTarget(magneticTarget)
+        verify(magnetListener, never()).onReleasedInTarget(magneticTarget, magnetizedObject)
 
         // Move in again and release in the magnetic field.
         dispatchMotionEvents(
@@ -264,8 +270,8 @@
                 getMotionEvent(
                         x = targetCenterX, y = targetCenterY, action = MotionEvent.ACTION_UP))
 
-        verify(magnetListener, times(2)).onStuckToTarget(magneticTarget)
-        verify(magnetListener).onReleasedInTarget(magneticTarget)
+        verify(magnetListener, times(2)).onStuckToTarget(magneticTarget, magnetizedObject)
+        verify(magnetListener).onReleasedInTarget(magneticTarget, magnetizedObject)
         verifyNoMoreInteractions(magnetListener)
     }
 
@@ -288,7 +294,7 @@
                         action = MotionEvent.ACTION_UP))
 
         // Nevertheless it should have ended up stuck to the target.
-        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget)
+        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget, magnetizedObject)
     }
 
     @Test
@@ -366,7 +372,7 @@
                 getMotionEvent(x = 100, y = 900))
 
         // Verify that we received an onStuck for the second target, and no others.
-        verify(magnetListener).onStuckToTarget(secondMagneticTarget)
+        verify(magnetListener).onStuckToTarget(secondMagneticTarget, magnetizedObject)
         verifyNoMoreInteractions(magnetListener)
 
         // Drag into the original target.
@@ -376,8 +382,9 @@
 
         // We should have unstuck from the second one and stuck into the original one.
         verify(magnetListener).onUnstuckFromTarget(
-                eq(secondMagneticTarget), anyFloat(), anyFloat(), eq(false))
-        verify(magnetListener).onStuckToTarget(magneticTarget)
+                eq(secondMagneticTarget), eq(magnetizedObject),
+                anyFloat(), anyFloat(), eq(false))
+        verify(magnetListener).onStuckToTarget(magneticTarget, magnetizedObject)
         verifyNoMoreInteractions(magnetListener)
     }
 
@@ -394,7 +401,7 @@
                 getMotionEvent(x = 100, y = 650, action = MotionEvent.ACTION_UP))
 
         // Verify that we received an onStuck for the second target.
-        verify(magnetListener).onStuckToTarget(secondMagneticTarget)
+        verify(magnetListener).onStuckToTarget(secondMagneticTarget, magnetizedObject)
 
         // Fling towards the first target.
         dispatchMotionEvents(
@@ -403,7 +410,7 @@
                 getMotionEvent(x = 500, y = 650, action = MotionEvent.ACTION_UP))
 
         // Verify that we received onStuck for the original target.
-        verify(magnetListener).onStuckToTarget(magneticTarget)
+        verify(magnetListener).onStuckToTarget(magneticTarget, magnetizedObject)
     }
 
     @Test
@@ -413,10 +420,10 @@
         dispatchMotionEvents(getMotionEvent(x = targetCenterX, y = targetCenterY))
         // Moved into the target location, but it should be shifted due to screen offset.
         // Should not get stuck.
-        verify(magnetListener, never()).onStuckToTarget(magneticTarget)
+        verify(magnetListener, never()).onStuckToTarget(magneticTarget, magnetizedObject)
 
         dispatchMotionEvents(getMotionEvent(x = targetCenterX, y = targetCenterY + 500))
-        verify(magnetListener).onStuckToTarget(magneticTarget)
+        verify(magnetListener).onStuckToTarget(magneticTarget, magnetizedObject)
 
         dispatchMotionEvents(
             getMotionEvent(
@@ -426,7 +433,7 @@
             )
         )
 
-        verify(magnetListener).onReleasedInTarget(magneticTarget)
+        verify(magnetListener).onReleasedInTarget(magneticTarget, magnetizedObject)
         verifyNoMoreInteractions(magnetListener)
     }
 
@@ -437,14 +444,15 @@
 
         dispatchMotionEvents(getMotionEvent(x = targetCenterX, y = adjustedTargetCenter))
         dispatchMotionEvents(getMotionEvent(x = 0, y = 0))
-        verify(magnetListener).onStuckToTarget(magneticTarget)
+        verify(magnetListener).onStuckToTarget(magneticTarget, magnetizedObject)
         verify(magnetListener)
-                .onUnstuckFromTarget(eq(magneticTarget), anyFloat(), anyFloat(), anyBoolean())
+                .onUnstuckFromTarget(eq(magneticTarget), eq(magnetizedObject),
+                        anyFloat(), anyFloat(), anyBoolean())
 
         // Offset if removed, we should now get stuck at the target location
         magneticTarget.screenVerticalOffset = 0
         dispatchMotionEvents(getMotionEvent(x = targetCenterX, y = targetCenterY))
-        verify(magnetListener, times(2)).onStuckToTarget(magneticTarget)
+        verify(magnetListener, times(2)).onStuckToTarget(magneticTarget, magnetizedObject)
     }
 
     @Test
@@ -466,7 +474,7 @@
         )
 
         // Nevertheless it should have ended up stuck to the target.
-        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget)
+        verify(magnetListener, times(1)).onStuckToTarget(magneticTarget, magnetizedObject)
     }
 
     private fun getSecondMagneticTarget(): MagnetizedObject.MagneticTarget {
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
index 9249b0a..79634e6 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DesktopTasksControllerTest.kt
@@ -303,7 +303,7 @@
     fun moveToDesktop_displayFullscreen_windowingModeSetToFreeform() {
         val task = setUpFullscreenTask()
         task.configuration.windowConfiguration.displayWindowingMode = WINDOWING_MODE_FULLSCREEN
-        controller.moveToDesktop(desktopModeWindowDecoration, task)
+        controller.moveToDesktop(task)
         val wct = getLatestMoveToDesktopWct()
         assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
             .isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -313,7 +313,7 @@
     fun moveToDesktop_displayFreeform_windowingModeSetToUndefined() {
         val task = setUpFullscreenTask()
         task.configuration.windowConfiguration.displayWindowingMode = WINDOWING_MODE_FREEFORM
-        controller.moveToDesktop(desktopModeWindowDecoration, task)
+        controller.moveToDesktop(task)
         val wct = getLatestMoveToDesktopWct()
         assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
                 .isEqualTo(WINDOWING_MODE_UNDEFINED)
@@ -321,7 +321,7 @@
 
     @Test
     fun moveToDesktop_nonExistentTask_doesNothing() {
-        controller.moveToDesktop(desktopModeWindowDecoration, 999)
+        controller.moveToDesktop(999)
         verifyWCTNotExecuted()
     }
 
@@ -332,7 +332,7 @@
         val fullscreenTask = setUpFullscreenTask()
         markTaskHidden(freeformTask)
 
-        controller.moveToDesktop(desktopModeWindowDecoration, fullscreenTask)
+        controller.moveToDesktop(fullscreenTask)
 
         with(getLatestMoveToDesktopWct()) {
             // Operations should include home task, freeform task
@@ -354,7 +354,7 @@
         val freeformTaskSecond = setUpFreeformTask(displayId = SECOND_DISPLAY)
         markTaskHidden(freeformTaskSecond)
 
-        controller.moveToDesktop(desktopModeWindowDecoration, fullscreenTaskDefault)
+        controller.moveToDesktop(fullscreenTaskDefault)
 
         with(getLatestMoveToDesktopWct()) {
             // Check that hierarchy operations do not include tasks from second display
@@ -368,7 +368,7 @@
     @Test
     fun moveToDesktop_splitTaskExitsSplit() {
         val task = setUpSplitScreenTask()
-        controller.moveToDesktop(desktopModeWindowDecoration, task)
+        controller.moveToDesktop(task)
         val wct = getLatestMoveToDesktopWct()
         assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
             .isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -380,7 +380,7 @@
     @Test
     fun moveToDesktop_fullscreenTaskDoesNotExitSplit() {
         val task = setUpFullscreenTask()
-        controller.moveToDesktop(desktopModeWindowDecoration, task)
+        controller.moveToDesktop(task)
         val wct = getLatestMoveToDesktopWct()
         assertThat(wct.changes[task.token.asBinder()]?.windowingMode)
             .isEqualTo(WINDOWING_MODE_FREEFORM)
@@ -802,7 +802,7 @@
     private fun getLatestMoveToDesktopWct(): WindowContainerTransaction {
         val arg = ArgumentCaptor.forClass(WindowContainerTransaction::class.java)
         if (ENABLE_SHELL_TRANSITIONS) {
-            verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture(), any())
+            verify(enterDesktopTransitionHandler).moveToDesktop(arg.capture())
         } else {
             verify(shellTaskOrganizer).applyTransaction(arg.capture())
         }
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
index be639e8..98e90d6 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/desktopmode/DragToDesktopTransitionHandlerTest.kt
@@ -24,7 +24,6 @@
 import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_END_DRAG_TO_DESKTOP
 import com.android.wm.shell.transition.Transitions.TRANSIT_DESKTOP_MODE_START_DRAG_TO_DESKTOP
 import com.android.wm.shell.windowdecor.MoveToDesktopAnimator
-import java.util.function.Supplier
 import junit.framework.Assert.assertFalse
 import org.junit.Before
 import org.junit.Test
@@ -38,6 +37,7 @@
 import org.mockito.kotlin.verify
 import org.mockito.kotlin.verifyZeroInteractions
 import org.mockito.kotlin.whenever
+import java.util.function.Supplier
 
 /** Tests of [DragToDesktopTransitionHandler]. */
 @SmallTest
@@ -246,7 +246,7 @@
                 )
             )
             .thenReturn(token)
-        handler.startDragToDesktopTransition(task.taskId, dragAnimator, mock())
+        handler.startDragToDesktopTransition(task.taskId, dragAnimator)
         return token
     }
 
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java
new file mode 100644
index 0000000..71eea4b
--- /dev/null
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/freeform/FreeformTaskListenerTests.java
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 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 com.android.wm.shell.freeform;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.ActivityManager;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.SmallTest;
+
+import com.android.dx.mockito.inline.extended.StaticMockitoSession;
+import com.android.wm.shell.ShellTaskOrganizer;
+import com.android.wm.shell.ShellTestCase;
+import com.android.wm.shell.TestRunningTaskInfoBuilder;
+import com.android.wm.shell.desktopmode.DesktopModeStatus;
+import com.android.wm.shell.desktopmode.DesktopModeTaskRepository;
+import com.android.wm.shell.sysui.ShellInit;
+import com.android.wm.shell.windowdecor.WindowDecorViewModel;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.quality.Strictness;
+
+import java.util.Optional;
+
+/**
+ * Tests for {@link FreeformTaskListener}
+ * Build/Install/Run:
+ * atest WMShellUnitTests:FreeformTaskListenerTests
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public final class FreeformTaskListenerTests extends ShellTestCase {
+
+    @Mock
+    private ShellTaskOrganizer mTaskOrganizer;
+    @Mock
+    private ShellInit mShellInit;
+    @Mock
+    private WindowDecorViewModel mWindowDecorViewModel;
+    @Mock
+    private DesktopModeTaskRepository mDesktopModeTaskRepository;
+    private FreeformTaskListener mFreeformTaskListener;
+    private StaticMockitoSession mMockitoSession;
+
+    @Before
+    public void setup() {
+        mMockitoSession = mockitoSession().initMocks(this)
+                .strictness(Strictness.LENIENT).mockStatic(DesktopModeStatus.class).startMocking();
+        when(DesktopModeStatus.isEnabled()).thenReturn(true);
+        mFreeformTaskListener = new FreeformTaskListener(
+                mShellInit,
+                mTaskOrganizer,
+                Optional.of(mDesktopModeTaskRepository),
+                mWindowDecorViewModel);
+    }
+
+    @Test
+    public void testFocusTaskChanged_freeformTaskIsAddedToRepo() {
+        ActivityManager.RunningTaskInfo task = new TestRunningTaskInfoBuilder()
+                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
+        task.isFocused = true;
+
+        mFreeformTaskListener.onFocusTaskChanged(task);
+
+        verify(mDesktopModeTaskRepository).addOrMoveFreeformTaskToTop(task.taskId);
+    }
+
+    @Test
+    public void testFocusTaskChanged_fullscreenTaskIsNotAddedToRepo() {
+        ActivityManager.RunningTaskInfo fullscreenTask = new TestRunningTaskInfoBuilder()
+                .setWindowingMode(WINDOWING_MODE_FULLSCREEN).build();
+        fullscreenTask.isFocused = true;
+
+        mFreeformTaskListener.onFocusTaskChanged(fullscreenTask);
+
+        verify(mDesktopModeTaskRepository, never())
+                .addOrMoveFreeformTaskToTop(fullscreenTask.taskId);
+    }
+
+    @After
+    public void tearDown() {
+        mMockitoSession.finishMocking();
+    }
+}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
index 7b53f70..228b25c 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/WindowDecorationTests.java
@@ -259,7 +259,8 @@
                     any(),
                     eq(0 /* index */),
                     eq(WindowInsets.Type.captionBar()),
-                    eq(new Rect(100, 300, 400, 364)));
+                    eq(new Rect(100, 300, 400, 364)),
+                    any());
         }
 
         verify(mMockSurfaceControlStartT).setCornerRadius(mMockTaskSurface, CORNER_RADIUS);
@@ -569,9 +570,9 @@
         windowDecor.relayout(taskInfo);
 
         verify(mMockWindowContainerTransaction).addInsetsSource(eq(taskInfo.token), any(),
-                eq(0) /* index */, eq(captionBar()), any());
+                eq(0) /* index */, eq(captionBar()), any(), any());
         verify(mMockWindowContainerTransaction).addInsetsSource(eq(taskInfo.token), any(),
-                eq(0) /* index */, eq(mandatorySystemGestures()), any());
+                eq(0) /* index */, eq(mandatorySystemGestures()), any(), any());
     }
 
     @Test
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index 46f636e..8748dab 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -117,10 +117,6 @@
   return true;
 }
 
-void AssetManager2::PresetApkAssets(ApkAssetsList apk_assets) {
-  BuildDynamicRefTable(apk_assets);
-}
-
 bool AssetManager2::SetApkAssets(std::initializer_list<ApkAssetsPtr> apk_assets,
                                  bool invalidate_caches) {
   return SetApkAssets(ApkAssetsList(apk_assets.begin(), apk_assets.size()), invalidate_caches);
@@ -436,18 +432,13 @@
   return false;
 }
 
-void AssetManager2::SetConfigurations(std::vector<ResTable_config> configurations,
-    bool force_refresh) {
+void AssetManager2::SetConfigurations(std::vector<ResTable_config> configurations) {
   int diff = 0;
-  if (force_refresh) {
+  if (configurations_.size() != configurations.size()) {
     diff = -1;
   } else {
-    if (configurations_.size() != configurations.size()) {
-      diff = -1;
-    } else {
-      for (int i = 0; i < configurations_.size(); i++) {
-        diff |= configurations_[i].diff(configurations[i]);
-      }
+    for (int i = 0; i < configurations_.size(); i++) {
+      diff |= configurations_[i].diff(configurations[i]);
     }
   }
   configurations_ = std::move(configurations);
@@ -784,7 +775,8 @@
     bool has_locale = false;
     if (result->config.locale == 0) {
       if (default_locale_ != 0) {
-        ResTable_config conf = {.locale = default_locale_};
+        ResTable_config conf;
+        conf.locale = default_locale_;
         // Since we know conf has a locale and only a locale, match will tell us if that locale
         // matches
         has_locale = conf.match(config);
diff --git a/libs/androidfw/include/androidfw/AssetManager2.h b/libs/androidfw/include/androidfw/AssetManager2.h
index 17a8ba6..d9ff35b 100644
--- a/libs/androidfw/include/androidfw/AssetManager2.h
+++ b/libs/androidfw/include/androidfw/AssetManager2.h
@@ -124,9 +124,6 @@
   // new resource IDs.
   bool SetApkAssets(ApkAssetsList apk_assets, bool invalidate_caches = true);
   bool SetApkAssets(std::initializer_list<ApkAssetsPtr> apk_assets, bool invalidate_caches = true);
-  // This one is an optimization - it skips all calculations for applying the currently set
-  // configuration, expecting a configuration update later with a forced refresh.
-  void PresetApkAssets(ApkAssetsList apk_assets);
 
   const ApkAssetsPtr& GetApkAssets(ApkAssetsCookie cookie) const;
   int GetApkAssetsCount() const {
@@ -159,7 +156,7 @@
 
   // Sets/resets the configuration for this AssetManager. This will cause all
   // caches that are related to the configuration change to be invalidated.
-  void SetConfigurations(std::vector<ResTable_config> configurations, bool force_refresh = false);
+  void SetConfigurations(std::vector<ResTable_config> configurations);
 
   inline const std::vector<ResTable_config>& GetConfigurations() const {
     return configurations_;
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 14b8d8d..0b739c3 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -70,6 +70,8 @@
             : mType(Type::RRect), mOp(op), mMatrix(m), mRRect(rrect) {}
     Clip(const SkPath& path, SkClipOp op, const SkMatrix& m)
             : mType(Type::Path), mOp(op), mMatrix(m), mPath(std::in_place, path) {}
+    Clip(const sk_sp<SkShader> shader, SkClipOp op, const SkMatrix& m)
+            : mType(Type::Shader), mOp(op), mMatrix(m), mShader(shader) {}
 
     void apply(SkCanvas* canvas) const {
         canvas->setMatrix(mMatrix);
@@ -86,6 +88,8 @@
                 // Ensure path clips are anti-aliased
                 canvas->clipPath(mPath.value(), mOp, true);
                 break;
+            case Type::Shader:
+                canvas->clipShader(mShader, mOp);
         }
     }
 
@@ -94,6 +98,7 @@
         Rect,
         RRect,
         Path,
+        Shader,
     };
 
     Type mType;
@@ -103,6 +108,7 @@
     // These are logically a union (tracked separately due to non-POD path).
     std::optional<SkPath> mPath;
     SkRRect mRRect;
+    sk_sp<SkShader> mShader;
 };
 
 Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {
@@ -413,6 +419,11 @@
     return !mCanvas->isClipEmpty();
 }
 
+void SkiaCanvas::clipShader(sk_sp<SkShader> shader, SkClipOp op) {
+    this->recordClip(shader, op);
+    mCanvas->clipShader(shader, op);
+}
+
 bool SkiaCanvas::replaceClipRect_deprecated(float left, float top, float right, float bottom) {
     SkRect rect = SkRect::MakeLTRB(left, top, right, bottom);
 
diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h
index 5e3553b..4a012bc 100644
--- a/libs/hwui/SkiaCanvas.h
+++ b/libs/hwui/SkiaCanvas.h
@@ -97,6 +97,7 @@
     virtual bool quickRejectPath(const SkPath& path) const override;
     virtual bool clipRect(float left, float top, float right, float bottom, SkClipOp op) override;
     virtual bool clipPath(const SkPath* path, SkClipOp op) override;
+    virtual void clipShader(sk_sp<SkShader> shader, SkClipOp op) override;
     virtual bool replaceClipRect_deprecated(float left, float top, float right,
                                             float bottom) override;
     virtual bool replaceClipPath_deprecated(const SkPath* path) override;
diff --git a/libs/hwui/hwui/Canvas.cpp b/libs/hwui/hwui/Canvas.cpp
index e9f4b81c..80b6c03 100644
--- a/libs/hwui/hwui/Canvas.cpp
+++ b/libs/hwui/hwui/Canvas.cpp
@@ -18,7 +18,6 @@
 
 #include <SkFontMetrics.h>
 #include <SkRRect.h>
-#include <minikin/MinikinRect.h>
 
 #include "FeatureFlags.h"
 #include "MinikinUtils.h"
@@ -108,13 +107,7 @@
     // care of all alignment.
     paint.setTextAlign(Paint::kLeft_Align);
 
-    minikin::MinikinRect bounds;
-    // We only need the bounds to draw a rectangular background in high contrast mode. Let's save
-    // the cycles otherwise.
-    if (flags::high_contrast_text_small_text_rect() && isHighContrastText()) {
-        MinikinUtils::getBounds(&paint, bidiFlags, typeface, text, textSize, &bounds);
-    }
-    DrawTextFunctor f(layout, this, paint, x, y, layout.getAdvance(), bounds);
+    DrawTextFunctor f(layout, this, paint, x, y, layout.getAdvance());
     MinikinUtils::forFontRun(layout, &paint, f);
 
     if (text_feature::fix_double_underline()) {
diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h
index 20e3ad2..14b4f58 100644
--- a/libs/hwui/hwui/Canvas.h
+++ b/libs/hwui/hwui/Canvas.h
@@ -188,6 +188,7 @@
 
     virtual bool clipRect(float left, float top, float right, float bottom, SkClipOp op) = 0;
     virtual bool clipPath(const SkPath* path, SkClipOp op) = 0;
+    virtual void clipShader(sk_sp<SkShader> shader, SkClipOp op) = 0;
     // Resets clip to wide open, used to emulate the now-removed SkClipOp::kReplace on
     // apps with compatibility < P. Canvases for version P and later are restricted to
     // intersect and difference at the Java level, matching SkClipOp's definition.
diff --git a/libs/hwui/hwui/DrawTextFunctor.h b/libs/hwui/hwui/DrawTextFunctor.h
index ba65439..02bf0d8 100644
--- a/libs/hwui/hwui/DrawTextFunctor.h
+++ b/libs/hwui/hwui/DrawTextFunctor.h
@@ -16,6 +16,7 @@
 
 #include <SkFontMetrics.h>
 #include <SkRRect.h>
+#include <SkTextBlob.h>
 #include <com_android_graphics_hwui_flags.h>
 
 #include "../utils/Color.h"
@@ -66,7 +67,7 @@
      * @param bounds bounds of the text. Only required if high contrast text mode is enabled.
      */
     DrawTextFunctor(const minikin::Layout& layout, Canvas* canvas, const Paint& paint, float x,
-                    float y, float totalAdvance, const minikin::MinikinRect& bounds)
+                    float y, float totalAdvance)
             : layout(layout)
             , canvas(canvas)
             , paint(paint)
@@ -74,8 +75,7 @@
             , y(y)
             , totalAdvance(totalAdvance)
             , underlinePosition(0)
-            , underlineThickness(0)
-            , bounds(bounds) {}
+            , underlineThickness(0) {}
 
     void operator()(size_t start, size_t end) {
         auto glyphFunc = [&](uint16_t* text, float* positions) {
@@ -106,12 +106,32 @@
             simplifyPaint(darken ? SK_ColorWHITE : SK_ColorBLACK, &outlinePaint);
             outlinePaint.setStyle(SkPaint::kStrokeAndFill_Style);
             if (flags::high_contrast_text_small_text_rect()) {
-                auto bgBounds(bounds);
-                auto padding = kHighContrastTextBorderWidth + 0.1f * paint.getSkFont().getSize();
-                bgBounds.offset(x, y);
-                canvas->drawRect(bgBounds.mLeft - padding, bgBounds.mTop - padding,
-                                 bgBounds.mRight + padding, bgBounds.mBottom + padding,
-                                 outlinePaint);
+                const SkFont& font = paint.getSkFont();
+                auto padding = kHighContrastTextBorderWidth + 0.1f * font.getSize();
+
+                // Draw the background only behind each glyph's bounds. We do this instead of using
+                // the bounds of the entire layout, because the layout includes alignment whitespace
+                // etc which can obscure other text from separate passes (e.g. emojis).
+                // Merge all the glyph bounds into one rect for this line, since drawing a rect for
+                // each glyph is expensive.
+                SkRect glyphBounds;
+                SkRect bgBounds;
+                for (size_t i = start; i < end; i++) {
+                    auto glyph = layout.getGlyphId(i);
+
+                    font.getBounds(reinterpret_cast<const SkGlyphID*>(&glyph), 1, &glyphBounds,
+                                   &paint);
+                    glyphBounds.offset(layout.getX(i), layout.getY(i));
+
+                    bgBounds.join(glyphBounds);
+                }
+
+                if (!bgBounds.isEmpty()) {
+                    bgBounds.offset(x, y);
+                    bgBounds.outset(padding, padding);
+                    canvas->drawRect(bgBounds.fLeft, bgBounds.fTop, bgBounds.fRight,
+                                     bgBounds.fBottom, outlinePaint);
+                }
             } else {
                 canvas->drawGlyphs(glyphFunc, glyphCount, outlinePaint, x, y, totalAdvance);
             }
@@ -169,7 +189,6 @@
     float totalAdvance;
     float underlinePosition;
     float underlineThickness;
-    const minikin::MinikinRect& bounds;
 };
 
 }  // namespace android
diff --git a/libs/hwui/jni/android_graphics_Canvas.cpp b/libs/hwui/jni/android_graphics_Canvas.cpp
index e5bdeee..1fc34d6 100644
--- a/libs/hwui/jni/android_graphics_Canvas.cpp
+++ b/libs/hwui/jni/android_graphics_Canvas.cpp
@@ -261,6 +261,23 @@
     return nonEmptyClip ? JNI_TRUE : JNI_FALSE;
 }
 
+static void clipShader(CRITICAL_JNI_PARAMS_COMMA jlong canvasHandle, jlong shaderHandle,
+                       jint opHandle) {
+    SkRegion::Op rgnOp = static_cast<SkRegion::Op>(opHandle);
+    sk_sp<SkShader> shader = sk_ref_sp(reinterpret_cast<SkShader*>(shaderHandle));
+    switch (rgnOp) {
+        case SkRegion::Op::kIntersect_Op:
+        case SkRegion::Op::kDifference_Op:
+            get_canvas(canvasHandle)->clipShader(shader, static_cast<SkClipOp>(rgnOp));
+            break;
+        default:
+            ALOGW("Ignoring unsupported clip operation %d", opHandle);
+            SkRect clipBounds;  // ignored
+            get_canvas(canvasHandle)->getClipBounds(&clipBounds);
+            break;
+    }
+}
+
 static void drawColor(JNIEnv* env, jobject, jlong canvasHandle, jint color, jint modeHandle) {
     SkBlendMode mode = static_cast<SkBlendMode>(modeHandle);
     get_canvas(canvasHandle)->drawColor(color, mode);
@@ -797,6 +814,7 @@
         {"nQuickReject", "(JFFFF)Z", (void*)CanvasJNI::quickRejectRect},
         {"nClipRect", "(JFFFFI)Z", (void*)CanvasJNI::clipRect},
         {"nClipPath", "(JJI)Z", (void*)CanvasJNI::clipPath},
+        {"nClipShader", "(JJI)V", (void*)CanvasJNI::clipShader},
         {"nSetDrawFilter", "(JJ)V", (void*)CanvasJNI::setPaintFilter},
 };
 
diff --git a/libs/hwui/tests/unit/UnderlineTest.cpp b/libs/hwui/tests/unit/UnderlineTest.cpp
index 9911bfa..c70a304 100644
--- a/libs/hwui/tests/unit/UnderlineTest.cpp
+++ b/libs/hwui/tests/unit/UnderlineTest.cpp
@@ -103,9 +103,8 @@
     // Create minikin::Layout
     std::unique_ptr<Typeface> typeface(makeTypeface());
     minikin::Layout layout = doLayout(text, *paint, typeface.get());
-    minikin::MinikinRect bounds;
 
-    DrawTextFunctor f(layout, &canvas, *paint, 0, 0, layout.getAdvance(), bounds);
+    DrawTextFunctor f(layout, &canvas, *paint, 0, 0, layout.getAdvance());
     MinikinUtils::forFontRun(layout, paint, f);
     return f;
 }
diff --git a/location/api/current.txt b/location/api/current.txt
index 5ed8c3c..85e9f65 100644
--- a/location/api/current.txt
+++ b/location/api/current.txt
@@ -88,12 +88,12 @@
   public final class Geocoder {
     ctor public Geocoder(@NonNull android.content.Context);
     ctor public Geocoder(@NonNull android.content.Context, @NonNull java.util.Locale);
-    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange int) throws java.io.IOException;
-    method public void getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange int, @NonNull android.location.Geocoder.GeocodeListener);
-    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocationName(@NonNull String, @IntRange int) throws java.io.IOException;
-    method public void getFromLocationName(@NonNull String, @IntRange int, @NonNull android.location.Geocoder.GeocodeListener);
-    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocationName(@NonNull String, @IntRange int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double) throws java.io.IOException;
-    method public void getFromLocationName(@NonNull String, @IntRange int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @NonNull android.location.Geocoder.GeocodeListener);
+    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange(from=1) int) throws java.io.IOException;
+    method public void getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange(from=1) int, @NonNull android.location.Geocoder.GeocodeListener);
+    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocationName(@NonNull String, @IntRange(from=1) int) throws java.io.IOException;
+    method public void getFromLocationName(@NonNull String, @IntRange(from=1) int, @NonNull android.location.Geocoder.GeocodeListener);
+    method @Deprecated @Nullable public java.util.List<android.location.Address> getFromLocationName(@NonNull String, @IntRange(from=1) int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double) throws java.io.IOException;
+    method public void getFromLocationName(@NonNull String, @IntRange(from=1) int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @NonNull android.location.Geocoder.GeocodeListener);
     method public static boolean isPresent();
   }
 
diff --git a/location/api/system-current.txt b/location/api/system-current.txt
index b1cf96d..2e7a541 100644
--- a/location/api/system-current.txt
+++ b/location/api/system-current.txt
@@ -591,6 +591,36 @@
 
 package android.location.provider {
 
+  @FlaggedApi(Flags.FLAG_NEW_GEOCODER) public final class ForwardGeocodeRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingAttributionTag();
+    method @NonNull public String getCallingPackage();
+    method public int getCallingUid();
+    method @NonNull public java.util.Locale getLocale();
+    method @NonNull public String getLocationName();
+    method @FloatRange(from=-90.0, to=90.0) public double getLowerLeftLatitude();
+    method @FloatRange(from=-180.0, to=180.0) public double getLowerLeftLongitude();
+    method @IntRange(from=1) public int getMaxResults();
+    method @FloatRange(from=-90.0, to=90.0) public double getUpperRightLatitude();
+    method @FloatRange(from=-180.0, to=180.0) public double getUpperRightLongitude();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.provider.ForwardGeocodeRequest> CREATOR;
+  }
+
+  public static final class ForwardGeocodeRequest.Builder {
+    ctor public ForwardGeocodeRequest.Builder(@NonNull String, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange(from=1) int, @NonNull java.util.Locale, int, @NonNull String);
+    method @NonNull public android.location.provider.ForwardGeocodeRequest build();
+    method @NonNull public android.location.provider.ForwardGeocodeRequest.Builder setCallingAttributionTag(@NonNull String);
+  }
+
+  @FlaggedApi(Flags.FLAG_NEW_GEOCODER) public abstract class GeocodeProviderBase {
+    ctor public GeocodeProviderBase(@NonNull android.content.Context, @NonNull String);
+    method @NonNull public final android.os.IBinder getBinder();
+    method public abstract void onForwardGeocode(@NonNull android.location.provider.ForwardGeocodeRequest, @NonNull android.os.OutcomeReceiver<java.util.List<android.location.Address>,java.lang.Exception>);
+    method public abstract void onReverseGeocode(@NonNull android.location.provider.ReverseGeocodeRequest, @NonNull android.os.OutcomeReceiver<java.util.List<android.location.Address>,java.lang.Exception>);
+    field public static final String ACTION_GEOCODE_PROVIDER = "com.android.location.service.GeocodeProvider";
+  }
+
   public abstract class LocationProviderBase {
     ctor public LocationProviderBase(@NonNull android.content.Context, @NonNull String, @NonNull android.location.provider.ProviderProperties);
     method @Nullable public final android.os.IBinder getBinder();
@@ -642,5 +672,24 @@
     method public void onProviderRequestChanged(@NonNull String, @NonNull android.location.provider.ProviderRequest);
   }
 
+  @FlaggedApi(Flags.FLAG_NEW_GEOCODER) public final class ReverseGeocodeRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method @Nullable public String getCallingAttributionTag();
+    method @NonNull public String getCallingPackage();
+    method public int getCallingUid();
+    method @FloatRange(from=-90.0, to=90.0) public double getLatitude();
+    method @NonNull public java.util.Locale getLocale();
+    method @FloatRange(from=-180.0, to=180.0) public double getLongitude();
+    method @IntRange(from=1) public int getMaxResults();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.provider.ReverseGeocodeRequest> CREATOR;
+  }
+
+  public static final class ReverseGeocodeRequest.Builder {
+    ctor public ReverseGeocodeRequest.Builder(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange(from=0) int, @NonNull java.util.Locale, int, @NonNull String);
+    method @NonNull public android.location.provider.ReverseGeocodeRequest build();
+    method @NonNull public android.location.provider.ReverseGeocodeRequest.Builder setCallingAttributionTag(@NonNull String);
+  }
+
 }
 
diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java
index a158344..cdde7c6 100644
--- a/location/java/android/location/Geocoder.java
+++ b/location/java/android/location/Geocoder.java
@@ -21,11 +21,13 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.IGeocodeCallback;
+import android.location.provider.ReverseGeocodeRequest;
+import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 
-import com.android.internal.util.Preconditions;
-
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
@@ -33,6 +35,7 @@
 import java.util.Objects;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
 
 /**
  * A class for handling geocoding and reverse geocoding. Geocoding is the process of transforming a
@@ -42,9 +45,12 @@
  * example one might contain the full street address of the closest building, while another might
  * contain only a city name and postal code.
  *
- * The Geocoder class requires a backend service that is not included in the core android framework.
- * The Geocoder query methods will return an empty list if there no backend service in the platform.
- * Use the isPresent() method to determine whether a Geocoder implementation exists.
+ * <p>Use the isPresent() method to determine whether a Geocoder implementation exists on the
+ * current device. If no implementation is present, any attempt to geocode will result in an error.
+ *
+ * <p>Geocoder implementations are only required to make a best effort to return results in the
+ * chosen locale. Note that geocoder implementations may return results in other locales if they
+ * have no information available for the chosen locale.
  *
  * <p class="note"><strong>Warning:</strong> Geocoding services may provide no guarantees on
  * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful or
@@ -52,45 +58,53 @@
  */
 public final class Geocoder {
 
-    /** A listener for asynchronous geocoding results. */
+    /**
+     * A listener for asynchronous geocoding results. Only one of the methods will ever be invoked
+     * per geocoding attempt. There are no guarantees on how long it will take for a method to be
+     * invoked, nor any guarantees on the format or availability of error information.
+     */
     public interface GeocodeListener {
         /** Invoked when geocoding completes successfully. May return an empty list. */
         void onGeocode(@NonNull List<Address> addresses);
-        /** Invoked when geocoding fails, with a brief error message. */
+
+        /** Invoked when geocoding fails, with an optional error message. */
         default void onError(@Nullable String errorMessage) {}
     }
 
-    private static final long TIMEOUT_MS = 60000;
+    private static final long TIMEOUT_MS = 15000;
 
-    private final GeocoderParams mParams;
+    private final Context mContext;
+    private final Locale mLocale;
     private final ILocationManager mService;
 
     /**
-     * Returns true if there is a geocoder implementation present that may return results. If true,
-     * there is still no guarantee that any individual geocoding attempt will succeed.
+     * Returns true if there is a geocoder implementation present on the device that may return
+     * results. If true, there is still no guarantee that any individual geocoding attempt will
+     * succeed.
      */
     public static boolean isPresent() {
         ILocationManager lm = Objects.requireNonNull(ILocationManager.Stub.asInterface(
                 ServiceManager.getService(Context.LOCATION_SERVICE)));
         try {
-            return lm.geocoderIsPresent();
+            return lm.isGeocodeAvailable();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
     }
 
-    /**
-     * Constructs a Geocoder localized for the default locale.
-     */
+    /** Constructs a Geocoder localized for {@link Locale#getDefault()}. */
     public Geocoder(@NonNull Context context) {
         this(context, Locale.getDefault());
     }
 
     /**
-     * Constructs a Geocoder localized for the given locale.
+     * Constructs a Geocoder localized for the given locale. Note that geocoder implementations will
+     * only make a best effort to return results in the given locale, and there is no guarantee that
+     * returned results will be in the specific locale.
      */
     public Geocoder(@NonNull Context context, @NonNull Locale locale) {
-        mParams = new GeocoderParams(context, locale);
+        mContext = Objects.requireNonNull(context);
+        mLocale = Objects.requireNonNull(locale);
         mService = ILocationManager.Stub.asInterface(
                 ServiceManager.getService(Context.LOCATION_SERVICE));
     }
@@ -103,31 +117,28 @@
      * <p class="warning"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
      * <p class="warning"><strong>Warning:</strong> This API may hit the network, and may block for
-     * excessive amounts of time, up to 60 seconds or more. It's strongly encouraged to use the
-     * asynchronous version of this API. If that is not possible, this should be run on a background
-     * thread to avoid blocking other operations.</p>
+     * excessive amounts of time. It's strongly encouraged to use the asynchronous version of this
+     * API. If that is not possible, this should be run on a background thread to avoid blocking
+     * other operations.
      *
      * @param latitude the latitude a point for the search
      * @param longitude the longitude a point for the search
      * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended
-     *
-     * @return a list of Address objects. Returns null or empty list if no matches were
-     * found or there is no backend service available.
-     *
+     * @return a list of Address objects. Returns null or empty list if no matches were found or
+     *     there is no backend service available.
      * @throws IllegalArgumentException if latitude or longitude is invalid
      * @throws IOException if there is a failure
-     *
      * @deprecated Use {@link #getFromLocation(double, double, int, GeocodeListener)} instead to
-     * avoid blocking a thread waiting for results.
+     *     avoid blocking a thread waiting for results.
      */
     @Deprecated
     public @Nullable List<Address> getFromLocation(
             @FloatRange(from = -90D, to = 90D) double latitude,
-            @FloatRange(from = -180D, to = 180D)double longitude,
-            @IntRange int maxResults)
+            @FloatRange(from = -180D, to = 180D) double longitude,
+            @IntRange(from = 1) int maxResults)
             throws IOException {
         SynchronousGeocoder listener = new SynchronousGeocoder();
         getFromLocation(latitude, longitude, maxResults, listener);
@@ -142,26 +153,32 @@
      * <p class="warning"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
      * @param latitude the latitude a point for the search
      * @param longitude the longitude a point for the search
      * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended
      * @param listener a listener for receiving results
-     *
      * @throws IllegalArgumentException if latitude or longitude is invalid
      */
     public void getFromLocation(
             @FloatRange(from = -90D, to = 90D) double latitude,
             @FloatRange(from = -180D, to = 180D) double longitude,
-            @IntRange int maxResults,
+            @IntRange(from = 1) int maxResults,
             @NonNull GeocodeListener listener) {
-        Preconditions.checkArgumentInRange(latitude, -90.0, 90.0, "latitude");
-        Preconditions.checkArgumentInRange(longitude, -180.0, 180.0, "longitude");
-
+        ReverseGeocodeRequest.Builder b =
+                new ReverseGeocodeRequest.Builder(
+                        latitude,
+                        longitude,
+                        maxResults,
+                        mLocale,
+                        Process.myUid(),
+                        mContext.getPackageName());
+        if (mContext.getAttributionTag() != null) {
+            b.setCallingAttributionTag(mContext.getAttributionTag());
+        }
         try {
-            mService.getFromLocation(latitude, longitude, maxResults, mParams,
-                    new GeocoderImpl(listener));
+            mService.reverseGeocode(b.build(), new GeocodeCallbackImpl(listener));
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -176,29 +193,25 @@
      * <p class="note"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
      * <p class="warning"><strong>Warning:</strong> This API may hit the network, and may block for
-     * excessive amounts of time, up to 60 seconds or more. It's strongly encouraged to use the
-     * asynchronous version of this API. If that is not possible, this should be run on a background
-     * thread to avoid blocking other operations.</p>
+     * excessive amounts of time. It's strongly encouraged to use the asynchronous version of this
+     * API. If that is not possible, this should be run on a background thread to avoid blocking
+     * other operations.
      *
      * @param locationName a user-supplied description of a location
      * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended
-     *
-     * @return a list of Address objects. Returns null or empty list if no matches were
-     * found or there is no backend service available.
-     *
+     * @return a list of Address objects. Returns null or empty list if no matches were found or
+     *     there is no backend service available.
      * @throws IllegalArgumentException if locationName is null
      * @throws IOException if there is a failure
-     *
      * @deprecated Use {@link #getFromLocationName(String, int, GeocodeListener)} instead to avoid
-     * blocking a thread waiting for results.
+     *     blocking a thread waiting for results.
      */
     @Deprecated
     public @Nullable List<Address> getFromLocationName(
-            @NonNull String locationName,
-            @IntRange int maxResults) throws IOException {
+            @NonNull String locationName, @IntRange(from = 1) int maxResults) throws IOException {
         return getFromLocationName(locationName, maxResults, 0, 0, 0, 0);
     }
 
@@ -211,17 +224,16 @@
      * <p class="note"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
      * @param locationName a user-supplied description of a location
      * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended
      * @param listener a listener for receiving results
-     *
      * @throws IllegalArgumentException if locationName is null
      */
     public void getFromLocationName(
             @NonNull String locationName,
-            @IntRange int maxResults,
+            @IntRange(from = 1) int maxResults,
             @NonNull GeocodeListener listener) {
         getFromLocationName(locationName, maxResults, 0, 0, 0, 0, listener);
     }
@@ -232,45 +244,42 @@
      * View, CA", an airport code such as "SFO", and so forth. The returned addresses should be
      * localized for the locale provided to this class's constructor.
      *
-     * <p> You may specify a bounding box for the search results by including the latitude and
+     * <p>You may specify a bounding box for the search results by including the latitude and
      * longitude of the lower left point and upper right point of the box.
      *
      * <p class="note"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
      * <p class="warning"><strong>Warning:</strong> This API may hit the network, and may block for
-     * excessive amounts of time, up to 60 seconds or more. It's strongly encouraged to use the
-     * asynchronous version of this API. If that is not possible, this should be run on a background
-     * thread to avoid blocking other operations.</p>
+     * excessive amounts of time. It's strongly encouraged to use the asynchronous version of this
+     * API. If that is not possible, this should be run on a background thread to avoid blocking
+     * other operations.
      *
-     * @param locationName        a user-supplied description of a location
-     * @param maxResults          max number of addresses to return. Smaller numbers (1 to 5) are
-     *                            recommended
-     * @param lowerLeftLatitude   the latitude of the lower left corner of the bounding box
-     * @param lowerLeftLongitude  the longitude of the lower left corner of the bounding box
-     * @param upperRightLatitude  the latitude of the upper right corner of the bounding box
+     * @param locationName a user-supplied description of a location
+     * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended
+     * @param lowerLeftLatitude the latitude of the lower left corner of the bounding box
+     * @param lowerLeftLongitude the longitude of the lower left corner of the bounding box
+     * @param upperRightLatitude the latitude of the upper right corner of the bounding box
      * @param upperRightLongitude the longitude of the upper right corner of the bounding box
-     *
-     * @return a list of Address objects. Returns null or empty list if no matches were
-     * found or there is no backend service available.
-     *
+     * @return a list of Address objects. Returns null or empty list if no matches were found or
+     *     there is no backend service available.
      * @throws IllegalArgumentException if locationName is null
      * @throws IllegalArgumentException if any latitude or longitude is invalid
-     * @throws IOException              if there is a failure
-     *
+     * @throws IOException if there is a failure
      * @deprecated Use {@link #getFromLocationName(String, int, double, double, double, double,
-     * GeocodeListener)} instead to avoid blocking a thread waiting for results.
+     *     GeocodeListener)} instead to avoid blocking a thread waiting for results.
      */
     @Deprecated
     public @Nullable List<Address> getFromLocationName(
             @NonNull String locationName,
-            @IntRange int maxResults,
+            @IntRange(from = 1) int maxResults,
             @FloatRange(from = -90D, to = 90D) double lowerLeftLatitude,
             @FloatRange(from = -180D, to = 180D) double lowerLeftLongitude,
             @FloatRange(from = -90D, to = 90D) double upperRightLatitude,
-            @FloatRange(from = -180D, to = 180D) double upperRightLongitude) throws IOException {
+            @FloatRange(from = -180D, to = 180D) double upperRightLongitude)
+            throws IOException {
         SynchronousGeocoder listener = new SynchronousGeocoder();
         getFromLocationName(locationName, maxResults, lowerLeftLatitude, lowerLeftLongitude,
                 upperRightLatitude, upperRightLongitude, listener);
@@ -283,75 +292,79 @@
      * View, CA", an airport code such as "SFO", and so forth. The returned addresses should be
      * localized for the locale provided to this class's constructor.
      *
-     * <p> You may specify a bounding box for the search results by including the latitude and
+     * <p>You may specify a bounding box for the search results by including the latitude and
      * longitude of the lower left point and upper right point of the box.
      *
      * <p class="note"><strong>Warning:</strong> Geocoding services may provide no guarantees on
      * availability or accuracy. Results are a best guess, and are not guaranteed to be meaningful
      * or correct. Do <b>NOT</b> use this API for any safety-critical or regulatory compliance
-     * purposes.</p>
+     * purposes.
      *
-     * @param locationName        a user-supplied description of a location
-     * @param maxResults          max number of addresses to return. Smaller numbers (1 to 5) are
-     *                            recommended
-     * @param lowerLeftLatitude   the latitude of the lower left corner of the bounding box
-     * @param lowerLeftLongitude  the longitude of the lower left corner of the bounding box
-     * @param upperRightLatitude  the latitude of the upper right corner of the bounding box
+     * @param locationName a user-supplied description of a location
+     * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended
+     * @param lowerLeftLatitude the latitude of the lower left corner of the bounding box
+     * @param lowerLeftLongitude the longitude of the lower left corner of the bounding box
+     * @param upperRightLatitude the latitude of the upper right corner of the bounding box
      * @param upperRightLongitude the longitude of the upper right corner of the bounding box
-     * @param listener            a listener for receiving results
-     *
+     * @param listener a listener for receiving results
      * @throws IllegalArgumentException if locationName is null
      * @throws IllegalArgumentException if any latitude or longitude is invalid
      */
     public void getFromLocationName(
             @NonNull String locationName,
-            @IntRange int maxResults,
+            @IntRange(from = 1) int maxResults,
             @FloatRange(from = -90D, to = 90D) double lowerLeftLatitude,
             @FloatRange(from = -180D, to = 180D) double lowerLeftLongitude,
             @FloatRange(from = -90D, to = 90D) double upperRightLatitude,
             @FloatRange(from = -180D, to = 180D) double upperRightLongitude,
             @NonNull GeocodeListener listener) {
-        Preconditions.checkArgument(locationName != null);
-        Preconditions.checkArgumentInRange(lowerLeftLatitude, -90.0, 90.0, "lowerLeftLatitude");
-        Preconditions.checkArgumentInRange(lowerLeftLongitude, -180.0, 180.0, "lowerLeftLongitude");
-        Preconditions.checkArgumentInRange(upperRightLatitude, -90.0, 90.0, "upperRightLatitude");
-        Preconditions.checkArgumentInRange(upperRightLongitude, -180.0, 180.0,
-                "upperRightLongitude");
-
+        ForwardGeocodeRequest.Builder b =
+                new ForwardGeocodeRequest.Builder(
+                        locationName,
+                        lowerLeftLatitude,
+                        lowerLeftLongitude,
+                        upperRightLatitude,
+                        upperRightLongitude,
+                        maxResults,
+                        mLocale,
+                        Process.myUid(),
+                        mContext.getPackageName());
+        if (mContext.getAttributionTag() != null) {
+            b.setCallingAttributionTag(mContext.getAttributionTag());
+        }
         try {
-            mService.getFromLocationName(locationName, lowerLeftLatitude, lowerLeftLongitude,
-                    upperRightLatitude, upperRightLongitude, maxResults, mParams,
-                    new GeocoderImpl(listener));
+            mService.forwardGeocode(b.build(), new GeocodeCallbackImpl(listener));
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
     }
 
-    private static class GeocoderImpl extends IGeocodeListener.Stub {
+    private static class GeocodeCallbackImpl extends IGeocodeCallback.Stub {
 
-        private GeocodeListener mListener;
+        @Nullable private GeocodeListener mListener;
 
-        GeocoderImpl(GeocodeListener listener) {
+        GeocodeCallbackImpl(GeocodeListener listener) {
             mListener = Objects.requireNonNull(listener);
         }
 
         @Override
-        public void onResults(String error, List<Address> addresses) throws RemoteException {
+        public void onError(@Nullable String error) {
             if (mListener == null) {
                 return;
             }
 
-            GeocodeListener listener = mListener;
+            mListener.onError(error);
             mListener = null;
+        }
 
-            if (error != null) {
-                listener.onError(error);
-            } else {
-                if (addresses == null) {
-                    addresses = Collections.emptyList();
-                }
-                listener.onGeocode(addresses);
+        @Override
+        public void onResults(List<Address> addresses) {
+            if (mListener == null) {
+                return;
             }
+
+            mListener.onGeocode(addresses);
+            mListener = null;
         }
     }
 
@@ -364,21 +377,21 @@
         SynchronousGeocoder() {}
 
         @Override
-        public void onGeocode(List<Address> addresses) {
+        public void onGeocode(@NonNull List<Address> addresses) {
             mResults = addresses;
             mLatch.countDown();
         }
 
         @Override
-        public void onError(String errorMessage) {
-            mError = errorMessage;
+        public void onError(@Nullable String error) {
+            mError = error;
             mLatch.countDown();
         }
 
         public List<Address> getResults() throws IOException {
             try {
                 if (!mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
-                    mError = "Service not Available";
+                    throw new IOException(new TimeoutException());
                 }
             } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
diff --git a/location/java/android/location/IGeocodeProvider.aidl b/location/java/android/location/IGeocodeProvider.aidl
deleted file mode 100644
index e661ca6..0000000
--- a/location/java/android/location/IGeocodeProvider.aidl
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2009 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 android.location;
-
-import android.location.Address;
-import android.location.IGeocodeListener;
-import android.location.GeocoderParams;
-
-/**
- * An interface for location providers implementing the Geocoder services.
- *
- * {@hide}
- */
-interface IGeocodeProvider {
-
-    oneway void getFromLocation(double latitude, double longitude, int maxResults, in GeocoderParams params, in IGeocodeListener listener);
-    oneway void getFromLocationName(String locationName, double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude,
-        double upperRightLongitude, int maxResults, in GeocoderParams params, in IGeocodeListener listener);
-}
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 72761ef..c96c118 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -19,13 +19,11 @@
 import android.app.PendingIntent;
 import android.location.Address;
 import android.location.Criteria;
-import android.location.GeocoderParams;
 import android.location.Geofence;
 import android.location.GnssAntennaInfo;
 import android.location.GnssCapabilities;
 import android.location.GnssMeasurementCorrections;
 import android.location.GnssMeasurementRequest;
-import android.location.IGeocodeListener;
 import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssStatusListener;
@@ -37,8 +35,11 @@
 import android.location.Location;
 import android.location.LocationRequest;
 import android.location.LocationTime;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.IGeocodeCallback;
 import android.location.provider.IProviderRequestListener;
 import android.location.provider.ProviderProperties;
+import android.location.provider.ReverseGeocodeRequest;
 import android.os.Bundle;
 import android.os.ICancellationSignal;
 import android.os.PackageTagsList;
@@ -68,13 +69,9 @@
     void requestGeofence(in Geofence geofence, in PendingIntent intent, String packageName, String attributionTag);
     void removeGeofence(in PendingIntent intent);
 
-    boolean geocoderIsPresent();
-    void getFromLocation(double latitude, double longitude, int maxResults,
-        in GeocoderParams params, in IGeocodeListener listener);
-    void getFromLocationName(String locationName,
-        double lowerLeftLatitude, double lowerLeftLongitude,
-        double upperRightLatitude, double upperRightLongitude, int maxResults,
-        in GeocoderParams params, in IGeocodeListener listener);
+    boolean isGeocodeAvailable();
+    void reverseGeocode(in ReverseGeocodeRequest request, in IGeocodeCallback callback);
+    void forwardGeocode(in ForwardGeocodeRequest request, in IGeocodeCallback callback);
 
     GnssCapabilities getGnssCapabilities();
     int getGnssYearOfHardware();
diff --git a/location/java/android/location/flags/location.aconfig b/location/java/android/location/flags/location.aconfig
index a96fe47..156be38 100644
--- a/location/java/android/location/flags/location.aconfig
+++ b/location/java/android/location/flags/location.aconfig
@@ -1,6 +1,20 @@
 package: "android.location.flags"
 
 flag {
+    name: "new_geocoder"
+    namespace: "location"
+    description: "Flag for new Geocoder APIs"
+    bug: "229872126"
+}
+
+flag {
+    name: "location_bypass"
+    namespace: "location"
+    description: "Enable location bypass appops behavior"
+    bug: "301150056"
+}
+
+flag {
     name: "fix_service_watcher"
     namespace: "location"
     description: "Enable null explicit services in ServiceWatcher"
diff --git a/location/java/android/location/GeocoderParams.aidl b/location/java/android/location/provider/ForwardGeocodeRequest.aidl
similarity index 74%
copy from location/java/android/location/GeocoderParams.aidl
copy to location/java/android/location/provider/ForwardGeocodeRequest.aidl
index 2484e20..acd6190 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/location/java/android/location/provider/ForwardGeocodeRequest.aidl
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2010, The Android Open Source Project
+ * Copyright (C) 2024 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
+ *      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,
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.location.provider;
 
-parcelable GeocoderParams;
+parcelable ForwardGeocodeRequest;
diff --git a/location/java/android/location/provider/ForwardGeocodeRequest.java b/location/java/android/location/provider/ForwardGeocodeRequest.java
new file mode 100644
index 0000000..8f227b1
--- /dev/null
+++ b/location/java/android/location/provider/ForwardGeocodeRequest.java
@@ -0,0 +1,286 @@
+/*
+ * 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 android.location.provider;
+
+import static java.lang.Math.max;
+
+import android.annotation.FlaggedApi;
+import android.annotation.FloatRange;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.location.flags.Flags;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.Preconditions;
+
+import java.util.Locale;
+import java.util.Objects;
+
+/**
+ * Forward geocode (ie from address to lat/lng) provider request.
+ *
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_NEW_GEOCODER)
+@SystemApi
+public final class ForwardGeocodeRequest implements Parcelable {
+
+    private final String mLocationName;
+    private final double mLowerLeftLatitude;
+    private final double mLowerLeftLongitude;
+    private final double mUpperRightLatitude;
+    private final double mUpperRightLongitude;
+    private final int mMaxResults;
+    private final Locale mLocale;
+    private final int mCallingUid;
+    private final String mCallingPackage;
+    @Nullable private final String mCallingAttributionTag;
+
+    private ForwardGeocodeRequest(
+            @NonNull String locationName,
+            double lowerLeftLatitude,
+            double lowerLeftLongitude,
+            double upperRightLatitude,
+            double upperRightLongitude,
+            int maxResults,
+            @NonNull Locale locale,
+            int callingUid,
+            @NonNull String callingPackage,
+            @Nullable String callingAttributionTag) {
+        Preconditions.checkArgument(locationName != null, "locationName must not be null");
+        Preconditions.checkArgumentInRange(lowerLeftLatitude, -90.0, 90.0, "lowerLeftLatitude");
+        Preconditions.checkArgumentInRange(lowerLeftLongitude, -180.0, 180.0, "lowerLeftLongitude");
+        Preconditions.checkArgumentInRange(upperRightLatitude, -90.0, 90.0, "upperRightLatitude");
+        Preconditions.checkArgumentInRange(
+                upperRightLongitude, -180.0, 180.0, "upperRightLongitude");
+
+        mLocationName = locationName;
+        mLowerLeftLatitude = lowerLeftLatitude;
+        mLowerLeftLongitude = lowerLeftLongitude;
+        mUpperRightLatitude = upperRightLatitude;
+        mUpperRightLongitude = upperRightLongitude;
+        mMaxResults = max(maxResults, 1);
+        mLocale = Objects.requireNonNull(locale);
+
+        mCallingUid = callingUid;
+        mCallingPackage = Objects.requireNonNull(callingPackage);
+        mCallingAttributionTag = callingAttributionTag;
+    }
+
+    /**
+     * The location name to be forward geocoded. An arbitrary user string that could have any value.
+     */
+    @NonNull
+    public String getLocationName() {
+        return mLocationName;
+    }
+
+    /** The lower left latitude of the bounding box that should constrain forward geocoding. */
+    @FloatRange(from = -90.0, to = 90.0)
+    public double getLowerLeftLatitude() {
+        return mLowerLeftLatitude;
+    }
+
+    /** The lower left longitude of the bounding box that should constrain forward geocoding. */
+    @FloatRange(from = -180.0, to = 180.0)
+    public double getLowerLeftLongitude() {
+        return mLowerLeftLongitude;
+    }
+
+    /** The upper right latitude of the bounding box that should constrain forward geocoding. */
+    @FloatRange(from = -90.0, to = 90.0)
+    public double getUpperRightLatitude() {
+        return mUpperRightLatitude;
+    }
+
+    /** The upper right longitude of the bounding box that should constrain forward geocoding. */
+    @FloatRange(from = -180.0, to = 180.0)
+    public double getUpperRightLongitude() {
+        return mUpperRightLongitude;
+    }
+
+    /** The maximum number of forward geocoding results that should be returned. */
+    @IntRange(from = 1)
+    public int getMaxResults() {
+        return mMaxResults;
+    }
+
+    /** The locale that results should be localized to (best effort). */
+    @NonNull
+    public Locale getLocale() {
+        return mLocale;
+    }
+
+    /** The UID of the caller this geocoding request is happening on behalf of. */
+    public int getCallingUid() {
+        return mCallingUid;
+    }
+
+    /** The package of the caller this geocoding request is happening on behalf of. */
+    @NonNull
+    public String getCallingPackage() {
+        return mCallingPackage;
+    }
+
+    /** The attribution tag of the caller this geocoding request is happening on behalf of. */
+    @Nullable
+    public String getCallingAttributionTag() {
+        return mCallingAttributionTag;
+    }
+
+    public static final @NonNull Creator<ForwardGeocodeRequest> CREATOR =
+            new Creator<>() {
+                @Override
+                public ForwardGeocodeRequest createFromParcel(Parcel in) {
+                    return new ForwardGeocodeRequest(
+                            Objects.requireNonNull(in.readString8()),
+                            in.readDouble(),
+                            in.readDouble(),
+                            in.readDouble(),
+                            in.readDouble(),
+                            in.readInt(),
+                            new Locale(in.readString8(), in.readString8(), in.readString8()),
+                            in.readInt(),
+                            Objects.requireNonNull(in.readString8()),
+                            in.readString8());
+                }
+
+                @Override
+                public ForwardGeocodeRequest[] newArray(int size) {
+                    return new ForwardGeocodeRequest[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel parcel, int flags) {
+        parcel.writeString8(mLocationName);
+        parcel.writeDouble(mLowerLeftLatitude);
+        parcel.writeDouble(mLowerLeftLongitude);
+        parcel.writeDouble(mUpperRightLatitude);
+        parcel.writeDouble(mUpperRightLongitude);
+        parcel.writeInt(mMaxResults);
+        parcel.writeString8(mLocale.getLanguage());
+        parcel.writeString8(mLocale.getCountry());
+        parcel.writeString8(mLocale.getVariant());
+        parcel.writeInt(mCallingUid);
+        parcel.writeString8(mCallingPackage);
+        parcel.writeString8(mCallingAttributionTag);
+    }
+
+    @Override
+    public boolean equals(@Nullable Object object) {
+        if (object instanceof ForwardGeocodeRequest that) {
+            return mLowerLeftLatitude == that.mLowerLeftLatitude
+                    && mLowerLeftLongitude == that.mLowerLeftLongitude
+                    && mUpperRightLatitude == that.mUpperRightLatitude
+                    && mUpperRightLongitude == that.mUpperRightLongitude
+                    && mMaxResults == that.mMaxResults
+                    && mCallingUid == that.mCallingUid
+                    && mLocale.equals(that.mLocale)
+                    && mCallingPackage.equals(that.mCallingPackage)
+                    && mLocationName.equals(that.mLocationName)
+                    && Objects.equals(mCallingAttributionTag, that.mCallingAttributionTag);
+        }
+
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                mLocationName,
+                mLowerLeftLatitude,
+                mLowerLeftLongitude,
+                mUpperRightLatitude,
+                mUpperRightLongitude,
+                mMaxResults,
+                mLocale,
+                mCallingUid,
+                mCallingPackage,
+                mCallingAttributionTag);
+    }
+
+    /** A Builder for {@link ReverseGeocodeRequest}s. */
+    public static final class Builder {
+
+        private final String mLocationName;
+        private final double mLowerLeftLatitude;
+        private final double mLowerLeftLongitude;
+        private final double mUpperRightLatitude;
+        private final double mUpperRightLongitude;
+        private final int mMaxResults;
+        private final Locale mLocale;
+
+        private final int mCallingUid;
+        private final String mCallingPackage;
+        @Nullable private String mCallingAttributionTag;
+
+        /** Creates a new Builder instance with the given parameters. */
+        public Builder(
+                @NonNull String locationName,
+                @FloatRange(from = -90.0, to = 90.0) double lowerLeftLatitude,
+                @FloatRange(from = -180.0, to = 180.0) double lowerLeftLongitude,
+                @FloatRange(from = -90.0, to = 90.0) double upperRightLatitude,
+                @FloatRange(from = -180.0, to = 180.0) double upperRightLongitude,
+                @IntRange(from = 1) int maxResults,
+                @NonNull Locale locale,
+                int callingUid,
+                @NonNull String callingPackage) {
+            mLocationName = locationName;
+            mLowerLeftLatitude = lowerLeftLatitude;
+            mLowerLeftLongitude = lowerLeftLongitude;
+            mUpperRightLatitude = upperRightLatitude;
+            mUpperRightLongitude = upperRightLongitude;
+            mMaxResults = maxResults;
+            mLocale = locale;
+            mCallingUid = callingUid;
+            mCallingPackage = callingPackage;
+            mCallingAttributionTag = null;
+        }
+
+        /** Sets the attribution tag. */
+        @NonNull
+        public Builder setCallingAttributionTag(@NonNull String attributionTag) {
+            mCallingAttributionTag = attributionTag;
+            return this;
+        }
+
+        /** Builds a {@link ForwardGeocodeRequest}. */
+        @NonNull
+        public ForwardGeocodeRequest build() {
+            return new ForwardGeocodeRequest(
+                    mLocationName,
+                    mLowerLeftLatitude,
+                    mLowerLeftLongitude,
+                    mUpperRightLatitude,
+                    mUpperRightLongitude,
+                    mMaxResults,
+                    mLocale,
+                    mCallingUid,
+                    mCallingPackage,
+                    mCallingAttributionTag);
+        }
+    }
+}
diff --git a/location/java/android/location/provider/GeocodeProviderBase.java b/location/java/android/location/provider/GeocodeProviderBase.java
new file mode 100644
index 0000000..e2c48b9
--- /dev/null
+++ b/location/java/android/location/provider/GeocodeProviderBase.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2010 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 android.location.provider;
+
+import android.annotation.FlaggedApi;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.annotation.SystemApi;
+import android.content.Context;
+import android.content.Intent;
+import android.location.Address;
+import android.location.flags.Flags;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.OutcomeReceiver;
+import android.os.RemoteException;
+import android.util.Log;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Base class for geocode providers outside the system server.
+ *
+ * <p>Geocode providers should be wrapped in a non-exported service which returns the result of
+ * {@link #getBinder()} from the service's {@link android.app.Service#onBind(Intent)} method. The
+ * service should not be exported so that components other than the system server cannot bind to it.
+ * Alternatively, the service may be guarded by a permission that only system server can obtain. The
+ * service may specify metadata on its capabilities:
+ *
+ * <ul>
+ *   <li>"serviceVersion": An integer version code to help tie break if multiple services are
+ *       capable of implementing the geocode provider. All else equal, the service with the highest
+ *       version code will be chosen. Assumed to be 0 if not specified.
+ *   <li>"serviceIsMultiuser": A boolean property, indicating if the service wishes to take
+ *       responsibility for handling changes to the current user on the device. If true, the service
+ *       will always be bound from the system user. If false, the service will always be bound from
+ *       the current user. If the current user changes, the old binding will be released, and a new
+ *       binding established under the new user. Assumed to be false if not specified.
+ * </ul>
+ *
+ * <p>The service should have an intent filter in place for the geocode provider as specified by the
+ * constant in this class.
+ *
+ * <p>Geocode providers are identified by their UID / package name / attribution tag. Based on this
+ * identity, geocode providers may be given some special privileges.
+ *
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_NEW_GEOCODER)
+@SystemApi
+public abstract class GeocodeProviderBase {
+
+    /**
+     * The action the wrapping service should have in its intent filter to implement the geocode
+     * provider.
+     */
+    @SuppressLint("ActionValue")
+    public static final String ACTION_GEOCODE_PROVIDER =
+            "com.android.location.service.GeocodeProvider";
+
+    final String mTag;
+    @Nullable final String mAttributionTag;
+    final IBinder mBinder;
+
+    /**
+     * Subclasses should pass in a context and an arbitrary tag that may be used for logcat logging
+     * of errors, and thus should uniquely identify the class.
+     */
+    public GeocodeProviderBase(@NonNull Context context, @NonNull String tag) {
+        mTag = tag;
+        mAttributionTag = context.getAttributionTag();
+        mBinder = new Service();
+    }
+
+    /**
+     * Returns the IBinder instance that should be returned from the {@link
+     * android.app.Service#onBind(Intent)} method of the wrapping service.
+     */
+    @NonNull
+    public final IBinder getBinder() {
+        return mBinder;
+    }
+
+    /**
+     * Requests forward geocoding of the given arguments. The given callback must be invoked once.
+     */
+    public abstract void onForwardGeocode(
+            @NonNull ForwardGeocodeRequest request,
+            @NonNull OutcomeReceiver<List<Address>, Exception> callback);
+
+    /**
+     * Requests reverse geocoding of the given arguments. The given callback must be invoked once.
+     */
+    public abstract void onReverseGeocode(
+            @NonNull ReverseGeocodeRequest request,
+            @NonNull OutcomeReceiver<List<Address>, Exception> callback);
+
+    private class Service extends IGeocodeProvider.Stub {
+        @Override
+        public void forwardGeocode(ForwardGeocodeRequest request, IGeocodeCallback callback) {
+            try {
+                onForwardGeocode(request, new SingleUseCallback(callback));
+            } catch (RuntimeException e) {
+                // exceptions on one-way binder threads are dropped - move to a different thread
+                Log.w(mTag, e);
+                new Handler(Looper.getMainLooper())
+                        .post(
+                                () -> {
+                                    throw new AssertionError(e);
+                                });
+            }
+        }
+
+        @Override
+        public void reverseGeocode(ReverseGeocodeRequest request, IGeocodeCallback callback) {
+            try {
+                onReverseGeocode(request, new SingleUseCallback(callback));
+            } catch (RuntimeException e) {
+                // exceptions on one-way binder threads are dropped - move to a different thread
+                Log.w(mTag, e);
+                new Handler(Looper.getMainLooper())
+                        .post(
+                                () -> {
+                                    throw new AssertionError(e);
+                                });
+            }
+        }
+    }
+
+    private static class SingleUseCallback implements OutcomeReceiver<List<Address>, Exception> {
+
+        private final AtomicReference<IGeocodeCallback> mCallback;
+
+        SingleUseCallback(IGeocodeCallback callback) {
+            mCallback = new AtomicReference<>(callback);
+        }
+
+        @Override
+        public void onError(Exception e) {
+            try {
+                Objects.requireNonNull(mCallback.getAndSet(null)).onError(e.toString());
+            } catch (RemoteException r) {
+                throw r.rethrowFromSystemServer();
+            }
+        }
+
+        @Override
+        public void onResult(List<Address> results) {
+            try {
+                Objects.requireNonNull(mCallback.getAndSet(null)).onResults(results);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+}
diff --git a/location/java/android/location/IGeocodeListener.aidl b/location/java/android/location/provider/IGeocodeCallback.aidl
similarity index 76%
rename from location/java/android/location/IGeocodeListener.aidl
rename to location/java/android/location/provider/IGeocodeCallback.aidl
index 8e10411..cf52713 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/location/java/android/location/provider/IGeocodeCallback.aidl
@@ -14,16 +14,15 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.location.provider;
 
 import android.location.Address;
 
 /**
- * An interface for returning geocode results.
- *
- * {@hide}
+ * Binder interface for geocoding callbacks.
+ * @hide
  */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
+oneway interface IGeocodeCallback {
+    void onError(String error);
+    void onResults(in List<Address> results);
 }
diff --git a/location/java/android/location/provider/IGeocodeProvider.aidl b/location/java/android/location/provider/IGeocodeProvider.aidl
new file mode 100644
index 0000000..9217438
--- /dev/null
+++ b/location/java/android/location/provider/IGeocodeProvider.aidl
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2009 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 android.location.provider;
+
+import android.location.provider.IGeocodeCallback;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.ReverseGeocodeRequest;
+
+/**
+ * Binder interface for services that implement geocode providers. Do not implement this directly,
+ * extend {@link GeocodeProviderBase} instead.
+ * @hide
+ */
+oneway interface IGeocodeProvider {
+    void forwardGeocode(in ForwardGeocodeRequest request, in IGeocodeCallback callback);
+    void reverseGeocode(in ReverseGeocodeRequest request, in IGeocodeCallback callback);
+}
diff --git a/location/java/android/location/GeocoderParams.aidl b/location/java/android/location/provider/ReverseGeocodeRequest.aidl
similarity index 75%
copy from location/java/android/location/GeocoderParams.aidl
copy to location/java/android/location/provider/ReverseGeocodeRequest.aidl
index 2484e20..015757a 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/location/java/android/location/provider/ReverseGeocodeRequest.aidl
@@ -1,11 +1,10 @@
 /*
- * Copyright (C) 2010, The Android Open Source Project
- *
+ * Copyright (C) 2024
  * 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
+ *      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,
@@ -14,6 +13,6 @@
  * limitations under the License.
  */
 
-package android.location;
+package android.location.provider;
 
-parcelable GeocoderParams;
+parcelable ReverseGeocodeRequest;
diff --git a/location/java/android/location/provider/ReverseGeocodeRequest.java b/location/java/android/location/provider/ReverseGeocodeRequest.java
new file mode 100644
index 0000000..57c9047
--- /dev/null
+++ b/location/java/android/location/provider/ReverseGeocodeRequest.java
@@ -0,0 +1,230 @@
+/*
+ * 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 android.location.provider;
+
+import static java.lang.Math.max;
+
+import android.annotation.FlaggedApi;
+import android.annotation.FloatRange;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.location.flags.Flags;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.Preconditions;
+
+import java.util.Locale;
+import java.util.Objects;
+
+/**
+ * Reverse geocode (ie from lat/lng to address) provider request.
+ *
+ * @hide
+ */
+@FlaggedApi(Flags.FLAG_NEW_GEOCODER)
+@SystemApi
+public final class ReverseGeocodeRequest implements Parcelable {
+
+    private final double mLatitude;
+    private final double mLongitude;
+    private final int mMaxResults;
+    private final Locale mLocale;
+
+    private final int mCallingUid;
+    private final String mCallingPackage;
+    @Nullable private final String mCallingAttributionTag;
+
+    private ReverseGeocodeRequest(
+            double latitude,
+            double longitude,
+            int maxResults,
+            Locale locale,
+            int callingUid,
+            String callingPackage,
+            @Nullable String callingAttributionTag) {
+        Preconditions.checkArgumentInRange(latitude, -90.0, 90.0, "latitude");
+        Preconditions.checkArgumentInRange(longitude, -180.0, 180.0, "longitude");
+
+        mLatitude = latitude;
+        mLongitude = longitude;
+        mMaxResults = max(maxResults, 1);
+        mLocale = Objects.requireNonNull(locale);
+
+        mCallingUid = callingUid;
+        mCallingPackage = Objects.requireNonNull(callingPackage);
+        mCallingAttributionTag = callingAttributionTag;
+    }
+
+    /** The latitude of the point to be reverse geocoded. */
+    @FloatRange(from = -90.0, to = 90.0)
+    public double getLatitude() {
+        return mLatitude;
+    }
+
+    /** The longitude of the point to be reverse geocoded. */
+    @FloatRange(from = -180.0, to = 180.0)
+    public double getLongitude() {
+        return mLongitude;
+    }
+
+    /** The maximum number of reverse geocoding results that should be returned. */
+    @IntRange(from = 1)
+    public int getMaxResults() {
+        return mMaxResults;
+    }
+
+    /** The locale that results should be localized to (best effort). */
+    @NonNull
+    public Locale getLocale() {
+        return mLocale;
+    }
+
+    /** The UID of the caller this geocoding request is happening on behalf of. */
+    public int getCallingUid() {
+        return mCallingUid;
+    }
+
+    /** The package of the caller this geocoding request is happening on behalf of. */
+    @NonNull
+    public String getCallingPackage() {
+        return mCallingPackage;
+    }
+
+    /** The attribution tag of the caller this geocoding request is happening on behalf of. */
+    @Nullable
+    public String getCallingAttributionTag() {
+        return mCallingAttributionTag;
+    }
+
+    public static final @NonNull Creator<ReverseGeocodeRequest> CREATOR =
+            new Creator<>() {
+                @Override
+                public ReverseGeocodeRequest createFromParcel(Parcel in) {
+                    return new ReverseGeocodeRequest(
+                            in.readDouble(),
+                            in.readDouble(),
+                            in.readInt(),
+                            new Locale(in.readString8(), in.readString8(), in.readString8()),
+                            in.readInt(),
+                            Objects.requireNonNull(in.readString8()),
+                            in.readString8());
+                }
+
+                @Override
+                public ReverseGeocodeRequest[] newArray(int size) {
+                    return new ReverseGeocodeRequest[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel parcel, int flags) {
+        parcel.writeDouble(mLatitude);
+        parcel.writeDouble(mLongitude);
+        parcel.writeInt(mMaxResults);
+        parcel.writeString8(mLocale.getLanguage());
+        parcel.writeString8(mLocale.getCountry());
+        parcel.writeString8(mLocale.getVariant());
+        parcel.writeInt(mCallingUid);
+        parcel.writeString8(mCallingPackage);
+        parcel.writeString8(mCallingAttributionTag);
+    }
+
+    @Override
+    public boolean equals(@Nullable Object object) {
+        if (object instanceof ReverseGeocodeRequest that) {
+            return mLatitude == that.mLatitude
+                    && mLongitude == that.mLongitude
+                    && mMaxResults == that.mMaxResults
+                    && mCallingUid == that.mCallingUid
+                    && mLocale.equals(that.mLocale)
+                    && mCallingPackage.equals(that.mCallingPackage)
+                    && Objects.equals(mCallingAttributionTag, that.mCallingAttributionTag);
+        }
+
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                mLatitude,
+                mLongitude,
+                mMaxResults,
+                mLocale,
+                mCallingUid,
+                mCallingPackage,
+                mCallingAttributionTag);
+    }
+
+    /** A Builder for {@link ReverseGeocodeRequest}s. */
+    public static final class Builder {
+
+        private final double mLatitude;
+        private final double mLongitude;
+        private final int mMaxResults;
+        private final Locale mLocale;
+
+        private final int mCallingUid;
+        private final String mCallingPackage;
+        @Nullable private String mCallingAttributionTag;
+
+        /** Creates a new Builder instance with the given parameters. */
+        public Builder(
+                @FloatRange(from = -90.0, to = 90.0) double latitude,
+                @FloatRange(from = -180.0, to = 180.0) double longitude,
+                @IntRange(from = 0) int maxResults,
+                @NonNull Locale locale,
+                int callingUid,
+                @NonNull String callingPackage) {
+            mLatitude = latitude;
+            mLongitude = longitude;
+            mMaxResults = maxResults;
+            mLocale = locale;
+            mCallingUid = callingUid;
+            mCallingPackage = callingPackage;
+            mCallingAttributionTag = null;
+        }
+
+        /** Sets the attribution tag. */
+        @NonNull
+        public Builder setCallingAttributionTag(@NonNull String attributionTag) {
+            mCallingAttributionTag = attributionTag;
+            return this;
+        }
+
+        /** Builds a {@link ReverseGeocodeRequest}. */
+        @NonNull
+        public ReverseGeocodeRequest build() {
+            return new ReverseGeocodeRequest(
+                    mLatitude,
+                    mLongitude,
+                    mMaxResults,
+                    mLocale,
+                    mCallingUid,
+                    mCallingPackage,
+                    mCallingAttributionTag);
+        }
+    }
+}
diff --git a/location/lib/Android.bp b/location/lib/Android.bp
index c9be579..b10019a 100644
--- a/location/lib/Android.bp
+++ b/location/lib/Android.bp
@@ -30,6 +30,7 @@
         "androidx.annotation_annotation",
     ],
     api_packages: [
+        "android.location",
         "com.android.location.provider",
         "com.android.location.timezone.provider",
     ],
diff --git a/location/lib/README.txt b/location/lib/README.txt
index 400a7dd..ae51872 100644
--- a/location/lib/README.txt
+++ b/location/lib/README.txt
@@ -1,30 +1,12 @@
 This library (com.android.location.provider.jar) is a shared java library
-containing classes required by unbundled location providers.
+containing classes required by unbundled providers. The library was created
+as a way of exposing API classes outside of the public API before SystemApi
+was possible. Now that SystemApi exists, no new classes should ever be added
+to this library, and all classes in this library should eventually be
+deprecated and new SystemApi replacements offered.
 
---- Rules of this library ---
-o This library is effectively a PUBLIC API for unbundled location providers
-  that may be distributed outside the system image. So it MUST BE API STABLE.
-  You can add but not remove. The rules are the same as for the
-  public platform SDK API.
-o This library can see and instantiate internal platform classes (such as
-  ProviderRequest.java), but it must not expose them in any public method
-  (or by extending them via inheritance). This would break clients of the
-  library because they cannot see the internal platform classes.
-
-This library is distributed in the system image, and loaded as
-a shared library. So you can change the implementation, but not
-the interface. In this way it is like framework.jar.
-
---- Why does this library exists? ---
-
-Unbundled location providers (such as the NetworkLocationProvider)
-can not use internal platform classes.
-
-So ideally all of these classes would be part of the public platform SDK API,
-but that doesn't seem like a great idea when only applications with a special
-signature can implement this API.
-
-The compromise is this library.
-
-It wraps internal platform classes (like ProviderRequest) with a stable
-API that does not leak the internal classes.
+Whether or not classes in this library can ever be removed must be answered on
+a case by case basis. Most of the classes are usually referenced by Google Play
+services (in which case references can be removed from that code base), but
+these classes may also be referenced by OEM code, which must be considered
+before any removal.
diff --git a/location/lib/api/system-current.txt b/location/lib/api/system-current.txt
index 7046abd..75e6bb4 100644
--- a/location/lib/api/system-current.txt
+++ b/location/lib/api/system-current.txt
@@ -1,4 +1,21 @@
 // Signature format: 2.0
+package android.location {
+
+  @Deprecated public class GeocoderParams implements android.os.Parcelable {
+    ctor @Deprecated public GeocoderParams(android.content.Context);
+    ctor @Deprecated public GeocoderParams(android.content.Context, java.util.Locale);
+    ctor @Deprecated public GeocoderParams(int, String, @Nullable String, java.util.Locale);
+    method @Deprecated public int describeContents();
+    method @Deprecated @Nullable public String getClientAttributionTag();
+    method @Deprecated @NonNull public String getClientPackage();
+    method @Deprecated public int getClientUid();
+    method @Deprecated @NonNull public java.util.Locale getLocale();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GeocoderParams> CREATOR;
+  }
+
+}
+
 package com.android.location.provider {
 
   @Deprecated public final class FusedLocationHardware {
@@ -25,6 +42,13 @@
     method @Deprecated public void onStatusChanged(int);
   }
 
+  @Deprecated public abstract class GeocodeProvider {
+    ctor @Deprecated public GeocodeProvider();
+    method @Deprecated public android.os.IBinder getBinder();
+    method @Deprecated public abstract String onGetFromLocation(double, double, int, android.location.GeocoderParams, java.util.List<android.location.Address>);
+    method @Deprecated public abstract String onGetFromLocationName(String, double, double, double, double, int, android.location.GeocoderParams, java.util.List<android.location.Address>);
+  }
+
   @Deprecated public class GmsFusedBatchOptions {
     ctor @Deprecated public GmsFusedBatchOptions();
     method @Deprecated public int getFlags();
diff --git a/core/java/android/location/GeocoderParams.java b/location/lib/java/android/location/GeocoderParams.java
similarity index 65%
rename from core/java/android/location/GeocoderParams.java
rename to location/lib/java/android/location/GeocoderParams.java
index 3ea6364..780ccf4 100644
--- a/core/java/android/location/GeocoderParams.java
+++ b/location/lib/java/android/location/GeocoderParams.java
@@ -18,7 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.compat.annotation.UnsupportedAppUsage;
+import android.annotation.SystemApi;
 import android.content.Context;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -28,15 +28,15 @@
 import java.util.Objects;
 
 /**
- * This class contains extra parameters to pass to an IGeocodeProvider
- * implementation from the Geocoder class.  Currently this contains the
- * language, country and variant information from the Geocoder's locale
- * as well as the Geocoder client's package name for geocoder server
- * logging.  This information is kept in a separate class to allow for
- * future expansion of the IGeocodeProvider interface.
+ * This class was originally shipped out-of-band from the normal API processes as a separate drop
+ * before SystemApi existed. Now that SystemApi does exist, this class has been retroactively
+ * published through SystemApi.
  *
+ * @deprecated Do not use.
  * @hide
  */
+@Deprecated
+@SystemApi
 public class GeocoderParams implements Parcelable {
 
     private final int mUid;
@@ -52,7 +52,8 @@
         this(Process.myUid(), context.getPackageName(), context.getAttributionTag(), locale);
     }
 
-    private GeocoderParams(int uid, String packageName, String attributionTag, Locale locale) {
+    public GeocoderParams(
+            int uid, String packageName, @Nullable String attributionTag, Locale locale) {
         mUid = uid;
         mPackageName = Objects.requireNonNull(packageName);
         mAttributionTag = attributionTag;
@@ -62,7 +63,6 @@
     /**
      * Returns the client UID.
      */
-    @UnsupportedAppUsage
     public int getClientUid() {
         return mUid;
     }
@@ -70,7 +70,6 @@
     /**
      * Returns the client package name.
      */
-    @UnsupportedAppUsage
     public @NonNull String getClientPackage() {
         return mPackageName;
     }
@@ -78,7 +77,6 @@
     /**
      * Returns the client attribution tag.
      */
-    @UnsupportedAppUsage
     public @Nullable String getClientAttributionTag() {
         return mAttributionTag;
     }
@@ -86,34 +84,38 @@
     /**
      * Returns the locale.
      */
-    @UnsupportedAppUsage
     public @NonNull Locale getLocale() {
         return mLocale;
     }
 
     public static final @NonNull Parcelable.Creator<GeocoderParams> CREATOR =
-        new Parcelable.Creator<GeocoderParams>() {
-            public GeocoderParams createFromParcel(Parcel in) {
-                int uid = in.readInt();
-                String packageName = in.readString8();
-                String attributionTag = in.readString8();
-                String language = in.readString8();
-                String country = in.readString8();
-                String variant = in.readString8();
+            new Parcelable.Creator<>() {
+                public GeocoderParams createFromParcel(Parcel in) {
+                    int uid = in.readInt();
+                    String packageName = in.readString8();
+                    String attributionTag = in.readString8();
+                    String language = in.readString8();
+                    String country = in.readString8();
+                    String variant = in.readString8();
 
-                return new GeocoderParams(uid, packageName, attributionTag,
-                        new Locale(language, country, variant));
-            }
+                    return new GeocoderParams(
+                            uid,
+                            packageName,
+                            attributionTag,
+                            new Locale(language, country, variant));
+                }
 
-            public GeocoderParams[] newArray(int size) {
-                return new GeocoderParams[size];
-            }
-        };
+                public GeocoderParams[] newArray(int size) {
+                    return new GeocoderParams[size];
+                }
+            };
 
+    @Override
     public int describeContents() {
         return 0;
     }
 
+    @Override
     public void writeToParcel(Parcel parcel, int flags) {
         parcel.writeInt(mUid);
         parcel.writeString8(mPackageName);
diff --git a/location/lib/java/com/android/location/provider/GeocodeProvider.java b/location/lib/java/com/android/location/provider/GeocodeProvider.java
index 05d7935..45077ba 100644
--- a/location/lib/java/com/android/location/provider/GeocodeProvider.java
+++ b/location/lib/java/com/android/location/provider/GeocodeProvider.java
@@ -16,10 +16,13 @@
 
 package com.android.location.provider;
 
+import android.annotation.SystemApi;
 import android.location.Address;
 import android.location.GeocoderParams;
-import android.location.IGeocodeListener;
-import android.location.IGeocodeProvider;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.IGeocodeCallback;
+import android.location.provider.IGeocodeProvider;
+import android.location.provider.ReverseGeocodeRequest;
 import android.os.IBinder;
 import android.os.RemoteException;
 
@@ -27,47 +30,74 @@
 import java.util.List;
 
 /**
- * Base class for geocode providers implemented as unbundled services.
+ * This class was originally shipped out-of-band from the normal API processes as a separate drop
+ * before SystemApi existed. Now that SystemApi does exist, this class has been retroactively
+ * published through SystemApi.
  *
- * <p>Geocode providers can be implemented as services and return the result of
- * {@link GeocodeProvider#getBinder()} in its getBinder() method.
- *
- * <p>IMPORTANT: This class is effectively a public API for unbundled
- * applications, and must remain API stable. See README.txt in the root
- * of this package for more information.
+ * @deprecated Use {@link android.location.provider.GeocodeProviderBase} instead.
  * @hide
  */
+@Deprecated
+@SystemApi
 public abstract class GeocodeProvider {
 
-    private IGeocodeProvider.Stub mProvider = new IGeocodeProvider.Stub() {
-        @Override
-        public void getFromLocation(double latitude, double longitude, int maxResults,
-                GeocoderParams params, IGeocodeListener listener) {
-            List<Address> results = new ArrayList<>();
-            String error = onGetFromLocation(latitude, longitude, maxResults, params, results);
-            try {
-                listener.onResults(error, results);
-            } catch (RemoteException e) {
-                // ignore
-            }
-        }
+    private final IGeocodeProvider.Stub mProvider =
+            new IGeocodeProvider.Stub() {
+                @Override
+                public void reverseGeocode(
+                        ReverseGeocodeRequest request, IGeocodeCallback callback) {
+                    List<Address> results = new ArrayList<>();
+                    String error =
+                            onGetFromLocation(
+                                    request.getLatitude(),
+                                    request.getLongitude(),
+                                    request.getMaxResults(),
+                                    new GeocoderParams(
+                                            request.getCallingUid(),
+                                            request.getCallingPackage(),
+                                            request.getCallingAttributionTag(),
+                                            request.getLocale()),
+                                    results);
+                    try {
+                        if (error != null) {
+                            callback.onError(error);
+                        } else {
+                            callback.onResults(results);
+                        }
+                    } catch (RemoteException e) {
+                        // ignore
+                    }
+                }
 
-        @Override
-        public void getFromLocationName(String locationName,
-                double lowerLeftLatitude, double lowerLeftLongitude,
-                double upperRightLatitude, double upperRightLongitude, int maxResults,
-                GeocoderParams params, IGeocodeListener listener) {
-            List<Address> results = new ArrayList<>();
-            String error = onGetFromLocationName(locationName, lowerLeftLatitude,
-                    lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
-                    maxResults, params, results);
-            try {
-                listener.onResults(error, results);
-            } catch (RemoteException e) {
-                // ignore
-            }
-        }
-    };
+                @Override
+                public void forwardGeocode(
+                        ForwardGeocodeRequest request, IGeocodeCallback callback) {
+                    List<Address> results = new ArrayList<>();
+                    String error =
+                            onGetFromLocationName(
+                                    request.getLocationName(),
+                                    request.getLowerLeftLatitude(),
+                                    request.getLowerLeftLongitude(),
+                                    request.getUpperRightLatitude(),
+                                    request.getUpperRightLongitude(),
+                                    request.getMaxResults(),
+                                    new GeocoderParams(
+                                            request.getCallingUid(),
+                                            request.getCallingPackage(),
+                                            request.getCallingAttributionTag(),
+                                            request.getLocale()),
+                                    results);
+                    try {
+                        if (error != null) {
+                            callback.onError(error);
+                        } else {
+                            callback.onResults(results);
+                        }
+                    } catch (RemoteException e) {
+                        // ignore
+                    }
+                }
+            };
 
     /**
      * This method is overridden to implement the
diff --git a/media/java/android/media/AudioDevicePort.java b/media/java/android/media/AudioDevicePort.java
index 2de8eef..ab5c54b 100644
--- a/media/java/android/media/AudioDevicePort.java
+++ b/media/java/android/media/AudioDevicePort.java
@@ -33,7 +33,7 @@
  * device at the boundary of the audio system.
  * In addition to base audio port attributes, the device descriptor contains:
  * - the device type (e.g AudioManager.DEVICE_OUT_SPEAKER)
- * - the device address (e.g MAC adddress for AD2P sink).
+ * - the device address (e.g MAC address for AD2P sink).
  * @see AudioPort
  * @hide
  */
diff --git a/media/java/android/media/AudioHalVersionInfo.java b/media/java/android/media/AudioHalVersionInfo.java
index 4cdfc51..2b6f72e 100644
--- a/media/java/android/media/AudioHalVersionInfo.java
+++ b/media/java/android/media/AudioHalVersionInfo.java
@@ -79,6 +79,9 @@
     /**
      * List of all valid Audio HAL versions. This list need to be in sync with sAudioHALVersions
      * defined in frameworks/av/media/libaudiohal/FactoryHal.cpp.
+     *
+     * Note: update {@link android.media.audio.cts.AudioHalVersionInfoTest} CTS accordingly if
+     * there is a change to supported versions.
      */
     public static final @NonNull List<AudioHalVersionInfo> VERSIONS =
             List.of(AIDL_1_0, HIDL_7_1, HIDL_7_0, HIDL_6_0, HIDL_5_0);
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index bfb4b42..9548525 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -16,6 +16,11 @@
 
 package android.media;
 
+import static android.media.codec.Flags.FLAG_NULL_OUTPUT_SURFACE;
+import static android.media.codec.Flags.FLAG_REGION_OF_INTEREST;
+
+import static com.android.media.codec.flags.Flags.FLAG_LARGE_AUDIO_FRAME;
+
 import android.Manifest;
 import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
@@ -51,7 +56,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -62,7 +66,6 @@
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
-import static com.android.media.codec.flags.Flags.FLAG_LARGE_AUDIO_FRAME;
 /**
  MediaCodec class can be used to access low-level media codecs, i.e. encoder/decoder components.
  It is part of the Android low-level multimedia support infrastructure (normally used together
@@ -2211,6 +2214,18 @@
      */
     public static final int CONFIGURE_FLAG_USE_CRYPTO_ASYNC = 4;
 
+    /**
+     * Configure the codec with a detached output surface.
+     * <p>
+     * This flag is only defined for a video decoder. MediaCodec
+     * configured with this flag will be in Surface mode even though
+     * the surface parameter is null.
+     *
+     * @see detachOutputSurface
+     */
+    @FlaggedApi(FLAG_NULL_OUTPUT_SURFACE)
+    public static final int CONFIGURE_FLAG_DETACHED_SURFACE = 8;
+
     /** @hide */
     @IntDef(
         flag = true,
@@ -2393,6 +2408,31 @@
     private native void native_setSurface(@NonNull Surface surface);
 
     /**
+     *  Detach the current output surface of a codec.
+     *  <p>
+     *  Detaches the currently associated output Surface from the
+     *  MediaCodec decoder. This allows the SurfaceView or other
+     *  component holding the Surface to be safely destroyed or
+     *  modified without affecting the decoder's operation. After
+     *  calling this method (and after it returns), the decoder will
+     *  enter detached-Surface mode and will no longer render
+     *  output.
+     *
+     *  @throws IllegalStateException if the codec was not
+     *                                configured in surface mode.
+     *  @see CONFIGURE_FLAG_DETACHED_SURFACE
+     */
+    @FlaggedApi(FLAG_NULL_OUTPUT_SURFACE)
+    public void detachOutputSurface() {
+        if (!mHasSurface) {
+            throw new IllegalStateException("codec was not configured for an output surface");
+        }
+        // note: we still have a surface in detached mode, so keep mHasSurface
+        // we also technically allow calling detachOutputSurface multiple times in a row
+        // native_detachSurface();
+    }
+
+    /**
      * Create a persistent input surface that can be used with codecs that normally have an input
      * surface, such as video encoders. A persistent input can be reused by subsequent
      * {@link MediaCodec} or {@link MediaRecorder} instances, but can only be used by at
@@ -3210,6 +3250,51 @@
         }
     }
 
+    /**
+     * Similar to {@link #queueInputBuffers queueInputBuffers} but submits multiple access units
+     * in a buffer that is potentially encrypted.
+     * <strong>Check out further notes at {@link #queueInputBuffers queueInputBuffers}.</strong>
+     *
+     * @param index The index of a client-owned input buffer previously returned
+     *              in a call to {@link #dequeueInputBuffer}.
+     * @param bufferInfos ArrayDeque of {@link MediaCodec.BufferInfo} that describes the
+     *                    contents in the buffer. The ArrayDeque and the BufferInfo objects provided
+     *                    can be recycled by the caller for re-use.
+     * @param cryptoInfos ArrayDeque of {@link MediaCodec.CryptoInfo} objects to facilitate the
+     *                    decryption of the contents. The ArrayDeque and the CryptoInfo objects
+     *                    provided can be reused immediately after the call returns. These objects
+     *                    should correspond to bufferInfo objects to ensure correct decryption.
+     * @throws IllegalStateException if not in the Executing state or not in asynchronous mode.
+     * @throws MediaCodec.CodecException upon codec error.
+     * @throws IllegalArgumentException upon if bufferInfos is empty, contains null, or if the
+     *                    access units are not contiguous.
+     * @throws CryptoException if an error occurs while attempting to decrypt the buffer.
+     *              An error code associated with the exception helps identify the
+     *              reason for the failure.
+     */
+    @FlaggedApi(FLAG_LARGE_AUDIO_FRAME)
+    public final void queueSecureInputBuffers(
+            int index,
+            @NonNull ArrayDeque<BufferInfo> bufferInfos,
+            @NonNull ArrayDeque<CryptoInfo> cryptoInfos) {
+        synchronized(mBufferLock) {
+            if (mBufferMode == BUFFER_MODE_BLOCK) {
+                throw new IncompatibleWithBlockModelException("queueSecureInputBuffers() "
+                        + "is not compatible with CONFIGURE_FLAG_USE_BLOCK_MODEL. "
+                        + "Please use getQueueRequest() to queue buffers");
+            }
+            invalidateByteBufferLocked(mCachedInputBuffers, index, true /* input */);
+            mDequeuedInputBuffers.remove(index);
+        }
+        try {
+            native_queueSecureInputBuffers(
+                    index, bufferInfos.toArray(), cryptoInfos.toArray());
+        } catch (CryptoException | IllegalStateException | IllegalArgumentException e) {
+            revalidateByteBuffer(mCachedInputBuffers, index, true /* input */);
+            throw e;
+        }
+    }
+
     private native final void native_queueSecureInputBuffer(
             int index,
             int offset,
@@ -3217,6 +3302,11 @@
             long presentationTimeUs,
             int flags) throws CryptoException;
 
+    private native final void native_queueSecureInputBuffers(
+            int index,
+            @NonNull Object[] bufferInfos,
+            @NonNull Object[] cryptoInfos) throws CryptoException, CodecException;
+
     /**
      * Returns the index of an input buffer to be filled with valid data
      * or -1 if no such buffer is currently available.
@@ -3462,7 +3552,37 @@
             mLinearBlock = block;
             mOffset = offset;
             mSize = size;
-            mCryptoInfo = null;
+            mCryptoInfos.clear();
+            return this;
+        }
+
+        /**
+         * Set a linear block that contain multiple non-encrypted access unit to this
+         * queue request. Exactly one buffer must be set for a queue request before
+         * calling {@link #queue}. Multiple access units if present must be laid out contiguously
+         * and without gaps and in order. An IllegalArgumentException will be thrown
+         * during {@link #queue} if access units are not laid out contiguously.
+         *
+         * @param block The linear block object
+         * @param infos Represents {@link MediaCodec.BufferInfo} objects to mark
+         *              individual access-unit boundaries and the timestamps associated with it.
+         * @return this object
+         * @throws IllegalStateException if a buffer is already set
+         */
+        @FlaggedApi(FLAG_LARGE_AUDIO_FRAME)
+        public @NonNull QueueRequest setMultiFrameLinearBlock(
+                @NonNull LinearBlock block,
+                @NonNull ArrayDeque<BufferInfo> infos) {
+            if (!isAccessible()) {
+                throw new IllegalStateException("The request is stale");
+            }
+            if (mLinearBlock != null || mHardwareBuffer != null) {
+                throw new IllegalStateException("Cannot set block twice");
+            }
+            mLinearBlock = block;
+            mBufferInfos.clear();
+            mBufferInfos.addAll(infos);
+            mCryptoInfos.clear();
             return this;
         }
 
@@ -3496,7 +3616,44 @@
             mLinearBlock = block;
             mOffset = offset;
             mSize = size;
-            mCryptoInfo = cryptoInfo;
+            mCryptoInfos.clear();
+            mCryptoInfos.add(cryptoInfo);
+            return this;
+        }
+
+        /**
+         * Set an encrypted linear block to this queue request. Exactly one buffer must be
+         * set for a queue request before calling {@link #queue}. The block can contain multiple
+         * access units and if present should be laid out contiguously and without gaps.
+         *
+         * @param block The linear block object
+         * @param bufferInfos ArrayDeque of {@link MediaCodec.BufferInfo} that describes the
+         *                    contents in the buffer. The ArrayDeque and the BufferInfo objects
+         *                    provided can be recycled by the caller for re-use.
+         * @param cryptoInfos ArrayDeque of {@link MediaCodec.CryptoInfo} that describes the
+         *                    structure of the encrypted input samples. The ArrayDeque and the
+         *                    BufferInfo objects provided can be recycled by the caller for re-use.
+         * @return this object
+         * @throws IllegalStateException if a buffer is already set
+         * @throws IllegalArgumentException upon if bufferInfos is empty, contains null, or if the
+         *                     access units are not contiguous.
+         */
+        @FlaggedApi(FLAG_LARGE_AUDIO_FRAME)
+        public @NonNull QueueRequest setMultiFrameEncryptedLinearBlock(
+                @NonNull LinearBlock block,
+                @NonNull ArrayDeque<MediaCodec.BufferInfo> bufferInfos,
+                @NonNull ArrayDeque<MediaCodec.CryptoInfo> cryptoInfos) {
+            if (!isAccessible()) {
+                throw new IllegalStateException("The request is stale");
+            }
+            if (mLinearBlock != null || mHardwareBuffer != null) {
+                throw new IllegalStateException("Cannot set block twice");
+            }
+            mLinearBlock = block;
+            mBufferInfos.clear();
+            mBufferInfos.addAll(bufferInfos);
+            mCryptoInfos.clear();
+            mCryptoInfos.addAll(cryptoInfos);
             return this;
         }
 
@@ -3564,26 +3721,6 @@
         }
 
         /**
-         * Sets MediaCodec.BufferInfo objects describing the access units
-         * contained in this queue request. Access units must be laid out
-         * contiguously without gaps and in order.
-         *
-         * @param infos Represents {@link MediaCodec.BufferInfo} objects to mark
-         *              individual access-unit boundaries and the timestamps associated with it.
-         *              The buffer is expected to contain the data in a continuous manner.
-         * @return this object
-         */
-        @FlaggedApi(FLAG_LARGE_AUDIO_FRAME)
-        public @NonNull QueueRequest setBufferInfos(@NonNull ArrayDeque<BufferInfo> infos) {
-            if (!isAccessible()) {
-                throw new IllegalStateException("The request is stale");
-            }
-            mBufferInfos.clear();
-            mBufferInfos.addAll(infos);
-            return this;
-        }
-
-        /**
          * Add an integer parameter.
          * See {@link MediaFormat} for an exhaustive list of supported keys with
          * values of type int, that can also be set with {@link MediaFormat#setInteger}.
@@ -3708,8 +3845,10 @@
                 mBufferInfos.add(info);
             }
             if (mLinearBlock != null) {
+
                 mCodec.native_queueLinearBlock(
-                        mIndex, mLinearBlock, mCryptoInfo,
+                        mIndex, mLinearBlock,
+                        mCryptoInfos.isEmpty() ? null : mCryptoInfos.toArray(),
                         mBufferInfos.toArray(),
                         mTuningKeys, mTuningValues);
             } else if (mHardwareBuffer != null) {
@@ -3724,11 +3863,11 @@
             mLinearBlock = null;
             mOffset = 0;
             mSize = 0;
-            mCryptoInfo = null;
             mHardwareBuffer = null;
             mPresentationTimeUs = 0;
             mFlags = 0;
             mBufferInfos.clear();
+            mCryptoInfos.clear();
             mTuningKeys.clear();
             mTuningValues.clear();
             return this;
@@ -3748,11 +3887,11 @@
         private LinearBlock mLinearBlock = null;
         private int mOffset = 0;
         private int mSize = 0;
-        private MediaCodec.CryptoInfo mCryptoInfo = null;
         private HardwareBuffer mHardwareBuffer = null;
         private long mPresentationTimeUs = 0;
         private @BufferFlag int mFlags = 0;
         private final ArrayDeque<BufferInfo> mBufferInfos = new ArrayDeque<>();
+        private final ArrayDeque<CryptoInfo> mCryptoInfos = new ArrayDeque<>();
         private final ArrayList<String> mTuningKeys = new ArrayList<>();
         private final ArrayList<Object> mTuningValues = new ArrayList<>();
 
@@ -3762,7 +3901,7 @@
     private native void native_queueLinearBlock(
             int index,
             @NonNull LinearBlock block,
-            @Nullable CryptoInfo cryptoInfo,
+            @Nullable Object[] cryptoInfos,
             @NonNull Object[] bufferInfos,
             @NonNull ArrayList<String> keys,
             @NonNull ArrayList<Object> values);
@@ -4938,6 +5077,68 @@
     public static final String PARAMETER_KEY_TUNNEL_PEEK = "tunnel-peek";
 
     /**
+     * Set the region of interest as QpOffset-Map on the next queued input frame.
+     * <p>
+     * The associated value is a byte array containing quantization parameter (QP) offsets in
+     * raster scan order for the entire frame at 16x16 granularity. The size of the byte array
+     * shall be ((frame_width + 15) / 16) * ((frame_height + 15) / 16), where frame_width and
+     * frame_height correspond to width and height configured using {@link MediaFormat#KEY_WIDTH}
+     * and {@link MediaFormat#KEY_HEIGHT} keys respectively. During encoding, if the coding unit
+     * size is larger than 16x16, then the qpOffset information of all 16x16 blocks that
+     * encompass the coding unit is combined and used. The QP of target block will be calculated
+     * as 'frameQP + offsetQP'. If the result exceeds minQP or maxQP configured then the value
+     * may be clamped. Negative offset results in blocks encoded at lower QP than frame QP and
+     * positive offsets will result in encoding blocks at higher QP than frame QP. If the areas
+     * of negative QP and positive QP are chosen wisely, the overall viewing experience can be
+     * improved.
+     * <p>
+     * If byte array size is too small than the expected size, components may ignore the
+     * configuration silently. If the byte array exceeds the expected size, components shall use
+     * the initial portion and ignore the rest.
+     * <p>
+     * The scope of this key is throughout the encoding session until it is reconfigured during
+     * running state.
+     * <p>
+     * @see #setParameters(Bundle)
+     */
+    @FlaggedApi(FLAG_REGION_OF_INTEREST)
+    public static final String PARAMETER_KEY_QP_OFFSET_MAP = "qp-offset-map";
+
+    /**
+     * Set the region of interest as QpOffset-Rects on the next queued input frame.
+     * <p>
+     * The associated value is a String in the format "Top1,Left1-Bottom1,Right1=Offset1;Top2,
+     * Left2-Bottom2,Right2=Offset2;...". Co-ordinates (Top, Left), (Top, Right), (Bottom, Left)
+     * and (Bottom, Right) form the vertices of bounding box of region of interest in pixels.
+     * Pixel (0, 0) points to the top-left corner of the frame. Offset is the suggested
+     * quantization parameter (QP) offset of the blocks in the bounding box. The bounding box
+     * will get stretched outwards to align to LCU boundaries during encoding. The Qp Offset is
+     * integral and shall be in the range [-128, 127]. The QP of target block will be calculated
+     * as frameQP + offsetQP. If the result exceeds minQP or maxQP configured then the value may
+     * be clamped. Negative offset results in blocks encoded at lower QP than frame QP and
+     * positive offsets will result in blocks encoded at higher QP than frame QP. If the areas of
+     * negative QP and positive QP are chosen wisely, the overall viewing experience can be
+     * improved.
+     * <p>
+     * If Roi rect is not valid that is bounding box width is < 0 or bounding box height is < 0,
+     * components may ignore the configuration silently. If Roi rect extends outside frame
+     * boundaries, then rect shall be clamped to the frame boundaries.
+     * <p>
+     * The scope of this key is throughout the encoding session until it is reconfigured during
+     * running state.
+     * <p>
+     * The maximum number of contours (rectangles) that can be specified for a given input frame
+     * is device specific. Implementations will drop/ignore the rectangles that are beyond their
+     * supported limit. Hence it is preferable to place the rects in descending order of
+     * importance. Transitively, if the bounding boxes overlap, then the most preferred
+     * rectangle's qp offset (earlier rectangle qp offset) will be used to quantize the block.
+     * <p>
+     * @see #setParameters(Bundle)
+     */
+    @FlaggedApi(FLAG_REGION_OF_INTEREST)
+    public static final String PARAMETER_KEY_QP_OFFSET_RECTS = "qp-offset-rects";
+
+    /**
      * Communicate additional parameter changes to the component instance.
      * <b>Note:</b> Some of these parameter changes may silently fail to apply.
      *
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index b0daea8..1e7bc47 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -20,8 +20,12 @@
 import static android.media.Utils.sortDistinctRanges;
 import static android.media.codec.Flags.FLAG_DYNAMIC_COLOR_ASPECTS;
 import static android.media.codec.Flags.FLAG_HLG_EDITING;
+import static android.media.codec.Flags.FLAG_IN_PROCESS_SW_AUDIO_CODEC;
+import static android.media.codec.Flags.FLAG_NULL_OUTPUT_SURFACE;
+import static android.media.codec.Flags.FLAG_REGION_OF_INTEREST;
 
 import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -38,6 +42,8 @@
 import android.util.Rational;
 import android.util.Size;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -741,6 +747,53 @@
         public static final String FEATURE_DynamicColorAspects = "dynamic-color-aspects";
 
         /**
+         * <b>video encoder only</b>: codec supports region of interest encoding.
+         * <p>
+         * RoI encoding support means the codec accepts information that specifies the relative
+         * importance of different portions of each video frame. This allows the encoder to
+         * separate a video frame into critical and non-critical regions, and use more bits
+         * (better quality) to represent the critical regions and de-prioritize non-critical
+         * regions. In other words, the encoder chooses a negative qp bias for the critical
+         * portions and a zero or positive qp bias for the non-critical portions.
+         * <p>
+         * At a basic level, if the encoder decides to encode each frame with a uniform
+         * quantization value 'qpFrame' and a 'qpBias' is chosen/suggested for an LCU of the
+         * frame, then the actual qp of the LCU will be 'qpFrame + qpBias', although this value
+         * can be clamped basing on the min-max configured qp bounds for the current encoding
+         * session.
+         * <p>
+         * In a shot, if a group of LCUs pan out quickly they can be marked as non-critical
+         * thereby enabling the encoder to reserve fewer bits during their encoding. Contrarily,
+         * LCUs that remain in shot for a prolonged duration can be encoded at better quality in
+         * one frame thereby setting-up an excellent long-term reference for all future frames.
+         * <p>
+         * Note that by offsetting the quantization of each LCU, the overall bit allocation will
+         * differ from the originally estimated bit allocation, and the encoder will adjust the
+         * frame quantization for subsequent frames to meet the bitrate target. An effective
+         * selection of critical regions can set-up a golden reference and this can compensate
+         * for the bit burden that was introduced due to encoding RoI's at better quality.
+         * On the other hand, an ineffective choice of critical regions might increase the
+         * quality of certain parts of the image but this can hamper quality in subsequent frames.
+         * <p>
+         * @see MediaCodec#PARAMETER_KEY_QP_OFFSET_MAP
+         * @see MediaCodec#PARAMETER_KEY_QP_OFFSET_RECTS
+         */
+        @SuppressLint("AllUpper")
+        @FlaggedApi(FLAG_REGION_OF_INTEREST)
+        public static final String FEATURE_Roi = "region-of-interest";
+
+        /**
+         * <b>video decoder only</b>: codec supports detaching the
+         * output surface when in Surface mode.
+         * <p> If true, the codec can be configured in Surface mode
+         * without an actual surface (in detached surface mode).
+         * @see MediaCodec#CONFIGURE_FLAG_DETACHED_SURFACE
+         */
+        @SuppressLint("AllUpper")
+        @FlaggedApi(FLAG_NULL_OUTPUT_SURFACE)
+        public static final String FEATURE_DetachedSurface = "detached-surface";
+
+        /**
          * Query codec feature capabilities.
          * <p>
          * These features are supported to be used by the codec.  These
@@ -777,6 +830,9 @@
                 if (android.media.codec.Flags.dynamicColorAspects()) {
                     features.add(new Feature(FEATURE_DynamicColorAspects, (1 << 8), true));
                 }
+                if (android.media.codec.Flags.nullOutputSurface()) {
+                    features.add(new Feature(FEATURE_DetachedSurface,     (1 << 9), true));
+                }
 
                 // feature to exclude codec from REGULAR codec list
                 features.add(new Feature(FEATURE_SpecialCodec,     (1 << 30), false, true));
@@ -798,6 +854,9 @@
                 if (android.media.codec.Flags.hlgEditing()) {
                     features.add(new Feature(FEATURE_HlgEditing, (1 << 6), true));
                 }
+                if (android.media.codec.Flags.regionOfInterest()) {
+                    features.add(new Feature(FEATURE_Roi, (1 << 7), true));
+                }
 
                 // feature to exclude codec from REGULAR codec list
                 features.add(new Feature(FEATURE_SpecialCodec,     (1 << 30), false, true));
@@ -1753,6 +1812,55 @@
         }
     }
 
+    /** @hide */
+    @IntDef(prefix = {"SECURITY_MODEL_"}, value = {
+        SECURITY_MODEL_SANDBOXED,
+        SECURITY_MODEL_MEMORY_SAFE,
+        SECURITY_MODEL_TRUSTED_CONTENT_ONLY,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface SecurityModel {}
+
+    /**
+     * In this model the codec is running in a sandboxed process. Even if a
+     * malicious content was fed to the codecs in this model, the impact will
+     * be contained in the sandboxed process.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int SECURITY_MODEL_SANDBOXED = 0;
+    /**
+     * In this model the codec is not running in a sandboxed process, but
+     * written in a memory-safe way. It typically means that the software
+     * implementation of the codec is written in a memory-safe language such
+     * as Rust.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int SECURITY_MODEL_MEMORY_SAFE = 1;
+    /**
+     * In this model the codec is suitable only for trusted content where
+     * the input can be verified to be well-formed and no malicious actor
+     * can alter it. For example, codecs in this model are not suitable
+     * for arbitrary media downloaded from the internet or present in a user
+     * directory. On the other hand, they could be suitable for media encoded
+     * in the backend that the app developer wholly controls.
+     * <p>
+     * Codecs with this security model is not included in
+     * {@link MediaCodecList#REGULAR_CODECS}, but included in
+     * {@link MediaCodecList#ALL_CODECS}.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int SECURITY_MODEL_TRUSTED_CONTENT_ONLY = 2;
+
+    /**
+     * Query the security model of the codec.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    @SecurityModel
+    public int getSecurityModel() {
+        // TODO b/297922713 --- detect security model of out-of-sandbox codecs
+        return SECURITY_MODEL_SANDBOXED;
+    }
+
     /**
      * A class that supports querying the video capabilities of a codec.
      */
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 5e40eee..7b83842 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import static android.media.codec.Flags.FLAG_IN_PROCESS_SW_AUDIO_CODEC;
+
 import static com.android.media.codec.flags.Flags.FLAG_CODEC_IMPORTANCE;
 import static com.android.media.codec.flags.Flags.FLAG_LARGE_AUDIO_FRAME;
 
@@ -1715,6 +1717,58 @@
     @FlaggedApi(FLAG_CODEC_IMPORTANCE)
     public static final String KEY_IMPORTANCE = "importance";
 
+    /** @hide */
+    @IntDef(flag = true, prefix = {"FLAG_SECURITY_MODEL_"}, value = {
+        FLAG_SECURITY_MODEL_SANDBOXED,
+        FLAG_SECURITY_MODEL_MEMORY_SAFE,
+        FLAG_SECURITY_MODEL_TRUSTED_CONTENT_ONLY,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface SecurityModelFlag {}
+
+    /**
+     * Flag for {@link MediaCodecInfo#SECURITY_MODEL_SANDBOXED}.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int FLAG_SECURITY_MODEL_SANDBOXED =
+            (1 << MediaCodecInfo.SECURITY_MODEL_SANDBOXED);
+    /**
+     * Flag for {@link MediaCodecInfo#SECURITY_MODEL_MEMORY_SAFE}.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int FLAG_SECURITY_MODEL_MEMORY_SAFE =
+            (1 << MediaCodecInfo.SECURITY_MODEL_MEMORY_SAFE);
+    /**
+     * Flag for {@link MediaCodecInfo#SECURITY_MODEL_TRUSTED_CONTENT_ONLY}.
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final int FLAG_SECURITY_MODEL_TRUSTED_CONTENT_ONLY =
+            (1 << MediaCodecInfo.SECURITY_MODEL_TRUSTED_CONTENT_ONLY);
+
+    /**
+     * A key describing the requested security model as flags.
+     * <p>
+     * The associated value is a flag of the following values:
+     * {@link FLAG_SECURITY_MODEL_SANDBOXED},
+     * {@link FLAG_SECURITY_MODEL_MEMORY_SAFE},
+     * {@link FLAG_SECURITY_MODEL_TRUSTED_CONTENT_ONLY}. The default value is
+     * {@link FLAG_SECURITY_MODEL_SANDBOXED}.
+     * <p>
+     * When passed to {@link MediaCodecList#findDecoderForFormat} or
+     * {@link MediaCodecList#findEncoderForFormat}, MediaCodecList filters
+     * the security model of the codecs according to this flag value.
+     * <p>
+     * When passed to {@link MediaCodec#configure}, MediaCodec verifies
+     * the security model matches the flag value passed, and throws
+     * {@link java.lang.IllegalArgumentException} if the model does not match.
+     * <p>
+     * @see MediaCodecInfo#getSecurityModel
+     * @see MediaCodecList#findDecoderForFormat
+     * @see MediaCodecList#findEncoderForFormat
+     */
+    @FlaggedApi(FLAG_IN_PROCESS_SW_AUDIO_CODEC)
+    public static final String KEY_SECURITY_MODEL = "security-model";
+
     /* package private */ MediaFormat(@NonNull Map<String, Object> map) {
         mMap = map;
     }
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 7fa3ed6..144b01a 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -1017,7 +1017,8 @@
         updateRoutesOnHandler(currentRoutes);
 
         RoutingSessionInfo oldInfo = mSystemController.getRoutingSessionInfo();
-        mSystemController.setRoutingSessionInfo(currentSystemSessionInfo);
+        mSystemController.setRoutingSessionInfo(ensureClientPackageNameForSystemSession(
+                currentSystemSessionInfo, mContext.getPackageName()));
         if (!oldInfo.equals(currentSystemSessionInfo)) {
             notifyControllerUpdated(mSystemController);
         }
@@ -1440,6 +1441,25 @@
         }
     }
 
+    /**
+     * Sets the routing session's {@linkplain RoutingSessionInfo#getClientPackageName() client
+     * package name} to {@code packageName} if empty and returns the session.
+     *
+     * <p>This method must only be used for {@linkplain RoutingSessionInfo#isSystemSession()
+     * system routing sessions}.
+     */
+    private static RoutingSessionInfo ensureClientPackageNameForSystemSession(
+            @NonNull RoutingSessionInfo sessionInfo, @NonNull String packageName) {
+        if (!sessionInfo.isSystemSession()
+                || !TextUtils.isEmpty(sessionInfo.getClientPackageName())) {
+            return sessionInfo;
+        }
+
+        return new RoutingSessionInfo.Builder(sessionInfo)
+                .setClientPackageName(packageName)
+                .build();
+    }
+
     /** Callback for receiving events about media route discovery. */
     public abstract static class RouteCallback {
         /**
@@ -2891,25 +2911,6 @@
         }
 
         /**
-         * Sets the routing session's {@linkplain RoutingSessionInfo#getClientPackageName() client
-         * package name} to {@link #mClientPackageName} if empty and returns the session.
-         *
-         * <p>This method must only be used for {@linkplain RoutingSessionInfo#isSystemSession()
-         * system routing sessions}.
-         */
-        private RoutingSessionInfo ensureClientPackageNameForSystemSession(
-                RoutingSessionInfo sessionInfo) {
-            if (!sessionInfo.isSystemSession()
-                    || !TextUtils.isEmpty(sessionInfo.getClientPackageName())) {
-                return sessionInfo;
-            }
-
-            return new RoutingSessionInfo.Builder(sessionInfo)
-                    .setClientPackageName(mClientPackageName)
-                    .build();
-        }
-
-        /**
          * Requests the release of a {@linkplain RoutingSessionInfo routing session}. Calls {@link
          * #onSessionReleasedOnHandler(RoutingSessionInfo)} on success.
          *
@@ -2997,7 +2998,7 @@
             RoutingController oldController;
             if (oldSession.isSystemSession()) {
                 mSystemController.setRoutingSessionInfo(
-                        ensureClientPackageNameForSystemSession(oldSession));
+                        ensureClientPackageNameForSystemSession(oldSession, mClientPackageName));
                 oldController = mSystemController;
             } else {
                 oldController = new RoutingController(oldSession);
@@ -3006,7 +3007,7 @@
             RoutingController newController;
             if (newSession.isSystemSession()) {
                 mSystemController.setRoutingSessionInfo(
-                        ensureClientPackageNameForSystemSession(newSession));
+                        ensureClientPackageNameForSystemSession(newSession, mClientPackageName));
                 newController = mSystemController;
             } else {
                 newController = new RoutingController(newSession);
@@ -3033,7 +3034,7 @@
             RoutingController controller;
             if (session.isSystemSession()) {
                 mSystemController.setRoutingSessionInfo(
-                        ensureClientPackageNameForSystemSession(session));
+                        ensureClientPackageNameForSystemSession(session, mClientPackageName));
                 controller = mSystemController;
             } else {
                 controller = new RoutingController(session);
@@ -3303,7 +3304,8 @@
         public RoutingSessionInfo getSystemSessionInfo() {
             RoutingSessionInfo currentSystemSessionInfo = null;
             try {
-                currentSystemSessionInfo = mMediaRouterService.getSystemSessionInfo();
+                currentSystemSessionInfo = ensureClientPackageNameForSystemSession(
+                        mMediaRouterService.getSystemSessionInfo(), mContext.getPackageName());
             } catch (RemoteException ex) {
                 ex.rethrowFromSystemServer();
             }
diff --git a/media/java/android/media/OWNERS b/media/java/android/media/OWNERS
index 49890c1..8cc42e0 100644
--- a/media/java/android/media/OWNERS
+++ b/media/java/android/media/OWNERS
@@ -11,3 +11,8 @@
 
 per-file ExifInterface.java,ExifInterfaceUtils.java,IMediaHTTPConnection.aidl,IMediaHTTPService.aidl,JetPlayer.java,MediaDataSource.java,MediaExtractor.java,MediaHTTPConnection.java,MediaHTTPService.java,MediaPlayer.java=set noparent
 per-file ExifInterface.java,ExifInterfaceUtils.java,IMediaHTTPConnection.aidl,IMediaHTTPService.aidl,JetPlayer.java,MediaDataSource.java,MediaExtractor.java,MediaHTTPConnection.java,MediaHTTPService.java,MediaPlayer.java=file:platform/frameworks/av:/media/janitors/media_solutions_OWNERS
+
+# Haptics team also works on Ringtone
+per-file *Ringtone* = file:/services/core/java/com/android/server/vibrator/OWNERS
+
+per-file flags/projection.aconfig = file:projection/OWNERS
diff --git a/media/java/android/media/flags/projection.aconfig b/media/java/android/media/flags/projection.aconfig
index c4b38c7..b165809 100644
--- a/media/java/android/media/flags/projection.aconfig
+++ b/media/java/android/media/flags/projection.aconfig
@@ -1,4 +1,4 @@
-package: "com.android.media.flags"
+package: "com.android.media.projection.flags"
 
 # Project link: https://gantry.corp.google.com/projects/android_platform_window_surfaces/changes
 
diff --git a/media/java/android/media/metrics/EditingEndedEvent.java b/media/java/android/media/metrics/EditingEndedEvent.java
index f1c5c9d..9b3477f 100644
--- a/media/java/android/media/metrics/EditingEndedEvent.java
+++ b/media/java/android/media/metrics/EditingEndedEvent.java
@@ -18,6 +18,7 @@
 import static com.android.media.editing.flags.Flags.FLAG_ADD_MEDIA_METRICS_EDITING;
 
 import android.annotation.FlaggedApi;
+import android.annotation.FloatRange;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.LongDef;
@@ -60,6 +61,8 @@
 
     private final @FinalState int mFinalState;
 
+    private final float mFinalProgressPercent;
+
     // The special value 0 is reserved for the field being unspecified in the proto.
 
     /** Special value representing that no error occurred. */
@@ -155,10 +158,15 @@
     /** Special value for unknown {@linkplain #getTimeSinceCreatedMillis() time since creation}. */
     public static final int TIME_SINCE_CREATED_UNKNOWN = -1;
 
+    /** Special value for unknown {@linkplain #getFinalProgressPercent() final progress}. */
+    public static final int PROGRESS_PERCENT_UNKNOWN = -1;
+
     private final @ErrorCode int mErrorCode;
     @SuppressWarnings("HidingField") // Hiding field from superclass as for playback events.
     private final long mTimeSinceCreatedMillis;
 
+    @Nullable private final String mExporterName;
+    @Nullable private final String mMuxerName;
     private final ArrayList<MediaItemInfo> mInputMediaItemInfos;
     @Nullable private final MediaItemInfo mOutputMediaItemInfo;
 
@@ -207,15 +215,21 @@
 
     private EditingEndedEvent(
             @FinalState int finalState,
+            float finalProgressPercent,
             @ErrorCode int errorCode,
             long timeSinceCreatedMillis,
+            @Nullable String exporterName,
+            @Nullable String muxerName,
             ArrayList<MediaItemInfo> inputMediaItemInfos,
             @Nullable MediaItemInfo outputMediaItemInfo,
             @OperationType long operationTypes,
             @NonNull Bundle extras) {
         mFinalState = finalState;
+        mFinalProgressPercent = finalProgressPercent;
         mErrorCode = errorCode;
         mTimeSinceCreatedMillis = timeSinceCreatedMillis;
+        mExporterName = exporterName;
+        mMuxerName = muxerName;
         mInputMediaItemInfos = inputMediaItemInfos;
         mOutputMediaItemInfo = outputMediaItemInfo;
         mOperationTypes = operationTypes;
@@ -228,6 +242,14 @@
         return mFinalState;
     }
 
+    /**
+     * Returns the progress of the editing operation in percent at the moment that it ended, or
+     * {@link #PROGRESS_PERCENT_UNKNOWN} if unknown.
+     */
+    public float getFinalProgressPercent() {
+        return mFinalProgressPercent;
+    }
+
     /** Returns the error code for a {@linkplain #FINAL_STATE_ERROR failed} editing session. */
     @ErrorCode
     public int getErrorCode() {
@@ -249,6 +271,24 @@
         return mTimeSinceCreatedMillis;
     }
 
+    /**
+     * Returns the name of the library implementing the exporting operation, or {@code null} if
+     * unknown.
+     */
+    @Nullable
+    public String getExporterName() {
+        return mExporterName;
+    }
+
+    /**
+     * Returns the name of the library implementing the media muxing operation, or {@code null} if
+     * unknown.
+     */
+    @Nullable
+    public String getMuxerName() {
+        return mMuxerName;
+    }
+
     /** Gets information about the input media items, or an empty list if unspecified. */
     @NonNull
     public List<MediaItemInfo> getInputMediaItemInfos() {
@@ -284,12 +324,21 @@
                 + "finalState = "
                 + mFinalState
                 + ", "
+                + "finalProgressPercent = "
+                + mFinalProgressPercent
+                + ", "
                 + "errorCode = "
                 + mErrorCode
                 + ", "
                 + "timeSinceCreatedMillis = "
                 + mTimeSinceCreatedMillis
                 + ", "
+                + "exporterName = "
+                + mExporterName
+                + ", "
+                + "muxerName = "
+                + mMuxerName
+                + ", "
                 + "inputMediaItemInfos = "
                 + mInputMediaItemInfos
                 + ", "
@@ -307,29 +356,38 @@
         if (o == null || getClass() != o.getClass()) return false;
         EditingEndedEvent that = (EditingEndedEvent) o;
         return mFinalState == that.mFinalState
+                && mFinalProgressPercent == that.mFinalProgressPercent
                 && mErrorCode == that.mErrorCode
                 && Objects.equals(mInputMediaItemInfos, that.mInputMediaItemInfos)
                 && Objects.equals(mOutputMediaItemInfo, that.mOutputMediaItemInfo)
                 && mOperationTypes == that.mOperationTypes
-                && mTimeSinceCreatedMillis == that.mTimeSinceCreatedMillis;
+                && mTimeSinceCreatedMillis == that.mTimeSinceCreatedMillis
+                && Objects.equals(mExporterName, that.mExporterName)
+                && Objects.equals(mMuxerName, that.mMuxerName);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(
                 mFinalState,
+                mFinalProgressPercent,
                 mErrorCode,
                 mInputMediaItemInfos,
                 mOutputMediaItemInfo,
                 mOperationTypes,
-                mTimeSinceCreatedMillis);
+                mTimeSinceCreatedMillis,
+                mExporterName,
+                mMuxerName);
     }
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeInt(mFinalState);
+        dest.writeFloat(mFinalProgressPercent);
         dest.writeInt(mErrorCode);
         dest.writeLong(mTimeSinceCreatedMillis);
+        dest.writeString(mExporterName);
+        dest.writeString(mMuxerName);
         dest.writeTypedList(mInputMediaItemInfos);
         dest.writeTypedObject(mOutputMediaItemInfo, /* parcelableFlags= */ 0);
         dest.writeLong(mOperationTypes);
@@ -343,8 +401,11 @@
 
     private EditingEndedEvent(@NonNull Parcel in) {
         mFinalState = in.readInt();
+        mFinalProgressPercent = in.readFloat();
         mErrorCode = in.readInt();
         mTimeSinceCreatedMillis = in.readLong();
+        mExporterName = in.readString();
+        mMuxerName = in.readString();
         mInputMediaItemInfos = new ArrayList<>();
         in.readTypedList(mInputMediaItemInfos, MediaItemInfo.CREATOR);
         mOutputMediaItemInfo = in.readTypedObject(MediaItemInfo.CREATOR);
@@ -370,8 +431,11 @@
     public static final class Builder {
         private final @FinalState int mFinalState;
         private final ArrayList<MediaItemInfo> mInputMediaItemInfos;
+        private float mFinalProgressPercent;
         private @ErrorCode int mErrorCode;
         private long mTimeSinceCreatedMillis;
+        @Nullable private String mExporterName;
+        @Nullable private String mMuxerName;
         @Nullable private MediaItemInfo mOutputMediaItemInfo;
         private @OperationType long mOperationTypes;
         private Bundle mMetricsBundle;
@@ -383,6 +447,7 @@
          */
         public Builder(@FinalState int finalState) {
             mFinalState = finalState;
+            mFinalProgressPercent = PROGRESS_PERCENT_UNKNOWN;
             mErrorCode = ERROR_CODE_NONE;
             mTimeSinceCreatedMillis = TIME_SINCE_CREATED_UNKNOWN;
             mInputMediaItemInfos = new ArrayList<>();
@@ -390,6 +455,19 @@
         }
 
         /**
+         * Sets the progress of the editing operation in percent at the moment that it ended.
+         *
+         * @param finalProgressPercent The progress of the editing operation in percent at the
+         *     moment that it ended.
+         * @see #getFinalProgressPercent()
+         */
+        public @NonNull Builder setFinalProgressPercent(
+                @FloatRange(from = 0, to = 100) float finalProgressPercent) {
+            mFinalProgressPercent = finalProgressPercent;
+            return this;
+        }
+
+        /**
          * Sets the elapsed time since creating the editing session, in milliseconds.
          *
          * @param timeSinceCreatedMillis The elapsed time since creating the editing session, in
@@ -402,6 +480,30 @@
             return this;
         }
 
+        /**
+         * The name of the library implementing the exporting operation. For example, a Maven
+         * artifact ID like "androidx.media3.media3-transformer:1.3.0-beta01".
+         *
+         * @param exporterName The name of the library implementing the export operation.
+         * @see #getExporterName()
+         */
+        public @NonNull Builder setExporterName(@NonNull String exporterName) {
+            mExporterName = Objects.requireNonNull(exporterName);
+            return this;
+        }
+
+        /**
+         * The name of the library implementing the media muxing operation. For example, a Maven
+         * artifact ID like "androidx.media3.media3-muxer:1.3.0-beta01".
+         *
+         * @param muxerName The name of the library implementing the media muxing operation.
+         * @see #getMuxerName()
+         */
+        public @NonNull Builder setMuxerName(@NonNull String muxerName) {
+            mMuxerName = Objects.requireNonNull(muxerName);
+            return this;
+        }
+
         /** Sets the error code for a {@linkplain #FINAL_STATE_ERROR failed} editing session. */
         public @NonNull Builder setErrorCode(@ErrorCode int value) {
             mErrorCode = value;
@@ -444,8 +546,11 @@
         public @NonNull EditingEndedEvent build() {
             return new EditingEndedEvent(
                     mFinalState,
+                    mFinalProgressPercent,
                     mErrorCode,
                     mTimeSinceCreatedMillis,
+                    mExporterName,
+                    mMuxerName,
                     mInputMediaItemInfos,
                     mOutputMediaItemInfo,
                     mOperationTypes,
diff --git a/media/java/android/media/projection/MediaProjectionManager.java b/media/java/android/media/projection/MediaProjectionManager.java
index e3290d6..2a0648d 100644
--- a/media/java/android/media/projection/MediaProjectionManager.java
+++ b/media/java/android/media/projection/MediaProjectionManager.java
@@ -180,7 +180,7 @@
     @SuppressLint("UnflaggedApi")
     @TestApi
     @NonNull
-    public Intent createScreenCaptureIntent(@Nullable LaunchCookie launchCookie) {
+    public Intent createScreenCaptureIntent(@NonNull LaunchCookie launchCookie) {
         Intent i = createScreenCaptureIntent();
         i.putExtra(EXTRA_LAUNCH_COOKIE, launchCookie);
         return i;
diff --git a/media/java/android/media/tv/BroadcastInfoRequest.java b/media/java/android/media/tv/BroadcastInfoRequest.java
index eb980a3..9035cb7 100644
--- a/media/java/android/media/tv/BroadcastInfoRequest.java
+++ b/media/java/android/media/tv/BroadcastInfoRequest.java
@@ -85,6 +85,8 @@
                             return CommandRequest.createFromParcelBody(source);
                         case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE:
                             return TimelineRequest.createFromParcelBody(source);
+                        case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA:
+                            return SignalingDataRequest.createFromParcelBody(source);
                         default:
                             throw new IllegalStateException(
                                     "Unexpected broadcast info request type (value "
diff --git a/media/java/android/media/tv/BroadcastInfoResponse.java b/media/java/android/media/tv/BroadcastInfoResponse.java
index 4ba2b2c..f589244 100644
--- a/media/java/android/media/tv/BroadcastInfoResponse.java
+++ b/media/java/android/media/tv/BroadcastInfoResponse.java
@@ -71,6 +71,8 @@
                             return CommandResponse.createFromParcelBody(source);
                         case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE:
                             return TimelineResponse.createFromParcelBody(source);
+                        case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA:
+                            return SignalingDataResponse.createFromParcelBody(source);
                         default:
                             throw new IllegalStateException(
                                     "Unexpected broadcast info response type (value "
diff --git a/media/java/android/media/tv/SignalingDataInfo.java b/media/java/android/media/tv/SignalingDataInfo.java
index b29ea5c..e5231fc 100644
--- a/media/java/android/media/tv/SignalingDataInfo.java
+++ b/media/java/android/media/tv/SignalingDataInfo.java
@@ -16,11 +16,19 @@
 
 package android.media.tv;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
 import android.os.Parcelable;
 
-/** @hide */
-public class SignalingDataInfo implements Parcelable {
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Describes a metadata object of a {@link SignalingDataResponse}.
+ */
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataInfo implements Parcelable {
     public static final @NonNull Parcelable.Creator<SignalingDataInfo> CREATOR =
             new Parcelable.Creator<SignalingDataInfo>() {
                 @Override
@@ -34,59 +42,131 @@
                 }
             };
 
-    private int mTableId;
-    private @NonNull String mTable;
-    private int mMetadataType;
-    private int mVersion;
-    private int mGroup;
-    private @NonNull String mEncoding;
+    private final @NonNull String mTable;
+    private final @NonNull @SignalingDataRequest.SignalingMetadata String mSignalingDataType;
+    private final int mVersion;
+    private final int mGroup;
+    private final @NonNull String mEncoding;
+
+    /**
+     * This value for {@link #getGroup()} denotes that there's no group associated with this
+     * metadata.
+     */
+    public static final int LLS_NO_GROUP_ID = -1;
+
+    /**
+     * The encoding of the content is UTF-8. This is the default value.
+     */
+    public static final String CONTENT_ENCODING_UTF_8 = "UTF-8";
+
+    /**
+     *  A/344:2023-5 9.2.10 compliant string for when the encoding of the content is Base64.
+     */
+    public static final String CONTENT_ENCODING_BASE64 = "Base64";
+
+    /**
+     * @hide
+     */
+    @android.annotation.StringDef(prefix = "CONTENT_ENCODING_", value = {
+            CONTENT_ENCODING_UTF_8,
+            CONTENT_ENCODING_BASE64
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ContentEncoding {}
 
     public SignalingDataInfo(
-            int tableId,
             @NonNull String table,
-            int metadataType,
+            @NonNull String signalingDataType,
+            int version,
+            int group) {
+        this.mTable = table;
+        com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
+        this.mSignalingDataType = signalingDataType;
+        this.mVersion = version;
+        this.mGroup = group;
+        this.mEncoding = CONTENT_ENCODING_UTF_8;
+    }
+
+    public SignalingDataInfo(
+            @NonNull String table,
+            @NonNull String signalingDataType,
             int version,
             int group,
             @NonNull String encoding) {
-        this.mTableId = tableId;
         this.mTable = table;
         com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
-        this.mMetadataType = metadataType;
+        this.mSignalingDataType = signalingDataType;
         this.mVersion = version;
         this.mGroup = group;
         this.mEncoding = encoding;
         com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mEncoding);
     }
 
-    public int getTableId() {
-        return mTableId;
-    }
-
-    public @NonNull String getTable() {
+    /**
+     * The signaling table data, represented as a XML, JSON or BASE64 string.
+     *
+     * <p> For more details on how this data is formatted refer to the ATSC standard
+     * A/344:2023-5 9.2.10 - Query Signaling Data API.
+     *
+     * @return The signaling table data.
+     */
+    @NonNull
+    public String getTable() {
         return mTable;
     }
 
-    public int getMetadataType() {
-        return mMetadataType;
+    /**
+     * Gets the signaling data type contained in this metadata object. This may be either a
+     * LLS Metadata Object or a SLS Metadata Object name.
+     *
+     * <p>For more details on each type of metadata that can be requested, refer to the ATSC
+     * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+     *
+     * @return the type of metadata in this metadata object
+     */
+    @NonNull
+    public @SignalingDataRequest.SignalingMetadata String getSignalingDataType() {
+        return mSignalingDataType;
     }
 
+    /**
+     * Gets the version of the signalling element. For LLS, this should be the
+     * LLS_table_version. For SLS Metadata Objects, this should be metadataEnvelope@version.
+     *
+     * For more details on where this version comes from, refer to the ATSC 3.0
+     * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+     *
+     * @return The version of the signalling element.
+     */
     public int getVersion() {
         return mVersion;
     }
 
+    /**
+     * Gets the LLS group ID. Required for LLS Tables. For SLS Metadata Objects, this should be
+     * {@link #LLS_NO_GROUP_ID}.
+     *
+     * @return the LLS group ID.
+     */
     public int getGroup() {
         return mGroup;
     }
 
-    public @NonNull String getEncoding() {
+    /**
+     * The content encoding of the data. This value defaults to {@link #CONTENT_ENCODING_UTF_8}.
+     *
+     * <p> Can be either {@link #CONTENT_ENCODING_BASE64} or {@link #CONTENT_ENCODING_UTF_8}.
+     * @return The content encoding of the data.
+     */
+    @NonNull
+    public @ContentEncoding String getEncoding() {
         return mEncoding;
     }
 
     @Override
     public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
-        dest.writeInt(mTableId);
         dest.writeString(mTable);
-        dest.writeInt(mMetadataType);
+        dest.writeString(mSignalingDataType);
         dest.writeInt(mVersion);
         dest.writeInt(mGroup);
         dest.writeString(mEncoding);
@@ -98,17 +178,17 @@
     }
 
     SignalingDataInfo(@NonNull android.os.Parcel in) {
-        int tableId = in.readInt();
         String table = in.readString();
-        int metadataType = in.readInt();
+        String metadataType = in.readString();
         int version = in.readInt();
         int group = in.readInt();
         String encoding = in.readString();
 
-        this.mTableId = tableId;
         this.mTable = table;
         com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
-        this.mMetadataType = metadataType;
+        this.mSignalingDataType = metadataType;
+        com.android.internal.util.AnnotationValidations
+                .validate(NonNull.class, null, mSignalingDataType);
         this.mVersion = version;
         this.mGroup = group;
         this.mEncoding = encoding;
diff --git a/media/java/android/media/tv/SignalingDataRequest.java b/media/java/android/media/tv/SignalingDataRequest.java
index dcf1d48..9874517 100644
--- a/media/java/android/media/tv/SignalingDataRequest.java
+++ b/media/java/android/media/tv/SignalingDataRequest.java
@@ -16,19 +16,27 @@
 
 package android.media.tv;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
+import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
 /**
  * Request to retrieve the Low-level Signalling Tables (LLS) and Service-layer Signalling (SLS)
  * metadata.
  *
- * <p>For more details on each type of metadata that can be requested, refer to the ATSC standard
+ * <p> For more details on each type of metadata that can be requested, refer to the ATSC standard
  * A/344:2023-5 9.2.10 - Query Signaling Data API.
  *
- * @hide
+ * @see SignalingDataResponse
  */
-public class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable {
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable {
     private static final @TvInputManager.BroadcastInfoType int REQUEST_TYPE =
             TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA;
 
@@ -45,126 +53,220 @@
                 }
             };
 
-    /** SLS Metadata: All metadata objects for the requested service(s) */
-    public static final int SLS_METADATA_ALL = 0x7FFFFFF;
 
     /** SLS Metadata: APD for the requested service(s) */
-    public static final int SLS_METADATA_APD = 1;
+    public static final String SIGNALING_METADATA_APD = "APD";
 
     /** SLS Metadata: USBD for the requested service(s) */
-    public static final int SLS_METADATA_USBD = 1 << 1;
+    public static final String SIGNALING_METADATA_USBD = "USBD";
 
     /** SLS Metadata: S-TSID for the requested service(s) */
-    public static final int SLS_METADATA_STSID = 1 << 2;
+    public static final String SIGNALING_METADATA_STSID = "STSID";
 
     /** SLS Metadata: DASH MPD for the requested service(s) */
-    public static final int SLS_METADATA_MPD = 1 << 3;
+    public static final String SIGNALING_METADATA_MPD = "MPD";
 
     /** SLS Metadata: User Service Description for MMTP */
-    public static final int SLS_METADATA_USD = 1 << 4;
+    public static final String SIGNALING_METADATA_USD = "USD";
 
     /** SLS Metadata: MMT Package Access Table for the requested service(s) */
-    public static final int SLS_METADATA_PAT = 1 << 5;
+    public static final String SIGNALING_METADATA_PAT  = "PAT";
 
     /** SLS Metadata: MMT Package Table for the requested service(s) */
-    public static final int SLS_METADATA_MPT = 1 << 6;
+    public static final String SIGNALING_METADATA_MPT = "MPT";
 
     /** SLS Metadata: MMT Media Presentation Information Table for the requested service(s) */
-    public static final int SLS_METADATA_MPIT = 1 << 7;
+    public static final String SIGNALING_METADATA_MPIT = "MPIT";
 
     /** SLS Metadata: MMT Clock Relation Information for the requested service(s) */
-    public static final int SLS_METADATA_CRIT = 1 << 8;
+    public static final String SIGNALING_METADATA_CRIT = "CRIT";
 
     /** SLS Metadata: MMT Device Capabilities Information Table for the requested service(s) */
-    public static final int SLS_METADATA_DCIT = 1 << 9;
+    public static final String SIGNALING_METADATA_DCIT = "DCIT";
 
     /** SLS Metadata: HTML Entry Pages Location Description for the requested service(s) */
-    public static final int SLS_METADATA_HELD = 1 << 10;
+    public static final String SIGNALING_METADATA_HELD = "HELD";
 
     /** SLS Metadata: Distribution Window Desciription for the requested service(s) */
-    public static final int SLS_METADATA_DWD = 1 << 11;
+    public static final String SIGNALING_METADATA_DWD = "DWD";
 
     /** SLS Metadata: MMT Application Event Information for the requested service(s) */
-    public static final int SLS_METADATA_AEI = 1 << 12;
+    public static final String SIGNALING_METADATA_AEI = "AEI";
 
     /** SLS Metadata: Video Stream Properties Descriptor */
-    public static final int SLS_METADATA_VSPD = 1 << 13;
+    public static final String SIGNALING_METADATA_VSPD = "VSPD";
 
     /** SLS Metadata: ATSC Staggercast Descriptor */
-    public static final int SLS_METADATA_ASD = 1 << 14;
+    public static final String SIGNALING_METADATA_ASD = "ASD";
 
     /** SLS Metadata: Inband Event Descriptor */
-    public static final int SLS_METADATA_IED = 1 << 15;
+    public static final String SIGNALING_METADATA_IED = "IED";
 
     /** SLS Metadata: Caption Asset Descriptor */
-    public static final int SLS_METADATA_CAD = 1 << 16;
+    public static final String SIGNALING_METADATA_CAD = "CAD";
 
     /** SLS Metadata: Audio Stream Properties Descriptor */
-    public static final int SLS_METADATA_ASPD = 1 << 17;
+    public static final String SIGNALING_METADATA_ASPD = "ASPD";
 
     /** SLS Metadata: Security Properties Descriptor */
-    public static final int SLS_METADATA_SSD = 1 << 18;
+    public static final String SIGNALING_METADATA_SSD = "SSD";
 
     /** SLS Metadata: ROUTE/DASH Application Dynamic Event for the requested service(s) */
-    public static final int SLS_METADATA_EMSG = 1 << 19;
+    public static final String SIGNALING_METADATA_EMSG = "EMSG";
 
     /** SLS Metadata: MMT Application Dynamic Event for the requested service(s) */
-    public static final int SLS_METADATA_EVTI = 1 << 20;
+    public static final String SIGNALING_METADATA_EVTI = "EVTI";
 
-    /** Regional Service Availability Table for the requested service(s) */
-    public static final int SLS_METADATA_RSAT = 1 << 21;
+    /** SLS Metadata: Regional Service Availability Table for the requested service(s) */
+    public static final String SIGNALING_METADATA_RSAT = "RSAT";
+
+    /** SLS Metadata: Recovery Data Table for the requested service(s) */
+    public static final String SIGNALING_METADATA_RDT = "RDT";
+
+    /**
+     * Service List Table for the requested service(s), LLS_table_id = 1.
+     */
+    public static final String SIGNALING_METADATA_SLT = "SLT";
+
+    /**
+     * Region Rating Table for the requested service(s), LLS_table_id = 2.
+     */
+    public static final String SIGNALING_METADATA_RRT = "RRT";
+
+    /**
+     * System Time Table for the requested service(s), LLS_table_id = 3.
+     */
+    public static final String SIGNALING_METADATA_STT = "STT";
+
+    /**
+     * Advance Emergency Information Table for the requested service(s), LLS_table_id = 4.
+     */
+    public static final String SIGNALING_METADATA_AEAT = "AEAT";
+
+    /**
+     * Onscreen Message Notifications for the requested service(s), LLS_table_id = 5.
+     */
+    public static final String SIGNALING_METADATA_OSN = "OSN";
+
+    /**
+     * Signed Multitable for the requested service(s), LLS_table_id = 0xFE (254).
+     */
+    public static final String SIGNALING_METADATA_SMT = "SMT";
+
+    /**
+     * CertificateData Tablefor the requested service(s), LLS_table_id = 6.
+     */
+    public static final String SIGNALING_METADATA_CDT = "CDT";
 
     private final int mGroup;
-    private @NonNull final int[] mLlsTableIds;
-    private final int mSlsMetadataTypes;
+    private final @NonNull List<String> mSignalingDataTypes;
 
-    SignalingDataRequest(
-            int requestId,
-            int option,
+    /**
+     * Denotes that theres no group associated with this request.
+     */
+    public static final int SIGNALING_DATA_NO_GROUP_ID = -1;
+
+    /**
+     * @hide
+     */
+    @android.annotation.StringDef(prefix = "SIGNALING_METADATA_", value = {
+        SIGNALING_METADATA_APD,
+        SIGNALING_METADATA_USBD,
+        SIGNALING_METADATA_STSID,
+        SIGNALING_METADATA_MPD,
+        SIGNALING_METADATA_USD,
+        SIGNALING_METADATA_PAT,
+        SIGNALING_METADATA_MPT,
+        SIGNALING_METADATA_MPIT,
+        SIGNALING_METADATA_CRIT,
+        SIGNALING_METADATA_DCIT,
+        SIGNALING_METADATA_HELD,
+        SIGNALING_METADATA_DWD,
+        SIGNALING_METADATA_AEI,
+        SIGNALING_METADATA_VSPD,
+        SIGNALING_METADATA_ASD,
+        SIGNALING_METADATA_IED,
+        SIGNALING_METADATA_CAD,
+        SIGNALING_METADATA_ASPD,
+        SIGNALING_METADATA_SSD,
+        SIGNALING_METADATA_EMSG,
+        SIGNALING_METADATA_EVTI,
+        SIGNALING_METADATA_RSAT,
+        SIGNALING_METADATA_RDT,
+        SIGNALING_METADATA_SLT,
+        SIGNALING_METADATA_RRT,
+        SIGNALING_METADATA_STT,
+        SIGNALING_METADATA_AEAT,
+        SIGNALING_METADATA_OSN,
+        SIGNALING_METADATA_SMT,
+        SIGNALING_METADATA_CDT
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface SignalingMetadata {}
+
+    public SignalingDataRequest(int requestId, @RequestOption int option,
             int group,
-            @NonNull int[] llsTableIds,
-            int slsMetadataTypes) {
+            @NonNull List<String> signalingDataTypes) {
         super(REQUEST_TYPE, requestId, option);
-        mGroup = group;
-        mLlsTableIds = llsTableIds;
-        mSlsMetadataTypes = slsMetadataTypes;
-    }
-
-    SignalingDataRequest(@NonNull android.os.Parcel in) {
-        super(REQUEST_TYPE, in);
-
-        int group = in.readInt();
-        int[] llsTableIds = in.createIntArray();
-        int slsMetadataTypes = in.readInt();
-
         this.mGroup = group;
-        this.mLlsTableIds = llsTableIds;
-        com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mLlsTableIds);
-        this.mSlsMetadataTypes = slsMetadataTypes;
+        this.mSignalingDataTypes = signalingDataTypes;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mSignalingDataTypes);
     }
 
+    static SignalingDataRequest createFromParcelBody(Parcel in) {
+        return new SignalingDataRequest(in);
+    }
+
+    /**
+     * Gets the group with which any signaling returned will be associated.
+     *
+     * <p> Requested metadata objects will only be returned if they are part of the group specified.
+     *
+     * <p> If no group is specified ({@link #SIGNALING_DATA_NO_GROUP_ID}),
+     * the receiver will send all the metadata objects discovered.
+     *
+     * @return The group ID which any signaling returned will be associated.
+     */
     public int getGroup() {
         return mGroup;
     }
 
-    public @NonNull int[] getLlsTableIds() {
-        return mLlsTableIds;
-    }
-
-    public int getSlsMetadataTypes() {
-        return mSlsMetadataTypes;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
-        super.writeToParcel(dest, flags);
-        dest.writeInt(mGroup);
-        dest.writeIntArray(mLlsTableIds);
-        dest.writeInt(mSlsMetadataTypes);
+    /**
+     * Gets the signaling data types for which data should be retrieved.
+     *
+     * <p> For more details on each type of metadata that can be requested, refer to the ATSC
+     * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+     *
+     * @return The signaling data types for which data should be retrieved.
+     */
+    public @NonNull List<String> getSignalingDataTypes() {
+        return mSignalingDataTypes;
     }
 
     @Override
     public int describeContents() {
         return 0;
     }
+
+    @Override
+    public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
+        super.writeToParcel(dest, flags);
+        dest.writeInt(mGroup);
+        dest.writeStringList(mSignalingDataTypes);
+    }
+
+    SignalingDataRequest(@NonNull android.os.Parcel in) {
+        super(REQUEST_TYPE, in);
+
+        int group = in.readInt();
+        List<String> signalingDataTypes = new java.util.ArrayList<>();
+        in.readStringList(signalingDataTypes);
+
+        this.mGroup = group;
+        this.mSignalingDataTypes = signalingDataTypes;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mSignalingDataTypes);
+    }
+
 }
diff --git a/media/java/android/media/tv/SignalingDataResponse.java b/media/java/android/media/tv/SignalingDataResponse.java
index 3e4c790..be172ec 100644
--- a/media/java/android/media/tv/SignalingDataResponse.java
+++ b/media/java/android/media/tv/SignalingDataResponse.java
@@ -16,13 +16,24 @@
 
 package android.media.tv;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
+import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.util.ArrayList;
 import java.util.List;
 
-/** @hide */
-public class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable {
+
+/**
+ * A response for the signaling data from the broadcast signal.
+ *
+ * @see SignalingDataRequest
+ * @see SignalingDataInfo
+ */
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable {
     public static final @NonNull Parcelable.Creator<SignalingDataResponse> CREATOR =
             new Parcelable.Creator<SignalingDataResponse>() {
                 @Override
@@ -37,34 +48,44 @@
             };
     private static final @TvInputManager.BroadcastInfoType int RESPONSE_TYPE =
             TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA;
-    private final @NonNull int[] mTableIds;
-    private final int mMetadataTypes;
+    private final @NonNull List<String> mSignalingDataTypes;
     private final @NonNull List<SignalingDataInfo> mSignalingDataInfoList;
 
+    static SignalingDataResponse createFromParcelBody(Parcel in) {
+        return new SignalingDataResponse(in);
+    }
+
     public SignalingDataResponse(
             int requestId,
             int sequence,
             @ResponseResult int responseResult,
-            @NonNull int[] tableIds,
-            int metadataTypes,
+            @NonNull List<String> signalingDataTypes,
             @NonNull List<SignalingDataInfo> signalingDataInfoList) {
         super(RESPONSE_TYPE, requestId, sequence, responseResult);
-        this.mTableIds = tableIds;
-        com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds);
-        this.mMetadataTypes = metadataTypes;
+        mSignalingDataTypes = signalingDataTypes;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mSignalingDataTypes);
         this.mSignalingDataInfoList = signalingDataInfoList;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mSignalingDataInfoList);
     }
 
-    public @NonNull int[] getTableIds() {
-        return mTableIds;
+    /**
+     * Gets a list of types of metadata that are contained in this response.
+     *
+     * <p> A list of types available are defined in {@link SignalingDataRequest}.
+     * For more information about these types, see A/344:2023-5 9.2.10 - Query Signaling Data API.
+     *
+     * @return A list of types of metadata that are contained in this response.
+     */
+    public @NonNull List<String> getSignalingDataTypes() {
+        return mSignalingDataTypes;
     }
 
-    public int getMetadataTypes() {
-        return mMetadataTypes;
-    }
-
+    /**
+     * Gets a list of {@link SignalingDataInfo} contained in this response.
+     * @return A list of {@link SignalingDataInfo} contained in this response.
+     */
     public @NonNull List<SignalingDataInfo> getSignalingDataInfoList() {
         return mSignalingDataInfoList;
     }
@@ -72,8 +93,7 @@
     @Override
     public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
         super.writeToParcel(dest, flags);
-        dest.writeIntArray(mTableIds);
-        dest.writeInt(mMetadataTypes);
+        dest.writeStringList(mSignalingDataTypes);
         dest.writeParcelableList(mSignalingDataInfoList, flags);
     }
 
@@ -85,14 +105,14 @@
     SignalingDataResponse(@NonNull android.os.Parcel in) {
         super(RESPONSE_TYPE, in);
 
-        int[] tableIds = in.createIntArray();
-        int metadataTypes = in.readInt();
+        List<String> types = new ArrayList<String>();
+        in.readStringList(types);
         List<SignalingDataInfo> signalingDataInfoList = new java.util.ArrayList<>();
         in.readParcelableList(signalingDataInfoList, SignalingDataInfo.class.getClassLoader());
 
-        this.mTableIds = tableIds;
-        com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds);
-        this.mMetadataTypes = metadataTypes;
+        this.mSignalingDataTypes = types;
+        com.android.internal.util.AnnotationValidations.validate(
+                NonNull.class, null, mSignalingDataTypes);
         this.mSignalingDataInfoList = signalingDataInfoList;
         com.android.internal.util.AnnotationValidations.validate(
                 NonNull.class, null, mSignalingDataInfoList);
diff --git a/media/java/android/media/tv/ad/TvAdManager.java b/media/java/android/media/tv/ad/TvAdManager.java
index 59b10c6..76664a6 100644
--- a/media/java/android/media/tv/ad/TvAdManager.java
+++ b/media/java/android/media/tv/ad/TvAdManager.java
@@ -18,6 +18,7 @@
 
 import android.annotation.CallbackExecutor;
 import android.annotation.FlaggedApi;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.StringDef;
@@ -59,7 +60,7 @@
  */
 @FlaggedApi(Flags.FLAG_ENABLE_AD_SERVICE_FW)
 @SystemService(Context.TV_AD_SERVICE)
-public class TvAdManager {
+public final class TvAdManager {
     // TODO: implement more methods and unhide APIs.
     private static final String TAG = "TvAdManager";
 
@@ -237,6 +238,76 @@
      */
     public static final String SESSION_DATA_KEY_REQUEST_ID = "request_id";
 
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = false, prefix = "SESSION_STATE_", value = {
+            SESSION_STATE_STOPPED,
+            SESSION_STATE_RUNNING,
+            SESSION_STATE_ERROR})
+    public @interface SessionState {}
+
+    /**
+     * Stopped (or not started) state of AD service session.
+     */
+    public static final int SESSION_STATE_STOPPED = 1;
+    /**
+     * Running state of AD service session.
+     */
+    public static final int SESSION_STATE_RUNNING = 2;
+    /**
+     * Error state of AD service session.
+     */
+    public static final int SESSION_STATE_ERROR = 3;
+
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = false, prefix = "ERROR_", value = {
+            ERROR_NONE,
+            ERROR_UNKNOWN,
+            ERROR_NOT_SUPPORTED,
+            ERROR_WEAK_SIGNAL,
+            ERROR_RESOURCE_UNAVAILABLE,
+            ERROR_BLOCKED,
+            ERROR_ENCRYPTED,
+            ERROR_UNKNOWN_CHANNEL,
+    })
+    public @interface ErrorCode {}
+
+    /**
+     * No error.
+     */
+    public static final int ERROR_NONE = 0;
+    /**
+     * Unknown error code.
+     */
+    public static final int ERROR_UNKNOWN = 1;
+    /**
+     * Error code for an unsupported channel.
+     */
+    public static final int ERROR_NOT_SUPPORTED = 2;
+    /**
+     * Error code for weak signal.
+     */
+    public static final int ERROR_WEAK_SIGNAL = 3;
+    /**
+     * Error code when resource (e.g. tuner) is unavailable.
+     */
+    public static final int ERROR_RESOURCE_UNAVAILABLE = 4;
+    /**
+     * Error code for blocked contents.
+     */
+    public static final int ERROR_BLOCKED = 5;
+    /**
+     * Error code when the key or module is missing for the encrypted channel.
+     */
+    public static final int ERROR_ENCRYPTED = 6;
+    /**
+     * Error code when the current channel is an unknown channel.
+     */
+    public static final int ERROR_UNKNOWN_CHANNEL = 7;
+
     private final ITvAdManager mService;
     private final int mUserId;
 
diff --git a/media/java/android/media/tv/ad/TvAdService.java b/media/java/android/media/tv/ad/TvAdService.java
index 6c8a8fd..2bba0f3 100644
--- a/media/java/android/media/tv/ad/TvAdService.java
+++ b/media/java/android/media/tv/ad/TvAdService.java
@@ -280,7 +280,6 @@
 
         /**
          * Requests the bounds of the current video.
-         * @hide
          */
         @CallSuper
         public void requestCurrentVideoBounds() {
@@ -304,7 +303,6 @@
 
         /**
          * Requests the URI of the current channel.
-         * @hide
          */
         @CallSuper
         public void requestCurrentChannelUri() {
@@ -328,7 +326,6 @@
 
         /**
          * Requests the list of {@link TvTrackInfo}.
-         * @hide
          */
         @CallSuper
         public void requestTrackInfoList() {
@@ -354,7 +351,6 @@
          * Requests current TV input ID.
          *
          * @see android.media.tv.TvInputInfo
-         * @hide
          */
         @CallSuper
         public void requestCurrentTvInputId() {
@@ -393,7 +389,6 @@
          * @param data the original bytes to be signed.
          *
          * @see #onSigningResult(String, byte[])
-         * @hide
          */
         @CallSuper
         public void requestSigning(@NonNull String signingId, @NonNull String algorithm,
@@ -535,28 +530,24 @@
          * Receives current video bounds.
          *
          * @param bounds the rectangle area for rendering the current video.
-         * @hide
          */
         public void onCurrentVideoBounds(@NonNull Rect bounds) {
         }
 
         /**
          * Receives current channel URI.
-         * @hide
          */
         public void onCurrentChannelUri(@Nullable Uri channelUri) {
         }
 
         /**
          * Receives track list.
-         * @hide
          */
         public void onTrackInfoList(@NonNull List<TvTrackInfo> tracks) {
         }
 
         /**
          * Receives current TV input ID.
-         * @hide
          */
         public void onCurrentTvInputId(@Nullable String inputId) {
         }
@@ -569,7 +560,6 @@
          * @param result the signed result.
          *
          * @see #requestSigning(String, String, String, byte[])
-         * @hide
          */
         public void onSigningResult(@NonNull String signingId, @NonNull byte[] result) {
         }
@@ -584,7 +574,6 @@
          *     "onRequestSigning" can also be added to the params.
          *
          * @see TvAdView#ERROR_KEY_METHOD_NAME
-         * @hide
          */
         public void onError(@NonNull String errMsg, @NonNull Bundle params) {
         }
@@ -601,7 +590,6 @@
          *             {@link TvInputManager#TV_MESSAGE_KEY_RAW_DATA}.
          *             See {@link TvInputManager#TV_MESSAGE_KEY_SUBTYPE} for more information on
          *             how to parse this data.
-         * @hide
          */
         public void onTvMessage(@TvInputManager.TvMessageType int type,
                 @NonNull Bundle data) {
@@ -671,6 +659,30 @@
         }
 
         /**
+         * Notifies when the session state is changed.
+         *
+         * @param state the current session state.
+         * @param err the error code for error state. {@link TvAdManager#ERROR_NONE} is
+         *            used when the state is not {@link TvAdManager#SESSION_STATE_ERROR}.
+         */
+        @CallSuper
+        public void notifySessionStateChanged(
+                @TvAdManager.SessionState int state,
+                @TvAdManager.ErrorCode int err) {
+            executeOrPostRunnableOnMainThread(new Runnable() {
+                @MainThread
+                @Override
+                public void run() {
+                    if (DEBUG) {
+                        Log.d(TAG, "notifySessionStateChanged (state="
+                                + state + "; err=" + err + ")");
+                    }
+                    // TODO: handle session callback
+                }
+            });
+        }
+
+        /**
          * Takes care of dispatching incoming input events and tells whether the event was handled.
          */
         int dispatchInputEvent(InputEvent event, InputEventReceiver receiver) {
diff --git a/media/java/android/media/tv/ad/TvAdView.java b/media/java/android/media/tv/ad/TvAdView.java
index ee01468..2fac8ce 100644
--- a/media/java/android/media/tv/ad/TvAdView.java
+++ b/media/java/android/media/tv/ad/TvAdView.java
@@ -61,10 +61,19 @@
      * The name of the method where the error happened, if applicable. For example, if there is an
      * error during signing, the request name is "onRequestSigning".
      * @see #notifyError(String, Bundle)
-     * @hide
      */
     public static final String ERROR_KEY_METHOD_NAME = "method_name";
 
+    /**
+     * The error code of an error.
+     *
+     * <p>It can be {@link TvAdManager#ERROR_WEAK_SIGNAL},
+     * {@link TvAdManager#ERROR_RESOURCE_UNAVAILABLE}, etc.
+     *
+     * @see #notifyError(String, Bundle)
+     */
+    public static final String ERROR_KEY_ERROR_CODE = "error_code";
+
     private final TvAdManager mTvAdManager;
 
     private final Handler mHandler = new Handler();
@@ -486,7 +495,6 @@
      * Sends current video bounds to related TV AD service.
      *
      * @param bounds the rectangle area for rendering the current video.
-     * @hide
      */
     public void sendCurrentVideoBounds(@NonNull Rect bounds) {
         if (DEBUG) {
@@ -502,7 +510,6 @@
      *
      * @param channelUri The current channel URI; {@code null} if there is no currently tuned
      *                   channel.
-     * @hide
      */
     public void sendCurrentChannelUri(@Nullable Uri channelUri) {
         if (DEBUG) {
@@ -515,7 +522,6 @@
 
     /**
      * Sends track info list to related TV AD service.
-     * @hide
      */
     public void sendTrackInfoList(@Nullable List<TvTrackInfo> tracks) {
         if (DEBUG) {
@@ -532,7 +538,6 @@
      * @param inputId The current TV input ID whose channel is tuned. {@code null} if no channel is
      *                tuned.
      * @see android.media.tv.TvInputInfo
-     * @hide
      */
     public void sendCurrentTvInputId(@Nullable String inputId) {
         if (DEBUG) {
@@ -553,7 +558,6 @@
      * @param signingId the ID to identify the request. It's the same as the corresponding ID in
      *        {@link TvAdService.Session#requestSigning(String, String, String, byte[])}
      * @param result the signed result.
-     * @hide
      */
     public void sendSigningResult(@NonNull String signingId, @NonNull byte[] result) {
         if (DEBUG) {
@@ -574,7 +578,7 @@
      *     can also be added to the params.
      *
      * @see #ERROR_KEY_METHOD_NAME
-     * @hide
+     * @see #ERROR_KEY_ERROR_CODE
      */
     public void notifyError(@NonNull String errMsg, @NonNull Bundle params) {
         if (DEBUG) {
@@ -597,7 +601,6 @@
      *             {@link TvInputManager#TV_MESSAGE_KEY_RAW_DATA}.
      *             See {@link TvInputManager#TV_MESSAGE_KEY_SUBTYPE} for more information on
      *             how to parse this data.
-     * @hide
      */
     public void notifyTvMessage(@NonNull @TvInputManager.TvMessageType int type,
             @NonNull Bundle data) {
@@ -633,7 +636,6 @@
      * @param callback the callback to receive events. MUST NOT be {@code null}.
      *
      * @see #clearCallback()
-     * @hide
      */
     public void setCallback(
             @NonNull @CallbackExecutor Executor executor,
@@ -649,7 +651,6 @@
      * Clears the callback.
      *
      * @see #setCallback(Executor, TvAdCallback)
-     * @hide
      */
     public void clearCallback() {
         synchronized (mCallbackLock) {
@@ -845,7 +846,6 @@
 
     /**
      * Callback used to receive various status updates on the {@link TvAdView}.
-     * @hide
      */
     public abstract static class TvAdCallback {
 
@@ -898,5 +898,20 @@
         public void onRequestSigning(@NonNull String serviceId, @NonNull String signingId,
                 @NonNull String algorithm, @NonNull String alias, @NonNull byte[] data) {
         }
+
+        /**
+         * This is called when the state of corresponding AD service is changed.
+         *
+         * @param serviceId The ID of the AD service bound to this view.
+         * @param state the current state.
+         * @param err the error code for error state. {@link TvAdManager#ERROR_NONE}
+         *              is used when the state is not
+         *              {@link TvAdManager#SESSION_STATE_ERROR}.
+         */
+        public void onStateChanged(
+                @NonNull String serviceId,
+                @TvAdManager.SessionState int state,
+                @TvAdManager.ErrorCode int err) {
+        }
     }
 }
diff --git a/media/java/android/service/media/MediaBrowserService.java b/media/java/android/service/media/MediaBrowserService.java
index fa9afa8..a8e9423 100644
--- a/media/java/android/service/media/MediaBrowserService.java
+++ b/media/java/android/service/media/MediaBrowserService.java
@@ -232,52 +232,8 @@
                         + " package=" + pkg);
             }
 
-            service.mHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        final IBinder b = callbacks.asBinder();
-                        // Clear out the old subscriptions. We are getting new ones.
-                        service.mServiceState.mConnections.remove(b);
-
-                        // Temporarily sets a placeholder ConnectionRecord to make
-                        // getCurrentBrowserInfo() work in onGetRoot().
-                        service.mServiceState.mCurConnection =
-                                new ConnectionRecord(
-                                        service, pkg, pid, uid, rootHints, callbacks, null);
-                        BrowserRoot root = service.onGetRoot(pkg, uid, rootHints);
-                        service.mServiceState.mCurConnection = null;
-
-                        // If they didn't return something, don't allow this client.
-                        if (root == null) {
-                            Log.i(TAG, "No root for client " + pkg + " from service "
-                                    + getClass().getName());
-                            try {
-                                callbacks.onConnectFailed();
-                            } catch (RemoteException ex) {
-                                Log.w(TAG, "Calling onConnectFailed() failed. Ignoring. "
-                                        + "pkg=" + pkg);
-                            }
-                        } else {
-                            try {
-                                ConnectionRecord connection =
-                                        new ConnectionRecord(
-                                                service, pkg, pid, uid, rootHints, callbacks, root);
-                                service.mServiceState.mConnections.put(b, connection);
-                                b.linkToDeath(connection, 0);
-                                if (service.mServiceState.mSession != null) {
-                                    callbacks.onConnect(
-                                            connection.root.getRootId(),
-                                            service.mServiceState.mSession,
-                                            connection.root.getExtras());
-                                }
-                            } catch (RemoteException ex) {
-                                Log.w(TAG, "Calling onConnect() failed. Dropping client. "
-                                        + "pkg=" + pkg);
-                                service.mServiceState.mConnections.remove(b);
-                            }
-                        }
-                    }
-                });
+            service.mHandler.post(
+                    () -> service.connectOnHandler(pkg, pid, uid, rootHints, callbacks));
         }
 
         @Override
@@ -315,22 +271,8 @@
                 return;
             }
 
-            service.mHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        final IBinder b = callbacks.asBinder();
-
-                        // Get the record for the connection
-                        ConnectionRecord connection = service.mServiceState.mConnections.get(b);
-                        if (connection == null) {
-                            Log.w(TAG, "addSubscription for callback that isn't registered id="
-                                    + id);
-                            return;
-                        }
-
-                        service.addSubscription(id, connection, token, options);
-                    }
-                });
+            service.mHandler.post(
+                    () -> service.addSubscriptionOnHandler(id, callbacks, token, options));
         }
 
         @Override
@@ -347,23 +289,12 @@
                 return;
             }
 
-            service.mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    final IBinder b = callbacks.asBinder();
-
-                    ConnectionRecord connection = service.mServiceState.mConnections.get(b);
-                    if (connection == null) {
-                        Log.w(TAG, "removeSubscription for callback that isn't registered id="
-                                + id);
-                        return;
-                    }
-                    if (!service.removeSubscription(id, connection, token)) {
-                        Log.w(TAG, "removeSubscription called for " + id
-                                + " which is not subscribed");
-                    }
-                }
-            });
+            service.mHandler.post(
+                    () -> {
+                        if (!service.removeSubscriptionOnHandler(id, callbacks, token)) {
+                            Log.w(TAG, "removeSubscription for id with no subscription: " + id);
+                        }
+                    });
         }
 
         @Override
@@ -374,18 +305,8 @@
                 return;
             }
 
-            service.mHandler.post(new Runnable() {
-                @Override
-                public void run() {
-                    final IBinder b = callbacks.asBinder();
-                    ConnectionRecord connection = service.mServiceState.mConnections.get(b);
-                    if (connection == null) {
-                        Log.w(TAG, "getMediaItem for callback that isn't registered id=" + mediaId);
-                        return;
-                    }
-                    service.performLoadItem(mediaId, connection, receiver);
-                }
-            });
+            service.mHandler.post(
+                    () -> service.performLoadItemOnHandler(mediaId, callbacks, receiver));
         }
     }
 
@@ -527,22 +448,7 @@
             throw new IllegalStateException("The session token has already been set.");
         }
         mServiceState.mSession = token;
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                Iterator<ConnectionRecord> iter = mServiceState.mConnections.values().iterator();
-                while (iter.hasNext()) {
-                    ConnectionRecord connection = iter.next();
-                    try {
-                        connection.callbacks.onConnect(connection.root.getRootId(), token,
-                                connection.root.getExtras());
-                    } catch (RemoteException e) {
-                        Log.w(TAG, "Connection for " + connection.pkg + " is no longer valid.");
-                        iter.remove();
-                    }
-                }
-            }
-        });
+        mHandler.post(() -> notifySessionTokenInitializedOnHandler(token));
     }
 
     /**
@@ -599,7 +505,7 @@
      * children changed.
      */
     public void notifyChildrenChanged(@NonNull String parentId) {
-        notifyChildrenChangedInternal(parentId, null);
+        notifyChildrenChanged(parentId, Bundle.EMPTY);
     }
 
     /**
@@ -617,30 +523,10 @@
         if (options == null) {
             throw new IllegalArgumentException("options cannot be null in notifyChildrenChanged");
         }
-        notifyChildrenChangedInternal(parentId, options);
-    }
-
-    private void notifyChildrenChangedInternal(final String parentId, final Bundle options) {
         if (parentId == null) {
             throw new IllegalArgumentException("parentId cannot be null in notifyChildrenChanged");
         }
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                for (IBinder binder : mServiceState.mConnections.keySet()) {
-                    ConnectionRecord connection = mServiceState.mConnections.get(binder);
-                    List<Pair<IBinder, Bundle>> callbackList =
-                            connection.subscriptions.get(parentId);
-                    if (callbackList != null) {
-                        for (Pair<IBinder, Bundle> callback : callbackList) {
-                            if (MediaBrowserUtils.hasDuplicatedItems(options, callback.second)) {
-                                performLoadChildren(parentId, connection, callback.second);
-                            }
-                        }
-                    }
-                }
-            }
-        });
+        mHandler.post(() -> notifyChildrenChangeOnHandler(parentId, options));
     }
 
     /**
@@ -661,11 +547,45 @@
         return false;
     }
 
-    /**
-     * Save the subscription and if it is a new subscription send the results.
-     */
-    private void addSubscription(String id, ConnectionRecord connection, IBinder token,
-            Bundle options) {
+    private void notifySessionTokenInitializedOnHandler(MediaSession.Token token) {
+        Iterator<ConnectionRecord> iter = mServiceState.mConnections.values().iterator();
+        while (iter.hasNext()) {
+            ConnectionRecord connection = iter.next();
+            try {
+                connection.callbacks.onConnect(
+                        connection.root.getRootId(), token, connection.root.getExtras());
+            } catch (RemoteException e) {
+                Log.w(TAG, "Connection for " + connection.pkg + " is no longer valid.");
+                iter.remove();
+            }
+        }
+    }
+
+    private void notifyChildrenChangeOnHandler(final String parentId, final Bundle options) {
+        for (IBinder binder : mServiceState.mConnections.keySet()) {
+            ConnectionRecord connection = mServiceState.mConnections.get(binder);
+            List<Pair<IBinder, Bundle>> callbackList = connection.subscriptions.get(parentId);
+            if (callbackList != null) {
+                for (Pair<IBinder, Bundle> callback : callbackList) {
+                    if (MediaBrowserUtils.hasDuplicatedItems(options, callback.second)) {
+                        performLoadChildrenOnHandler(parentId, connection, callback.second);
+                    }
+                }
+            }
+        }
+    }
+
+    /** Save the subscription and if it is a new subscription send the results. */
+    private void addSubscriptionOnHandler(
+            String id, IMediaBrowserServiceCallbacks callbacks, IBinder token, Bundle options) {
+        IBinder b = callbacks.asBinder();
+        // Get the record for the connection
+        ConnectionRecord connection = mServiceState.mConnections.get(b);
+        if (connection == null) {
+            Log.w(TAG, "addSubscription for callback that isn't registered id=" + id);
+            return;
+        }
+
         // Save the subscription
         List<Pair<IBinder, Bundle>> callbackList = connection.subscriptions.get(id);
         if (callbackList == null) {
@@ -680,13 +600,66 @@
         callbackList.add(new Pair<>(token, options));
         connection.subscriptions.put(id, callbackList);
         // send the results
-        performLoadChildren(id, connection, options);
+        performLoadChildrenOnHandler(id, connection, options);
     }
 
-    /**
-     * Remove the subscription.
-     */
-    private boolean removeSubscription(String id, ConnectionRecord connection, IBinder token) {
+    private void connectOnHandler(
+            String pkg,
+            int pid,
+            int uid,
+            Bundle rootHints,
+            IMediaBrowserServiceCallbacks callbacks) {
+        IBinder b = callbacks.asBinder();
+        // Clear out the old subscriptions. We are getting new ones.
+        mServiceState.mConnections.remove(b);
+
+        // Temporarily sets a placeholder ConnectionRecord to make getCurrentBrowserInfo() work in
+        // onGetRoot().
+        mServiceState.mCurConnection =
+                new ConnectionRecord(
+                        /* service= */ this, pkg, pid, uid, rootHints, callbacks, /* root= */ null);
+        BrowserRoot root = onGetRoot(pkg, uid, rootHints);
+        mServiceState.mCurConnection = null;
+
+        // If they didn't return something, don't allow this client.
+        if (root == null) {
+            Log.i(TAG, "No root for client " + pkg + " from service " + getClass().getName());
+            try {
+                callbacks.onConnectFailed();
+            } catch (RemoteException ex) {
+                Log.w(TAG, "Calling onConnectFailed() failed. Ignoring. pkg=" + pkg);
+            }
+        } else {
+            try {
+                ConnectionRecord connection =
+                        new ConnectionRecord(
+                                /* service= */ this, pkg, pid, uid, rootHints, callbacks, root);
+                mServiceState.mConnections.put(b, connection);
+                b.linkToDeath(connection, /* flags= */ 0);
+                if (mServiceState.mSession != null) {
+                    callbacks.onConnect(
+                            connection.root.getRootId(),
+                            mServiceState.mSession,
+                            connection.root.getExtras());
+                }
+            } catch (RemoteException ex) {
+                Log.w(TAG, "Calling onConnect() failed. Dropping client. pkg=" + pkg);
+                mServiceState.mConnections.remove(b);
+            }
+        }
+    }
+
+    /** Remove the subscription. */
+    private boolean removeSubscriptionOnHandler(
+            String id, IMediaBrowserServiceCallbacks callbacks, IBinder token) {
+        final IBinder b = callbacks.asBinder();
+
+        ConnectionRecord connection = mServiceState.mConnections.get(b);
+        if (connection == null) {
+            Log.w(TAG, "removeSubscription for callback that isn't registered id=" + id);
+            return true;
+        }
+
         if (token == null) {
             return connection.subscriptions.remove(id) != null;
         }
@@ -700,7 +673,7 @@
                     iter.remove();
                 }
             }
-            if (callbackList.size() == 0) {
+            if (callbackList.isEmpty()) {
                 connection.subscriptions.remove(id);
             }
         }
@@ -709,44 +682,53 @@
 
     /**
      * Call onLoadChildren and then send the results back to the connection.
-     * <p>
-     * Callers must make sure that this connection is still connected.
+     *
+     * <p>Callers must make sure that this connection is still connected.
      */
-    private void performLoadChildren(final String parentId, final ConnectionRecord connection,
-            final Bundle options) {
+    private void performLoadChildrenOnHandler(
+            final String parentId, final ConnectionRecord connection, final Bundle options) {
         final Result<List<MediaBrowser.MediaItem>> result =
-                new Result<List<MediaBrowser.MediaItem>>(parentId) {
-            @Override
-            void onResultSent(List<MediaBrowser.MediaItem> list, @ResultFlags int flag) {
-                if (mServiceState.mConnections.get(connection.callbacks.asBinder()) != connection) {
-                    if (DBG) {
-                        Log.d(TAG, "Not sending onLoadChildren result for connection that has"
-                                + " been disconnected. pkg=" + connection.pkg + " id=" + parentId);
-                    }
-                    return;
-                }
+                new Result<>(parentId) {
+                    @Override
+                    void onResultSent(List<MediaBrowser.MediaItem> list, @ResultFlags int flag) {
+                        if (mServiceState.mConnections.get(connection.callbacks.asBinder())
+                                != connection) {
+                            if (DBG) {
+                                Log.d(
+                                        TAG,
+                                        "Not sending onLoadChildren result for connection that has"
+                                                + " been disconnected. pkg="
+                                                + connection.pkg
+                                                + " id="
+                                                + parentId);
+                            }
+                            return;
+                        }
 
-                List<MediaBrowser.MediaItem> filteredList =
-                        (flag & RESULT_FLAG_OPTION_NOT_HANDLED) != 0
-                                ? MediaBrowserUtils.applyPagingOptions(list, options) : list;
-                final ParceledListSlice<MediaBrowser.MediaItem> pls;
-                if (filteredList == null) {
-                    pls = null;
-                } else {
-                    pls = new ParceledListSlice<>(filteredList);
-                    // Limit the size of initial Parcel to prevent binder buffer overflow
-                    // as onLoadChildren is an async binder call.
-                    pls.setInlineCountLimit(1);
-                }
-                try {
-                    connection.callbacks.onLoadChildren(parentId, pls, options);
-                } catch (RemoteException ex) {
-                    // The other side is in the process of crashing.
-                    Log.w(TAG, "Calling onLoadChildren() failed for id=" + parentId
-                            + " package=" + connection.pkg);
-                }
-            }
-        };
+                        List<MediaBrowser.MediaItem> filteredList =
+                                (flag & RESULT_FLAG_OPTION_NOT_HANDLED) != 0
+                                        ? MediaBrowserUtils.applyPagingOptions(list, options)
+                                        : list;
+                        ParceledListSlice<MediaBrowser.MediaItem> pls = null;
+                        if (filteredList != null) {
+                            pls = new ParceledListSlice<>(filteredList);
+                            // Limit the size of initial Parcel to prevent binder buffer overflow
+                            // as onLoadChildren is an async binder call.
+                            pls.setInlineCountLimit(1);
+                        }
+                        try {
+                            connection.callbacks.onLoadChildren(parentId, pls, options);
+                        } catch (RemoteException ex) {
+                            // The other side is in the process of crashing.
+                            Log.w(
+                                    TAG,
+                                    "Calling onLoadChildren() failed for id="
+                                            + parentId
+                                            + " package="
+                                            + connection.pkg);
+                        }
+                    }
+                };
 
         mServiceState.mCurConnection = connection;
         if (options == null) {
@@ -762,28 +744,41 @@
         }
     }
 
-    private void performLoadItem(String itemId, final ConnectionRecord connection,
-            final ResultReceiver receiver) {
+    private void performLoadItemOnHandler(
+            String itemId, IMediaBrowserServiceCallbacks callbacks, final ResultReceiver receiver) {
+        final IBinder b = callbacks.asBinder();
+        ConnectionRecord connection = mServiceState.mConnections.get(b);
+        if (connection == null) {
+            Log.w(TAG, "getMediaItem for callback that isn't registered id=" + itemId);
+            return;
+        }
+
         final Result<MediaBrowser.MediaItem> result =
-                new Result<MediaBrowser.MediaItem>(itemId) {
-            @Override
-            void onResultSent(MediaBrowser.MediaItem item, @ResultFlags int flag) {
-                if (mServiceState.mConnections.get(connection.callbacks.asBinder()) != connection) {
-                    if (DBG) {
-                        Log.d(TAG, "Not sending onLoadItem result for connection that has"
-                                + " been disconnected. pkg=" + connection.pkg + " id=" + itemId);
+                new Result<>(itemId) {
+                    @Override
+                    void onResultSent(MediaBrowser.MediaItem item, @ResultFlags int flag) {
+                        if (mServiceState.mConnections.get(connection.callbacks.asBinder())
+                                != connection) {
+                            if (DBG) {
+                                Log.d(
+                                        TAG,
+                                        "Not sending onLoadItem result for connection that has"
+                                                + " been disconnected. pkg="
+                                                + connection.pkg
+                                                + " id="
+                                                + itemId);
+                            }
+                            return;
+                        }
+                        if ((flag & RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED) != 0) {
+                            receiver.send(RESULT_ERROR, null);
+                            return;
+                        }
+                        Bundle bundle = new Bundle();
+                        bundle.putParcelable(KEY_MEDIA_ITEM, item);
+                        receiver.send(RESULT_OK, bundle);
                     }
-                    return;
-                }
-                if ((flag & RESULT_FLAG_ON_LOAD_ITEM_NOT_IMPLEMENTED) != 0) {
-                    receiver.send(RESULT_ERROR, null);
-                    return;
-                }
-                Bundle bundle = new Bundle();
-                bundle.putParcelable(KEY_MEDIA_ITEM, item);
-                receiver.send(RESULT_OK, bundle);
-            }
-        };
+                };
 
         mServiceState.mCurConnection = connection;
         onLoadItem(itemId, result);
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 8cdd59e..8396005 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -458,6 +458,24 @@
             presentationTimeUs, flags, errorDetailMsg);
 }
 
+status_t JMediaCodec::queueSecureInputBuffers(
+        size_t index,
+        size_t offset,
+        size_t size,
+        const sp<RefBase> &auInfos_,
+        const sp<RefBase> &cryptoInfos_,
+        AString *errorDetailMsg) {
+    sp<BufferInfosWrapper> auInfos((BufferInfosWrapper *)auInfos_.get());
+    sp<CryptoInfosWrapper> cryptoInfos((CryptoInfosWrapper *)cryptoInfos_.get());
+    return mCodec->queueSecureInputBuffers(
+            index,
+            offset,
+            size,
+            auInfos,
+            cryptoInfos,
+            errorDetailMsg);
+}
+
 status_t JMediaCodec::queueBuffer(
         size_t index, const std::shared_ptr<C2Buffer> &buffer,
         const sp<RefBase> &infos, const sp<AMessage> &tunings, AString *errorDetailMsg) {
@@ -470,19 +488,16 @@
         size_t index,
         const sp<hardware::HidlMemory> &buffer,
         size_t offset,
-        const CryptoPlugin::SubSample *subSamples,
-        size_t numSubSamples,
-        const uint8_t key[16],
-        const uint8_t iv[16],
-        CryptoPlugin::Mode mode,
-        const CryptoPlugin::Pattern &pattern,
+        size_t size,
         const sp<RefBase> &infos,
+        const sp<RefBase> &cryptoInfos_,
         const sp<AMessage> &tunings,
         AString *errorDetailMsg) {
     sp<BufferInfosWrapper> auInfo((BufferInfosWrapper *)infos.get());
+    sp<CryptoInfosWrapper> cryptoInfos((CryptoInfosWrapper *)cryptoInfos_.get());
     return mCodec->queueEncryptedBuffer(
-            index, buffer, offset, subSamples, numSubSamples, key, iv, mode, pattern,
-            auInfo, tunings, errorDetailMsg);
+            index, buffer, offset, size, auInfo, cryptoInfos,
+            tunings, errorDetailMsg);
 }
 
 status_t JMediaCodec::dequeueInputBuffer(size_t *index, int64_t timeoutUs) {
@@ -2262,6 +2277,61 @@
     CryptoPlugin::Pattern mPattern;
 };
 
+// This class takes away all dependencies on java(env and jni) and
+// could be used for taking cryptoInfo objects to MediaCodec.
+struct MediaCodecCryptoInfo: public CodecCryptoInfo {
+    explicit MediaCodecCryptoInfo(const NativeCryptoInfo &cryptoInfo) {
+        if (cryptoInfo.mErr == OK) {
+            mNumSubSamples = cryptoInfo.mNumSubSamples;
+            mMode = cryptoInfo.mMode;
+            mPattern = cryptoInfo.mPattern;
+            if (cryptoInfo.mKey != nullptr) {
+                mKeyBuffer = ABuffer::CreateAsCopy(cryptoInfo.mKey, 16);
+                mKey = (uint8_t*)(mKeyBuffer.get() != nullptr ? mKeyBuffer.get()->data() : nullptr);
+            }
+            if (cryptoInfo.mIv != nullptr) {
+               mIvBuffer = ABuffer::CreateAsCopy(cryptoInfo.mIv, 16);
+               mIv = (uint8_t*)(mIvBuffer.get() != nullptr ? mIvBuffer.get()->data() : nullptr);
+            }
+            if (cryptoInfo.mSubSamples != nullptr) {
+                mSubSamplesBuffer = new ABuffer(sizeof(CryptoPlugin::SubSample) * mNumSubSamples);
+                if (mSubSamplesBuffer.get()) {
+                    CryptoPlugin::SubSample * samples =
+                            (CryptoPlugin::SubSample *)(mSubSamplesBuffer.get()->data());
+                    for (int s = 0 ; s < mNumSubSamples ; s++) {
+                        samples[s].mNumBytesOfClearData =
+                                cryptoInfo.mSubSamples[s].mNumBytesOfClearData;
+                        samples[s].mNumBytesOfEncryptedData =
+                                cryptoInfo.mSubSamples[s].mNumBytesOfEncryptedData;
+                    }
+                    mSubSamples = (CryptoPlugin::SubSample *)mSubSamplesBuffer.get()->data();
+                }
+            }
+
+        }
+    }
+
+    explicit MediaCodecCryptoInfo(jint size) {
+        mSubSamplesBuffer = new ABuffer(sizeof(CryptoPlugin::SubSample) * 1);
+        mNumSubSamples = 1;
+        if (mSubSamplesBuffer.get()) {
+            CryptoPlugin::SubSample * samples =
+                    (CryptoPlugin::SubSample *)(mSubSamplesBuffer.get()->data());
+            samples[0].mNumBytesOfClearData = size;
+            samples[0].mNumBytesOfEncryptedData = 0;
+            mSubSamples = (CryptoPlugin::SubSample *)mSubSamplesBuffer.get()->data();
+        }
+    }
+    ~MediaCodecCryptoInfo() {}
+
+protected:
+    // all backup buffers for the base object.
+    sp<ABuffer> mKeyBuffer;
+    sp<ABuffer> mIvBuffer;
+    sp<ABuffer> mSubSamplesBuffer;
+
+};
+
 static void android_media_MediaCodec_queueSecureInputBuffer(
         JNIEnv *env,
         jobject thiz,
@@ -2430,6 +2500,99 @@
             codec->getExceptionMessage(errorDetailMsg.c_str()).c_str(), codec->getCrypto());
 }
 
+static status_t extractCryptoInfosFromObjectArray(JNIEnv * const env,
+        jint * const totalSize,
+        std::vector<std::unique_ptr<CodecCryptoInfo>> * const cryptoInfoObjs,
+        const jobjectArray &objArray,
+        AString * const errorDetailMsg) {
+    if (env == nullptr
+            || cryptoInfoObjs == nullptr
+            || totalSize == nullptr) {
+        if (errorDetailMsg) {
+            *errorDetailMsg = "Error: Null Parameters provided for extracting CryptoInfo";
+        }
+        return BAD_VALUE;
+    }
+    const jsize numEntries = env->GetArrayLength(objArray);
+    if (numEntries <= 0) {
+        if (errorDetailMsg) {
+            *errorDetailMsg = "Error: No CryptoInfo found while queuing for large frame input";
+        }
+        return BAD_VALUE;
+    }
+    cryptoInfoObjs->clear();
+    *totalSize = 0;
+    jint size = 0;
+    for (jsize i = 0; i < numEntries ; i++) {
+        jobject param = env->GetObjectArrayElement(objArray, i);
+        if (param == NULL) {
+            if (errorDetailMsg) {
+                *errorDetailMsg = "Error: Null Parameters provided for extracting CryptoInfo";
+            }
+            return BAD_VALUE;
+        }
+        NativeCryptoInfo nativeInfo(env, param);
+        std::unique_ptr<CodecCryptoInfo> info(new MediaCodecCryptoInfo(nativeInfo));
+        for (int i = 0; i < info->mNumSubSamples; i++) {
+            size += info->mSubSamples[i].mNumBytesOfClearData;
+            size += info->mSubSamples[i].mNumBytesOfEncryptedData;
+        }
+        cryptoInfoObjs->push_back(std::move(info));
+    }
+    *totalSize = size;
+    return OK;
+}
+
+
+static void android_media_MediaCodec_queueSecureInputBuffers(
+        JNIEnv *env,
+        jobject thiz,
+        jint index,
+        jobjectArray bufferInfosObjs,
+        jobjectArray cryptoInfoObjs) {
+    ALOGV("android_media_MediaCodec_queueSecureInputBuffers");
+
+    sp<JMediaCodec> codec = getMediaCodec(env, thiz);
+
+    if (codec == NULL || codec->initCheck() != OK) {
+        throwExceptionAsNecessary(env, INVALID_OPERATION, codec);
+        return;
+    }
+    sp<BufferInfosWrapper> auInfos =
+            new BufferInfosWrapper{decltype(auInfos->value)()};
+    sp<CryptoInfosWrapper> cryptoInfos =
+        new CryptoInfosWrapper{decltype(cryptoInfos->value)()};
+    AString errorDetailMsg;
+    jint initialOffset = 0;
+    jint totalSize = 0;
+    status_t err = extractInfosFromObject(
+            env,
+            &initialOffset,
+            &totalSize,
+            &auInfos->value,
+            bufferInfosObjs,
+            &errorDetailMsg);
+    if (err == OK) {
+        err = extractCryptoInfosFromObjectArray(env,
+            &totalSize,
+            &cryptoInfos->value,
+            cryptoInfoObjs,
+            &errorDetailMsg);
+    }
+    if (err == OK) {
+        err = codec->queueSecureInputBuffers(
+                index,
+                initialOffset,
+                totalSize,
+                auInfos,
+                cryptoInfos,
+                &errorDetailMsg);
+    }
+    throwExceptionAsNecessary(
+            env, err, ACTION_CODE_FATAL,
+            codec->getExceptionMessage(errorDetailMsg.c_str()).c_str(), codec->getCrypto());
+}
+
 static jobject android_media_MediaCodec_mapHardwareBuffer(JNIEnv *env, jclass, jobject bufferObj) {
     ALOGV("android_media_MediaCodec_mapHardwareBuffer");
     AHardwareBuffer *hardwareBuffer = android_hardware_HardwareBuffer_getNativeHardwareBuffer(
@@ -2762,7 +2925,7 @@
 
 static void android_media_MediaCodec_native_queueLinearBlock(
         JNIEnv *env, jobject thiz, jint index, jobject bufferObj,
-        jobject cryptoInfoObj, jobjectArray objArray, jobject keys, jobject values) {
+        jobjectArray cryptoInfoArray, jobjectArray objArray, jobject keys, jobject values) {
     ALOGV("android_media_MediaCodec_native_queueLinearBlock");
 
     sp<JMediaCodec> codec = getMediaCodec(env, thiz);
@@ -2780,8 +2943,8 @@
                 "error occurred while converting tunings from Java to native");
         return;
     }
-    jint totalSize;
-    jint initialOffset;
+    jint totalSize = 0;
+    jint initialOffset = 0;
     std::vector<AccessUnitInfo> infoVec;
     AString errorDetailMsg;
     err = extractInfosFromObject(env,
@@ -2832,8 +2995,19 @@
                     "MediaCodec.LinearBlock#obtain method to obtain a compatible buffer.");
             return;
         }
-        auto cryptoInfo =
-                cryptoInfoObj ? NativeCryptoInfo{env, cryptoInfoObj} : NativeCryptoInfo{totalSize};
+        sp<CryptoInfosWrapper> cryptoInfos = new CryptoInfosWrapper{decltype(cryptoInfos->value)()};
+        jint sampleSize = 0;
+        if (cryptoInfoArray != nullptr) {
+            extractCryptoInfosFromObjectArray(env,
+                    &sampleSize,
+                    &cryptoInfos->value,
+                    cryptoInfoArray,
+                    &errorDetailMsg);
+        } else {
+            sampleSize = totalSize;
+            std::unique_ptr<CodecCryptoInfo> cryptoInfo{new MediaCodecCryptoInfo(totalSize)};
+            cryptoInfos->value.push_back(std::move(cryptoInfo));
+        }
         if (env->ExceptionCheck()) {
             // Creation of cryptoInfo failed. Let the exception bubble up.
             return;
@@ -2842,11 +3016,9 @@
                 index,
                 memory,
                 initialOffset,
-                cryptoInfo.mSubSamples, cryptoInfo.mNumSubSamples,
-                (const uint8_t *)cryptoInfo.mKey, (const uint8_t *)cryptoInfo.mIv,
-                cryptoInfo.mMode,
-                cryptoInfo.mPattern,
+                sampleSize,
                 infos,
+                cryptoInfos,
                 tunings,
                 &errorDetailMsg);
         ALOGI_IF(err != OK, "queueEncryptedLinearBlock returned err = %d", err);
@@ -3950,6 +4122,9 @@
     { "native_queueSecureInputBuffer", "(IILandroid/media/MediaCodec$CryptoInfo;JI)V",
       (void *)android_media_MediaCodec_queueSecureInputBuffer },
 
+    { "native_queueSecureInputBuffers", "(I[Ljava/lang/Object;[Ljava/lang/Object;)V",
+      (void *)android_media_MediaCodec_queueSecureInputBuffers },
+
     { "native_mapHardwareBuffer",
       "(Landroid/hardware/HardwareBuffer;)Landroid/media/Image;",
       (void *)android_media_MediaCodec_mapHardwareBuffer },
@@ -3957,7 +4132,7 @@
     { "native_closeMediaImage", "(J)V", (void *)android_media_MediaCodec_closeMediaImage },
 
     { "native_queueLinearBlock",
-      "(ILandroid/media/MediaCodec$LinearBlock;Landroid/media/MediaCodec$CryptoInfo;"
+      "(ILandroid/media/MediaCodec$LinearBlock;[Ljava/lang/Object;"
       "[Ljava/lang/Object;Ljava/util/ArrayList;Ljava/util/ArrayList;)V",
       (void *)android_media_MediaCodec_native_queueLinearBlock },
 
diff --git a/media/jni/android_media_MediaCodec.h b/media/jni/android_media_MediaCodec.h
index 02708ef..abb23f5 100644
--- a/media/jni/android_media_MediaCodec.h
+++ b/media/jni/android_media_MediaCodec.h
@@ -114,6 +114,14 @@
             uint32_t flags,
             AString *errorDetailMsg);
 
+    status_t queueSecureInputBuffers(
+            size_t index,
+            size_t offset,
+            size_t size,
+            const sp<RefBase> &auInfos,
+            const sp<RefBase> &cryptoInfos,
+            AString *errorDetailMsg);
+
     status_t queueBuffer(
             size_t index, const std::shared_ptr<C2Buffer> &buffer,
             const sp<RefBase> &infos, const sp<AMessage> &tunings,
@@ -123,13 +131,9 @@
             size_t index,
             const sp<hardware::HidlMemory> &buffer,
             size_t offset,
-            const CryptoPlugin::SubSample *subSamples,
-            size_t numSubSamples,
-            const uint8_t key[16],
-            const uint8_t iv[16],
-            CryptoPlugin::Mode mode,
-            const CryptoPlugin::Pattern &pattern,
+            size_t size,
             const sp<RefBase> &infos,
+            const sp<RefBase> &cryptoInfos,
             const sp<AMessage> &tunings,
             AString *errorDetailMsg);
 
diff --git a/native/android/input.cpp b/native/android/input.cpp
index 64e8efe..6efb028 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -314,6 +314,23 @@
     return event;
 }
 
+jobject AInputEvent_toJava(JNIEnv* env, const AInputEvent* aInputEvent) {
+    LOG_ALWAYS_FATAL_IF(aInputEvent == nullptr, "Expected aInputEvent to be non-null");
+    const int32_t eventType = AInputEvent_getType(aInputEvent);
+    switch (eventType) {
+        case AINPUT_EVENT_TYPE_MOTION:
+            return android::android_view_MotionEvent_obtainAsCopy(env,
+                                                                  static_cast<const MotionEvent&>(
+                                                                          *aInputEvent));
+        case AINPUT_EVENT_TYPE_KEY:
+            return android::android_view_KeyEvent_fromNative(env,
+                                                             static_cast<const KeyEvent&>(
+                                                                     *aInputEvent));
+        default:
+            LOG_ALWAYS_FATAL("Unexpected event type %d in AInputEvent_toJava.", eventType);
+    }
+}
+
 void AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
         int ident, ALooper_callbackFunc callback, void* data) {
     InputQueue* iq = static_cast<InputQueue*>(queue);
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index 9605108..3302265 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -90,6 +90,7 @@
     AInputEvent_getSource;
     AInputEvent_getType;
     AInputEvent_release; # introduced=31
+    AInputEvent_toJava; # introduced=35
     AInputQueue_attachLooper;
     AInputQueue_detachLooper;
     AInputQueue_finishEvent;
diff --git a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
index 3254a39..f264b16 100644
--- a/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
+++ b/nfc/java/android/nfc/cardemulation/ApduServiceInfo.java
@@ -44,6 +44,8 @@
 import android.util.Xml;
 import android.util.proto.ProtoOutputStream;
 
+import com.android.internal.R;
+
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -138,6 +140,11 @@
     private boolean mCategoryOtherServiceEnabled;
 
     /**
+     * Whether the NFC stack should default to Observe Mode when this preferred service.
+     */
+    private boolean mDefaultToObserveMode;
+
+    /**
      * @hide
      */
     @UnsupportedAppUsage
@@ -257,6 +264,9 @@
                         com.android.internal.R.styleable.HostApduService_settingsActivity);
                 mOffHostName = null;
                 mStaticOffHostName = mOffHostName;
+                mDefaultToObserveMode = sa.getBoolean(
+                        R.styleable.HostApduService_defaultToObserveMode,
+                        false);
                 sa.recycle();
             } else {
                 TypedArray sa = res.obtainAttributes(attrs,
@@ -276,6 +286,9 @@
                         com.android.internal.R.styleable.HostApduService_settingsActivity);
                 mOffHostName = sa.getString(
                         com.android.internal.R.styleable.OffHostApduService_secureElementName);
+                mDefaultToObserveMode = sa.getBoolean(
+                        R.styleable.HostApduService_defaultToObserveMode,
+                        false);
                 if (mOffHostName != null) {
                     if (mOffHostName.equals("eSE")) {
                         mOffHostName = "eSE1";
@@ -611,6 +624,25 @@
     }
 
     /**
+     * Returns whether the NFC stack should default to observe mode when this servise is preferred.
+     * @return whether the NFC stack should default to observe mode when this servise is preferred
+     */
+    @FlaggedApi(Flags.FLAG_NFC_OBSERVE_MODE)
+    public boolean defaultToObserveMode() {
+        return mDefaultToObserveMode;
+    }
+
+    /**
+     * Sets whether the NFC stack should default to observe mode when this servise is preferred.
+     * @param defaultToObserveMode whether the NFC stack should default to observe mode when this
+     *                             servise is preferred
+     */
+    @FlaggedApi(Flags.FLAG_NFC_OBSERVE_MODE)
+    public void setDefaultToObserveMode(boolean defaultToObserveMode) {
+        mDefaultToObserveMode = defaultToObserveMode;
+    }
+
+    /**
      * Returns description of service.
      * @return user readable description of service
      */
diff --git a/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt b/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt
index 8fde5d7..121f207 100644
--- a/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt
+++ b/packages/CredentialManager/src/com/android/credentialmanager/autofill/CredentialAutofillService.kt
@@ -19,9 +19,10 @@
 import android.app.PendingIntent
 import android.app.assist.AssistStructure
 import android.content.Context
-import android.content.Intent
 import android.credentials.CredentialManager
 import android.credentials.GetCredentialRequest
+import android.credentials.GetCredentialResponse
+import android.credentials.GetCredentialException
 import android.credentials.GetCandidateCredentialsResponse
 import android.credentials.GetCandidateCredentialsException
 import android.credentials.CredentialOption
@@ -45,6 +46,7 @@
 import android.service.autofill.SaveRequest
 import android.service.credentials.CredentialProviderService
 import android.util.Log
+import android.content.Intent
 import android.view.autofill.AutofillId
 import android.view.autofill.IAutoFillManagerClient
 import android.widget.RemoteViews
@@ -64,7 +66,6 @@
 import org.json.JSONException
 import org.json.JSONObject
 
-
 class CredentialAutofillService : AutofillService() {
 
     companion object {
@@ -118,10 +119,16 @@
         responseClientState.putBoolean(WEBVIEW_REQUESTED_CREDENTIAL_KEY, false)
         val getCredRequest: GetCredentialRequest? = getCredManRequest(structure, sessionId,
                 requestId, responseClientState)
+        // TODO(b/324635774): Use callback for validating. If the request is coming
+        // directly from the view, there should be a corresponding callback, otherwise
+        // we should fail fast,
+        val getCredCallback = getCredManCallback(structure)
         if (getCredRequest == null) {
             Log.i(TAG, "No credential manager request found")
             callback.onFailure("No credential manager request found")
             return
+        } else if (getCredCallback == null) {
+            Log.i(TAG, "No credential manager callback found")
         }
         val credentialManager: CredentialManager =
                 getSystemService(Context.CREDENTIAL_SERVICE) as CredentialManager
@@ -505,6 +512,42 @@
         TODO("Not yet implemented")
     }
 
+    private fun getCredManCallback(structure: AssistStructure): OutcomeReceiver<
+            GetCredentialResponse, GetCredentialException>? {
+        return traverseStructureForCallback(structure)
+    }
+
+    private fun traverseStructureForCallback(
+            structure: AssistStructure
+    ): OutcomeReceiver<GetCredentialResponse, GetCredentialException>? {
+        val windowNodes: List<AssistStructure.WindowNode> =
+                structure.run {
+                    (0 until windowNodeCount).map { getWindowNodeAt(it) }
+                }
+
+        windowNodes.forEach { windowNode: AssistStructure.WindowNode ->
+            return traverseNodeForCallback(windowNode.rootViewNode)
+        }
+        return null
+    }
+
+    private fun traverseNodeForCallback(
+            viewNode: AssistStructure.ViewNode
+    ): OutcomeReceiver<GetCredentialResponse, GetCredentialException>? {
+        val children: List<AssistStructure.ViewNode> =
+                viewNode.run {
+                    (0 until childCount).map { getChildAt(it) }
+                }
+
+        children.forEach { childNode: AssistStructure.ViewNode ->
+            if (childNode.isFocused() && childNode.credentialManagerCallback != null) {
+                return childNode.credentialManagerCallback
+            }
+            return traverseNodeForCallback(childNode)
+        }
+        return null
+    }
+
     private fun getCredManRequest(
             structure: AssistStructure,
             sessionId: Int,
@@ -512,7 +555,7 @@
             responseClientState: Bundle
     ): GetCredentialRequest? {
         val credentialOptions: MutableList<CredentialOption> = mutableListOf()
-        traverseStructure(structure, credentialOptions, responseClientState)
+        traverseStructureForRequest(structure, credentialOptions, responseClientState)
 
         if (credentialOptions.isNotEmpty()) {
             val dataBundle = Bundle()
@@ -525,7 +568,7 @@
         return null
     }
 
-    private fun traverseStructure(
+    private fun traverseStructureForRequest(
             structure: AssistStructure,
             cmRequests: MutableList<CredentialOption>,
             responseClientState: Bundle
@@ -536,18 +579,17 @@
                 }
 
         windowNodes.forEach { windowNode: AssistStructure.WindowNode ->
-            traverseNode(windowNode.rootViewNode, cmRequests, responseClientState)
+            traverseNodeForRequest(windowNode.rootViewNode, cmRequests, responseClientState)
         }
     }
 
-    private fun traverseNode(
+    private fun traverseNodeForRequest(
             viewNode: AssistStructure.ViewNode,
             cmRequests: MutableList<CredentialOption>,
             responseClientState: Bundle
     ) {
         viewNode.autofillId?.let {
-            val options = getCredentialOptionsFromViewNode(viewNode, it, responseClientState)
-            cmRequests.addAll(options)
+            cmRequests.addAll(getCredentialOptionsFromViewNode(viewNode, it, responseClientState))
         }
 
         val children: List<AssistStructure.ViewNode> =
@@ -556,7 +598,7 @@
                 }
 
         children.forEach { childNode: AssistStructure.ViewNode ->
-            traverseNode(childNode, cmRequests, responseClientState)
+            traverseNodeForRequest(childNode, cmRequests, responseClientState)
         }
     }
 
@@ -564,8 +606,16 @@
             viewNode: AssistStructure.ViewNode,
             autofillId: AutofillId,
             responseClientState: Bundle
-    ): List<CredentialOption> {
+    ): MutableList<CredentialOption> {
+        if (viewNode.credentialManagerRequest != null &&
+                viewNode.credentialManagerCallback != null) {
+            val options = viewNode.credentialManagerRequest?.getCredentialOptions()
+            if (options != null) {
+                return options
+            }
+        }
         val credentialHints: MutableList<String> = mutableListOf()
+
         if (viewNode.autofillHints != null) {
             for (hint in viewNode.autofillHints!!) {
                 if (hint.startsWith(CRED_HINT_PREFIX)) {
diff --git a/packages/CredentialManager/tests/robotests/Android.bp b/packages/CredentialManager/tests/robotests/Android.bp
new file mode 100644
index 0000000..baebfeb
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/Android.bp
@@ -0,0 +1,58 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_base_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+android_app {
+    name: "CredentialManagerRobo",
+    srcs: [],
+    static_libs: [
+        "SystemUI-core",
+        "CredentialManager-handheld",
+        "ScreenshotComposeUtilsLib",
+        "androidx.test.espresso.core",
+        "androidx.compose.material3_material3",
+        "platform-screenshot-diff-core",
+    ],
+    manifest: "robo-manifest.xml",
+    dont_merge_manifests: true,
+    platform_apis: true,
+    system_ext_specific: true,
+    certificate: "platform",
+    privileged: true,
+    kotlincflags: ["-Xjvm-default=all"],
+    asset_dirs: ["customization/assets"],
+    resource_dirs: ["screenshot/customization/res"],
+    use_resource_processor: true,
+}
+
+// This is a RNG (Robolectric native graphics) test target.
+android_robolectric_test {
+    name: "CredentialManagerScreenshotTest",
+    srcs: [
+        ":CredentialManagerScreenshotTestFiles",
+    ],
+
+    // Do not add any libraries here, instead add them to the ScreenshotTestStub
+    static_libs: [
+        "androidx.compose.runtime_runtime",
+        "androidx.test.uiautomator_uiautomator",
+        "androidx.test.ext.junit",
+        "inline-mockito-robolectric-prebuilt",
+        "platform-parametric-runner-lib",
+        "uiautomator-helpers",
+    ],
+    libs: [
+        "android.test.runner",
+        "android.test.base",
+        "android.test.mock",
+        "truth",
+    ],
+    upstream: true,
+    java_resource_dirs: ["config"],
+    instrumentation_for: "CredentialManagerRobo",
+}
diff --git a/packages/CredentialManager/tests/robotests/config/robolectric.properties b/packages/CredentialManager/tests/robotests/config/robolectric.properties
new file mode 100644
index 0000000..83065ac
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/config/robolectric.properties
@@ -0,0 +1,16 @@
+# Copyright (C) 2024 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.
+#
+sdk=NEWEST_SDK
+graphicsMode=NATIVE
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_landscape_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_landscape_singleCredentialScreen.png
new file mode 100644
index 0000000..975ce9f
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_landscape_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_portrait_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_portrait_singleCredentialScreen.png
new file mode 100644
index 0000000..4b8e8a0
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/phone/dark_portrait_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/phone/light_landscape_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/phone/light_landscape_singleCredentialScreen.png
new file mode 100644
index 0000000..cd98581
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/phone/light_landscape_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/phone/light_portrait_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/phone/light_portrait_singleCredentialScreen.png
new file mode 100644
index 0000000..643b5ce
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/phone/light_portrait_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_landscape_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_landscape_singleCredentialScreen.png
new file mode 100644
index 0000000..7b05f26
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_landscape_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_portrait_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_portrait_singleCredentialScreen.png
new file mode 100644
index 0000000..d575d28
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/tablet/dark_portrait_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_landscape_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_landscape_singleCredentialScreen.png
new file mode 100644
index 0000000..fb0da8c
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_landscape_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_portrait_singleCredentialScreen.png b/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_portrait_singleCredentialScreen.png
new file mode 100644
index 0000000..136e52b
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/customization/assets/tablet/light_portrait_singleCredentialScreen.png
Binary files differ
diff --git a/packages/CredentialManager/tests/robotests/robo-manifest.xml b/packages/CredentialManager/tests/robotests/robo-manifest.xml
new file mode 100644
index 0000000..12c0250
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/robo-manifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2024 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:androidprv="http://schemas.android.com/apk/prv/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
+          package="com.android.credentialmanager.tests.screenshot">
+    <uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR"/>
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
+    <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS" />
+
+    <application>
+        <activity
+            android:name="platform.test.screenshot.ScreenshotActivity"
+            android:exported="true"
+            android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize"
+            android:theme="@style/Theme.PlatformUi.Screenshot">
+        </activity>
+    </application>
+
+</manifest>
diff --git a/packages/CredentialManager/tests/robotests/screenshot/Android.bp b/packages/CredentialManager/tests/robotests/screenshot/Android.bp
new file mode 100644
index 0000000..666ced4
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/Android.bp
@@ -0,0 +1,15 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_base_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+filegroup {
+    name: "CredentialManagerScreenshotTestFiles",
+    srcs: [
+        "src/**/*.kt",
+    ],
+}
diff --git a/packages/CredentialManager/tests/robotests/screenshot/AndroidManifest.xml b/packages/CredentialManager/tests/robotests/screenshot/AndroidManifest.xml
new file mode 100644
index 0000000..12c0250
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/AndroidManifest.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2024 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:androidprv="http://schemas.android.com/apk/prv/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
+          package="com.android.credentialmanager.tests.screenshot">
+    <uses-permission android:name="android.permission.LAUNCH_CREDENTIAL_SELECTOR"/>
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
+    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS"/>
+    <uses-permission android:name="android.permission.ACCESS_INSTANT_APPS" />
+
+    <application>
+        <activity
+            android:name="platform.test.screenshot.ScreenshotActivity"
+            android:exported="true"
+            android:configChanges="orientation|screenSize|screenLayout|smallestScreenSize"
+            android:theme="@style/Theme.PlatformUi.Screenshot">
+        </activity>
+    </application>
+
+</manifest>
diff --git a/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider1.xml b/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider1.xml
new file mode 100644
index 0000000..a1e1b41
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider1.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2024 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="50dp"
+        android:height="50dp"
+        android:viewportWidth="50"
+        android:viewportHeight="50">
+    <path
+        android:pathData="M32.411,8.729L41,11.95V20H9V11.95L17.592,8.728L15.486,5.115C15.423,4.924 15.417,4.734 15.47,4.544C15.524,4.353 15.635,4.205 15.805,4.099C15.995,3.993 16.202,3.972 16.425,4.036C16.648,4.099 16.812,4.226 16.918,4.417L19.105,8.161L25,5.95L30.897,8.161L33.114,4.417C33.22,4.226 33.384,4.099 33.607,4.036C33.829,3.972 34.036,3.993 34.227,4.099C34.397,4.205 34.519,4.358 34.593,4.559C34.667,4.76 34.652,4.946 34.546,5.115L32.411,8.729ZM9,22V23.85C9,28.917 10.5,33.575 13.5,37.825C16.5,42.075 20.333,44.783 25,45.95C29.667,44.783 33.5,42.075 36.5,37.825C39.5,33.575 41,28.917 41,23.85V22H9ZM19.705,15.698C19.386,16.015 19.015,16.174 18.591,16.174C18.167,16.174 17.795,16.015 17.477,15.698C17.159,15.38 17,15.01 17,14.587C17,14.164 17.159,13.793 17.477,13.476C17.795,13.159 18.167,13 18.591,13C19.015,13 19.386,13.159 19.705,13.476C20.023,13.793 20.182,14.164 20.182,14.587C20.182,15.01 20.023,15.38 19.705,15.698ZM32.432,15.698C32.114,16.015 31.742,16.174 31.318,16.174C30.894,16.174 30.523,16.015 30.205,15.698C29.886,15.38 29.727,15.01 29.727,14.587C29.727,14.164 29.886,13.793 30.205,13.476C30.523,13.159 30.894,13 31.318,13C31.742,13 32.114,13.159 32.432,13.476C32.75,13.793 32.909,14.164 32.909,14.587C32.909,15.01 32.75,15.38 32.432,15.698Z"
+        android:fillColor="#8BC34A"
+        android:fillType="evenOdd"/>
+</vector>
diff --git a/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider2.xml b/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider2.xml
new file mode 100644
index 0000000..cdcf83f
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/customization/res/drawable/provider2.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2024 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="50dp"
+        android:height="50dp"
+        android:viewportWidth="50"
+        android:viewportHeight="50">
+    <path
+        android:pathData="M32.411,8.729L41,11.95V20H9V11.95L17.592,8.728L15.486,5.115C15.423,4.924 15.417,4.734 15.47,4.544C15.524,4.353 15.635,4.205 15.805,4.099C15.995,3.993 16.202,3.972 16.425,4.036C16.648,4.099 16.812,4.226 16.918,4.417L19.105,8.161L25,5.95L30.897,8.161L33.114,4.417C33.22,4.226 33.384,4.099 33.607,4.036C33.829,3.972 34.036,3.993 34.227,4.099C34.397,4.205 34.519,4.358 34.593,4.559C34.667,4.76 34.652,4.946 34.546,5.115L32.411,8.729ZM9,22V23.85C9,28.917 10.5,33.575 13.5,37.825C16.5,42.075 20.333,44.783 25,45.95C29.667,44.783 33.5,42.075 36.5,37.825C39.5,33.575 41,28.917 41,23.85V22H9ZM19.705,15.698C19.386,16.015 19.015,16.174 18.591,16.174C18.167,16.174 17.795,16.015 17.477,15.698C17.159,15.38 17,15.01 17,14.587C17,14.164 17.159,13.793 17.477,13.476C17.795,13.159 18.167,13 18.591,13C19.015,13 19.386,13.159 19.705,13.476C20.023,13.793 20.182,14.164 20.182,14.587C20.182,15.01 20.023,15.38 19.705,15.698ZM32.432,15.698C32.114,16.015 31.742,16.174 31.318,16.174C30.894,16.174 30.523,16.015 30.205,15.698C29.886,15.38 29.727,15.01 29.727,14.587C29.727,14.164 29.886,13.793 30.205,13.476C30.523,13.159 30.894,13 31.318,13C31.742,13 32.114,13.159 32.432,13.476C32.75,13.793 32.909,14.164 32.909,14.587C32.909,15.01 32.75,15.38 32.432,15.698Z"
+        android:fillColor="#8B034A"
+        android:fillType="evenOdd"/>
+</vector>
diff --git a/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/CredentialManagerGoldenImagePathManager.kt b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/CredentialManagerGoldenImagePathManager.kt
new file mode 100644
index 0000000..6aef24d
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/CredentialManagerGoldenImagePathManager.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager
+
+import android.os.Build
+import androidx.test.platform.app.InstrumentationRegistry
+import platform.test.screenshot.GoldenImagePathManager
+import platform.test.screenshot.PathConfig
+
+/** The assets path to be used by all CredentialManager screenshot tests. */
+private const val ASSETS_PREFIX = "frameworks/base/packages/CredentialManager"
+private const val ASSETS_PATH = "${ASSETS_PREFIX}/tests/robotests/screenshot/customization/assets"
+private const val ASSETS_PATH_ROBO =
+        "${ASSETS_PREFIX}/tests/robotests/customization/assets"
+
+private val isRobolectric = Build.FINGERPRINT.contains("robolectric")
+
+class CredentialManagerGoldenImagePathManager(
+        pathConfig: PathConfig,
+        assetsPathRelativeToBuildRoot: String = if (isRobolectric) ASSETS_PATH_ROBO else ASSETS_PATH
+) : GoldenImagePathManager(
+        appContext = InstrumentationRegistry.getInstrumentation().context,
+        assetsPathRelativeToBuildRoot = assetsPathRelativeToBuildRoot,
+        deviceLocalPath =
+        InstrumentationRegistry.getInstrumentation()
+                .targetContext
+                .filesDir
+                .absolutePath
+                .toString() + "/credman_screenshots",
+        pathConfig = pathConfig,
+) {
+    override fun toString(): String {
+        // This string is appended to all actual/expected screenshots on the device, so make sure
+        // it is a static value.
+        return "CredentialManagerGoldenImagePathManager"
+    }
+}
\ No newline at end of file
diff --git a/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt
new file mode 100644
index 0000000..a0e1fed
--- /dev/null
+++ b/packages/CredentialManager/tests/robotests/screenshot/src/com/android/credentialmanager/GetCredScreenshotTest.kt
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager
+
+import android.content.Context
+import com.android.credentialmanager.getflow.RequestDisplayInfo
+import com.android.credentialmanager.model.CredentialType
+import com.android.credentialmanager.model.get.ProviderInfo
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import platform.test.screenshot.getEmulatedDevicePathConfig
+import platform.test.screenshot.utils.compose.ComposeScreenshotTestRule
+import com.android.credentialmanager.getflow.toProviderDisplayInfo
+import com.android.credentialmanager.getflow.toActiveEntry
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import platform.test.runner.parameterized.ParameterizedAndroidJunit4
+import platform.test.runner.parameterized.Parameters
+import platform.test.screenshot.DeviceEmulationSpec
+import platform.test.screenshot.PhoneAndTabletFull
+import androidx.test.core.app.ApplicationProvider
+import com.android.credentialmanager.common.ui.ModalBottomSheet
+import com.android.credentialmanager.getflow.PrimarySelectionCard
+import com.android.credentialmanager.tests.screenshot.R
+
+/** A screenshot test for our Get-Credential flows. */
+@RunWith(ParameterizedAndroidJunit4::class)
+class GetCredScreenshotTest(emulationSpec: DeviceEmulationSpec) {
+    companion object {
+        @Parameters(name = "{0}")
+        @JvmStatic
+        fun getTestSpecs() = DeviceEmulationSpec.PhoneAndTabletFull
+
+        val REQUEST_DISPLAY_INFO = RequestDisplayInfo(
+                appName = "Test App",
+                preferImmediatelyAvailableCredentials = false,
+                preferIdentityDocUi = false,
+                preferTopBrandingContent = null,
+        )
+    }
+
+    @get:Rule
+    val screenshotRule = ComposeScreenshotTestRule(
+            emulationSpec,
+            CredentialManagerGoldenImagePathManager(getEmulatedDevicePathConfig(emulationSpec))
+    )
+
+    @Test
+    fun singleCredentialScreen() {
+        val providerInfoList = buildProviderInfoList()
+        val providerDisplayInfo = toProviderDisplayInfo(providerInfoList)
+        val activeEntry = toActiveEntry(providerDisplayInfo)
+        screenshotRule.screenshotTest("singleCredentialScreen") {
+            ModalBottomSheet(
+                    sheetContent = {
+                        PrimarySelectionCard(
+                                requestDisplayInfo = REQUEST_DISPLAY_INFO,
+                                providerDisplayInfo = providerDisplayInfo,
+                                providerInfoList = providerInfoList,
+                                activeEntry = activeEntry,
+                                onEntrySelected = {},
+                                onConfirm = {},
+                                onMoreOptionSelected = {},
+                                onLog = {},
+                        )
+                    },
+                    isInitialRender = true,
+                    onDismiss = {},
+                    onInitialRenderComplete = {},
+                    isAutoSelectFlow = false,
+            )
+        }
+    }
+
+    private fun buildProviderInfoList(): List<ProviderInfo> {
+        val context = ApplicationProvider.getApplicationContext<Context>()
+        val provider1 = ProviderInfo(
+                id = "1",
+                icon = context.getDrawable(R.drawable.provider1)!!,
+                displayName = "Password Manager 1",
+                credentialEntryList = listOf(
+                        CredentialEntryInfo(
+                                providerId = "1",
+                                entryKey = "key1",
+                                entrySubkey = "subkey1",
+                                pendingIntent = null,
+                                fillInIntent = null,
+                                credentialType = CredentialType.PASSWORD,
+                                credentialTypeDisplayName = "Passkey",
+                                providerDisplayName = "Password Manager 1",
+                                userName = "username",
+                                displayName = "Display Name",
+                                icon = null,
+                                shouldTintIcon = true,
+                                lastUsedTimeMillis = null,
+                                isAutoSelectable = false
+                        )
+                ),
+                authenticationEntryList = emptyList(),
+                remoteEntry = null,
+                actionEntryList = emptyList(),
+        )
+        return listOf(provider1)
+    }
+}
\ No newline at end of file
diff --git a/packages/CredentialManager/wear/res/values/strings.xml b/packages/CredentialManager/wear/res/values/strings.xml
index be7e448..4e9174e 100644
--- a/packages/CredentialManager/wear/res/values/strings.xml
+++ b/packages/CredentialManager/wear/res/values/strings.xml
@@ -33,4 +33,12 @@
   <string name="dialog_continue_button">Continue</string>
   <!-- Content description for the sign in options button of a screen. [CHAR LIMIT=NONE] -->
   <string name="dialog_sign_in_options_button">Sign-in Options</string>
+  <!-- Title for multiple credentials folded screen. [CHAR LIMIT=NONE] -->
+  <string name="sign_in_options_title">Sign-in Options</string>
+  <!-- Title for multiple credentials screen. [CHAR LIMIT=NONE] -->
+  <string name="choose_sign_in_title">Choose a sign in</string>
+  <!-- Title for multiple credentials screen with only passkeys. [CHAR LIMIT=NONE] -->
+  <string name="choose_passkey_title">Choose passkey</string>
+  <!-- Title for multiple credentials screen with only passwords. [CHAR LIMIT=NONE] -->
+  <string name="choose_password_title">Choose password</string>
 </resources>
\ No newline at end of file
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
index 59e6142..2fc98e2 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/CredentialSelectorViewModel.kt
@@ -60,7 +60,7 @@
 
 sealed class CredentialSelectorUiState {
     data object Idle : CredentialSelectorUiState()
-    sealed class Get() : CredentialSelectorUiState() {
+    sealed class Get : CredentialSelectorUiState() {
         data class SingleEntry(val entry: CredentialEntryInfo) : Get()
         data class SingleEntryPerAccount(val sortedEntries: List<CredentialEntryInfo>) : Get()
         data class MultipleEntry(
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Navigation.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Navigation.kt
index 77fb3e7..4086457 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Navigation.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Navigation.kt
@@ -26,6 +26,22 @@
     navigateToAsRoot(Screen.SinglePasswordScreen.route)
 }
 
+fun NavController.navigateToSinglePasskeyScreen() {
+    navigateToAsRoot(Screen.SinglePasskeyScreen.route)
+}
+
+fun NavController.navigateToSignInWithProviderScreen() {
+    navigateToAsRoot(Screen.SignInWithProviderScreen.route)
+}
+
+fun NavController.navigateToMultipleCredentialsFoldScreen() {
+    navigateToAsRoot(Screen.MultipleCredentialsScreenFold.route)
+}
+
+fun NavController.navigateToMultipleCredentialsFlattenScreen() {
+    navigateToAsRoot(Screen.MultipleCredentialsScreenFlatten.route)
+}
+
 fun NavController.navigateToAsRoot(route: String) {
     popBackStack()
     navigate(route)
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Screen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Screen.kt
index c3919a0..680a0d2 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Screen.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/Screen.kt
@@ -22,4 +22,12 @@
     data object Loading : Screen("loading")
 
     data object SinglePasswordScreen : Screen("singlePasswordScreen")
+
+    data object SinglePasskeyScreen : Screen("singlePasskeyScreen")
+
+    data object SignInWithProviderScreen : Screen("signInWithProviderScreen")
+
+    data object MultipleCredentialsScreenFold : Screen("multipleCredentialsScreenFold")
+
+    data object MultipleCredentialsScreenFlatten : Screen("multipleCredentialsScreenFlatten")
 }
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
index f8e22ee..f7158e8 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/WearApp.kt
@@ -27,14 +27,20 @@
 import androidx.wear.compose.navigation.rememberSwipeDismissableNavHostState
 import com.android.credentialmanager.CredentialSelectorUiState
 import com.android.credentialmanager.CredentialSelectorUiState.Get.SingleEntry
+import com.android.credentialmanager.CredentialSelectorUiState.Get.MultipleEntry
 import com.android.credentialmanager.CredentialSelectorViewModel
 import com.android.credentialmanager.ui.screens.LoadingScreen
+import com.android.credentialmanager.ui.screens.single.passkey.SinglePasskeyScreen
 import com.android.credentialmanager.ui.screens.single.password.SinglePasswordScreen
+import com.android.credentialmanager.ui.screens.single.signInWithProvider.SignInWithProviderScreen
 import com.google.android.horologist.annotations.ExperimentalHorologistApi
 import com.google.android.horologist.compose.navscaffold.WearNavScaffold
 import com.google.android.horologist.compose.navscaffold.composable
 import com.google.android.horologist.compose.navscaffold.scrollable
+import com.android.credentialmanager.model.CredentialType
+import com.android.credentialmanager.ui.screens.multiple.MultiCredentialsFoldScreen
 
+@OptIn(ExperimentalHorologistApi::class)
 @Composable
 fun WearApp(
     viewModel: CredentialSelectorViewModel,
@@ -59,10 +65,31 @@
         scrollable(Screen.SinglePasswordScreen.route) {
             SinglePasswordScreen(
                 credentialSelectorUiState = viewModel.uiState.value as SingleEntry,
-                screenIcon = null,
                 columnState = it.columnState,
             )
         }
+
+        scrollable(Screen.SinglePasskeyScreen.route) {
+            SinglePasskeyScreen(
+                credentialSelectorUiState = viewModel.uiState.value as SingleEntry,
+                columnState = it.columnState,
+            )
+        }
+
+        scrollable(Screen.SignInWithProviderScreen.route) {
+            SignInWithProviderScreen(
+                credentialSelectorUiState = viewModel.uiState.value as SingleEntry,
+                columnState = it.columnState,
+            )
+        }
+
+        scrollable(Screen.MultipleCredentialsScreenFold.route) {
+            MultiCredentialsFoldScreen(
+                credentialSelectorUiState = viewModel.uiState.value as MultipleEntry,
+                screenIcon = null,
+                columnState = it.columnState,
+                )
+        }
     }
 
     when (val state = uiState) {
@@ -71,7 +98,6 @@
                 navController.navigateToLoading()
             }
         }
-
         is CredentialSelectorUiState.Get -> {
             handleGetNavigation(
                 navController = navController,
@@ -103,7 +129,21 @@
 ) {
     when (state) {
         is SingleEntry -> {
-            navController.navigateToSinglePasswordScreen()
+            when (state.entry.credentialType) {
+                CredentialType.UNKNOWN -> {
+                    navController.navigateToSignInWithProviderScreen()
+                }
+                CredentialType.PASSKEY -> {
+                    navController.navigateToSinglePasskeyScreen()
+                }
+                CredentialType.PASSWORD -> {
+                    navController.navigateToSinglePasswordScreen()
+                }
+            }
+        }
+
+        is CredentialSelectorUiState.Get.MultipleEntry -> {
+            navController.navigateToMultipleCredentialsFoldScreen()
         }
 
         else -> {
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/AccountRow.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/AccountRow.kt
index b2812d3..8b19e1b 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/AccountRow.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/AccountRow.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023 The Android Open Source Project
+ * Copyright 2024 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.
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt
index 5590219..7cd6bb3 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/components/CredentialsScreenChip.kt
@@ -48,8 +48,6 @@
         {
             Text(
                 text = label,
-                modifier = Modifier.fillMaxWidth(),
-                textAlign = TextAlign.Center,
                 overflow = TextOverflow.Ellipsis,
                 maxLines = if (secondaryLabel != null) 1 else 2,
             )
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt
index 44a838d..5898a40 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/mappers/CredentialSelectorUiStateGetMapper.kt
@@ -23,17 +23,12 @@
 import com.android.credentialmanager.model.get.CredentialEntryInfo
 
 fun Request.Get.toGet(isPrimary: Boolean): CredentialSelectorUiState.Get {
-    // TODO: b/301206470 returning a hard coded state for MVP
-    if (true) return CredentialSelectorUiState.Get.SingleEntry(
-        providerInfos
-            .flatMap { it.credentialEntryList }
-            .first { it.credentialType == CredentialType.PASSWORD }
-    )
     val accounts = providerInfos
         .flatMap { it.credentialEntryList }
         .groupBy { it.userName}
         .entries
         .toList()
+
     return if (isPrimary) {
         if (accounts.size == 1) {
             CredentialSelectorUiState.Get.SingleEntry(
@@ -57,6 +52,5 @@
 }
 val comparator = compareBy<CredentialEntryInfo> { entryInfo ->
     // Passkey type always go first
-    entryInfo.credentialType.let{ if (it == CredentialType.PASSKEY) 0 else 1 }
-}
-    .thenByDescending{ it.lastUsedTimeMillis }
+    entryInfo.credentialType.let { if (it == CredentialType.PASSKEY) 0 else 1 }
+}.thenByDescending { it.lastUsedTimeMillis ?: 0 }
diff --git a/location/java/android/location/IGeocodeListener.aidl b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/UiState.kt
similarity index 60%
copy from location/java/android/location/IGeocodeListener.aidl
copy to packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/UiState.kt
index 8e10411..98a9e93 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/UiState.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,16 @@
  * limitations under the License.
  */
 
-package android.location;
+package com.android.credentialmanager.ui.screens
 
-import android.location.Address;
+import androidx.activity.result.IntentSenderRequest
 
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
+sealed class UiState {
+    data object CredentialScreen : UiState()
 
-    oneway void onResults(String error, in List<Address> results);
+    data class CredentialSelected(
+        val intentSenderRequest: IntentSenderRequest?
+    ) : UiState()
+
+    data object Cancel : UiState()
 }
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt
new file mode 100644
index 0000000..11188b4
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenScreen.kt
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager.ui.screens.multiple
+
+import android.graphics.drawable.Drawable
+import com.android.credentialmanager.ui.screens.UiState
+import androidx.activity.compose.rememberLauncherForActivityResult
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.SideEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.rememberNavController
+import androidx.wear.compose.material.MaterialTheme
+import androidx.wear.compose.material.Text
+import com.android.credentialmanager.ui.components.SignInHeader
+import com.android.credentialmanager.CredentialSelectorUiState.Get.MultipleEntry
+import com.android.credentialmanager.R
+import com.android.credentialmanager.activity.StartBalIntentSenderForResultContract
+import com.android.credentialmanager.model.get.ActionEntryInfo
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import com.android.credentialmanager.ui.components.CredentialsScreenChip
+import com.google.android.horologist.annotations.ExperimentalHorologistApi
+import com.google.android.horologist.compose.layout.ScalingLazyColumn
+import com.google.android.horologist.compose.layout.ScalingLazyColumnState
+
+
+/**
+ * Screen that shows multiple credentials to select from, grouped by accounts
+ *
+ * @param credentialSelectorUiState The app bar view model.
+ * @param screenIcon The view model corresponding to the home page.
+ * @param columnState ScalingLazyColumn configuration to be be applied
+ * @param modifier styling for composable
+ * @param viewModel ViewModel that updates ui state for this screen
+ * @param navController handles navigation events from this screen
+ */
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun MultiCredentialsFlattenScreen(
+    credentialSelectorUiState: MultipleEntry,
+    screenIcon: Drawable?,
+    columnState: ScalingLazyColumnState,
+    modifier: Modifier = Modifier,
+    viewModel: MultiCredentialsFlattenViewModel = hiltViewModel(),
+    navController: NavHostController = rememberNavController(),
+) {
+    val uiState by viewModel.uiState.collectAsStateWithLifecycle()
+
+    when (val state = uiState) {
+        UiState.CredentialScreen -> {
+            MultiCredentialsFlattenScreen(
+                state = credentialSelectorUiState,
+                columnState = columnState,
+                screenIcon = screenIcon,
+                onActionEntryClicked = viewModel::onActionEntryClicked,
+                onCredentialClicked = viewModel::onCredentialClicked,
+                modifier = modifier,
+            )
+        }
+
+        is UiState.CredentialSelected -> {
+            val launcher = rememberLauncherForActivityResult(
+                StartBalIntentSenderForResultContract()
+            ) {
+                viewModel.onInfoRetrieved(it.resultCode, null)
+            }
+
+            SideEffect {
+                state.intentSenderRequest?.let {
+                    launcher.launch(it)
+                }
+            }
+        }
+
+        UiState.Cancel -> {
+            navController.popBackStack()
+        }
+    }
+}
+
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun MultiCredentialsFlattenScreen(
+    state: MultipleEntry,
+    columnState: ScalingLazyColumnState,
+    screenIcon: Drawable?,
+    onActionEntryClicked: (entryInfo: ActionEntryInfo) -> Unit,
+    onCredentialClicked: (entryInfo: CredentialEntryInfo) -> Unit,
+    modifier: Modifier,
+) {
+    ScalingLazyColumn(
+        columnState = columnState,
+        modifier = modifier.fillMaxSize(),
+    ) {
+        item {
+            // make this credential specific if all credentials are same
+            SignInHeader(
+                icon = screenIcon,
+                title = stringResource(R.string.sign_in_options_title),
+            )
+        }
+
+        state.accounts.forEach { userNameEntries ->
+            item {
+                Text(
+                    text = userNameEntries.userName,
+                    modifier = Modifier
+                        .padding(top = 6.dp)
+                        .padding(horizontal = 10.dp),
+                    style = MaterialTheme.typography.title3
+                )
+            }
+
+            userNameEntries.sortedCredentialEntryList.forEach { credential: CredentialEntryInfo ->
+                item {
+                    CredentialsScreenChip(
+                        label = credential.userName,
+                        onClick = { onCredentialClicked(credential) },
+                        secondaryLabel = credential.userName,
+                        icon = credential.icon,
+                        modifier = modifier,
+                    )
+                }
+            }
+        }
+        item {
+            Text(
+                text = "Manage Sign-ins",
+                modifier = Modifier
+                    .padding(top = 6.dp)
+                    .padding(horizontal = 10.dp),
+                style = MaterialTheme.typography.title3
+            )
+        }
+
+        state.actionEntryList.forEach {
+            item {
+                    CredentialsScreenChip(
+                        label = it.title,
+                        onClick = { onActionEntryClicked(it) },
+                        secondaryLabel = null,
+                        icon = it.icon,
+                        modifier = modifier,
+                    )
+            }
+        }
+    }
+}
+
+
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenViewModel.kt
new file mode 100644
index 0000000..ee5f3f4
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFlattenViewModel.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager.ui.screens.multiple
+
+import android.content.Intent
+import android.credentials.selection.ProviderPendingIntentResponse
+import android.credentials.selection.UserSelectionDialogResult
+import androidx.lifecycle.ViewModel
+import com.android.credentialmanager.client.CredentialManagerClient
+import com.android.credentialmanager.ktx.getIntentSenderRequest
+import com.android.credentialmanager.model.Request
+import com.android.credentialmanager.model.get.ActionEntryInfo
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import com.android.credentialmanager.ui.screens.UiState
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import javax.inject.Inject
+
+/** ViewModel for [MultiCredentialsFlattenScreen].*/
+@HiltViewModel
+class MultiCredentialsFlattenViewModel @Inject constructor(
+    private val credentialManagerClient: CredentialManagerClient,
+) : ViewModel() {
+
+    private lateinit var requestGet: Request.Get
+    private lateinit var entryInfo: CredentialEntryInfo
+
+    private val _uiState =
+        MutableStateFlow<UiState>(UiState.CredentialScreen)
+    val uiState: StateFlow<UiState> = _uiState
+
+    fun onCredentialClicked(entryInfo: CredentialEntryInfo) {
+        this.entryInfo = entryInfo
+        _uiState.value = UiState.CredentialSelected(
+            intentSenderRequest = entryInfo.getIntentSenderRequest()
+        )
+    }
+
+    fun onCancelClicked() {
+        _uiState.value = UiState.Cancel
+    }
+
+    fun onInfoRetrieved(
+        resultCode: Int? = null,
+        resultData: Intent? = null,
+    ) {
+        val userSelectionDialogResult = UserSelectionDialogResult(
+            requestGet.token,
+            entryInfo.providerId,
+            entryInfo.entryKey,
+            entryInfo.entrySubkey,
+            if (resultCode != null) ProviderPendingIntentResponse(resultCode, resultData) else null
+        )
+        credentialManagerClient.sendResult(userSelectionDialogResult)
+    }
+
+    fun onActionEntryClicked(actionEntryInfo: ActionEntryInfo) {
+        // TODO(b/322797032)to be filled out
+    }
+}
\ No newline at end of file
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt
new file mode 100644
index 0000000..a0ea4ee
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldScreen.kt
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2024 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 com.android.credentialmanager.ui.screens.multiple
+
+import com.android.credentialmanager.ui.screens.UiState
+import android.graphics.drawable.Drawable
+import androidx.activity.compose.rememberLauncherForActivityResult
+import com.android.credentialmanager.R
+import androidx.compose.ui.res.stringResource
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.padding
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.SideEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.rememberNavController
+import com.android.credentialmanager.CredentialSelectorUiState
+import com.android.credentialmanager.activity.StartBalIntentSenderForResultContract
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import com.android.credentialmanager.ui.components.DismissChip
+import com.android.credentialmanager.ui.components.CredentialsScreenChip
+import com.android.credentialmanager.ui.components.SignInHeader
+import com.android.credentialmanager.ui.components.SignInOptionsChip
+import com.google.android.horologist.annotations.ExperimentalHorologistApi
+import com.google.android.horologist.compose.layout.ScalingLazyColumn
+import com.google.android.horologist.compose.layout.ScalingLazyColumnState
+import com.android.credentialmanager.model.CredentialType
+
+/**
+ * Screen that shows multiple credentials to select from.
+ *
+ * @param credentialSelectorUiState The app bar view model.
+ * @param screenIcon The view model corresponding to the home page.
+ * @param columnState ScalingLazyColumn configuration to be be applied
+ * @param modifier styling for composable
+ * @param viewModel ViewModel that updates ui state for this screen
+ * @param navController handles navigation events from this screen
+ */
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun MultiCredentialsFoldScreen(
+    credentialSelectorUiState: CredentialSelectorUiState.Get.MultipleEntry,
+    screenIcon: Drawable?,
+    columnState: ScalingLazyColumnState,
+    modifier: Modifier = Modifier,
+    viewModel: MultiCredentialsFoldViewModel = hiltViewModel(),
+    navController: NavHostController = rememberNavController(),
+) {
+    val uiState by viewModel.uiState.collectAsStateWithLifecycle()
+
+    when (val state = uiState) {
+        UiState.CredentialScreen -> {
+            MultiCredentialsFoldScreen(
+                state = credentialSelectorUiState,
+                onSignInOptionsClicked = viewModel::onSignInOptionsClicked,
+                onCredentialClicked = viewModel::onCredentialClicked,
+                onCancelClicked = viewModel::onCancelClicked,
+                screenIcon = screenIcon,
+                columnState = columnState,
+                modifier = modifier
+            )
+        }
+
+        is UiState.CredentialSelected -> {
+            val launcher = rememberLauncherForActivityResult(
+                StartBalIntentSenderForResultContract()
+            ) {
+                viewModel.onInfoRetrieved(it.resultCode, null)
+            }
+
+            SideEffect {
+                state.intentSenderRequest?.let {
+                    launcher.launch(it)
+                }
+            }
+        }
+
+        UiState.Cancel -> {
+            navController.popBackStack()
+        }
+    }
+}
+
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun MultiCredentialsFoldScreen(
+    state: CredentialSelectorUiState.Get.MultipleEntry,
+    onSignInOptionsClicked: () -> Unit,
+    onCredentialClicked: (entryInfo: CredentialEntryInfo) -> Unit,
+    onCancelClicked: () -> Unit,
+    screenIcon: Drawable?,
+    columnState: ScalingLazyColumnState,
+    modifier: Modifier,
+) {
+    ScalingLazyColumn(
+        columnState = columnState,
+        modifier = modifier.fillMaxSize(),
+    ) {
+        // flatten all credentials into one
+        val credentials = state.accounts.flatMap { it.sortedCredentialEntryList }
+        item {
+            var title = stringResource(R.string.choose_sign_in_title)
+            if (credentials.all{ it.credentialType == CredentialType.PASSKEY }) {
+                title = stringResource(R.string.choose_passkey_title)
+            } else if (credentials.all { it.credentialType == CredentialType.PASSWORD }) {
+                title = stringResource(R.string.choose_password_title)
+            }
+
+            SignInHeader(
+                icon = screenIcon,
+                title = title,
+                modifier = Modifier
+                    .padding(top = 6.dp),
+            )
+        }
+
+        credentials.forEach { credential: CredentialEntryInfo ->
+                item {
+                    CredentialsScreenChip(
+                        label = credential.userName,
+                        onClick = { onCredentialClicked(credential) },
+                        secondaryLabel = credential.credentialTypeDisplayName,
+                        icon = credential.icon,
+                    )
+                }
+            }
+        item { SignInOptionsChip(onSignInOptionsClicked) }
+        item { DismissChip(onCancelClicked) }
+    }
+}
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldViewModel.kt
new file mode 100644
index 0000000..627a63d
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/multiple/MultiCredentialsFoldViewModel.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2024 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 com.android.credentialmanager.ui.screens.multiple
+
+import android.content.Intent
+import android.credentials.selection.ProviderPendingIntentResponse
+import android.credentials.selection.UserSelectionDialogResult
+import androidx.lifecycle.ViewModel
+import com.android.credentialmanager.client.CredentialManagerClient
+import com.android.credentialmanager.ktx.getIntentSenderRequest
+import com.android.credentialmanager.model.Request
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import com.android.credentialmanager.ui.screens.UiState
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import javax.inject.Inject
+
+/** ViewModel for [MultiCredentialsFoldScreen].*/
+@HiltViewModel
+class MultiCredentialsFoldViewModel @Inject constructor(
+    private val credentialManagerClient: CredentialManagerClient,
+) : ViewModel() {
+
+    private lateinit var requestGet: Request.Get
+    private lateinit var entryInfo: CredentialEntryInfo
+
+    private val _uiState =
+        MutableStateFlow<UiState>(UiState.CredentialScreen)
+    val uiState: StateFlow<UiState> = _uiState
+
+    fun onCredentialClicked(entryInfo: CredentialEntryInfo) {
+        this.entryInfo = entryInfo
+        _uiState.value = UiState.CredentialSelected(
+            intentSenderRequest = entryInfo.getIntentSenderRequest()
+        )
+    }
+
+    fun onSignInOptionsClicked() {
+        // TODO(b/322797032) Implement navigation route for single credential screen to multiple
+        // credentials
+    }
+
+    fun onCancelClicked() {
+        _uiState.value = UiState.Cancel
+    }
+
+    fun onInfoRetrieved(
+        resultCode: Int? = null,
+        resultData: Intent? = null,
+    ) {
+        val userSelectionDialogResult = UserSelectionDialogResult(
+            requestGet.token,
+            entryInfo.providerId,
+            entryInfo.entryKey,
+            entryInfo.entrySubkey,
+            if (resultCode != null) ProviderPendingIntentResponse(resultCode, resultData) else null
+        )
+        credentialManagerClient.sendResult(userSelectionDialogResult)
+    }
+}
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreen.kt
index 92d8a39..b2595a1 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreen.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreen.kt
@@ -18,7 +18,6 @@
 
 package com.android.credentialmanager.ui.screens.single.passkey
 
-import android.graphics.drawable.Drawable
 import androidx.compose.foundation.layout.Column
 import androidx.activity.compose.rememberLauncherForActivityResult
 import androidx.compose.foundation.layout.padding
@@ -42,15 +41,23 @@
 import com.android.credentialmanager.ui.components.SignInHeader
 import com.android.credentialmanager.ui.components.SignInOptionsChip
 import com.android.credentialmanager.ui.screens.single.SingleAccountScreen
-import com.android.credentialmanager.ui.screens.single.UiState
+import com.android.credentialmanager.ui.screens.UiState
 import com.google.android.horologist.annotations.ExperimentalHorologistApi
 import com.google.android.horologist.compose.layout.ScalingLazyColumnState
 
+/**
+ * Screen that shows sign in with provider credential.
+ *
+ * @param credentialSelectorUiState The app bar view model.
+ * @param columnState ScalingLazyColumn configuration to be be applied to SingleAccountScreen
+ * @param modifier styling for composable
+ * @param viewModel ViewModel that updates ui state for this screen
+ * @param navController handles navigation events from this screen
+ */
 @OptIn(ExperimentalHorologistApi::class)
 @Composable
 fun SinglePasskeyScreen(
     credentialSelectorUiState: CredentialSelectorUiState.Get.SingleEntry,
-    screenIcon: Drawable?,
     columnState: ScalingLazyColumnState,
     modifier: Modifier = Modifier,
     viewModel: SinglePasskeyScreenViewModel = hiltViewModel(),
@@ -64,7 +71,6 @@
         UiState.CredentialScreen -> {
             SinglePasskeyScreen(
                 credentialSelectorUiState.entry,
-                screenIcon,
                 columnState,
                 modifier,
                 viewModel
@@ -96,7 +102,6 @@
 @Composable
 fun SinglePasskeyScreen(
     entry: CredentialEntryInfo,
-    screenIcon: Drawable?,
     columnState: ScalingLazyColumnState,
     modifier: Modifier = Modifier,
     viewModel: SinglePasskeyScreenViewModel,
@@ -104,7 +109,7 @@
     SingleAccountScreen(
         headerContent = {
             SignInHeader(
-                icon = screenIcon,
+                icon = entry.icon,
                 title = stringResource(R.string.use_passkey_title),
             )
         },
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreenViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreenViewModel.kt
index 35c39f6..37ffaca 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreenViewModel.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/passkey/SinglePasskeyScreenViewModel.kt
@@ -26,7 +26,7 @@
 import com.android.credentialmanager.client.CredentialManagerClient
 import com.android.credentialmanager.model.get.CredentialEntryInfo
 import dagger.hilt.android.lifecycle.HiltViewModel
-import com.android.credentialmanager.ui.screens.single.UiState
+import com.android.credentialmanager.ui.screens.UiState
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import javax.inject.Inject
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreen.kt
index a8be944..4c7f583 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreen.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreen.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright 2023 The Android Open Source Project
+ * Copyright 2024 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.
@@ -18,7 +18,6 @@
 
 package com.android.credentialmanager.ui.screens.single.password
 
-import android.graphics.drawable.Drawable
 import androidx.activity.compose.rememberLauncherForActivityResult
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.padding
@@ -46,11 +45,19 @@
 import com.google.android.horologist.annotations.ExperimentalHorologistApi
 import com.google.android.horologist.compose.layout.ScalingLazyColumnState
 
+/**
+ * Screen that shows sign in with provider credential.
+ *
+ * @param credentialSelectorUiState The app bar view model.
+ * @param columnState ScalingLazyColumn configuration to be be applied to SingleAccountScreen
+ * @param modifier styling for composable
+ * @param viewModel ViewModel that updates ui state for this screen
+ * @param navController handles navigation events from this screen
+ */
 @OptIn(ExperimentalHorologistApi::class)
 @Composable
 fun SinglePasswordScreen(
     credentialSelectorUiState: CredentialSelectorUiState.Get.SingleEntry,
-    screenIcon: Drawable?,
     columnState: ScalingLazyColumnState,
     modifier: Modifier = Modifier,
     viewModel: SinglePasswordScreenViewModel = hiltViewModel(),
@@ -64,7 +71,6 @@
         UiState.CredentialScreen -> {
             SinglePasswordScreen(
                 credentialSelectorUiState.entry,
-                screenIcon,
                 columnState,
                 modifier,
                 viewModel
@@ -96,7 +102,6 @@
 @Composable
 private fun SinglePasswordScreen(
     entry: CredentialEntryInfo,
-    screenIcon: Drawable?,
     columnState: ScalingLazyColumnState,
     modifier: Modifier = Modifier,
     viewModel: SinglePasswordScreenViewModel,
@@ -104,7 +109,7 @@
     SingleAccountScreen(
         headerContent = {
             SignInHeader(
-                icon = screenIcon,
+                icon = entry.icon,
                 title = stringResource(R.string.use_password_title),
             )
         },
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt
index 3f841b8..8debecb 100644
--- a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/password/SinglePasswordScreenViewModel.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 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.
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderScreen.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderScreen.kt
new file mode 100644
index 0000000..b0ece0d
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderScreen.kt
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager.ui.screens.single.signInWithProvider
+
+import androidx.activity.compose.rememberLauncherForActivityResult
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.padding
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.SideEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import androidx.hilt.navigation.compose.hiltViewModel
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.rememberNavController
+import com.android.credentialmanager.CredentialSelectorUiState
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import com.android.credentialmanager.R
+import com.android.credentialmanager.activity.StartBalIntentSenderForResultContract
+import com.android.credentialmanager.ui.components.AccountRow
+import com.android.credentialmanager.ui.components.ContinueChip
+import com.android.credentialmanager.ui.components.DismissChip
+import com.android.credentialmanager.ui.components.SignInHeader
+import com.android.credentialmanager.ui.components.SignInOptionsChip
+import com.android.credentialmanager.ui.screens.single.SingleAccountScreen
+import com.android.credentialmanager.ui.screens.UiState
+import com.google.android.horologist.annotations.ExperimentalHorologistApi
+import com.google.android.horologist.compose.layout.ScalingLazyColumnState
+
+/**
+ * Screen that shows sign in with provider credential.
+ *
+ * @param credentialSelectorUiState The app bar view model.
+ * @param columnState ScalingLazyColumn configuration to be be applied to SingleAccountScreen
+ * @param modifier styling for composable
+ * @param viewModel ViewModel that updates ui state for this screen
+ * @param navController handles navigation events from this screen
+ */
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun SignInWithProviderScreen(
+    credentialSelectorUiState: CredentialSelectorUiState.Get.SingleEntry,
+    columnState: ScalingLazyColumnState,
+    modifier: Modifier = Modifier,
+    viewModel: SignInWithProviderViewModel = hiltViewModel(),
+    navController: NavHostController = rememberNavController(),
+) {
+    viewModel.initialize(credentialSelectorUiState.entry)
+
+    val uiState by viewModel.uiState.collectAsStateWithLifecycle()
+
+    when (uiState) {
+        UiState.CredentialScreen -> {
+            SignInWithProviderScreen(
+                credentialSelectorUiState.entry,
+                columnState,
+                modifier,
+                viewModel
+            )
+        }
+
+        is UiState.CredentialSelected -> {
+            val launcher = rememberLauncherForActivityResult(
+                StartBalIntentSenderForResultContract()
+            ) {
+                viewModel.onInfoRetrieved(it.resultCode, null)
+            }
+
+            SideEffect {
+                (uiState as UiState.CredentialSelected).intentSenderRequest?.let {
+                    launcher.launch(it)
+                }
+            }
+        }
+
+        UiState.Cancel -> {
+            // TODO(b/322797032) add valid navigation path here for going back
+            navController.popBackStack()
+        }
+    }
+}
+
+@OptIn(ExperimentalHorologistApi::class)
+@Composable
+fun SignInWithProviderScreen(
+    entry: CredentialEntryInfo,
+    columnState: ScalingLazyColumnState,
+    modifier: Modifier = Modifier,
+    viewModel: SignInWithProviderViewModel,
+) {
+    SingleAccountScreen(
+        headerContent = {
+            SignInHeader(
+                icon = entry.icon,
+                title = stringResource(R.string.use_sign_in_with_provider_title,
+                    entry.providerDisplayName),
+            )
+        },
+        accountContent = {
+            val displayName = entry.displayName
+            if (displayName != null) {
+                AccountRow(
+                    primaryText = displayName,
+                    secondaryText = entry.userName,
+                    modifier = Modifier.padding(top = 10.dp),
+                )
+            } else {
+                AccountRow(
+                    primaryText = entry.userName,
+                    modifier = Modifier.padding(top = 10.dp),
+                )
+            }
+        },
+        columnState = columnState,
+        modifier = modifier.padding(horizontal = 10.dp)
+    ) {
+       item {
+           Column {
+               ContinueChip(viewModel::onContinueClick)
+               SignInOptionsChip(viewModel::onSignInOptionsClick)
+               DismissChip(viewModel::onDismissClick)
+           }
+       }
+    }
+}
\ No newline at end of file
diff --git a/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderViewModel.kt b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderViewModel.kt
new file mode 100644
index 0000000..7ba45e5
--- /dev/null
+++ b/packages/CredentialManager/wear/src/com/android/credentialmanager/ui/screens/single/signInWithProvider/SignInWithProviderViewModel.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2024 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 com.android.credentialmanager.ui.screens.single.signInWithProvider
+
+import android.content.Intent
+import android.credentials.selection.ProviderPendingIntentResponse
+import android.credentials.selection.UserSelectionDialogResult
+import androidx.annotation.MainThread
+import androidx.lifecycle.ViewModel
+import com.android.credentialmanager.ktx.getIntentSenderRequest
+import com.android.credentialmanager.model.Request
+import com.android.credentialmanager.client.CredentialManagerClient
+import com.android.credentialmanager.model.get.CredentialEntryInfo
+import dagger.hilt.android.lifecycle.HiltViewModel
+import com.android.credentialmanager.ui.screens.UiState
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import javax.inject.Inject
+
+/** ViewModel for [SignInWithProviderScreen].*/
+@HiltViewModel
+class SignInWithProviderViewModel @Inject constructor(
+    private val credentialManagerClient: CredentialManagerClient,
+) : ViewModel() {
+
+    private val _uiState =
+        MutableStateFlow<UiState>(UiState.CredentialScreen)
+    val uiState: StateFlow<UiState> = _uiState
+
+    private lateinit var requestGet: Request.Get
+    private lateinit var entryInfo: CredentialEntryInfo
+
+    @MainThread
+    fun initialize(entry: CredentialEntryInfo) {
+        this.entryInfo = entry
+    }
+
+    fun onDismissClick() {
+        _uiState.value = UiState.Cancel
+    }
+
+    fun onContinueClick() {
+        _uiState.value = UiState.CredentialSelected(
+            intentSenderRequest = entryInfo.getIntentSenderRequest()
+        )
+    }
+
+    fun onSignInOptionsClick() {
+        // TODO(b/322797032) Implement navigation route for single credential screen to multiple
+        // credentials
+    }
+
+    fun onInfoRetrieved(
+        resultCode: Int? = null,
+        resultData: Intent? = null,
+    ) {
+        val userSelectionDialogResult = UserSelectionDialogResult(
+            requestGet.token,
+            entryInfo.providerId,
+            entryInfo.entryKey,
+            entryInfo.entrySubkey,
+            if (resultCode != null) ProviderPendingIntentResponse(resultCode, resultData) else null
+        )
+        credentialManagerClient.sendResult(userSelectionDialogResult)
+    }
+}
+
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
index dbf0b48..ef418a5 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
@@ -81,6 +81,12 @@
         String callingPackage = getCallingPackage();
         String callingAttributionTag = null;
 
+        // Uid of the source package, coming from ActivityManager
+        int callingUid = getLaunchedFromUid();
+        if (callingUid == Process.INVALID_UID) {
+            Log.w(TAG, "Could not determine the launching uid.");
+        }
+
         final boolean isSessionInstall =
                 PackageInstaller.ACTION_CONFIRM_PRE_APPROVAL.equals(intent.getAction())
                         || PackageInstaller.ACTION_CONFIRM_INSTALL.equals(intent.getAction());
@@ -90,24 +96,24 @@
         final int sessionId = (isSessionInstall
                 ? intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1)
                 : -1);
+        int originatingUidFromSession = callingUid;
         if (callingPackage == null && sessionId != -1) {
             PackageInstaller packageInstaller = getPackageManager().getPackageInstaller();
             PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId);
-            callingPackage = (sessionInfo != null) ? sessionInfo.getInstallerPackageName() : null;
-            callingAttributionTag =
-                    (sessionInfo != null) ? sessionInfo.getInstallerAttributionTag() : null;
+            if (sessionInfo != null) {
+                callingPackage = sessionInfo.getInstallerPackageName();
+                callingAttributionTag = sessionInfo.getInstallerAttributionTag();
+                originatingUidFromSession = sessionInfo.getOriginatingUid();
+            }
         }
 
         final ApplicationInfo sourceInfo = getSourceInfo(callingPackage);
-        // Uid of the source package, coming from ActivityManager
-        int callingUid = getLaunchedFromUid();
-        if (callingUid == Process.INVALID_UID) {
-            Log.e(TAG, "Could not determine the launching uid.");
-        }
+
         // Uid of the source package, with a preference to uid from ApplicationInfo
         final int originatingUid = sourceInfo != null ? sourceInfo.uid : callingUid;
 
         if (callingUid == Process.INVALID_UID && sourceInfo == null) {
+            Log.e(TAG, "Cannot determine caller since UID is invalid and sourceInfo is null");
             mAbortInstall = true;
         }
 
@@ -127,7 +133,7 @@
                 && originatingUid != Process.INVALID_UID) {
             final int targetSdkVersion = getMaxTargetSdkVersionForUid(this, originatingUid);
             if (targetSdkVersion < 0) {
-                Log.w(TAG, "Cannot get target sdk version for uid " + originatingUid);
+                Log.e(TAG, "Cannot get target sdk version for uid " + originatingUid);
                 // Invalid originating uid supplied. Abort install.
                 mAbortInstall = true;
             } else if (targetSdkVersion >= Build.VERSION_CODES.O && !isUidRequestingPermission(
@@ -139,6 +145,8 @@
         }
 
         if (sessionId != -1 && !isCallerSessionOwner(originatingUid, sessionId)) {
+            Log.e(TAG, "UID " + originatingUid + " is not the owner of session " +
+                sessionId);
             mAbortInstall = true;
         }
 
@@ -178,6 +186,8 @@
                 callingAttributionTag);
         nextActivity.putExtra(PackageInstallerActivity.EXTRA_ORIGINAL_SOURCE_INFO, sourceInfo);
         nextActivity.putExtra(Intent.EXTRA_ORIGINATING_UID, originatingUid);
+        nextActivity.putExtra(PackageInstallerActivity.EXTRA_ORIGINATING_UID_FROM_SESSION_INFO,
+            originatingUidFromSession);
 
         if (isSessionInstall) {
             nextActivity.setClass(this, PackageInstallerActivity.class);
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
index 7dc157f..7240fb9 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -83,6 +83,8 @@
     static final String EXTRA_ORIGINAL_SOURCE_INFO = "EXTRA_ORIGINAL_SOURCE_INFO";
     static final String EXTRA_STAGED_SESSION_ID = "EXTRA_STAGED_SESSION_ID";
     static final String EXTRA_APP_SNIPPET = "EXTRA_APP_SNIPPET";
+    static final String EXTRA_ORIGINATING_UID_FROM_SESSION_INFO =
+        "EXTRA_ORIGINATING_UID_FROM_SESSION_INFO";
     private static final String ALLOW_UNKNOWN_SOURCES_KEY =
             PackageInstallerActivity.class.getName() + "ALLOW_UNKNOWN_SOURCES_KEY";
 
@@ -91,7 +93,14 @@
     private Uri mOriginatingURI;
     private Uri mReferrerURI;
     private int mOriginatingUid = Process.INVALID_UID;
-    private String mOriginatingPackage; // The package name corresponding to #mOriginatingUid
+    /**
+     * The package name corresponding to #mOriginatingUid
+     */
+    private String mOriginatingPackage;
+    /**
+     * The package name corresponding to the app updater in the update-ownership confirmation dialog
+     */
+    private String mOriginatingPackageFromSessionInfo;
     private int mActivityResultCode = Activity.RESULT_CANCELED;
     private int mPendingUserActionReason = -1;
 
@@ -144,7 +153,8 @@
             viewToEnable = mDialog.requireViewById(R.id.install_confirm_question_update);
 
             final CharSequence existingUpdateOwnerLabel = getExistingUpdateOwnerLabel();
-            final CharSequence requestedUpdateOwnerLabel = getApplicationLabel(mCallingPackage);
+            final CharSequence requestedUpdateOwnerLabel =
+                getApplicationLabel(mOriginatingPackageFromSessionInfo);
             if (!TextUtils.isEmpty(existingUpdateOwnerLabel)
                     && mPendingUserActionReason == PackageInstaller.REASON_REMIND_OWNERSHIP) {
                 String updateOwnerString =
@@ -376,6 +386,11 @@
                 Process.INVALID_UID);
         mOriginatingPackage = (mOriginatingUid != Process.INVALID_UID)
                 ? getPackageNameForUid(mOriginatingUid) : null;
+        int originatingUidFromSessionInfo =
+            intent.getIntExtra(EXTRA_ORIGINATING_UID_FROM_SESSION_INFO, Process.INVALID_UID);
+        mOriginatingPackageFromSessionInfo = (originatingUidFromSessionInfo != Process.INVALID_UID)
+            ? getPackageNameForUid(originatingUidFromSessionInfo) : mCallingPackage;
+
 
         final Object packageSource;
         if (PackageInstaller.ACTION_CONFIRM_INSTALL.equals(action)) {
diff --git a/packages/SettingsLib/res/values/arrays.xml b/packages/SettingsLib/res/values/arrays.xml
index 3252aad..1b29e83 100644
--- a/packages/SettingsLib/res/values/arrays.xml
+++ b/packages/SettingsLib/res/values/arrays.xml
@@ -526,7 +526,7 @@
     </string-array>
 
     <!-- USB configuration values for Developer Settings.
-         These are lists of USB functions passed to the USB Manager to change USB configuraton.
+         These are lists of USB functions passed to the USB Manager to change USB configuration.
          This can be overridden by devices with additional USB configurations.
          Do not translate. -->
     <string-array name="usb_configuration_values" translatable="false">
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java
index 58e0a89..1150ac1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/Utils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java
@@ -50,6 +50,7 @@
 import android.webkit.IWebViewUpdateService;
 import android.webkit.WebViewFactory;
 import android.webkit.WebViewProviderInfo;
+import android.webkit.WebViewUpdateManager;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
@@ -495,16 +496,26 @@
             return sDefaultWebViewPackageName;
         }
 
-        try {
-            IWebViewUpdateService service = WebViewFactory.getUpdateService();
-            if (service != null) {
-                WebViewProviderInfo provider = service.getDefaultWebViewPackage();
-                if (provider != null) {
-                    sDefaultWebViewPackageName = provider.packageName;
-                }
+        WebViewProviderInfo provider = null;
+
+        if (android.webkit.Flags.updateServiceIpcWrapper()) {
+            WebViewUpdateManager manager = WebViewUpdateManager.getInstance();
+            if (manager != null) {
+                provider = manager.getDefaultWebViewPackage();
             }
-        } catch (RemoteException e) {
-            Log.e(TAG, "RemoteException when trying to fetch default WebView package Name", e);
+        } else {
+            try {
+                IWebViewUpdateService service = WebViewFactory.getUpdateService();
+                if (service != null) {
+                    provider = service.getDefaultWebViewPackage();
+                }
+            } catch (RemoteException e) {
+                Log.e(TAG, "RemoteException when trying to fetch default WebView package Name", e);
+            }
+        }
+
+        if (provider != null) {
+            sDefaultWebViewPackageName = provider.packageName;
         }
         return sDefaultWebViewPackageName;
     }
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/session/MediaSessionManagerExt.kt b/packages/SettingsLib/src/com/android/settingslib/media/session/MediaSessionManagerExt.kt
new file mode 100644
index 0000000..cda6b8b
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/media/session/MediaSessionManagerExt.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.media.session
+
+import android.media.session.MediaController
+import android.media.session.MediaSessionManager
+import android.os.UserHandle
+import androidx.concurrent.futures.DirectExecutor
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.buffer
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.launch
+
+/** [Flow] for [MediaSessionManager.OnActiveSessionsChangedListener]. */
+val MediaSessionManager.activeMediaChanges: Flow<Collection<MediaController>?>
+    get() =
+        callbackFlow {
+                val listener =
+                    MediaSessionManager.OnActiveSessionsChangedListener { launch { send(it) } }
+                addOnActiveSessionsChangedListener(
+                    null,
+                    UserHandle.of(UserHandle.myUserId()),
+                    DirectExecutor.INSTANCE,
+                    listener,
+                )
+                awaitClose { removeOnActiveSessionsChangedListener(listener) }
+            }
+            .buffer(capacity = Channel.CONFLATED)
diff --git a/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/model/ZenMode.kt b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/model/ZenMode.kt
new file mode 100644
index 0000000..a696f8c
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/model/ZenMode.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.statusbar.notification.data.model
+
+import android.provider.Settings.Global
+
+/** Validating wrapper for [android.app.NotificationManager.getZenMode] values. */
+@JvmInline
+value class ZenMode(val zenMode: Int) {
+
+    init {
+        require(zenMode in supportedModes) { "Unsupported zenMode=$zenMode" }
+    }
+
+    private companion object {
+
+        val supportedModes =
+            listOf(
+                Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS,
+                Global.ZEN_MODE_NO_INTERRUPTIONS,
+                Global.ZEN_MODE_ALARMS,
+                Global.ZEN_MODE_OFF,
+            )
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/FakeNotificationsSoundPolicyRepository.kt b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/FakeNotificationsSoundPolicyRepository.kt
new file mode 100644
index 0000000..6098307
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/FakeNotificationsSoundPolicyRepository.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.statusbar.notification.data.repository
+
+import android.app.NotificationManager
+import com.android.settingslib.statusbar.notification.data.model.ZenMode
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+class FakeNotificationsSoundPolicyRepository : NotificationsSoundPolicyRepository {
+
+    private val mutableNotificationPolicy = MutableStateFlow<NotificationManager.Policy?>(null)
+    override val notificationPolicy: StateFlow<NotificationManager.Policy?>
+        get() = mutableNotificationPolicy.asStateFlow()
+
+    private val mutableZenMode = MutableStateFlow<ZenMode?>(null)
+    override val zenMode: StateFlow<ZenMode?>
+        get() = mutableZenMode.asStateFlow()
+
+    fun updateNotificationPolicy(policy: NotificationManager.Policy?) {
+        mutableNotificationPolicy.value = policy
+    }
+
+    fun updateZenMode(zenMode: ZenMode?) {
+        mutableZenMode.value = zenMode
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepository.kt b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepository.kt
new file mode 100644
index 0000000..0fb8c3f
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepository.kt
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.statusbar.notification.data.repository
+
+import android.app.NotificationManager
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.content.IntentFilter
+import com.android.settingslib.statusbar.notification.data.model.ZenMode
+import kotlin.coroutines.CoroutineContext
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.flowOn
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.onStart
+import kotlinx.coroutines.flow.shareIn
+import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.launch
+
+/** Provides state of volume policy and restrictions imposed by notifications. */
+interface NotificationsSoundPolicyRepository {
+
+    /** @see NotificationManager.getNotificationPolicy */
+    val notificationPolicy: StateFlow<NotificationManager.Policy?>
+
+    /** @see NotificationManager.getZenMode */
+    val zenMode: StateFlow<ZenMode?>
+}
+
+class NotificationsSoundPolicyRepositoryImpl(
+    private val context: Context,
+    private val notificationManager: NotificationManager,
+    scope: CoroutineScope,
+    backgroundCoroutineContext: CoroutineContext,
+) : NotificationsSoundPolicyRepository {
+
+    private val notificationBroadcasts =
+        callbackFlow {
+                val receiver =
+                    object : BroadcastReceiver() {
+                        override fun onReceive(context: Context?, intent: Intent?) {
+                            intent?.action?.let { action -> launch { send(action) } }
+                        }
+                    }
+
+                context.registerReceiver(
+                    receiver,
+                    IntentFilter().apply {
+                        addAction(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED)
+                        addAction(NotificationManager.ACTION_NOTIFICATION_POLICY_CHANGED)
+                    }
+                )
+
+                awaitClose { context.unregisterReceiver(receiver) }
+            }
+            .shareIn(
+                started = SharingStarted.WhileSubscribed(),
+                scope = scope,
+            )
+
+    override val notificationPolicy: StateFlow<NotificationManager.Policy?> =
+        notificationBroadcasts
+            .filter { NotificationManager.ACTION_NOTIFICATION_POLICY_CHANGED == it }
+            .map { notificationManager.consolidatedNotificationPolicy }
+            .onStart { emit(notificationManager.consolidatedNotificationPolicy) }
+            .flowOn(backgroundCoroutineContext)
+            .stateIn(scope, SharingStarted.WhileSubscribed(), null)
+
+    override val zenMode: StateFlow<ZenMode?> =
+        notificationBroadcasts
+            .filter { NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED == it }
+            .map { ZenMode(notificationManager.zenMode) }
+            .onStart { emit(ZenMode(notificationManager.zenMode)) }
+            .flowOn(backgroundCoroutineContext)
+            .stateIn(scope, SharingStarted.WhileSubscribed(), null)
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerExt.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerExt.kt
new file mode 100644
index 0000000..1f037c0
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerExt.kt
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.volume.data.repository
+
+import android.media.MediaMetadata
+import android.media.session.MediaController
+import android.media.session.MediaSession
+import android.media.session.PlaybackState
+import android.os.Bundle
+import android.os.Handler
+import kotlinx.coroutines.channels.ProducerScope
+import kotlinx.coroutines.channels.awaitClose
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.launch
+
+/** [MediaController.Callback] flow representation. */
+fun MediaController.stateChanges(handler: Handler): Flow<MediaControllerChange> {
+    return callbackFlow {
+        val callback = MediaControllerCallbackProducer(this)
+        registerCallback(callback, handler)
+        awaitClose { unregisterCallback(callback) }
+    }
+}
+
+/** Models particular change event received by [MediaController.Callback]. */
+sealed interface MediaControllerChange {
+
+    data object SessionDestroyed : MediaControllerChange
+
+    data class SessionEvent(val event: String, val extras: Bundle?) : MediaControllerChange
+
+    data class PlaybackStateChanged(val state: PlaybackState?) : MediaControllerChange
+
+    data class MetadataChanged(val metadata: MediaMetadata?) : MediaControllerChange
+
+    data class QueueChanged(val queue: MutableList<MediaSession.QueueItem>?) :
+        MediaControllerChange
+
+    data class QueueTitleChanged(val title: CharSequence?) : MediaControllerChange
+
+    data class ExtrasChanged(val extras: Bundle?) : MediaControllerChange
+
+    data class AudioInfoChanged(val info: MediaController.PlaybackInfo?) : MediaControllerChange
+}
+
+private class MediaControllerCallbackProducer(
+    private val producingScope: ProducerScope<MediaControllerChange>
+) : MediaController.Callback() {
+
+    override fun onSessionDestroyed() {
+        send(MediaControllerChange.SessionDestroyed)
+    }
+
+    override fun onSessionEvent(event: String, extras: Bundle?) {
+        send(MediaControllerChange.SessionEvent(event, extras))
+    }
+
+    override fun onPlaybackStateChanged(state: PlaybackState?) {
+        send(MediaControllerChange.PlaybackStateChanged(state))
+    }
+
+    override fun onMetadataChanged(metadata: MediaMetadata?) {
+        send(MediaControllerChange.MetadataChanged(metadata))
+    }
+
+    override fun onQueueChanged(queue: MutableList<MediaSession.QueueItem>?) {
+        send(MediaControllerChange.QueueChanged(queue))
+    }
+
+    override fun onQueueTitleChanged(title: CharSequence?) {
+        send(MediaControllerChange.QueueTitleChanged(title))
+    }
+
+    override fun onExtrasChanged(extras: Bundle?) {
+        send(MediaControllerChange.ExtrasChanged(extras))
+    }
+
+    override fun onAudioInfoChanged(info: MediaController.PlaybackInfo?) {
+        send(MediaControllerChange.AudioInfoChanged(info))
+    }
+
+    private fun send(change: MediaControllerChange) {
+        producingScope.launch { producingScope.send(change) }
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerRepository.kt
index ab8c6b8..6925c71 100644
--- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerRepository.kt
+++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/MediaControllerRepository.kt
@@ -16,21 +16,23 @@
 
 package com.android.settingslib.volume.data.repository
 
+import android.content.Intent
 import android.media.AudioManager
 import android.media.session.MediaController
 import android.media.session.MediaSessionManager
 import android.media.session.PlaybackState
 import com.android.settingslib.bluetooth.LocalBluetoothManager
 import com.android.settingslib.bluetooth.headsetAudioModeChanges
+import com.android.settingslib.media.session.activeMediaChanges
 import com.android.settingslib.volume.shared.AudioManagerIntentsReceiver
 import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.flowOn
-import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.flow.stateIn
 
@@ -38,7 +40,7 @@
 interface MediaControllerRepository {
 
     /** Current [MediaController]. Null is emitted when there is no active [MediaController]. */
-    val activeMediaController: StateFlow<MediaController?>
+    val activeLocalMediaController: StateFlow<MediaController?>
 }
 
 class MediaControllerRepositoryImpl(
@@ -53,26 +55,28 @@
         audioManagerIntentsReceiver.intents.filter {
             AudioManager.STREAM_DEVICES_CHANGED_ACTION == it.action
         }
-    override val activeMediaController: StateFlow<MediaController?> =
-        buildList {
-                localBluetoothManager?.headsetAudioModeChanges?.let { add(it) }
-                add(devicesChanges)
+
+    override val activeLocalMediaController: StateFlow<MediaController?> =
+        combine(
+                mediaSessionManager.activeMediaChanges.onStart {
+                    emit(mediaSessionManager.getActiveSessions(null))
+                },
+                localBluetoothManager?.headsetAudioModeChanges?.onStart { emit(Unit) }
+                    ?: flowOf(null),
+                devicesChanges.onStart { emit(Intent()) },
+            ) { controllers, _, _ ->
+                controllers?.let(::findLocalMediaController)
             }
-            .merge()
-            .onStart { emit(Unit) }
-            .map { getActiveLocalMediaController() }
             .flowOn(backgroundContext)
             .stateIn(coroutineScope, SharingStarted.WhileSubscribed(), null)
 
-    private fun getActiveLocalMediaController(): MediaController? {
+    private fun findLocalMediaController(
+        controllers: Collection<MediaController>,
+    ): MediaController? {
         var localController: MediaController? = null
         val remoteMediaSessionLists: MutableList<String> = ArrayList()
-        for (controller in mediaSessionManager.getActiveSessions(null)) {
+        for (controller in controllers) {
             val playbackInfo: MediaController.PlaybackInfo = controller.playbackInfo ?: continue
-            val playbackState = controller.playbackState ?: continue
-            if (inactivePlaybackStates.contains(playbackState.state)) {
-                continue
-            }
             when (playbackInfo.playbackType) {
                 MediaController.PlaybackInfo.PLAYBACK_TYPE_REMOTE -> {
                     if (localController?.packageName.equals(controller.packageName)) {
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepositoryTest.kt b/packages/SettingsLib/tests/integ/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepositoryTest.kt
new file mode 100644
index 0000000..dfc4c0a
--- /dev/null
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/statusbar/notification/data/repository/NotificationsSoundPolicyRepositoryTest.kt
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2024 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 com.android.settingslib.statusbar.notification.data.repository
+
+import android.app.NotificationManager
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import android.provider.Settings.Global
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.settingslib.statusbar.notification.data.model.ZenMode
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.launchIn
+import kotlinx.coroutines.flow.onEach
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentCaptor
+import org.mockito.Captor
+import org.mockito.Mock
+import org.mockito.Mockito.any
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.`when`
+import org.mockito.MockitoAnnotations
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class NotificationsSoundPolicyRepositoryTest {
+
+    @Mock private lateinit var context: Context
+    @Mock private lateinit var notificationManager: NotificationManager
+    @Captor private lateinit var receiverCaptor: ArgumentCaptor<BroadcastReceiver>
+
+    private lateinit var underTest: NotificationsSoundPolicyRepository
+
+    private val testScope: TestScope = TestScope()
+
+    @Before
+    fun setup() {
+        MockitoAnnotations.initMocks(this)
+
+        underTest =
+            NotificationsSoundPolicyRepositoryImpl(
+                context,
+                notificationManager,
+                testScope.backgroundScope,
+                testScope.testScheduler,
+            )
+    }
+
+    @Test
+    fun policyChanges_repositoryEmits() {
+        testScope.runTest {
+            val values = mutableListOf<NotificationManager.Policy?>()
+            `when`(notificationManager.notificationPolicy).thenReturn(testPolicy1)
+            underTest.notificationPolicy.onEach { values.add(it) }.launchIn(backgroundScope)
+            runCurrent()
+
+            `when`(notificationManager.notificationPolicy).thenReturn(testPolicy2)
+            triggerIntent(NotificationManager.ACTION_NOTIFICATION_POLICY_CHANGED)
+            runCurrent()
+
+            assertThat(values)
+                .containsExactlyElementsIn(listOf(null, testPolicy1, testPolicy2))
+                .inOrder()
+        }
+    }
+
+    @Test
+    fun zenModeChanges_repositoryEmits() {
+        testScope.runTest {
+            val values = mutableListOf<ZenMode?>()
+            `when`(notificationManager.zenMode).thenReturn(Global.ZEN_MODE_OFF)
+            underTest.zenMode.onEach { values.add(it) }.launchIn(backgroundScope)
+            runCurrent()
+
+            `when`(notificationManager.zenMode).thenReturn(Global.ZEN_MODE_ALARMS)
+            triggerIntent(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED)
+            runCurrent()
+
+            assertThat(values)
+                .containsExactlyElementsIn(
+                    listOf(null, ZenMode(Global.ZEN_MODE_OFF), ZenMode(Global.ZEN_MODE_ALARMS))
+                )
+                .inOrder()
+        }
+    }
+
+    private fun triggerIntent(action: String) {
+        verify(context).registerReceiver(receiverCaptor.capture(), any())
+        receiverCaptor.value.onReceive(context, Intent(action))
+    }
+
+    private companion object {
+        val testPolicy1 =
+            NotificationManager.Policy(
+                /* priorityCategories = */ 1,
+                /* priorityCallSenders =*/ 1,
+                /* priorityMessageSenders = */ 1,
+            )
+        val testPolicy2 =
+            NotificationManager.Policy(
+                /* priorityCategories = */ 2,
+                /* priorityCallSenders =*/ 2,
+                /* priorityMessageSenders = */ 2,
+            )
+    }
+}
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/MediaControllerRepositoryImplTest.kt b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/MediaControllerRepositoryImplTest.kt
index 430d733..7bd43d2 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/MediaControllerRepositoryImplTest.kt
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/MediaControllerRepositoryImplTest.kt
@@ -116,7 +116,7 @@
                     )
                 )
             var mediaController: MediaController? = null
-            underTest.activeMediaController
+            underTest.activeLocalMediaController
                 .onEach { mediaController = it }
                 .launchIn(backgroundScope)
             runCurrent()
@@ -141,7 +141,7 @@
                     )
                 )
             var mediaController: MediaController? = null
-            underTest.activeMediaController
+            underTest.activeLocalMediaController
                 .onEach { mediaController = it }
                 .launchIn(backgroundScope)
             runCurrent()
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/DeviceIconUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/DeviceIconUtilTest.java
index 5669276..8edda1a 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/DeviceIconUtilTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/DeviceIconUtilTest.java
@@ -90,7 +90,7 @@
     public void getIconResIdFromMediaRouteType_hdmi() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromMediaRouteType(MediaRoute2Info.TYPE_HDMI))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
@@ -101,10 +101,10 @@
     }
 
     @Test
-    public void getIconResIdFromMediaRouteType_hdmiArc_isHeadphone() {
+    public void getIconResIdFromMediaRouteType_hdmiArc_isExternalDisplay() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromMediaRouteType(MediaRoute2Info.TYPE_HDMI_ARC))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
@@ -115,10 +115,10 @@
     }
 
     @Test
-    public void getIconResIdFromMediaRouteType_hdmiEarc_isHeadphone() {
+    public void getIconResIdFromMediaRouteType_hdmiEarc_isExternalDisplay() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromMediaRouteType(MediaRoute2Info.TYPE_HDMI_EARC))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
@@ -229,10 +229,10 @@
     }
 
     @Test
-    public void getIconResIdFromAudioDeviceType_hdmi_isHeadphone() {
+    public void getIconResIdFromAudioDeviceType_hdmi_isExternalDisplay() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromAudioDeviceType(AudioDeviceInfo.TYPE_HDMI))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
@@ -243,10 +243,10 @@
     }
 
     @Test
-    public void getIconResIdFromAudioDeviceType_hdmiArc_isHeadphone() {
+    public void getIconResIdFromAudioDeviceType_hdmiArc_isExternalDisplay() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromAudioDeviceType(AudioDeviceInfo.TYPE_HDMI_ARC))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
@@ -257,10 +257,10 @@
     }
 
     @Test
-    public void getIconResIdFromAudioDeviceType_hdmiEarc_isHeadphone() {
+    public void getIconResIdFromAudioDeviceType_hdmiEarc_isExternalDisplay() {
         assertThat(new DeviceIconUtil(/* isTv */ false)
                 .getIconResIdFromAudioDeviceType(AudioDeviceInfo.TYPE_HDMI_EARC))
-                .isEqualTo(R.drawable.ic_headphone);
+                .isEqualTo(R.drawable.ic_external_display);
     }
 
     @Test
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index 8ae117e..e424797 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -247,6 +247,7 @@
         Settings.Secure.BLUETOOTH_LE_BROADCAST_FALLBACK_ACTIVE_DEVICE_ADDRESS,
         Settings.Secure.CUSTOM_BUGREPORT_HANDLER_APP,
         Settings.Secure.CUSTOM_BUGREPORT_HANDLER_USER,
+        Settings.Secure.CONTEXTUAL_SCREEN_TIMEOUT_ENABLED,
         Settings.Secure.LOCK_SCREEN_WEATHER_ENABLED,
         Settings.Secure.HEARING_AID_RINGTONE_ROUTING,
         Settings.Secure.HEARING_AID_CALL_ROUTING,
@@ -264,6 +265,7 @@
         Settings.Secure.EVEN_DIMMER_ACTIVATED,
         Settings.Secure.EVEN_DIMMER_MIN_NITS,
         Settings.Secure.STYLUS_POINTER_ICON_ENABLED,
-        Settings.Secure.CAMERA_EXTENSIONS_FALLBACK
+        Settings.Secure.CAMERA_EXTENSIONS_FALLBACK,
+        Settings.Secure.VISUAL_QUERY_ACCESSIBILITY_DETECTION_ENABLED
     };
 }
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 5adae375..a32eead 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -207,6 +207,7 @@
         VALIDATORS.put(Secure.ASSIST_GESTURE_WAKE_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.ASSIST_TOUCH_GESTURE_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.ASSIST_LONG_PRESS_HOME_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(Secure.VISUAL_QUERY_ACCESSIBILITY_DETECTION_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.SEARCH_PRESS_HOLD_NAV_HANDLE_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.SEARCH_LONG_PRESS_HOME_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.VR_DISPLAY_MODE, new DiscreteValueValidator(new String[] {"0", "1"}));
@@ -397,6 +398,7 @@
         VALIDATORS.put(Secure.CUSTOM_BUGREPORT_HANDLER_APP, ANY_STRING_VALIDATOR);
         VALIDATORS.put(Secure.CUSTOM_BUGREPORT_HANDLER_USER, ANY_INTEGER_VALIDATOR);
         VALIDATORS.put(Secure.LOCK_SCREEN_WEATHER_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(Secure.CONTEXTUAL_SCREEN_TIMEOUT_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.HEARING_AID_RINGTONE_ROUTING,
                 new DiscreteValueValidator(new String[] {"0", "1", "2"}));
         VALIDATORS.put(Secure.HEARING_AID_CALL_ROUTING,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 612badd..d27ff17 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1951,6 +1951,9 @@
         dumpSetting(s, p,
                 Settings.Secure.SEARCH_LONG_PRESS_HOME_ENABLED,
                 SecureSettingsProto.Assist.SEARCH_LONG_PRESS_HOME_ENABLED);
+        dumpSetting(s, p,
+                Settings.Secure.VISUAL_QUERY_ACCESSIBILITY_DETECTION_ENABLED,
+                SecureSettingsProto.Assist.VISUAL_QUERY_ACCESSIBILITY_DETECTION_ENABLED);
         p.end(assistToken);
 
         final long assistHandlesToken = p.start(SecureSettingsProto.ASSIST_HANDLES);
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 926e181..53f2caf 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -250,6 +250,8 @@
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+    <!-- Permission required to test LauncherApps APIs for hidden profiles -->
+    <uses-permission android:name="android.permission.ACCESS_HIDDEN_PROFILES_FULL" />
     <!-- Shell only holds android.permission.NETWORK_SCAN in order to to enable CTS testing -->
     <uses-permission android:name="android.permission.NETWORK_SCAN" />
     <uses-permission android:name="android.permission.REGISTER_CALL_PROVIDER" />
@@ -769,6 +771,9 @@
     <!-- Permission required for CTS test - CtsDevicePolicyManagerTestCases -->
     <uses-permission android:name="android.permission.READ_NEARBY_STREAMING_POLICY" />
 
+    <!-- Permission required for CTS test - CtsDevicePolicyTestCases -->
+    <uses-permission android:name="android.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING" />
+
     <!-- Permission required for CTS test - CtsKeystoreTestCases -->
     <uses-permission android:name="android.permission.REQUEST_UNIQUE_ID_ATTESTATION" />
 
@@ -862,6 +867,8 @@
 
     <!-- Permission required for CTS test - CtsTelephonyProviderTestCases -->
     <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS" />
+    <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS" />
 
     <uses-permission android:name="android.permission.LOG_FOREGROUND_RESOURCE_USE" />
 
@@ -920,6 +927,10 @@
     <!-- Permission required for CTS test - CtsPackageManagerTestCases-->
     <uses-permission android:name="android.permission.DOMAIN_VERIFICATION_AGENT" />
 
+    <!-- Permission required for Cts test - CtsInputTestCases -->
+    <uses-permission
+        android:name="android.permission.OVERRIDE_SYSTEM_KEY_BEHAVIOR_IN_FOCUSED_WINDOW" />
+
     <application
         android:label="@string/app_label"
         android:theme="@android:style/Theme.DeviceDefault.DayNight"
diff --git a/packages/SystemUI/OWNERS b/packages/SystemUI/OWNERS
index 967a36b..78cacec 100644
--- a/packages/SystemUI/OWNERS
+++ b/packages/SystemUI/OWNERS
@@ -39,7 +39,6 @@
 hyunyoungs@google.com
 ikateryna@google.com
 iyz@google.com
-jaggies@google.com
 jamesoleary@google.com
 jbolinger@google.com
 jdemeulenaere@google.com
diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 56576f1..6f34f05 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -420,3 +420,33 @@
     }
 }
 
+flag {
+   name: "get_connected_device_name_unsynchronized"
+   namespace: "systemui"
+   description: "Decide whether to fetch the connected bluetooth device name outside a synchronized block."
+   bug: "323995015"
+   metadata {
+        purpose: PURPOSE_BUGFIX
+   }
+}
+
+flag {
+   name: "register_new_wallet_card_in_background"
+   namespace: "systemui"
+   description: "Decide whether the call to registerNewWalletCards method should be issued on background thread."
+   bug: "322506838"
+   metadata {
+        purpose: PURPOSE_BUGFIX
+   }
+}
+
+flag {
+    name: "update_user_switcher_background"
+    namespace: "systemui"
+    description: "Decide whether to update user switcher in background thread."
+    bug: "322745650"
+    metadata {
+        purpose: PURPOSE_BUGFIX
+    }
+}
+
diff --git a/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectView.kt b/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectView.kt
new file mode 100644
index 0000000..aad593e
--- /dev/null
+++ b/packages/SystemUI/animation/src/com/android/systemui/surfaceeffects/loadingeffect/LoadingEffectView.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.surfaceeffects.loadingeffect
+
+import android.content.Context
+import android.graphics.BlendMode
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.util.AttributeSet
+import android.view.View
+
+/** Custom View for drawing the [LoadingEffect] with [Canvas.drawPaint]. */
+open class LoadingEffectView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {
+
+    private var paint: Paint? = null
+    private var blendMode: BlendMode = BlendMode.SRC_OVER
+
+    override fun onDraw(canvas: Canvas) {
+        if (!canvas.isHardwareAccelerated) {
+            return
+        }
+        paint?.let { canvas.drawPaint(it) }
+    }
+
+    /** Designed to be called on [LoadingEffect.PaintDrawCallback.onDraw]. */
+    fun draw(paint: Paint) {
+        this.paint = paint
+        this.paint!!.blendMode = blendMode
+
+        invalidate()
+    }
+
+    /** Sets the blend mode of the [Paint]. */
+    fun setBlendMode(blendMode: BlendMode) {
+        this.blendMode = blendMode
+    }
+}
diff --git a/packages/SystemUI/compose/core/src/com/android/compose/PlatformSlider.kt b/packages/SystemUI/compose/core/src/com/android/compose/PlatformSlider.kt
new file mode 100644
index 0000000..b8c4fae
--- /dev/null
+++ b/packages/SystemUI/compose/core/src/com/android/compose/PlatformSlider.kt
@@ -0,0 +1,321 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+@file:OptIn(ExperimentalMaterial3Api::class)
+
+package com.android.compose
+
+import androidx.compose.animation.core.animateDpAsState
+import androidx.compose.animation.core.animateFloatAsState
+import androidx.compose.foundation.Canvas
+import androidx.compose.foundation.interaction.DragInteraction
+import androidx.compose.foundation.interaction.MutableInteractionSource
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.width
+import androidx.compose.material3.ExperimentalMaterial3Api
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Slider
+import androidx.compose.material3.SliderState
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.geometry.CornerRadius
+import androidx.compose.ui.geometry.RoundRect
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Path
+import androidx.compose.ui.graphics.drawscope.clipPath
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.platform.LocalLayoutDirection
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.LayoutDirection
+import androidx.compose.ui.unit.dp
+import com.android.compose.modifiers.padding
+import com.android.compose.theme.LocalAndroidColorScheme
+
+/** Indicator corner radius used when the user drags the [PlatformSlider]. */
+private val DefaultPlatformSliderDraggingCornerRadius = 8.dp
+
+/**
+ * Platform slider implementation that displays a slider with an [icon] and a [label] at the start.
+ *
+ * @param onValueChangeFinished is called when the slider settles on a [value]. This callback
+ *   shouldn't be used to react to value changes. Use [onValueChange] instead
+ * @param interactionSource - the [MutableInteractionSource] representing the stream of Interactions
+ *   for this slider. You can create and pass in your own remembered instance to observe
+ *   Interactions and customize the appearance / behavior of this slider in different states.
+ * @param colors - slider color scheme.
+ * @param draggingCornersRadius - radius of the slider indicator when the user drags it
+ * @param icon - icon at the start of the slider. Icon is limited to a square space at the start of
+ *   the slider
+ * @param label - control shown next to the icon.
+ */
+@Composable
+fun PlatformSlider(
+    value: Float,
+    onValueChange: (Float) -> Unit,
+    modifier: Modifier = Modifier,
+    onValueChangeFinished: (() -> Unit)? = null,
+    valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
+    enabled: Boolean = true,
+    interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
+    colors: PlatformSliderColors =
+        if (isSystemInDarkTheme()) darkThemePlatformSliderColors()
+        else lightThemePlatformSliderColors(),
+    draggingCornersRadius: Dp = DefaultPlatformSliderDraggingCornerRadius,
+    icon: (@Composable (isDragging: Boolean) -> Unit)? = null,
+    label: (@Composable (isDragging: Boolean) -> Unit)? = null,
+) {
+    val sliderHeight: Dp = 64.dp
+    val iconWidth: Dp = sliderHeight
+    var isDragging by remember { mutableStateOf(false) }
+    LaunchedEffect(interactionSource) {
+        interactionSource.interactions.collect { interaction ->
+            when (interaction) {
+                is DragInteraction.Start -> {
+                    isDragging = true
+                }
+                is DragInteraction.Cancel,
+                is DragInteraction.Stop -> {
+                    isDragging = false
+                }
+            }
+        }
+    }
+    val paddingStart by
+        animateDpAsState(
+            targetValue =
+                if ((!isDragging && value == 0f) || icon == null) {
+                    16.dp
+                } else {
+                    0.dp
+                },
+            label = "LabelIconSpacingAnimation"
+        )
+
+    Box(modifier = modifier.height(sliderHeight)) {
+        Slider(
+            modifier = Modifier.fillMaxSize(),
+            value = value,
+            onValueChange = onValueChange,
+            valueRange = valueRange,
+            onValueChangeFinished = onValueChangeFinished,
+            interactionSource = interactionSource,
+            track = {
+                Track(
+                    sliderState = it,
+                    enabled = enabled,
+                    colors = colors,
+                    iconWidth = iconWidth,
+                    draggingCornersRadius = draggingCornersRadius,
+                    sliderHeight = sliderHeight,
+                    isDragging = isDragging,
+                    modifier = Modifier,
+                )
+            },
+            thumb = { Spacer(Modifier.width(iconWidth).height(sliderHeight)) },
+        )
+
+        if (icon != null || label != null) {
+            Row(modifier = Modifier.fillMaxSize()) {
+                icon?.let { iconComposable ->
+                    Box(
+                        modifier = Modifier.fillMaxHeight().aspectRatio(1f),
+                        contentAlignment = Alignment.Center,
+                    ) {
+                        iconComposable(isDragging)
+                    }
+                }
+
+                label?.let { labelComposable ->
+                    Box(
+                        modifier =
+                            Modifier.fillMaxHeight()
+                                .weight(1f)
+                                .padding(start = { paddingStart.roundToPx() }),
+                        contentAlignment = Alignment.CenterStart,
+                    ) {
+                        labelComposable(isDragging)
+                    }
+                }
+            }
+        }
+    }
+}
+
+@Composable
+private fun Track(
+    sliderState: SliderState,
+    enabled: Boolean,
+    colors: PlatformSliderColors,
+    iconWidth: Dp,
+    draggingCornersRadius: Dp,
+    sliderHeight: Dp,
+    isDragging: Boolean,
+    modifier: Modifier = Modifier,
+) {
+    val isRtl = LocalLayoutDirection.current == LayoutDirection.Rtl
+    val iconWidthPx: Float
+    val halfIconWidthPx: Float
+    val targetIndicatorRadiusPx: Float
+    val halfSliderHeightPx: Float
+    with(LocalDensity.current) {
+        halfSliderHeightPx = sliderHeight.toPx() / 2
+        iconWidthPx = iconWidth.toPx()
+        halfIconWidthPx = iconWidthPx / 2
+        targetIndicatorRadiusPx =
+            if (isDragging) draggingCornersRadius.toPx() else halfSliderHeightPx
+    }
+
+    val indicatorRadiusPx: Float by
+        animateFloatAsState(
+            targetValue = targetIndicatorRadiusPx,
+            label = "PlatformSliderCornersAnimation",
+        )
+
+    val trackColor = colors.getTrackColor(enabled)
+    val indicatorColor = colors.getIndicatorColor(enabled)
+    val trackCornerRadius = CornerRadius(halfSliderHeightPx, halfSliderHeightPx)
+    val indicatorCornerRadius = CornerRadius(indicatorRadiusPx, indicatorRadiusPx)
+    Canvas(modifier.fillMaxSize()) {
+        val trackPath = Path()
+        trackPath.addRoundRect(
+            RoundRect(
+                left = -halfIconWidthPx,
+                top = 0f,
+                right = size.width + halfIconWidthPx,
+                bottom = size.height,
+                cornerRadius = trackCornerRadius,
+            )
+        )
+        drawPath(path = trackPath, color = trackColor)
+
+        clipPath(trackPath) {
+            val indicatorPath = Path()
+            if (isRtl) {
+                indicatorPath.addRoundRect(
+                    RoundRect(
+                        left =
+                            size.width -
+                                size.width * sliderState.coercedNormalizedValue -
+                                halfIconWidthPx,
+                        top = 0f,
+                        right = size.width + iconWidthPx,
+                        bottom = size.height,
+                        topLeftCornerRadius = indicatorCornerRadius,
+                        topRightCornerRadius = trackCornerRadius,
+                        bottomRightCornerRadius = trackCornerRadius,
+                        bottomLeftCornerRadius = indicatorCornerRadius,
+                    )
+                )
+            } else {
+                indicatorPath.addRoundRect(
+                    RoundRect(
+                        left = -halfIconWidthPx,
+                        top = 0f,
+                        right = size.width * sliderState.coercedNormalizedValue + halfIconWidthPx,
+                        bottom = size.height,
+                        topLeftCornerRadius = trackCornerRadius,
+                        topRightCornerRadius = indicatorCornerRadius,
+                        bottomRightCornerRadius = indicatorCornerRadius,
+                        bottomLeftCornerRadius = trackCornerRadius,
+                    )
+                )
+            }
+            drawPath(path = indicatorPath, color = indicatorColor)
+        }
+    }
+}
+
+/** [SliderState.value] normalized using [SliderState.valueRange]. The result belongs to [0, 1] */
+private val SliderState.coercedNormalizedValue: Float
+    get() {
+        val dif = valueRange.endInclusive - valueRange.start
+        return if (dif == 0f) {
+            0f
+        } else {
+            val coercedValue = value.coerceIn(valueRange.start, valueRange.endInclusive)
+            (coercedValue - valueRange.start) / dif
+        }
+    }
+
+/**
+ * [PlatformSlider] color scheme.
+ *
+ * @param trackColor fills the track of the slider. This is a "background" of the slider
+ * @param indicatorColor fills the slider from the start to the value
+ * @param iconColor is the default icon color
+ * @param labelColor is the default icon color
+ * @param disabledTrackColor is the [trackColor] when the PlatformSlider#enabled == false
+ * @param disabledIndicatorColor is the [indicatorColor] when the PlatformSlider#enabled == false
+ * @param disabledIconColor is the [iconColor] when the PlatformSlider#enabled == false
+ * @param disabledLabelColor is the [labelColor] when the PlatformSlider#enabled == false
+ */
+data class PlatformSliderColors(
+    val trackColor: Color,
+    val indicatorColor: Color,
+    val iconColor: Color,
+    val labelColor: Color,
+    val disabledTrackColor: Color,
+    val disabledIndicatorColor: Color,
+    val disabledIconColor: Color,
+    val disabledLabelColor: Color,
+)
+
+/** [PlatformSliderColors] for the light theme */
+@Composable
+private fun lightThemePlatformSliderColors() =
+    PlatformSliderColors(
+        trackColor = MaterialTheme.colorScheme.tertiaryContainer,
+        indicatorColor = LocalAndroidColorScheme.current.tertiaryFixedDim,
+        iconColor = MaterialTheme.colorScheme.onTertiaryContainer,
+        labelColor = MaterialTheme.colorScheme.onTertiaryContainer,
+        disabledTrackColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+        disabledIndicatorColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+        disabledIconColor = MaterialTheme.colorScheme.outline,
+        disabledLabelColor = MaterialTheme.colorScheme.onSurfaceVariant,
+    )
+
+/** [PlatformSliderColors] for the dark theme */
+@Composable
+private fun darkThemePlatformSliderColors() =
+    PlatformSliderColors(
+        trackColor = MaterialTheme.colorScheme.onTertiary,
+        indicatorColor = LocalAndroidColorScheme.current.onTertiaryFixedVariant,
+        iconColor = MaterialTheme.colorScheme.onTertiaryContainer,
+        labelColor = MaterialTheme.colorScheme.onTertiaryContainer,
+        disabledTrackColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+        disabledIndicatorColor = MaterialTheme.colorScheme.surfaceContainerHighest,
+        disabledIconColor = MaterialTheme.colorScheme.outline,
+        disabledLabelColor = MaterialTheme.colorScheme.onSurfaceVariant,
+    )
+
+private fun PlatformSliderColors.getTrackColor(isEnabled: Boolean): Color =
+    if (isEnabled) trackColor else disabledTrackColor
+
+private fun PlatformSliderColors.getIndicatorColor(isEnabled: Boolean): Color =
+    if (isEnabled) indicatorColor else disabledIndicatorColor
diff --git a/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/compose/ComposeFacade.kt b/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/compose/ComposeFacade.kt
index 36ab46b4..4398b25 100644
--- a/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/compose/ComposeFacade.kt
+++ b/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/compose/ComposeFacade.kt
@@ -33,6 +33,7 @@
 import com.android.systemui.people.ui.viewmodel.PeopleViewModel
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.scene.shared.model.Scene
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.shared.model.SceneKey
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import com.android.systemui.volume.panel.ui.viewmodel.VolumePanelViewModel
@@ -68,7 +69,7 @@
     override fun setVolumePanelActivityContent(
         activity: ComponentActivity,
         viewModel: VolumePanelViewModel,
-        onDismissAnimationFinished: () -> Unit,
+        onDismiss: () -> Unit,
     ) {
         throwComposeUnavailableError()
     }
@@ -87,6 +88,7 @@
         viewModel: SceneContainerViewModel,
         windowInsets: StateFlow<WindowInsets?>,
         sceneByKey: Map<SceneKey, Scene>,
+        dataSourceDelegator: SceneDataSourceDelegator,
     ): View {
         throwComposeUnavailableError()
     }
diff --git a/location/java/android/location/GeocoderParams.aidl b/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
similarity index 68%
copy from location/java/android/location/GeocoderParams.aidl
copy to packages/SystemUI/compose/facade/disabled/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
index 2484e20..8ad0a08 100644
--- a/location/java/android/location/GeocoderParams.aidl
+++ b/packages/SystemUI/compose/facade/disabled/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
@@ -1,11 +1,11 @@
 /*
- * Copyright (C) 2010, The Android Open Source Project
+ * Copyright (C) 2024 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
+ *      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,
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
-package android.location;
+package com.android.systemui.volume.panel.component.mediaoutput
 
-parcelable GeocoderParams;
+import dagger.Module
+
+@Module interface MediaOutputModule
diff --git a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/compose/ComposeFacade.kt b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/compose/ComposeFacade.kt
index 5b6aa09..aa56736 100644
--- a/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/compose/ComposeFacade.kt
+++ b/packages/SystemUI/compose/facade/enabled/src/com/android/systemui/compose/ComposeFacade.kt
@@ -53,6 +53,7 @@
 import com.android.systemui.qs.footer.ui.compose.FooterActions
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.scene.shared.model.Scene
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.shared.model.SceneKey
 import com.android.systemui.scene.ui.composable.ComposableScene
 import com.android.systemui.scene.ui.composable.SceneContainer
@@ -101,12 +102,12 @@
     override fun setVolumePanelActivityContent(
         activity: ComponentActivity,
         viewModel: VolumePanelViewModel,
-        onDismissAnimationFinished: () -> Unit,
+        onDismiss: () -> Unit,
     ) {
         activity.setContent {
             VolumePanelRoot(
                 viewModel = viewModel,
-                onDismissAnimationFinished = onDismissAnimationFinished,
+                onDismiss = onDismiss,
             )
         }
     }
@@ -127,6 +128,7 @@
         viewModel: SceneContainerViewModel,
         windowInsets: StateFlow<WindowInsets?>,
         sceneByKey: Map<SceneKey, Scene>,
+        dataSourceDelegator: SceneDataSourceDelegator,
     ): View {
         return ComposeView(context).apply {
             setContent {
@@ -139,6 +141,7 @@
                             viewModel = viewModel,
                             sceneByKey =
                                 sceneByKey.mapValues { (_, scene) -> scene as ComposableScene },
+                            dataSourceDelegator = dataSourceDelegator,
                         )
                     }
                 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt
index 428bc39..0469cbe 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/bouncer/ui/composable/BouncerScene.kt
@@ -29,8 +29,8 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.scene.ui.composable.ComposableScene
 import javax.inject.Inject
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -54,11 +54,11 @@
 ) : ComposableScene {
     override val key = SceneKey.Bouncer
 
-    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
+    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
         MutableStateFlow(
                 mapOf(
-                    UserAction.Back to SceneModel(SceneKey.Lockscreen),
-                    UserAction.Swipe(Direction.DOWN) to SceneModel(SceneKey.Lockscreen),
+                    UserAction.Back to UserActionResult(SceneKey.Lockscreen),
+                    UserAction.Swipe(Direction.DOWN) to UserActionResult(SceneKey.Lockscreen),
                 )
             )
             .asStateFlow()
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
index f3bef7b..11a38f9 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/communal/ui/compose/CommunalScene.kt
@@ -23,8 +23,8 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.scene.ui.composable.ComposableScene
 import javax.inject.Inject
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -40,10 +40,10 @@
 ) : ComposableScene {
     override val key = SceneKey.Communal
 
-    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
-        MutableStateFlow<Map<UserAction, SceneModel>>(
+    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
+        MutableStateFlow<Map<UserAction, UserActionResult>>(
                 mapOf(
-                    UserAction.Swipe(Direction.RIGHT) to SceneModel(SceneKey.Lockscreen),
+                    UserAction.Swipe(Direction.RIGHT) to UserActionResult(SceneKey.Lockscreen),
                 )
             )
             .asStateFlow()
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt
index 378a1e4..7b21d09 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/LockscreenScene.kt
@@ -26,8 +26,8 @@
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.Edge
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.scene.ui.composable.ComposableScene
 import dagger.Lazy
 import javax.inject.Inject
@@ -49,7 +49,7 @@
 ) : ComposableScene {
     override val key = SceneKey.Lockscreen
 
-    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
+    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
         combine(viewModel.upDestinationSceneKey, viewModel.leftDestinationSceneKey, ::Pair)
             .map { (upKey, leftKey) -> destinationScenes(up = upKey, left = leftKey) }
             .stateIn(
@@ -75,13 +75,13 @@
     private fun destinationScenes(
         up: SceneKey?,
         left: SceneKey?,
-    ): Map<UserAction, SceneModel> {
+    ): Map<UserAction, UserActionResult> {
         return buildMap {
-            up?.let { this[UserAction.Swipe(Direction.UP)] = SceneModel(up) }
-            left?.let { this[UserAction.Swipe(Direction.LEFT)] = SceneModel(left) }
+            up?.let { this[UserAction.Swipe(Direction.UP)] = UserActionResult(up) }
+            left?.let { this[UserAction.Swipe(Direction.LEFT)] = UserActionResult(left) }
             this[UserAction.Swipe(fromEdge = Edge.TOP, direction = Direction.DOWN)] =
-                SceneModel(SceneKey.QuickSettings)
-            this[UserAction.Swipe(direction = Direction.DOWN)] = SceneModel(SceneKey.Shade)
+                UserActionResult(SceneKey.QuickSettings)
+            this[UserAction.Swipe(direction = Direction.DOWN)] = UserActionResult(SceneKey.Shade)
         }
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt
index f9dd04b..0728daf 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/modifier/BurnInModifiers.kt
@@ -40,7 +40,6 @@
 ): Modifier {
     val translationX by viewModel.translationX(params).collectAsState(initial = 0f)
     val translationY by viewModel.translationY(params).collectAsState(initial = 0f)
-    val alpha by viewModel.alpha.collectAsState(initial = 1f)
     val scaleViewModel by viewModel.scale(params).collectAsState(initial = BurnInScaleViewModel())
 
     return this.graphicsLayer {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
index f387021..ed2cbb8 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/keyguard/ui/composable/section/NotificationSection.kt
@@ -21,10 +21,10 @@
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import com.android.compose.animation.scene.SceneScope
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.notifications.ui.composable.NotificationStack
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.statusbar.notification.stack.AmbientState
@@ -59,37 +59,38 @@
 ) {
 
     init {
-        if (!KeyguardShadeMigrationNssl.isUnexpectedlyInLegacyMode()) {
-            // This scene container section moves the NSSL to the SharedNotificationContainer.
-            // This also requires that SharedNotificationContainer gets moved to the
-            // SceneWindowRootView by the SceneWindowRootViewBinder. Prior to Scene Container,
-            // but when the KeyguardShadeMigrationNssl flag is enabled, NSSL is moved into this
-            // container by the NotificationStackScrollLayoutSection.
-            // Ensure stackScrollLayout is a child of sharedNotificationContainer.
+        if (!migrateClocksToBlueprint()) {
+            throw IllegalStateException("this requires migrateClocksToBlueprint()")
+        }
+        // This scene container section moves the NSSL to the SharedNotificationContainer.
+        // This also requires that SharedNotificationContainer gets moved to the
+        // SceneWindowRootView by the SceneWindowRootViewBinder. Prior to Scene Container,
+        // but when the KeyguardShadeMigrationNssl flag is enabled, NSSL is moved into this
+        // container by the NotificationStackScrollLayoutSection.
+        // Ensure stackScrollLayout is a child of sharedNotificationContainer.
 
-            if (stackScrollLayout.parent != sharedNotificationContainer) {
-                (stackScrollLayout.parent as? ViewGroup)?.removeView(stackScrollLayout)
-                sharedNotificationContainer.addNotificationStackScrollLayout(stackScrollLayout)
-            }
+        if (stackScrollLayout.parent != sharedNotificationContainer) {
+            (stackScrollLayout.parent as? ViewGroup)?.removeView(stackScrollLayout)
+            sharedNotificationContainer.addNotificationStackScrollLayout(stackScrollLayout)
+        }
 
-            SharedNotificationContainerBinder.bind(
+        SharedNotificationContainerBinder.bind(
+            sharedNotificationContainer,
+            sharedNotificationContainerViewModel,
+            sceneContainerFlags,
+            controller,
+            notificationStackSizeCalculator,
+            mainDispatcher,
+        )
+
+        if (sceneContainerFlags.flexiNotifsEnabled()) {
+            NotificationStackAppearanceViewBinder.bind(
+                context,
                 sharedNotificationContainer,
-                sharedNotificationContainerViewModel,
-                sceneContainerFlags,
+                notificationStackAppearanceViewModel,
+                ambientState,
                 controller,
-                notificationStackSizeCalculator,
-                mainDispatcher,
             )
-
-            if (sceneContainerFlags.flexiNotifsEnabled()) {
-                NotificationStackAppearanceViewBinder.bind(
-                    context,
-                    sharedNotificationContainer,
-                    notificationStackAppearanceViewModel,
-                    ambientState,
-                    controller,
-                )
-            }
         }
     }
 
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
index 46554a4..d36345a3 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/ui/composable/QuickSettingsScene.kt
@@ -63,7 +63,7 @@
 import com.android.systemui.qs.ui.viewmodel.QuickSettingsSceneViewModel
 import com.android.systemui.scene.shared.model.SceneKey
 import com.android.systemui.scene.ui.composable.ComposableScene
-import com.android.systemui.scene.ui.composable.toTransitionSceneKey
+import com.android.systemui.scene.ui.composable.asComposeAware
 import com.android.systemui.shade.ui.composable.CollapsedShadeHeader
 import com.android.systemui.shade.ui.composable.ExpandedShadeHeader
 import com.android.systemui.shade.ui.composable.Shade
@@ -138,7 +138,7 @@
             when (val state = layoutState.transitionState) {
                 is TransitionState.Idle -> true
                 is TransitionState.Transition -> {
-                    state.fromScene == SceneKey.QuickSettings.toTransitionSceneKey()
+                    state.fromScene == SceneKey.QuickSettings.asComposeAware()
                 }
             }
 
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeAwareExtensions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeAwareExtensions.kt
new file mode 100644
index 0000000..a7de1ee
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeAwareExtensions.kt
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.ui.composable
+
+import androidx.compose.foundation.gestures.Orientation
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.IntSize
+import com.android.compose.animation.scene.Back
+import com.android.compose.animation.scene.Edge as ComposeAwareEdge
+import com.android.compose.animation.scene.SceneKey as ComposeAwareSceneKey
+import com.android.compose.animation.scene.Swipe
+import com.android.compose.animation.scene.SwipeDirection
+import com.android.compose.animation.scene.TransitionKey as ComposeAwareTransitionKey
+import com.android.compose.animation.scene.UserAction as ComposeAwareUserAction
+import com.android.compose.animation.scene.UserActionDistance as ComposeAwareUserActionDistance
+import com.android.compose.animation.scene.UserActionResult as ComposeAwareUserActionResult
+import com.android.systemui.scene.shared.model.Direction
+import com.android.systemui.scene.shared.model.Edge
+import com.android.systemui.scene.shared.model.SceneKey
+import com.android.systemui.scene.shared.model.TransitionKey
+import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionDistance
+import com.android.systemui.scene.shared.model.UserActionResult
+
+// TODO(b/293899074): remove this file once we can use the types from SceneTransitionLayout.
+
+fun SceneKey.asComposeAware(): ComposeAwareSceneKey {
+    return ComposeAwareSceneKey(
+        debugName = toString(),
+        identity = this,
+    )
+}
+
+fun TransitionKey.asComposeAware(): ComposeAwareTransitionKey {
+    return ComposeAwareTransitionKey(
+        debugName = debugName,
+        identity = this,
+    )
+}
+
+fun UserAction.asComposeAware(): ComposeAwareUserAction {
+    return when (this) {
+        is UserAction.Swipe ->
+            Swipe(
+                pointerCount = pointerCount,
+                fromSource =
+                    when (this.fromEdge) {
+                        null -> null
+                        Edge.LEFT -> ComposeAwareEdge.Left
+                        Edge.TOP -> ComposeAwareEdge.Top
+                        Edge.RIGHT -> ComposeAwareEdge.Right
+                        Edge.BOTTOM -> ComposeAwareEdge.Bottom
+                    },
+                direction =
+                    when (this.direction) {
+                        Direction.LEFT -> SwipeDirection.Left
+                        Direction.UP -> SwipeDirection.Up
+                        Direction.RIGHT -> SwipeDirection.Right
+                        Direction.DOWN -> SwipeDirection.Down
+                    }
+            )
+        is UserAction.Back -> Back
+    }
+}
+
+fun UserActionResult.asComposeAware(): ComposeAwareUserActionResult {
+    val composeUnaware = this
+    return ComposeAwareUserActionResult(
+        toScene = composeUnaware.toScene.asComposeAware(),
+        transitionKey = composeUnaware.transitionKey?.asComposeAware(),
+        distance = composeUnaware.distance?.asComposeAware(),
+    )
+}
+
+fun UserActionDistance.asComposeAware(): ComposeAwareUserActionDistance {
+    val composeUnware = this
+    return object : ComposeAwareUserActionDistance {
+        override fun Density.absoluteDistance(
+            fromSceneSize: IntSize,
+            orientation: Orientation,
+        ): Float {
+            return composeUnware.absoluteDistance(
+                fromSceneWidth = fromSceneSize.width,
+                fromSceneHeight = fromSceneSize.height,
+                isHorizontal = orientation == Orientation.Horizontal,
+            )
+        }
+    }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeUnawareExtensions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeUnawareExtensions.kt
new file mode 100644
index 0000000..4c03664
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/ComposeUnawareExtensions.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.ui.composable
+
+import com.android.compose.animation.scene.ObservableTransitionState as ComposeAwareObservableTransitionState
+import com.android.compose.animation.scene.SceneKey as ComposeAwareSceneKey
+import com.android.systemui.scene.shared.model.ObservableTransitionState
+import com.android.systemui.scene.shared.model.SceneKey
+
+fun ComposeAwareSceneKey.asComposeUnaware(): SceneKey {
+    return this.identity as SceneKey
+}
+
+fun ComposeAwareObservableTransitionState.asComposeUnaware(): ObservableTransitionState {
+    return when (this) {
+        is ComposeAwareObservableTransitionState.Idle ->
+            ObservableTransitionState.Idle(scene.asComposeUnaware())
+        is ComposeAwareObservableTransitionState.Transition ->
+            ObservableTransitionState.Transition(
+                fromScene = fromScene.asComposeUnaware(),
+                toScene = toScene.asComposeUnaware(),
+                progress = progress,
+                isInitiatedByUserInput = isInitiatedByUserInput,
+                isUserInputOngoing = isUserInputOngoing,
+            )
+    }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
index 736ee1f..f90f29d 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/GoneScene.kt
@@ -25,9 +25,8 @@
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.Edge
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
-import com.android.systemui.shade.ui.composable.Shade
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
 import javax.inject.Inject
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -46,15 +45,16 @@
 ) : ComposableScene {
     override val key = SceneKey.Gone
 
-    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
-        MutableStateFlow<Map<UserAction, SceneModel>>(
+    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
+        MutableStateFlow<Map<UserAction, UserActionResult>>(
                 mapOf(
                     UserAction.Swipe(
                         pointerCount = 2,
                         fromEdge = Edge.TOP,
                         direction = Direction.DOWN,
-                    ) to SceneModel(SceneKey.QuickSettings),
-                    UserAction.Swipe(direction = Direction.DOWN) to SceneModel(SceneKey.Shade),
+                    ) to UserActionResult(SceneKey.QuickSettings),
+                    UserAction.Swipe(direction = Direction.DOWN) to
+                        UserActionResult(SceneKey.Shade),
                 )
             )
             .asStateFlow()
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
index da1b417..5006beb 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainer.kt
@@ -25,6 +25,8 @@
 import androidx.compose.runtime.DisposableEffect
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
@@ -32,24 +34,14 @@
 import androidx.compose.ui.input.pointer.PointerEventPass
 import androidx.compose.ui.input.pointer.motionEventSpy
 import androidx.compose.ui.input.pointer.pointerInput
-import com.android.compose.animation.scene.Back
-import com.android.compose.animation.scene.Edge as SceneTransitionEdge
-import com.android.compose.animation.scene.ObservableTransitionState as SceneTransitionObservableTransitionState
-import com.android.compose.animation.scene.SceneKey as SceneTransitionSceneKey
+import com.android.compose.animation.scene.MutableSceneTransitionLayoutState
 import com.android.compose.animation.scene.SceneTransitionLayout
-import com.android.compose.animation.scene.Swipe
-import com.android.compose.animation.scene.SwipeDirection
-import com.android.compose.animation.scene.UserAction as SceneTransitionUserAction
-import com.android.compose.animation.scene.UserActionResult
 import com.android.compose.animation.scene.observableTransitionState
-import com.android.compose.animation.scene.updateSceneTransitionLayoutState
 import com.android.systemui.ribbon.ui.composable.BottomRightCornerRibbon
-import com.android.systemui.scene.shared.model.Direction
-import com.android.systemui.scene.shared.model.Edge
-import com.android.systemui.scene.shared.model.ObservableTransitionState
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import kotlinx.coroutines.flow.map
 
@@ -75,22 +67,31 @@
 fun SceneContainer(
     viewModel: SceneContainerViewModel,
     sceneByKey: Map<SceneKey, ComposableScene>,
+    dataSourceDelegator: SceneDataSourceDelegator,
     modifier: Modifier = Modifier,
 ) {
-    val currentSceneModel: SceneModel by viewModel.currentScene.collectAsState()
-    val currentSceneKey = currentSceneModel.key
+    val coroutineScope = rememberCoroutineScope()
+    val currentSceneKey: SceneKey by viewModel.currentScene.collectAsState()
     val currentScene = checkNotNull(sceneByKey[currentSceneKey])
-    val currentDestinations: Map<UserAction, SceneModel> by
+    val currentDestinations: Map<UserAction, UserActionResult> by
         currentScene.destinationScenes.collectAsState()
-    val state =
-        updateSceneTransitionLayoutState(
-            currentSceneKey.toTransitionSceneKey(),
-            onChangeScene = viewModel::onSceneChanged,
+    val state: MutableSceneTransitionLayoutState = remember {
+        MutableSceneTransitionLayoutState(
+            initialScene = currentSceneKey.asComposeAware(),
             transitions = SceneContainerTransitions,
         )
+    }
+
+    DisposableEffect(state) {
+        val dataSource = SceneTransitionLayoutDataSource(state, coroutineScope)
+        dataSourceDelegator.setDelegate(dataSource)
+        onDispose { dataSourceDelegator.setDelegate(null) }
+    }
 
     DisposableEffect(viewModel, state) {
-        viewModel.setTransitionState(state.observableTransitionState().map { it.toModel() })
+        viewModel.setTransitionState(
+            state.observableTransitionState().map { it.asComposeUnaware() }
+        )
         onDispose { viewModel.setTransitionState(null) }
     }
 
@@ -114,22 +115,22 @@
         ) {
             sceneByKey.forEach { (sceneKey, composableScene) ->
                 scene(
-                    key = sceneKey.toTransitionSceneKey(),
+                    key = sceneKey.asComposeAware(),
                     userActions =
                         if (sceneKey == currentSceneKey) {
                                 currentDestinations
                             } else {
                                 composableScene.destinationScenes.value
                             }
-                            .map { (userAction, destinationSceneModel) ->
-                                toTransitionModels(userAction, destinationSceneModel)
+                            .map { (userAction, userActionResult) ->
+                                userAction.asComposeAware() to userActionResult.asComposeAware()
                             }
                             .toMap(),
                 ) {
                     with(composableScene) {
                         this@scene.Content(
                             modifier =
-                                Modifier.element(sceneKey.toTransitionSceneKey().rootElementKey)
+                                Modifier.element(sceneKey.asComposeAware().rootElementKey)
                                     .fillMaxSize(),
                         )
                     }
@@ -148,62 +149,3 @@
         )
     }
 }
-
-// TODO(b/293899074): remove this once we can use the one from SceneTransitionLayout.
-private fun SceneTransitionObservableTransitionState.toModel(): ObservableTransitionState {
-    return when (this) {
-        is SceneTransitionObservableTransitionState.Idle ->
-            ObservableTransitionState.Idle(scene.toModel().key)
-        is SceneTransitionObservableTransitionState.Transition ->
-            ObservableTransitionState.Transition(
-                fromScene = fromScene.toModel().key,
-                toScene = toScene.toModel().key,
-                progress = progress,
-                isInitiatedByUserInput = isInitiatedByUserInput,
-                isUserInputOngoing = isUserInputOngoing,
-            )
-    }
-}
-
-// TODO(b/293899074): remove this once we can use the one from SceneTransitionLayout.
-private fun toTransitionModels(
-    userAction: UserAction,
-    sceneModel: SceneModel,
-): Pair<SceneTransitionUserAction, UserActionResult> {
-    return userAction.toTransitionUserAction() to sceneModel.key.toTransitionSceneKey()
-}
-
-// TODO(b/293899074): remove this once we can use the one from SceneTransitionLayout.
-private fun SceneTransitionSceneKey.toModel(): SceneModel {
-    return SceneModel(key = identity as SceneKey)
-}
-
-// TODO(b/293899074): remove this once we can use the one from SceneTransitionLayout.
-private fun UserAction.toTransitionUserAction(): SceneTransitionUserAction {
-    return when (this) {
-        is UserAction.Swipe ->
-            Swipe(
-                pointerCount = pointerCount,
-                fromSource =
-                    when (this.fromEdge) {
-                        null -> null
-                        Edge.LEFT -> SceneTransitionEdge.Left
-                        Edge.TOP -> SceneTransitionEdge.Top
-                        Edge.RIGHT -> SceneTransitionEdge.Right
-                        Edge.BOTTOM -> SceneTransitionEdge.Bottom
-                    },
-                direction =
-                    when (this.direction) {
-                        Direction.LEFT -> SwipeDirection.Left
-                        Direction.UP -> SwipeDirection.Up
-                        Direction.RIGHT -> SwipeDirection.Right
-                        Direction.DOWN -> SwipeDirection.Down
-                    }
-            )
-        is UserAction.Back -> Back
-    }
-}
-
-private fun SceneContainerViewModel.onSceneChanged(sceneKey: SceneTransitionSceneKey) {
-    onSceneChanged(sceneKey.toModel())
-}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
index 2848245..61f8120 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneContainerTransitions.kt
@@ -1,6 +1,8 @@
 package com.android.systemui.scene.ui.composable
 
 import com.android.compose.animation.scene.transitions
+import com.android.systemui.scene.shared.model.TransitionKeys.CollapseShadeInstantly
+import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse
 import com.android.systemui.scene.ui.composable.transitions.bouncerToGoneTransition
 import com.android.systemui.scene.ui.composable.transitions.goneToQuickSettingsTransition
 import com.android.systemui.scene.ui.composable.transitions.goneToShadeTransition
@@ -26,10 +28,38 @@
 val SceneContainerTransitions = transitions {
     from(Bouncer, to = Gone) { bouncerToGoneTransition() }
     from(Gone, to = Shade) { goneToShadeTransition() }
+    from(
+        Gone,
+        to = Shade,
+        key = CollapseShadeInstantly.asComposeAware(),
+    ) {
+        goneToShadeTransition(durationScale = 0.0)
+    }
+    from(
+        Gone,
+        to = Shade,
+        key = SlightlyFasterShadeCollapse.asComposeAware(),
+    ) {
+        goneToShadeTransition(durationScale = 0.9)
+    }
     from(Gone, to = QuickSettings) { goneToQuickSettingsTransition() }
     from(Lockscreen, to = Bouncer) { lockscreenToBouncerTransition() }
     from(Lockscreen, to = Communal) { lockscreenToCommunalTransition() }
     from(Lockscreen, to = Shade) { lockscreenToShadeTransition() }
+    from(
+        Lockscreen,
+        to = Shade,
+        key = CollapseShadeInstantly.asComposeAware(),
+    ) {
+        lockscreenToShadeTransition(durationScale = 0.0)
+    }
+    from(
+        Lockscreen,
+        to = Shade,
+        key = SlightlyFasterShadeCollapse.asComposeAware(),
+    ) {
+        lockscreenToShadeTransition(durationScale = 0.9)
+    }
     from(Lockscreen, to = QuickSettings) { lockscreenToQuickSettingsTransition() }
     from(Lockscreen, to = Gone) { lockscreenToGoneTransition() }
     from(Shade, to = QuickSettings) { shadeToQuickSettingsTransition() }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt
new file mode 100644
index 0000000..60c0b77
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/SceneTransitionLayoutDataSource.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.ui.composable
+
+import com.android.compose.animation.scene.MutableSceneTransitionLayoutState
+import com.android.compose.animation.scene.ObservableTransitionState
+import com.android.compose.animation.scene.observableTransitionState
+import com.android.systemui.scene.shared.model.SceneDataSource
+import com.android.systemui.scene.shared.model.SceneKey
+import com.android.systemui.scene.shared.model.TransitionKey
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.stateIn
+
+/**
+ * An implementation of [SceneDataSource] that's backed by a [MutableSceneTransitionLayoutState].
+ */
+class SceneTransitionLayoutDataSource(
+    private val state: MutableSceneTransitionLayoutState,
+
+    /**
+     * The [CoroutineScope] of the @Composable that's using this, it's critical that this is *not*
+     * the application scope.
+     */
+    private val coroutineScope: CoroutineScope,
+) : SceneDataSource {
+    override val currentScene: StateFlow<SceneKey> =
+        state
+            .observableTransitionState()
+            .flatMapLatest { observableTransitionState ->
+                when (observableTransitionState) {
+                    is ObservableTransitionState.Idle -> flowOf(observableTransitionState.scene)
+                    is ObservableTransitionState.Transition ->
+                        observableTransitionState.isUserInputOngoing.map { isUserInputOngoing ->
+                            if (isUserInputOngoing) {
+                                observableTransitionState.fromScene
+                            } else {
+                                observableTransitionState.toScene
+                            }
+                        }
+                }
+            }
+            .map { it.asComposeUnaware() }
+            .stateIn(
+                scope = coroutineScope,
+                started = SharingStarted.WhileSubscribed(),
+                initialValue = state.transitionState.currentScene.asComposeUnaware(),
+            )
+
+    override fun changeScene(
+        toScene: SceneKey,
+        transitionKey: TransitionKey?,
+    ) {
+        state.setTargetScene(
+            targetScene = toScene.asComposeAware(),
+            transitionKey = transitionKey?.asComposeAware(),
+            coroutineScope = coroutineScope,
+        )
+    }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/TransitionSceneKeys.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/TransitionSceneKeys.kt
index 0c66701..5a9add1 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/TransitionSceneKeys.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/TransitionSceneKeys.kt
@@ -1,16 +1,10 @@
 package com.android.systemui.scene.ui.composable
 
-import com.android.compose.animation.scene.SceneKey as SceneTransitionSceneKey
 import com.android.systemui.scene.shared.model.SceneKey
 
-val Lockscreen = SceneKey.Lockscreen.toTransitionSceneKey()
-val Bouncer = SceneKey.Bouncer.toTransitionSceneKey()
-val Shade = SceneKey.Shade.toTransitionSceneKey()
-val QuickSettings = SceneKey.QuickSettings.toTransitionSceneKey()
-val Gone = SceneKey.Gone.toTransitionSceneKey()
-val Communal = SceneKey.Communal.toTransitionSceneKey()
-
-// TODO(b/293899074): Remove this file once we can use the scene keys from SceneTransitionLayout.
-fun SceneKey.toTransitionSceneKey(): SceneTransitionSceneKey {
-    return SceneTransitionSceneKey(debugName = toString(), identity = this)
-}
+val Lockscreen = SceneKey.Lockscreen.asComposeAware()
+val Bouncer = SceneKey.Bouncer.asComposeAware()
+val Shade = SceneKey.Shade.asComposeAware()
+val QuickSettings = SceneKey.QuickSettings.asComposeAware()
+val Gone = SceneKey.Gone.asComposeAware()
+val Communal = SceneKey.Communal.asComposeAware()
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToShadeTransition.kt
index 1223ace..6f115d8 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToShadeTransition.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromGoneToShadeTransition.kt
@@ -6,11 +6,16 @@
 import com.android.systemui.notifications.ui.composable.Notifications
 import com.android.systemui.qs.ui.composable.QuickSettings
 import com.android.systemui.shade.ui.composable.ShadeHeader
+import kotlin.time.Duration.Companion.milliseconds
 
-fun TransitionBuilder.goneToShadeTransition() {
-    spec = tween(durationMillis = 500)
+fun TransitionBuilder.goneToShadeTransition(
+    durationScale: Double = 1.0,
+) {
+    spec = tween(durationMillis = DefaultDuration.times(durationScale).inWholeMilliseconds.toInt())
 
     fractionRange(start = .58f) { fade(ShadeHeader.Elements.CollapsedContent) }
     translate(QuickSettings.Elements.Content, y = -ShadeHeader.Dimensions.CollapsedHeight * .66f)
     translate(Notifications.Elements.NotificationScrim, Edge.Top, false)
 }
+
+private val DefaultDuration = 500.milliseconds
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToShadeTransition.kt b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToShadeTransition.kt
index 2d5cf5c..e71f996 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToShadeTransition.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/scene/ui/composable/transitions/FromLockscreenToShadeTransition.kt
@@ -6,9 +6,12 @@
 import com.android.systemui.notifications.ui.composable.Notifications
 import com.android.systemui.qs.ui.composable.QuickSettings
 import com.android.systemui.shade.ui.composable.Shade
+import kotlin.time.Duration.Companion.milliseconds
 
-fun TransitionBuilder.lockscreenToShadeTransition() {
-    spec = tween(durationMillis = 500)
+fun TransitionBuilder.lockscreenToShadeTransition(
+    durationScale: Double = 1.0,
+) {
+    spec = tween(durationMillis = DefaultDuration.times(durationScale).inWholeMilliseconds.toInt())
 
     fractionRange(end = 0.5f) {
         fade(Shade.Elements.BackgroundScrim)
@@ -20,3 +23,5 @@
     }
     fractionRange(start = 0.5f) { fade(Notifications.Elements.NotificationScrim) }
 }
+
+private val DefaultDuration = 500.milliseconds
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
index cac35cb..25df3e4 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/shade/ui/composable/ShadeScene.kt
@@ -54,8 +54,8 @@
 import com.android.systemui.res.R
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.scene.ui.composable.ComposableScene
 import com.android.systemui.shade.ui.viewmodel.ShadeSceneViewModel
 import com.android.systemui.statusbar.phone.StatusBarIconController
@@ -108,7 +108,7 @@
 ) : ComposableScene {
     override val key = SceneKey.Shade
 
-    override val destinationScenes: StateFlow<Map<UserAction, SceneModel>> =
+    override val destinationScenes: StateFlow<Map<UserAction, UserActionResult>> =
         viewModel.upDestinationSceneKey
             .map { sceneKey -> destinationScenes(up = sceneKey) }
             .stateIn(
@@ -139,10 +139,10 @@
 
     private fun destinationScenes(
         up: SceneKey,
-    ): Map<UserAction, SceneModel> {
+    ): Map<UserAction, UserActionResult> {
         return mapOf(
-            UserAction.Swipe(Direction.UP) to SceneModel(up),
-            UserAction.Swipe(Direction.DOWN) to SceneModel(SceneKey.QuickSettings),
+            UserAction.Swipe(Direction.UP) to UserActionResult(up),
+            UserAction.Swipe(Direction.DOWN) to UserActionResult(SceneKey.QuickSettings),
         )
     }
 }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/BottomBarModule.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/BottomBarModule.kt
index 43d5453..236aee2 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/BottomBarModule.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/BottomBarModule.kt
@@ -32,7 +32,7 @@
     @Binds
     @IntoMap
     @StringKey(VolumePanelComponents.BOTTOM_BAR)
-    fun bindMediaVolumeSliderComponent(component: BottomBarComponent): VolumePanelUiComponent
+    fun bindVolumePanelUiComponent(component: BottomBarComponent): VolumePanelUiComponent
 
     @Binds
     @IntoMap
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/ui/BottomBarComponent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/ui/BottomBarComponent.kt
index 03c07f7..0cf4367 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/ui/BottomBarComponent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/bottombar/ui/BottomBarComponent.kt
@@ -20,6 +20,8 @@
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
+import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.MaterialTheme
 import androidx.compose.material3.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Alignment
@@ -49,7 +51,13 @@
             horizontalArrangement = Arrangement.SpaceBetween,
             verticalAlignment = Alignment.CenterVertically,
         ) {
-            PlatformOutlinedButton(onClick = viewModel::onSettingsClicked) {
+            PlatformOutlinedButton(
+                onClick = viewModel::onSettingsClicked,
+                colors =
+                    ButtonDefaults.outlinedButtonColors(
+                        contentColor = MaterialTheme.colorScheme.onSurface,
+                    ),
+            ) {
                 Text(text = stringResource(R.string.volume_panel_dialog_settings_button))
             }
             PlatformButton(onClick = viewModel::onDoneClicked) {
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
new file mode 100644
index 0000000..c73656e
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/MediaOutputModule.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput
+
+import com.android.systemui.volume.panel.component.mediaoutput.domain.MediaOutputAvailabilityCriteria
+import com.android.systemui.volume.panel.component.mediaoutput.ui.composable.MediaOutputComponent
+import com.android.systemui.volume.panel.component.shared.model.VolumePanelComponents
+import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
+import com.android.systemui.volume.panel.shared.model.VolumePanelUiComponent
+import dagger.Binds
+import dagger.Module
+import dagger.multibindings.IntoMap
+import dagger.multibindings.StringKey
+
+/** Dagger module, that provides media output Volume Panel UI functionality. */
+@Module
+interface MediaOutputModule {
+
+    @Binds
+    @IntoMap
+    @StringKey(VolumePanelComponents.MEDIA_OUTPUT)
+    fun bindVolumePanelUiComponent(component: MediaOutputComponent): VolumePanelUiComponent
+
+    @Binds
+    @IntoMap
+    @StringKey(VolumePanelComponents.MEDIA_OUTPUT)
+    fun bindComponentAvailabilityCriteria(
+        criteria: MediaOutputAvailabilityCriteria
+    ): ComponentAvailabilityCriteria
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt
new file mode 100644
index 0000000..8ad6fdf
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/component/mediaoutput/ui/composable/MediaOutputComponent.kt
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.ui.composable
+
+import androidx.compose.animation.AnimatedContent
+import androidx.compose.animation.core.snap
+import androidx.compose.animation.core.tween
+import androidx.compose.animation.core.updateTransition
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.animation.scaleIn
+import androidx.compose.animation.scaleOut
+import androidx.compose.animation.slideInVertically
+import androidx.compose.animation.slideOutVertically
+import androidx.compose.animation.togetherWith
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
+import androidx.compose.foundation.layout.aspectRatio
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.collectAsState
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.text.style.TextOverflow
+import androidx.compose.ui.unit.dp
+import com.android.compose.animation.Expandable
+import com.android.systemui.common.ui.compose.Icon
+import com.android.systemui.common.ui.compose.toColor
+import com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel.ConnectedDeviceViewModel
+import com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel.DeviceIconViewModel
+import com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel.MediaOutputViewModel
+import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
+import com.android.systemui.volume.panel.ui.composable.ComposeVolumePanelUiComponent
+import com.android.systemui.volume.panel.ui.composable.VolumePanelComposeScope
+import javax.inject.Inject
+
+@VolumePanelScope
+class MediaOutputComponent
+@Inject
+constructor(
+    private val viewModel: MediaOutputViewModel,
+) : ComposeVolumePanelUiComponent {
+
+    @Composable
+    override fun VolumePanelComposeScope.Content(modifier: Modifier) {
+        val connectedDeviceViewModel: ConnectedDeviceViewModel? by
+            viewModel.connectedDeviceViewModel.collectAsState()
+        val deviceIconViewModel: DeviceIconViewModel? by
+            viewModel.deviceIconViewModel.collectAsState()
+
+        Expandable(
+            modifier = Modifier.fillMaxWidth().height(80.dp),
+            color = MaterialTheme.colorScheme.surface,
+            shape = RoundedCornerShape(28.dp),
+            onClick = { viewModel.onBarClick(it) },
+        ) {
+            Row {
+                connectedDeviceViewModel?.let { ConnectedDeviceText(it) }
+
+                deviceIconViewModel?.let { ConnectedDeviceIcon(it) }
+            }
+        }
+    }
+
+    @Composable
+    private fun RowScope.ConnectedDeviceText(connectedDeviceViewModel: ConnectedDeviceViewModel) {
+        Column(
+            modifier =
+                Modifier.weight(1f)
+                    .padding(start = 24.dp, top = 20.dp, bottom = 20.dp)
+                    .fillMaxHeight(),
+            verticalArrangement = Arrangement.spacedBy(4.dp),
+        ) {
+            Text(
+                connectedDeviceViewModel.label.toString(),
+                style = MaterialTheme.typography.labelMedium,
+                color = MaterialTheme.colorScheme.onSurfaceVariant,
+                maxLines = 1,
+                overflow = TextOverflow.Ellipsis,
+            )
+            connectedDeviceViewModel.deviceName?.let {
+                Text(
+                    it.toString(),
+                    style = MaterialTheme.typography.titleMedium,
+                    color = MaterialTheme.colorScheme.onSurface,
+                    maxLines = 1,
+                    overflow = TextOverflow.Ellipsis,
+                )
+            }
+        }
+    }
+
+    @Composable
+    private fun ConnectedDeviceIcon(deviceIconViewModel: DeviceIconViewModel) {
+        val transition = updateTransition(deviceIconViewModel, label = "MediaOutputIconTransition")
+        Box(
+            modifier = Modifier.padding(16.dp).fillMaxHeight().aspectRatio(1f),
+            contentAlignment = Alignment.Center
+        ) {
+            transition.AnimatedContent(
+                contentKey = { it.backgroundColor },
+                transitionSpec = {
+                    if (targetState is DeviceIconViewModel.IsPlaying) {
+                        scaleIn(
+                            initialScale = 0.9f,
+                            animationSpec = isPlayingInIconBackgroundSpec(),
+                        ) + fadeIn(animationSpec = isPlayingInIconBackgroundSpec()) togetherWith
+                            fadeOut(animationSpec = snap())
+                    } else {
+                        fadeIn(animationSpec = snap(delayMillis = 900)) togetherWith
+                            scaleOut(
+                                targetScale = 0.9f,
+                                animationSpec = isPlayingOutSpec(),
+                            ) + fadeOut(animationSpec = isPlayingOutSpec())
+                    }
+                }
+            ) { targetViewModel ->
+                Expandable(
+                    modifier = Modifier.fillMaxSize(),
+                    color = targetViewModel.backgroundColor.toColor(),
+                    shape = RoundedCornerShape(12.dp),
+                    onClick = { viewModel.onDeviceClick(it) },
+                ) {}
+            }
+            transition.AnimatedContent(
+                contentKey = { it.icon },
+                transitionSpec = {
+                    if (targetState is DeviceIconViewModel.IsPlaying) {
+                        fadeIn(animationSpec = snap(delayMillis = 700)) togetherWith
+                            slideOutVertically(
+                                targetOffsetY = { it },
+                                animationSpec = isPlayingInIconSpec(),
+                            ) + fadeOut(animationSpec = isNotPlayingOutIconSpec())
+                    } else {
+                        slideInVertically(
+                            initialOffsetY = { it },
+                            animationSpec = isNotPlayingInIconSpec(),
+                        ) + fadeIn(animationSpec = isNotPlayingInIconSpec()) togetherWith
+                            fadeOut(animationSpec = isPlayingOutSpec())
+                    }
+                }
+            ) {
+                Icon(
+                    icon = it.icon,
+                    modifier = Modifier.padding(12.dp).fillMaxSize(),
+                )
+            }
+        }
+    }
+}
+
+private fun <T> isPlayingOutSpec() = tween<T>(durationMillis = 400, delayMillis = 500)
+
+private fun <T> isPlayingInIconSpec() = tween<T>(durationMillis = 400, delayMillis = 300)
+
+private fun <T> isPlayingInIconBackgroundSpec() = tween<T>(durationMillis = 400, delayMillis = 700)
+
+private fun <T> isNotPlayingOutIconSpec() = tween<T>(durationMillis = 400, delayMillis = 300)
+
+private fun <T> isNotPlayingInIconSpec() = tween<T>(durationMillis = 400, delayMillis = 900)
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/HorizontalVolumePanelContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/HorizontalVolumePanelContent.kt
new file mode 100644
index 0000000..98ef067
--- /dev/null
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/HorizontalVolumePanelContent.kt
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 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 com.android.systemui.volume.panel.ui.composable
+
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.android.systemui.volume.panel.ui.layout.ComponentsLayout
+
+@Composable
+fun VolumePanelComposeScope.HorizontalVolumePanelContent(
+    layout: ComponentsLayout,
+    modifier: Modifier = Modifier,
+) {
+    val spacing = 20.dp
+    Row(modifier = modifier, horizontalArrangement = Arrangement.spacedBy(space = spacing)) {
+        Column(
+            modifier = Modifier.weight(1f),
+            verticalArrangement = Arrangement.spacedBy(spacing)
+        ) {
+            for (component in layout.contentComponents) {
+                AnimatedVisibility(component.isVisible) {
+                    with(component.component as ComposeVolumePanelUiComponent) { Content(Modifier) }
+                }
+            }
+        }
+
+        Column(
+            modifier = Modifier.weight(1f),
+            verticalArrangement = Arrangement.spacedBy(space = spacing, alignment = Alignment.Top)
+        ) {
+            for (component in layout.headerComponents) {
+                AnimatedVisibility(component.isVisible) {
+                    with(component.component as ComposeVolumePanelUiComponent) {
+                        Content(Modifier.weight(1f))
+                    }
+                }
+            }
+            Row(
+                modifier = Modifier.fillMaxWidth().wrapContentHeight(),
+                horizontalArrangement = Arrangement.spacedBy(spacing),
+            ) {
+                for (component in layout.footerComponents) {
+                    AnimatedVisibility(component.isVisible) {
+                        with(component.component as ComposeVolumePanelUiComponent) {
+                            Content(Modifier.weight(1f))
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
index e8d5966..86eb849 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VerticalVolumePanelContent.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.volume.panel.ui.composable
 
 import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.animateContentSize
 import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.Row
@@ -33,9 +34,16 @@
     modifier: Modifier = Modifier,
 ) {
     Column(
-        modifier = modifier,
+        modifier = modifier.animateContentSize(),
         verticalArrangement = Arrangement.spacedBy(20.dp),
     ) {
+        for (component in layout.headerComponents) {
+            AnimatedVisibility(component.isVisible) {
+                with(component.component as ComposeVolumePanelUiComponent) {
+                    Content(Modifier.weight(1f))
+                }
+            }
+        }
         for (component in layout.contentComponents) {
             AnimatedVisibility(component.isVisible) {
                 with(component.component as ComposeVolumePanelUiComponent) { Content(Modifier) }
@@ -44,11 +52,13 @@
         if (layout.footerComponents.isNotEmpty()) {
             Row(
                 modifier = Modifier.fillMaxWidth().wrapContentHeight(),
-                horizontalArrangement = Arrangement.spacedBy(20.dp)
+                horizontalArrangement = Arrangement.spacedBy(20.dp),
             ) {
                 for (component in layout.footerComponents) {
-                    with(component.component as ComposeVolumePanelUiComponent) {
-                        Content(Modifier.weight(1f))
+                    AnimatedVisibility(component.isVisible) {
+                        with(component.component as ComposeVolumePanelUiComponent) {
+                            Content(Modifier.weight(1f))
+                        }
                     }
                 }
             }
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelComposeScope.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelComposeScope.kt
index c70c6b1..10731c7 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelComposeScope.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelComposeScope.kt
@@ -16,17 +16,21 @@
 
 package com.android.systemui.volume.panel.ui.composable
 
+import android.content.res.Configuration
 import android.content.res.Configuration.Orientation
 import com.android.systemui.volume.panel.ui.viewmodel.VolumePanelState
 
 class VolumePanelComposeScope(private val state: VolumePanelState) {
 
-    /**
-     * Layout orientation of the panel. It doesn't necessarily aligns with the device orientation,
-     * because in some cases we want to show bigger version of a portrait orientation when the
-     * device is in landscape.
-     */
+    /** Layout orientation of the panel. This aligns with the device orientation. */
     @Orientation
     val orientation: Int
         get() = state.orientation
+
+    /** Is true when Volume Panel is using wide-screen layout and false the otherwise. */
+    val isWideScreen: Boolean
+        get() = state.isWideScreen
 }
+
+val VolumePanelComposeScope.isPortrait: Boolean
+    get() = orientation == Configuration.ORIENTATION_PORTRAIT
diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelRoot.kt b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelRoot.kt
index 60d03fc..dd63420 100644
--- a/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelRoot.kt
+++ b/packages/SystemUI/compose/features/src/com/android/systemui/volume/panel/ui/composable/VolumePanelRoot.kt
@@ -17,17 +17,13 @@
 package com.android.systemui.volume.panel.ui.composable
 
 import android.content.res.Configuration
-import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.animation.core.MutableTransitionState
-import androidx.compose.animation.slideInVertically
-import androidx.compose.animation.slideOutVertically
-import androidx.compose.foundation.background
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.heightIn
 import androidx.compose.foundation.layout.navigationBarsPadding
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.shape.RoundedCornerShape
@@ -37,11 +33,10 @@
 import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.getValue
-import androidx.compose.runtime.remember
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.alpha
 import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.unit.dp
 import com.android.compose.theme.PlatformTheme
 import com.android.systemui.res.R
 import com.android.systemui.volume.panel.ui.layout.ComponentsLayout
@@ -51,48 +46,45 @@
 @Composable
 fun VolumePanelRoot(
     viewModel: VolumePanelViewModel,
-    onDismissAnimationFinished: () -> Unit,
     modifier: Modifier = Modifier,
+    onDismiss: () -> Unit
 ) {
+    LaunchedEffect(viewModel) {
+        viewModel.volumePanelState.collect {
+            if (!it.isVisible) {
+                onDismiss()
+            }
+        }
+    }
+
     PlatformTheme(isSystemInDarkTheme()) {
         val state: VolumePanelState by viewModel.volumePanelState.collectAsState()
         val components by viewModel.componentsLayout.collectAsState(null)
 
-        val transitionState =
-            remember { MutableTransitionState(false) }.apply { targetState = state.isVisible }
-
-        LaunchedEffect(transitionState.targetState, transitionState.isIdle) {
-            if (!transitionState.targetState && transitionState.isIdle) {
-                onDismissAnimationFinished()
+        with(VolumePanelComposeScope(state)) {
+            var boxModifier = modifier.fillMaxSize().clickable(onClick = onDismiss)
+            if (!isPortrait) {
+                boxModifier = boxModifier.padding(horizontal = 48.dp)
             }
-        }
-
-        Box(
-            modifier = modifier.fillMaxSize(),
-            contentAlignment = Alignment.BottomCenter,
-        ) {
-            Spacer(
-                modifier =
-                    Modifier.fillMaxSize()
-                        .alpha(0.32f)
-                        .background(MaterialTheme.colorScheme.scrim)
-                        .clickable(onClick = { viewModel.dismissPanel() })
-            )
-            AnimatedVisibility(
-                visibleState = transitionState,
-                enter = slideInVertically { it },
-                exit = slideOutVertically { it },
+            Box(
+                modifier = boxModifier,
+                contentAlignment = Alignment.BottomCenter,
             ) {
                 val radius = dimensionResource(R.dimen.volume_panel_corner_radius)
                 Surface(
+                    modifier =
+                        Modifier.clickable(
+                            interactionSource = null,
+                            indication = null,
+                            onClick = {
+                                // prevent windowCloseOnTouchOutside from dismissing when tapped on
+                                // the panel itself.
+                            },
+                        ),
                     shape = RoundedCornerShape(topStart = radius, topEnd = radius),
                     color = MaterialTheme.colorScheme.surfaceContainer,
                 ) {
-                    Column {
-                        components?.let { componentsState ->
-                            with(VolumePanelComposeScope(state)) { Components(componentsState) }
-                        }
-                    }
+                    Column { components?.let { componentsState -> Components(componentsState) } }
                 }
             }
         }
@@ -100,27 +92,38 @@
 }
 
 @Composable
-private fun VolumePanelComposeScope.Components(state: ComponentsLayout) {
+private fun VolumePanelComposeScope.Components(components: ComponentsLayout) {
     if (orientation == Configuration.ORIENTATION_PORTRAIT) {
         VerticalVolumePanelContent(
-            state,
-            modifier = Modifier.padding(dimensionResource(R.dimen.volume_panel_content_padding)),
+            components,
+            modifier = Modifier.padding(24.dp),
         )
     } else {
-        TODO("Add landscape layout")
+        HorizontalVolumePanelContent(
+            components,
+            modifier =
+                Modifier.padding(start = 24.dp, top = 24.dp, end = 24.dp, bottom = 20.dp)
+                    .heightIn(max = 236.dp),
+        )
     }
 
-    val horizontalPadding = dimensionResource(R.dimen.volume_panel_bottom_bar_horizontal_padding)
-    if (state.bottomBarComponent.isVisible) {
-        with(state.bottomBarComponent.component as ComposeVolumePanelUiComponent) {
-            Content(
-                Modifier.navigationBarsPadding()
+    if (components.bottomBarComponent.isVisible) {
+        val horizontalPadding =
+            dimensionResource(R.dimen.volume_panel_bottom_bar_horizontal_padding)
+        Box(
+            modifier =
+                Modifier.fillMaxWidth()
+                    .navigationBarsPadding()
                     .padding(
                         start = horizontalPadding,
                         end = horizontalPadding,
                         bottom = dimensionResource(R.dimen.volume_panel_bottom_bar_bottom_padding),
-                    )
-            )
+                    ),
+            contentAlignment = Alignment.Center,
+        ) {
+            with(components.bottomBarComponent.component as ComposeVolumePanelUiComponent) {
+                Content(Modifier)
+            }
         }
     }
 }
diff --git a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
index 3dfe65a..51c008a 100644
--- a/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
+++ b/packages/SystemUI/customization/src/com/android/systemui/shared/clocks/ClockRegistry.kt
@@ -36,7 +36,7 @@
 import com.android.systemui.plugins.clocks.ClockProvider
 import com.android.systemui.plugins.clocks.ClockProviderPlugin
 import com.android.systemui.plugins.clocks.ClockSettings
-import com.android.systemui.util.Assert
+import com.android.systemui.util.ThreadAssert
 import java.io.PrintWriter
 import java.util.concurrent.ConcurrentHashMap
 import java.util.concurrent.atomic.AtomicBoolean
@@ -89,6 +89,7 @@
     val keepAllLoaded: Boolean,
     subTag: String,
     var isTransitClockEnabled: Boolean = false,
+    val assert: ThreadAssert = ThreadAssert(),
 ) {
     private val TAG = "${ClockRegistry::class.simpleName} ($subTag)"
     private val logger: Logger =
@@ -286,7 +287,7 @@
 
     @OpenForTesting
     open fun querySettings() {
-        assertNotMainThread()
+        assert.isNotMainThread()
         val result =
             try {
                 val json =
@@ -313,7 +314,7 @@
 
     @OpenForTesting
     open fun applySettings(value: ClockSettings?) {
-        assertNotMainThread()
+        assert.isNotMainThread()
 
         try {
             value?.metadata?.put(KEY_TIMESTAMP, System.currentTimeMillis())
@@ -339,16 +340,6 @@
         settings = value
     }
 
-    @OpenForTesting
-    protected open fun assertMainThread() {
-        Assert.isMainThread()
-    }
-
-    @OpenForTesting
-    protected open fun assertNotMainThread() {
-        Assert.isNotMainThread()
-    }
-
     private var isClockChanged = AtomicBoolean(false)
     private fun triggerOnCurrentClockChanged() {
         val shouldSchedule = isClockChanged.compareAndSet(false, true)
@@ -357,7 +348,7 @@
         }
 
         scope.launch(mainDispatcher) {
-            assertMainThread()
+            assert.isMainThread()
             isClockChanged.set(false)
             clockChangeListeners.forEach { it.onCurrentClockChanged() }
         }
@@ -371,7 +362,7 @@
         }
 
         scope.launch(mainDispatcher) {
-            assertMainThread()
+            assert.isMainThread()
             isClockListChanged.set(false)
             clockChangeListeners.forEach { it.onAvailableClocksChanged() }
         }
@@ -585,7 +576,7 @@
      * Calling from main thread to make sure the access is thread safe.
      */
     fun registerClockChangeListener(listener: ClockChangeListener) {
-        assertMainThread()
+        assert.isMainThread()
         clockChangeListeners.add(listener)
     }
 
@@ -595,7 +586,7 @@
      * Calling from main thread to make sure the access is thread safe.
      */
     fun unregisterClockChangeListener(listener: ClockChangeListener) {
-        assertMainThread()
+        assert.isMainThread()
         clockChangeListeners.remove(listener)
     }
 
diff --git a/location/java/android/location/IGeocodeListener.aidl b/packages/SystemUI/customization/src/com/android/systemui/util/ThreadAssert.kt
similarity index 62%
copy from location/java/android/location/IGeocodeListener.aidl
copy to packages/SystemUI/customization/src/com/android/systemui/util/ThreadAssert.kt
index 8e10411..ccbf4ef 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/packages/SystemUI/customization/src/com/android/systemui/util/ThreadAssert.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -11,19 +11,13 @@
  * 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.
+ * limitations under the License
  */
 
-package android.location;
+package com.android.systemui.util
 
-import android.location.Address;
-
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
+/** Injectable helper providing thread assertions. */
+class ThreadAssert() {
+    fun isMainThread() = Assert.isMainThread()
+    fun isNotMainThread() = Assert.isNotMainThread()
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
index e8a43ac..38dc24e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt
@@ -64,9 +64,10 @@
 import com.android.systemui.scene.domain.interactor.SceneInteractor
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
+import com.android.systemui.scene.shared.model.FakeSceneDataSource
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.shared.Flags.FLAG_SIDEFPS_CONTROLLER_REFACTOR
 import com.android.systemui.statusbar.policy.ConfigurationController
 import com.android.systemui.statusbar.policy.DevicePostureController
@@ -170,6 +171,7 @@
     private lateinit var deviceEntryInteractor: DeviceEntryInteractor
     @Mock private lateinit var primaryBouncerInteractor: Lazy<PrimaryBouncerInteractor>
     private lateinit var sceneTransitionStateFlow: MutableStateFlow<ObservableTransitionState>
+    private lateinit var fakeSceneDataSource: FakeSceneDataSource
 
     private lateinit var underTest: KeyguardSecurityContainerController
 
@@ -246,6 +248,8 @@
         sceneInteractor.setTransitionState(sceneTransitionStateFlow)
         deviceEntryInteractor = kosmos.deviceEntryInteractor
 
+        fakeSceneDataSource = kosmos.fakeSceneDataSource
+
         underTest =
             KeyguardSecurityContainerController(
                 view,
@@ -810,7 +814,8 @@
             // is
             // not enough to trigger a dismissal of the keyguard.
             underTest.onViewAttached()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Bouncer, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Bouncer, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Lockscreen,
@@ -820,7 +825,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Bouncer, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Bouncer)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Bouncer)
             runCurrent()
             verify(viewMediatorCallback, never()).keyguardDone(anyInt())
@@ -829,7 +834,8 @@
             // keyguard.
             kosmos.fakeDeviceEntryRepository.setUnlocked(true)
             runCurrent()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Bouncer,
@@ -839,7 +845,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Gone)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Gone)
             runCurrent()
             verify(viewMediatorCallback).keyguardDone(anyInt())
@@ -847,7 +853,8 @@
             // While listening, moving back to the bouncer scene does not dismiss the keyguard
             // again.
             clearInvocations(viewMediatorCallback)
-            sceneInteractor.changeScene(SceneModel(SceneKey.Bouncer, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Bouncer, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Gone,
@@ -857,7 +864,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Bouncer, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Bouncer)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Bouncer)
             runCurrent()
             verify(viewMediatorCallback, never()).keyguardDone(anyInt())
@@ -866,7 +873,8 @@
             // scene
             // does not dismiss the keyguard while we're not listening.
             underTest.onViewDetached()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Bouncer,
@@ -876,13 +884,14 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Gone)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Gone)
             runCurrent()
             verify(viewMediatorCallback, never()).keyguardDone(anyInt())
 
             // While not listening, moving to the lockscreen does not dismiss the keyguard.
-            sceneInteractor.changeScene(SceneModel(SceneKey.Lockscreen, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Lockscreen, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Gone,
@@ -892,7 +901,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Lockscreen, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Lockscreen)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Lockscreen)
             runCurrent()
             verify(viewMediatorCallback, never()).keyguardDone(anyInt())
@@ -900,7 +909,8 @@
             // Reattaching the view starts listening again so moving from the bouncer scene to the
             // gone scene now does dismiss the keyguard again, this time from lockscreen.
             underTest.onViewAttached()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             sceneTransitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     SceneKey.Lockscreen,
@@ -910,7 +920,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             runCurrent()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone, null), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Gone)
             sceneTransitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Gone)
             runCurrent()
             verify(viewMediatorCallback).keyguardDone(anyInt())
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplTest.kt
index c2f0c6f..40ea0a0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplTest.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.accessibility.data.repository
 
 import android.provider.Settings
+import android.view.accessibility.AccessibilityManager
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
@@ -26,13 +27,22 @@
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
 
 @SmallTest
 @RunWith(AndroidJUnit4::class)
 @android.platform.test.annotations.EnabledOnRavenwood
 class AccessibilityQsShortcutsRepositoryImplTest : SysuiTestCase() {
+    @Rule @JvmField val mockitoRule: MockitoRule = MockitoJUnit.rule()
+
+    // mocks
+    @Mock private lateinit var a11yManager: AccessibilityManager
     private val testDispatcher = StandardTestDispatcher()
     private val testScope = TestScope(testDispatcher)
     private val secureSettings = FakeSettings()
@@ -49,8 +59,17 @@
             }
         }
 
-    private val underTest =
-        AccessibilityQsShortcutsRepositoryImpl(userA11yQsShortcutsRepositoryFactory)
+    private lateinit var underTest: AccessibilityQsShortcutsRepositoryImpl
+
+    @Before
+    fun setUp() {
+        underTest =
+            AccessibilityQsShortcutsRepositoryImpl(
+                a11yManager,
+                userA11yQsShortcutsRepositoryFactory,
+                testDispatcher
+            )
+    }
 
     @Test
     fun a11yQsShortcutTargetsForCorrectUsers() =
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
index fbb5415..ad29e68 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PasswordBouncerViewModelTest.kt
@@ -34,7 +34,6 @@
 import com.android.systemui.res.R
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.android.systemui.user.data.model.SelectedUserModel
 import com.android.systemui.user.data.model.SelectionStatus
@@ -87,14 +86,14 @@
     @Test
     fun onShown() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val password by collectLastValue(underTest.password)
             lockDeviceAndOpenPasswordBouncer()
 
             assertThat(message?.text).isEqualTo(ENTER_YOUR_PASSWORD)
             assertThat(password).isEmpty()
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
             assertThat(underTest.authenticationMethod).isEqualTo(AuthenticationMethodModel.Password)
         }
 
@@ -117,7 +116,7 @@
     @Test
     fun onPasswordInputChanged() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val password by collectLastValue(underTest.password)
             lockDeviceAndOpenPasswordBouncer()
@@ -126,7 +125,7 @@
 
             assertThat(message?.text).isEmpty()
             assertThat(password).isEqualTo("password")
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -201,7 +200,7 @@
     @Test
     fun onShown_againAfterSceneChange_resetsPassword() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val password by collectLastValue(underTest.password)
             lockDeviceAndOpenPasswordBouncer()
 
@@ -217,7 +216,7 @@
 
             // Ensure the previously-entered password is not shown.
             assertThat(password).isEmpty()
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -330,16 +329,15 @@
         }
 
     private fun TestScope.switchToScene(toScene: SceneKey) {
-        val currentScene by collectLastValue(sceneInteractor.desiredScene)
-        val bouncerShown = currentScene?.key != SceneKey.Bouncer && toScene == SceneKey.Bouncer
-        val bouncerHidden = currentScene?.key == SceneKey.Bouncer && toScene != SceneKey.Bouncer
-        sceneInteractor.changeScene(SceneModel(toScene), "reason")
-        sceneInteractor.onSceneChanged(SceneModel(toScene), "reason")
+        val currentScene by collectLastValue(sceneInteractor.currentScene)
+        val bouncerShown = currentScene != SceneKey.Bouncer && toScene == SceneKey.Bouncer
+        val bouncerHidden = currentScene == SceneKey.Bouncer && toScene != SceneKey.Bouncer
+        sceneInteractor.changeScene(toScene, "reason")
         if (bouncerShown) underTest.onShown()
         if (bouncerHidden) underTest.onHidden()
         runCurrent()
 
-        assertThat(currentScene).isEqualTo(SceneModel(toScene))
+        assertThat(currentScene).isEqualTo(toScene)
     }
 
     private fun TestScope.lockDeviceAndOpenPasswordBouncer() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
index 725bdbd..32de1f2 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PatternBouncerViewModelTest.kt
@@ -32,7 +32,6 @@
 import com.android.systemui.res.R
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
@@ -78,7 +77,7 @@
     @Test
     fun onShown() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val selectedDots by collectLastValue(underTest.selectedDots)
             val currentDot by collectLastValue(underTest.currentDot)
@@ -87,14 +86,14 @@
             assertThat(message?.text).isEqualTo(ENTER_YOUR_PATTERN)
             assertThat(selectedDots).isEmpty()
             assertThat(currentDot).isNull()
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
             assertThat(underTest.authenticationMethod).isEqualTo(AuthenticationMethodModel.Pattern)
         }
 
     @Test
     fun onDragStart() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val selectedDots by collectLastValue(underTest.selectedDots)
             val currentDot by collectLastValue(underTest.currentDot)
@@ -105,7 +104,7 @@
             assertThat(message?.text).isEmpty()
             assertThat(selectedDots).isEmpty()
             assertThat(currentDot).isNull()
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -147,7 +146,7 @@
     @Test
     fun onDragEnd_whenWrong() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val selectedDots by collectLastValue(underTest.selectedDots)
             val currentDot by collectLastValue(underTest.currentDot)
@@ -160,7 +159,7 @@
             assertThat(selectedDots).isEmpty()
             assertThat(currentDot).isNull()
             assertThat(message?.text).isEqualTo(WRONG_PATTERN)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -369,16 +368,15 @@
     }
 
     private fun TestScope.switchToScene(toScene: SceneKey) {
-        val currentScene by collectLastValue(sceneInteractor.desiredScene)
-        val bouncerShown = currentScene?.key != SceneKey.Bouncer && toScene == SceneKey.Bouncer
-        val bouncerHidden = currentScene?.key == SceneKey.Bouncer && toScene != SceneKey.Bouncer
-        sceneInteractor.changeScene(SceneModel(toScene), "reason")
-        sceneInteractor.onSceneChanged(SceneModel(toScene), "reason")
+        val currentScene by collectLastValue(sceneInteractor.currentScene)
+        val bouncerShown = currentScene != SceneKey.Bouncer && toScene == SceneKey.Bouncer
+        val bouncerHidden = currentScene == SceneKey.Bouncer && toScene != SceneKey.Bouncer
+        sceneInteractor.changeScene(toScene, "reason")
         if (bouncerShown) underTest.onShown()
         if (bouncerHidden) underTest.onHidden()
         runCurrent()
 
-        assertThat(currentScene).isEqualTo(SceneModel(toScene))
+        assertThat(currentScene).isEqualTo(toScene)
     }
 
     private fun TestScope.lockDeviceAndOpenPatternBouncer() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
index 06e1258..ccf7094 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModelTest.kt
@@ -32,7 +32,6 @@
 import com.android.systemui.res.R
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -63,12 +62,12 @@
     fun setUp() {
         underTest =
             PinBouncerViewModel(
-                    applicationContext = context,
-                    viewModelScope = testScope.backgroundScope,
-                    interactor = bouncerInteractor,
-                    isInputEnabled = MutableStateFlow(true).asStateFlow(),
-                    simBouncerInteractor = kosmos.simBouncerInteractor,
-                    authenticationMethod = AuthenticationMethodModel.Pin,
+                applicationContext = context,
+                viewModelScope = testScope.backgroundScope,
+                interactor = bouncerInteractor,
+                isInputEnabled = MutableStateFlow(true).asStateFlow(),
+                simBouncerInteractor = kosmos.simBouncerInteractor,
+                authenticationMethod = AuthenticationMethodModel.Pin,
             )
 
         overrideResource(R.string.keyguard_enter_your_pin, ENTER_YOUR_PIN)
@@ -182,7 +181,7 @@
     @Test
     fun onBackspaceButtonLongPressed() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
             lockDeviceAndOpenPinBouncer()
@@ -197,7 +196,7 @@
 
             assertThat(message?.text).isEmpty()
             assertThat(pin).isEmpty()
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -216,7 +215,7 @@
     @Test
     fun onAuthenticateButtonClicked_whenWrong() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
             lockDeviceAndOpenPinBouncer()
@@ -231,7 +230,7 @@
 
             assertThat(pin).isEmpty()
             assertThat(message?.text).ignoringCase().isEqualTo(WRONG_PIN)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -276,7 +275,7 @@
     @Test
     fun onAutoConfirm_whenWrong() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             val message by collectLastValue(bouncerViewModel.message)
             val pin by collectLastValue(underTest.pinInput.map { it.getPin() })
             kosmos.fakeAuthenticationRepository.setAutoConfirmFeatureEnabled(true)
@@ -291,7 +290,7 @@
 
             assertThat(pin).isEmpty()
             assertThat(message?.text).ignoringCase().isEqualTo(WRONG_PIN)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
@@ -389,16 +388,15 @@
         }
 
     private fun TestScope.switchToScene(toScene: SceneKey) {
-        val currentScene by collectLastValue(sceneInteractor.desiredScene)
-        val bouncerShown = currentScene?.key != SceneKey.Bouncer && toScene == SceneKey.Bouncer
-        val bouncerHidden = currentScene?.key == SceneKey.Bouncer && toScene != SceneKey.Bouncer
-        sceneInteractor.changeScene(SceneModel(toScene), "reason")
-        sceneInteractor.onSceneChanged(SceneModel(toScene), "reason")
+        val currentScene by collectLastValue(sceneInteractor.currentScene)
+        val bouncerShown = currentScene != SceneKey.Bouncer && toScene == SceneKey.Bouncer
+        val bouncerHidden = currentScene == SceneKey.Bouncer && toScene != SceneKey.Bouncer
+        sceneInteractor.changeScene(toScene, "reason")
         if (bouncerShown) underTest.onShown()
         if (bouncerHidden) underTest.onHidden()
         runCurrent()
 
-        assertThat(currentScene).isEqualTo(SceneModel(toScene))
+        assertThat(currentScene).isEqualTo(toScene)
     }
 
     private fun TestScope.lockDeviceAndOpenPinBouncer() {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt
index b4e2eab..5b20ae5 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalRepositoryImplTest.kt
@@ -26,7 +26,6 @@
 import com.android.systemui.scene.data.repository.sceneContainerRepository
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.flow.flowOf
@@ -80,7 +79,7 @@
         testScope.runTest {
             underTest = createRepositoryImpl(true)
 
-            sceneContainerRepository.setDesiredScene(SceneModel(key = SceneKey.Communal))
+            sceneContainerRepository.changeScene(SceneKey.Communal)
 
             val isCommunalHubShowing by collectLastValue(underTest.isCommunalHubShowing)
             assertThat(isCommunalHubShowing).isTrue()
@@ -91,7 +90,7 @@
         testScope.runTest {
             underTest = createRepositoryImpl(true)
 
-            sceneContainerRepository.setDesiredScene(SceneModel(key = SceneKey.Lockscreen))
+            sceneContainerRepository.changeScene(SceneKey.Lockscreen)
 
             val isCommunalHubShowing by collectLastValue(underTest.isCommunalHubShowing)
             assertThat(isCommunalHubShowing).isFalse()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt
new file mode 100644
index 0000000..2e9ee5c
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorTest.kt
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 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 com.android.systemui.deviceentry.domain.interactor
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class DeviceEntryBiometricSettingsInteractorTest : SysuiTestCase() {
+    private val kosmos = testKosmos()
+    private val biometricSettingsRepository = kosmos.biometricSettingsRepository
+    private val underTest = kosmos.deviceEntryBiometricSettingsInteractor
+
+    @Test
+    fun isCoex_true() = runTest {
+        val isCoex by collectLastValue(underTest.fingerprintAndFaceEnrolledAndEnabled)
+        biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+        biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
+        assertThat(isCoex).isTrue()
+    }
+
+    @Test
+    fun isCoex_faceOnly() = runTest {
+        val isCoex by collectLastValue(underTest.fingerprintAndFaceEnrolledAndEnabled)
+        biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+        biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+        assertThat(isCoex).isFalse()
+    }
+
+    @Test
+    fun isCoex_fingerprintOnly() = runTest {
+        val isCoex by collectLastValue(underTest.fingerprintAndFaceEnrolledAndEnabled)
+        biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(false)
+        biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
+        assertThat(isCoex).isFalse()
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
index 05b5891..98719dd3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractorTest.kt
@@ -32,7 +32,6 @@
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -311,9 +310,9 @@
     @Test
     fun showOrUnlockDevice_notLocked_switchesToGoneScene() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             switchToScene(SceneKey.Lockscreen)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
@@ -323,15 +322,15 @@
 
             underTest.attemptDeviceEntry()
 
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Gone))
+            assertThat(currentScene).isEqualTo(SceneKey.Gone)
         }
 
     @Test
     fun showOrUnlockDevice_authMethodNotSecure_switchesToGoneScene() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             switchToScene(SceneKey.Lockscreen)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
@@ -340,15 +339,15 @@
 
             underTest.attemptDeviceEntry()
 
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Gone))
+            assertThat(currentScene).isEqualTo(SceneKey.Gone)
         }
 
     @Test
     fun showOrUnlockDevice_authMethodSwipe_switchesToGoneScene() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             switchToScene(SceneKey.Lockscreen)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
@@ -358,7 +357,7 @@
 
             underTest.attemptDeviceEntry()
 
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Gone))
+            assertThat(currentScene).isEqualTo(SceneKey.Gone)
         }
 
     @Test
@@ -384,6 +383,6 @@
         }
 
     private fun switchToScene(sceneKey: SceneKey) {
-        sceneInteractor.changeScene(SceneModel(sceneKey), "reason")
+        sceneInteractor.changeScene(sceneKey, "reason")
     }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
index 0b320a2..ef2b6f0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt
@@ -27,7 +27,10 @@
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.keyguard.data.repository.FakeCommandQueue
 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.StatusBarState
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.power.domain.interactor.PowerInteractorFactory
 import com.android.systemui.scene.domain.interactor.sceneInteractor
@@ -56,11 +59,10 @@
     private val testScope = kosmos.testScope
     private val repository by lazy { kosmos.fakeKeyguardRepository }
     private val sceneInteractor by lazy { kosmos.sceneInteractor }
-    private val commandQueue by lazy {
-        FakeCommandQueue()
-    }
+    private val commandQueue by lazy { FakeCommandQueue() }
     private val bouncerRepository = FakeKeyguardBouncerRepository()
     private val shadeRepository = FakeShadeRepository()
+    private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
     private val transitionState: MutableStateFlow<ObservableTransitionState> =
         MutableStateFlow(ObservableTransitionState.Idle(SceneKey.Gone))
 
@@ -73,6 +75,7 @@
             bouncerRepository = bouncerRepository,
             configurationInteractor = ConfigurationInteractor(FakeConfigurationRepository()),
             shadeRepository = shadeRepository,
+            keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor,
             sceneInteractorProvider = { sceneInteractor },
         )
     }
@@ -188,6 +191,49 @@
         }
 
     @Test
+    fun dismissAlpha() =
+        testScope.runTest {
+            val dismissAlpha by collectLastValue(underTest.dismissAlpha)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.AOD,
+                to = KeyguardState.LOCKSCREEN,
+                testScope,
+            )
+
+            repository.setStatusBarState(StatusBarState.KEYGUARD)
+            shadeRepository.setLegacyShadeExpansion(1f)
+
+            // When not dismissable, no alpha value (null) should emit
+            repository.setKeyguardDismissible(false)
+            assertThat(dismissAlpha).isNull()
+
+            repository.setKeyguardDismissible(true)
+            assertThat(dismissAlpha).isGreaterThan(0.95f)
+        }
+
+    @Test
+    fun dismissAlpha_whenShadeIsExpandedEmitsNull() =
+        testScope.runTest {
+            val dismissAlpha by collectLastValue(underTest.dismissAlpha)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.AOD,
+                to = KeyguardState.LOCKSCREEN,
+                testScope,
+            )
+
+            repository.setStatusBarState(StatusBarState.SHADE_LOCKED)
+            shadeRepository.setQsExpansion(1f)
+
+            repository.setKeyguardDismissible(false)
+            assertThat(dismissAlpha).isNull()
+
+            repository.setKeyguardDismissible(true)
+            assertThat(dismissAlpha).isNull()
+        }
+
+    @Test
     fun animationDozingTransitions() =
         testScope.runTest {
             kosmos.fakeSceneContainerFlags.enabled = true
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
index 83782e2..837a9db 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelTest.kt
@@ -25,6 +25,8 @@
 import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
 import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.TransitionState
+import com.android.systemui.keyguard.shared.model.TransitionStep
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.testKosmos
 import com.android.systemui.util.mockito.whenever
@@ -42,49 +44,69 @@
 @RunWith(AndroidJUnit4::class)
 class AodAlphaViewModelTest : SysuiTestCase() {
 
-    @Mock
-    private lateinit var occludedToLockscreenTransitionViewModel:
-        OccludedToLockscreenTransitionViewModel
+    @Mock private lateinit var goneToAodTransitionViewModel: GoneToAodTransitionViewModel
 
     private val kosmos = testKosmos()
     private val testScope = kosmos.testScope
     private val keyguardRepository = kosmos.fakeKeyguardRepository
     private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
-    private val occludedToLockscreenAlpha = MutableStateFlow(0f)
 
     private lateinit var underTest: AodAlphaViewModel
 
+    private val enterFromTopAnimationAlpha = MutableStateFlow(0f)
+
     @Before
     fun setUp() {
         MockitoAnnotations.initMocks(this)
-        whenever(occludedToLockscreenTransitionViewModel.lockscreenAlpha)
-            .thenReturn(occludedToLockscreenAlpha)
-        kosmos.occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel
+        whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha)
+            .thenReturn(enterFromTopAnimationAlpha)
+        kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel
 
         underTest = kosmos.aodAlphaViewModel
     }
 
     @Test
-    fun alpha() =
+    fun alpha_WhenGoneToAod() =
         testScope.runTest {
             val alpha by collectLastValue(underTest.alpha)
 
             keyguardTransitionRepository.sendTransitionSteps(
-                from = KeyguardState.OFF,
-                to = KeyguardState.LOCKSCREEN,
+                from = KeyguardState.AOD,
+                to = KeyguardState.GONE,
                 testScope = testScope,
             )
-
-            keyguardRepository.setKeyguardAlpha(0.1f)
-            assertThat(alpha).isEqualTo(0.1f)
-            keyguardRepository.setKeyguardAlpha(0.5f)
-            assertThat(alpha).isEqualTo(0.5f)
-            keyguardRepository.setKeyguardAlpha(0.2f)
-            assertThat(alpha).isEqualTo(0.2f)
-            keyguardRepository.setKeyguardAlpha(0f)
             assertThat(alpha).isEqualTo(0f)
-            occludedToLockscreenAlpha.value = 0.8f
-            assertThat(alpha).isEqualTo(0.8f)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.GONE,
+                to = KeyguardState.AOD,
+                testScope = testScope,
+            )
+            enterFromTopAnimationAlpha.value = 0.5f
+            assertThat(alpha).isEqualTo(0.5f)
+
+            enterFromTopAnimationAlpha.value = 1f
+            assertThat(alpha).isEqualTo(1f)
+        }
+
+    @Test
+    fun alpha_WhenGoneToDozing() =
+        testScope.runTest {
+            val alpha by collectLastValue(underTest.alpha)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.AOD,
+                to = KeyguardState.GONE,
+                testScope = testScope,
+            )
+            assertThat(alpha).isEqualTo(0f)
+
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.GONE,
+                to = KeyguardState.DOZING,
+                testScope = testScope,
+            )
+            assertThat(alpha).isEqualTo(1f)
         }
 
     @Test
@@ -92,17 +114,53 @@
         testScope.runTest {
             val alpha by collectLastValue(underTest.alpha)
 
-            keyguardTransitionRepository.sendTransitionSteps(
-                from = KeyguardState.LOCKSCREEN,
-                to = KeyguardState.GONE,
-                testScope = testScope,
+            keyguardTransitionRepository.sendTransitionStep(
+                TransitionStep(
+                    from = KeyguardState.LOCKSCREEN,
+                    to = KeyguardState.GONE,
+                    transitionState = TransitionState.STARTED,
+                )
+            )
+            assertThat(alpha).isNull()
+
+            keyguardTransitionRepository.sendTransitionStep(
+                TransitionStep(
+                    from = KeyguardState.LOCKSCREEN,
+                    to = KeyguardState.GONE,
+                    transitionState = TransitionState.RUNNING,
+                    value = 0.5f,
+                )
+            )
+            assertThat(alpha).isNull()
+
+            keyguardTransitionRepository.sendTransitionStep(
+                TransitionStep(
+                    from = KeyguardState.LOCKSCREEN,
+                    to = KeyguardState.GONE,
+                    transitionState = TransitionState.RUNNING,
+                    value = 1f,
+                )
+            )
+            assertThat(alpha).isEqualTo(0f)
+        }
+
+    @Test
+    fun enterFromTopAlpha() =
+        testScope.runTest {
+            val alpha by collectLastValue(underTest.alpha)
+
+            keyguardTransitionRepository.sendTransitionStep(
+                TransitionStep(
+                    from = KeyguardState.GONE,
+                    to = KeyguardState.AOD,
+                    transitionState = TransitionState.STARTED,
+                )
             )
 
-            keyguardRepository.setKeyguardAlpha(0.1f)
-            assertThat(alpha).isEqualTo(0f)
-            keyguardRepository.setKeyguardAlpha(0.5f)
-            assertThat(alpha).isEqualTo(0f)
-            keyguardRepository.setKeyguardAlpha(1f)
-            assertThat(alpha).isEqualTo(0f)
+            enterFromTopAnimationAlpha.value = 0.2f
+            assertThat(alpha).isEqualTo(0.2f)
+
+            enterFromTopAnimationAlpha.value = 1f
+            assertThat(alpha).isEqualTo(1f)
         }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
index d52696a..74fa465 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModelTest.kt
@@ -65,7 +65,6 @@
             clockControllerProvider = { clockController },
         )
     private val burnInFlow = MutableStateFlow(BurnInModel())
-    private val enterFromTopAnimationAlpha = MutableStateFlow(0f)
 
     @Before
     fun setUp() {
@@ -74,8 +73,6 @@
         MockitoAnnotations.initMocks(this)
         whenever(burnInInteractor.keyguardBurnIn).thenReturn(burnInFlow)
         kosmos.burnInInteractor = burnInInteractor
-        whenever(goneToAodTransitionViewModel.enterFromTopAnimationAlpha)
-            .thenReturn(enterFromTopAnimationAlpha)
         whenever(goneToAodTransitionViewModel.enterFromTopTranslationY(anyInt()))
             .thenReturn(emptyFlow())
         kosmos.goneToAodTransitionViewModel = goneToAodTransitionViewModel
@@ -278,16 +275,4 @@
             assertThat(translationY).isEqualTo(0)
             assertThat(scale).isEqualTo(BurnInScaleViewModel(scale = 0.5f, scaleClockOnly = false))
         }
-
-    @Test
-    fun alpha() =
-        testScope.runTest {
-            val alpha by collectLastValue(underTest.alpha)
-
-            enterFromTopAnimationAlpha.value = 0.2f
-            assertThat(alpha).isEqualTo(0.2f)
-
-            enterFromTopAnimationAlpha.value = 1f
-            assertThat(alpha).isEqualTo(1f)
-        }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
index 89e29cf..9da34da 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt
@@ -19,13 +19,13 @@
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
-import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
 import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
+import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
 import com.android.systemui.biometrics.shared.model.FingerprintSensorType
 import com.android.systemui.biometrics.shared.model.SensorStrength
 import com.android.systemui.coroutines.collectValues
-import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
 import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
 import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
@@ -198,33 +198,6 @@
 
             values.forEach { assertThat(it).isEqualTo(1f) }
         }
-
-    @Test
-    fun deviceEntryBackground_noUdfps_noUpdates() =
-        testScope.runTest {
-            fingerprintPropertyRepository.setProperties(
-                sensorId = 0,
-                strength = SensorStrength.STRONG,
-                sensorType = FingerprintSensorType.REAR,
-                sensorLocations = emptyMap(),
-            )
-            val values by collectValues(underTest.deviceEntryBackgroundViewAlpha)
-
-            keyguardTransitionRepository.sendTransitionSteps(
-                listOf(
-                    step(0f, TransitionState.STARTED),
-                    step(0f),
-                    step(0.1f),
-                    step(0.2f),
-                    step(0.3f),
-                    step(1f),
-                ),
-                testScope,
-            )
-
-            assertThat(values.size).isEqualTo(0) // no updates
-        }
-
     @Test
     fun lockscreenTranslationY() =
         testScope.runTest {
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
index bf1d76f..e04cbfd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelTest.kt
@@ -255,14 +255,21 @@
         testScope.runTest {
             val alpha by collectLastValue(underTest.alpha(viewState))
 
+            // Default value check
+            assertThat(alpha).isEqualTo(1f)
+
             // Hub transition state is idle with hub open.
             communalRepository.setTransitionState(
                 flowOf(ObservableCommunalTransitionState.Idle(CommunalSceneKey.Communal))
             )
             runCurrent()
 
-            // Set keyguard alpha to 1.0f.
-            keyguardInteractor.setAlpha(1.0f)
+            // Run at least 1 transition to make sure value remains at 0
+            keyguardTransitionRepository.sendTransitionSteps(
+                from = KeyguardState.AOD,
+                to = KeyguardState.LOCKSCREEN,
+                testScope,
+            )
 
             // Alpha property remains 0 regardless.
             assertThat(alpha).isEqualTo(0f)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt
index 7261723..3455050 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenSceneViewModelTest.kt
@@ -36,7 +36,6 @@
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel
 import com.android.systemui.testKosmos
 import com.android.systemui.user.data.repository.fakeUserRepository
@@ -66,7 +65,7 @@
             )
             kosmos.fakeDeviceEntryRepository.setLockscreenEnabled(true)
             kosmos.fakeDeviceEntryRepository.setUnlocked(true)
-            sceneInteractor.changeScene(SceneModel(SceneKey.Lockscreen), "reason")
+            sceneInteractor.changeScene(SceneKey.Lockscreen, "reason")
 
             assertThat(upTransitionSceneKey).isEqualTo(SceneKey.Gone)
         }
@@ -79,7 +78,7 @@
                 AuthenticationMethodModel.Pin
             )
             kosmos.fakeDeviceEntryRepository.setUnlocked(false)
-            sceneInteractor.changeScene(SceneModel(SceneKey.Lockscreen), "reason")
+            sceneInteractor.changeScene(SceneKey.Lockscreen, "reason")
 
             assertThat(upTransitionSceneKey).isEqualTo(SceneKey.Bouncer)
         }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
index 6fc5be1..15cf83c 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt
@@ -53,7 +53,7 @@
 
     val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
     val primaryBouncerInteractor = kosmos.mockPrimaryBouncerInteractor
-    val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController
+    private val sysuiStatusBarStateController = kosmos.sysuiStatusBarStateController
     val underTest by lazy { kosmos.primaryBouncerToGoneTransitionViewModel }
 
     @Before
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt
new file mode 100644
index 0000000..61e4774
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractorTest.kt
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.qs.pipeline.domain.interactor
+
+import android.content.Context
+import android.content.pm.UserInfo
+import android.os.UserHandle
+import android.platform.test.annotations.DisableFlags
+import android.platform.test.annotations.EnableFlags
+import android.view.accessibility.Flags
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.accessibility.data.repository.FakeAccessibilityQsShortcutsRepository
+import com.android.systemui.qs.FakeQSFactory
+import com.android.systemui.qs.pipeline.domain.model.TileModel
+import com.android.systemui.qs.pipeline.shared.TileSpec
+import com.android.systemui.qs.tiles.ColorCorrectionTile
+import com.android.systemui.qs.tiles.ColorInversionTile
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mockito.mock
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@OptIn(ExperimentalCoroutinesApi::class)
+class AccessibilityTilesInteractorTest : SysuiTestCase() {
+    private val USER_0_INFO =
+        UserInfo(
+            0,
+            "zero",
+            "",
+            UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL,
+        )
+
+    private val USER_1_INFO =
+        UserInfo(
+            1,
+            "one",
+            "",
+            UserInfo.FLAG_ADMIN or UserInfo.FLAG_FULL,
+        )
+
+    private val USER_0_TILES = listOf(TileSpec.create(ColorInversionTile.TILE_SPEC))
+    private val USER_1_TILES = listOf(TileSpec.create(ColorCorrectionTile.TILE_SPEC))
+    private lateinit var currentTilesInteractor: CurrentTilesInteractor
+    private lateinit var a11yQsShortcutsRepository: FakeAccessibilityQsShortcutsRepository
+    private lateinit var underTest: AccessibilityTilesInteractor
+    private lateinit var currentTiles: MutableStateFlow<List<TileModel>>
+    private lateinit var userContext: MutableStateFlow<Context>
+    private lateinit var qsFactory: FakeQSFactory
+    private val testDispatcher = StandardTestDispatcher()
+    private val testScope = TestScope(testDispatcher)
+
+    @Before
+    fun setUp() {
+        a11yQsShortcutsRepository = FakeAccessibilityQsShortcutsRepository()
+
+        qsFactory = FakeQSFactory { spec: String ->
+            FakeQSTile(userContext.value.userId).also { it.setTileSpec(spec) }
+        }
+        currentTiles = MutableStateFlow(emptyList())
+        userContext = MutableStateFlow(mock(Context::class.java))
+        setUser(USER_0_INFO)
+
+        currentTilesInteractor = mock()
+        whenever(currentTilesInteractor.currentTiles).thenReturn(currentTiles)
+        whenever(currentTilesInteractor.userContext).thenReturn(userContext)
+    }
+
+    @Test
+    @DisableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
+    fun currentTilesChanged_a11yQsShortcutFlagOff_nothingHappen() =
+        testScope.runTest {
+            underTest = createInteractor()
+
+            setTiles(USER_0_TILES)
+            runCurrent()
+
+            assertThat(a11yQsShortcutsRepository.notifyA11yManagerTilesChangedRequests).isEmpty()
+        }
+
+    @Test
+    @EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
+    fun currentTilesChanged_a11yQsShortcutFlagOn_notifyAccessibilityRepository() =
+        testScope.runTest {
+            underTest = createInteractor()
+
+            setTiles(USER_0_TILES)
+            runCurrent()
+
+            val requests = a11yQsShortcutsRepository.notifyA11yManagerTilesChangedRequests
+            assertThat(requests).hasSize(1)
+            with(requests[0]) {
+                assertThat(this.userContext.userId).isEqualTo(USER_0_INFO.id)
+                assertThat(this.tiles).isEqualTo(USER_0_TILES)
+            }
+        }
+
+    @Test
+    @EnableFlags(Flags.FLAG_A11Y_QS_SHORTCUT)
+    fun userChanged_a11yQsShortcutFlagOn_notifyAccessibilityRepositoryWithCorrectTilesAndUser() =
+        testScope.runTest {
+            underTest = createInteractor()
+            setTiles(USER_0_TILES)
+            runCurrent()
+
+            // Change User and updates corresponding tiles
+            setUser(USER_1_INFO)
+            runCurrent()
+            setTiles(USER_1_TILES)
+            runCurrent()
+
+            val requestsForUser1 =
+                a11yQsShortcutsRepository.notifyA11yManagerTilesChangedRequests.filter {
+                    it.userContext.userId == USER_1_INFO.id
+                }
+            assertThat(requestsForUser1).hasSize(1)
+            assertThat(requestsForUser1[0].tiles).isEqualTo(USER_1_TILES)
+        }
+
+    private fun setTiles(tiles: List<TileSpec>) {
+        currentTiles.tryEmit(
+            tiles.mapNotNull { qsFactory.createTile(it.spec)?.let { it1 -> TileModel(it, it1) } }
+        )
+    }
+
+    private fun setUser(userInfo: UserInfo) {
+        userContext.tryEmit(
+            mock(Context::class.java).also {
+                whenever(it.userId).thenReturn(userInfo.id)
+                whenever(it.user).thenReturn(UserHandle.of(userInfo.id))
+            }
+        )
+    }
+
+    private fun createInteractor(): AccessibilityTilesInteractor {
+        return AccessibilityTilesInteractor(
+                a11yQsShortcutsRepository,
+                testDispatcher,
+                testScope.backgroundScope
+            )
+            .apply { init(currentTilesInteractor) }
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
index 51f8b11..d47da3e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModelTest.kt
@@ -29,8 +29,8 @@
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel
 import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
@@ -120,8 +120,8 @@
             assertThat(destinations)
                 .isEqualTo(
                     mapOf(
-                        UserAction.Back to SceneModel(SceneKey.Shade),
-                        UserAction.Swipe(Direction.UP) to SceneModel(SceneKey.Shade),
+                        UserAction.Back to UserActionResult(SceneKey.Shade),
+                        UserAction.Swipe(Direction.UP) to UserActionResult(SceneKey.Shade),
                     )
                 )
         }
@@ -135,7 +135,7 @@
             assertThat(destinations)
                 .isEqualTo(
                     mapOf(
-                        UserAction.Back to SceneModel(SceneKey.QuickSettings),
+                        UserAction.Back to UserActionResult(SceneKey.QuickSettings),
                     )
                 )
         }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
index 006f429..7c30c7e 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/SceneFrameworkIntegrationTest.kt
@@ -62,7 +62,7 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import com.android.systemui.settings.FakeDisplayTracker
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
@@ -196,6 +196,7 @@
 
     private lateinit var emergencyAffordanceManager: EmergencyAffordanceManager
     private lateinit var telecomManager: TelecomManager
+    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
 
     @Before
     fun setUp() {
@@ -270,7 +271,7 @@
         startable.start()
 
         assertWithMessage("Initial scene key mismatch!")
-            .that(sceneContainerViewModel.currentScene.value.key)
+            .that(sceneContainerViewModel.currentScene.value)
             .isEqualTo(sceneContainerConfig.initialSceneKey)
         assertWithMessage("Initial scene container visibility mismatch!")
             .that(sceneContainerViewModel.isVisible.value)
@@ -285,11 +286,12 @@
         testScope.runTest {
             emulateUserDrivenTransition(SceneKey.Bouncer)
 
+            fakeSceneDataSource.pause()
             enterPin()
-            assertCurrentScene(SceneKey.Gone)
-            emulateUiSceneTransition(
+            emulatePendingTransitionProgress(
                 expectedVisible = false,
             )
+            assertCurrentScene(SceneKey.Gone)
         }
 
     @Test
@@ -302,11 +304,12 @@
                 to = upDestinationSceneKey,
             )
 
+            fakeSceneDataSource.pause()
             enterPin()
-            assertCurrentScene(SceneKey.Gone)
-            emulateUiSceneTransition(
+            emulatePendingTransitionProgress(
                 expectedVisible = false,
             )
+            assertCurrentScene(SceneKey.Gone)
         }
 
     @Test
@@ -451,10 +454,11 @@
                 to = upDestinationSceneKey,
             )
 
+            fakeSceneDataSource.pause()
             dismissIme()
 
+            emulatePendingTransitionProgress()
             assertCurrentScene(SceneKey.Lockscreen)
-            emulateUiSceneTransition()
         }
 
     @Test
@@ -507,8 +511,9 @@
     @Test
     fun goesToGone_whenSimUnlocked_whileDeviceUnlocked() =
         testScope.runTest {
+            fakeSceneDataSource.pause()
             introduceLockedSim()
-            emulateUiSceneTransition(expectedVisible = true)
+            emulatePendingTransitionProgress(expectedVisible = true)
             enterSimPin(authMethodAfterSimUnlock = AuthenticationMethodModel.None)
             assertCurrentScene(SceneKey.Gone)
         }
@@ -516,8 +521,9 @@
     @Test
     fun showLockscreen_whenSimUnlocked_whileDeviceLocked() =
         testScope.runTest {
+            fakeSceneDataSource.pause()
             introduceLockedSim()
-            emulateUiSceneTransition(expectedVisible = true)
+            emulatePendingTransitionProgress(expectedVisible = true)
             enterSimPin(authMethodAfterSimUnlock = AuthenticationMethodModel.Pin)
             assertCurrentScene(SceneKey.Lockscreen)
         }
@@ -545,7 +551,7 @@
     private fun TestScope.assertCurrentScene(expected: SceneKey) {
         runCurrent()
         assertWithMessage("Current scene mismatch!")
-            .that(sceneContainerViewModel.currentScene.value.key)
+            .that(sceneContainerViewModel.currentScene.value)
             .isEqualTo(expected)
     }
 
@@ -592,35 +598,32 @@
     }
 
     /**
-     * Emulates a complete transition in the UI from whatever the current scene is in the UI to
-     * whatever the current scene should be, based on the value in
-     * [SceneContainerViewModel.onSceneChanged].
+     * Emulates a gradual transition to the currently pending scene that's sitting in the
+     * [fakeSceneDataSource]. This emits a series of progress updates to the [transitionState] and
+     * finishes by committing the pending scene as the current scene.
      *
-     * This should post a series of values into [transitionState] to emulate a gradual scene
-     * transition and culminate with a call to [SceneContainerViewModel.onSceneChanged].
-     *
-     * The method asserts that a transition is actually required. E.g. it will fail if the current
-     * scene in [transitionState] is already caught up with the scene in
-     * [SceneContainerViewModel.currentScene].
-     *
-     * @param expectedVisible Whether [SceneContainerViewModel.isVisible] should be set at the end
-     *   of the UI transition.
+     * In order to use this, the [fakeSceneDataSource] must be paused before this method is called.
      */
-    private fun TestScope.emulateUiSceneTransition(
+    private fun TestScope.emulatePendingTransitionProgress(
         expectedVisible: Boolean = true,
     ) {
-        val to = sceneContainerViewModel.currentScene.value
+        assertWithMessage("The FakeSceneDataSource has to be paused for this to do anything.")
+            .that(fakeSceneDataSource.isPaused)
+            .isTrue()
+
+        val to = fakeSceneDataSource.pendingScene ?: return
         val from = getCurrentSceneInUi()
-        assertWithMessage("Cannot transition to ${to.key} as the UI is already on that scene!")
-            .that(to.key)
-            .isNotEqualTo(from)
+
+        if (to == from) {
+            return
+        }
 
         // Begin to transition.
         val progressFlow = MutableStateFlow(0f)
         transitionState.value =
             ObservableTransitionState.Transition(
                 fromScene = getCurrentSceneInUi(),
-                toScene = to.key,
+                toScene = to,
                 progress = progressFlow,
                 isInitiatedByUserInput = false,
                 isUserInputOngoing = flowOf(false),
@@ -634,17 +637,18 @@
         }
 
         // End the transition and report the change.
-        transitionState.value = ObservableTransitionState.Idle(to.key)
+        transitionState.value = ObservableTransitionState.Idle(to)
 
-        sceneContainerViewModel.onSceneChanged(to)
+        fakeSceneDataSource.unpause(force = true)
         runCurrent()
 
-        assertWithMessage("Visibility mismatch after scene transition from $from to ${to.key}!")
+        assertWithMessage("Visibility mismatch after scene transition from $from to $to!")
             .that(sceneContainerViewModel.isVisible.value)
             .isEqualTo(expectedVisible)
+        assertThat(sceneContainerViewModel.currentScene.value).isEqualTo(to)
 
         bouncerSceneJob =
-            if (to.key == SceneKey.Bouncer) {
+            if (to == SceneKey.Bouncer) {
                 testScope.backgroundScope.launch {
                     bouncerViewModel.authMethodViewModel.collect {
                         // Do nothing. Need this to turn this otherwise cold flow, hot.
@@ -662,7 +666,7 @@
      * causes a scene change to the [to] scene.
      *
      * This also includes the emulation of the resulting UI transition that culminates with the UI
-     * catching up with the requested scene change (see [emulateUiSceneTransition]).
+     * catching up with the requested scene change (see [emulatePendingTransitionProgress]).
      *
      * @param to The scene to transition to.
      */
@@ -671,10 +675,10 @@
     ) {
         checkNotNull(to)
 
-        sceneInteractor.changeScene(SceneModel(to), "reason")
-        assertThat(sceneContainerViewModel.currentScene.value.key).isEqualTo(to)
+        fakeSceneDataSource.pause()
+        sceneInteractor.changeScene(to, "reason")
 
-        emulateUiSceneTransition(
+        emulatePendingTransitionProgress(
             expectedVisible = to != SceneKey.Gone,
         )
     }
@@ -703,11 +707,12 @@
             .isFalse()
 
         emulateUserDrivenTransition(SceneKey.Bouncer)
+        fakeSceneDataSource.pause()
         enterPin()
         // This repository state is not changed by the AuthInteractor, it relies on
         // KeyguardStateController.
         kosmos.fakeDeviceEntryRepository.setUnlocked(true)
-        emulateUiSceneTransition(
+        emulatePendingTransitionProgress(
             expectedVisible = false,
         )
     }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
index 2ad872c..1da3bc1 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryTest.kt
@@ -28,7 +28,6 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -63,21 +62,21 @@
     }
 
     @Test
-    fun desiredScene() =
+    fun currentScene() =
         testScope.runTest {
             val underTest = kosmos.sceneContainerRepository
-            val currentScene by collectLastValue(underTest.desiredScene)
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
-            underTest.setDesiredScene(SceneModel(SceneKey.Shade))
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Shade))
+            underTest.changeScene(SceneKey.Shade)
+            assertThat(currentScene).isEqualTo(SceneKey.Shade)
         }
 
     @Test(expected = IllegalStateException::class)
-    fun setDesiredScene_noSuchSceneInContainer_throws() {
+    fun changeScene_noSuchSceneInContainer_throws() {
         kosmos.sceneKeys = listOf(SceneKey.QuickSettings, SceneKey.Lockscreen)
         val underTest = kosmos.sceneContainerRepository
-        underTest.setDesiredScene(SceneModel(SceneKey.Shade))
+        underTest.changeScene(SceneKey.Shade)
     }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
index 942fbc2..4b9ebdc 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
@@ -29,7 +29,7 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -46,6 +46,7 @@
 
     private val kosmos = testKosmos()
     private val testScope = kosmos.testScope
+    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
 
     private lateinit var underTest: SceneInteractor
 
@@ -63,24 +64,24 @@
     @Test
     fun changeScene() =
         testScope.runTest {
-            val desiredScene by collectLastValue(underTest.desiredScene)
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
-            underTest.changeScene(SceneModel(SceneKey.Shade), "reason")
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Shade))
+            underTest.changeScene(SceneKey.Shade, "reason")
+            assertThat(currentScene).isEqualTo(SceneKey.Shade)
         }
 
     @Test
     fun changeScene_toGoneWhenUnl_doesNotThrow() =
         testScope.runTest {
-            val desiredScene by collectLastValue(underTest.desiredScene)
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
             kosmos.fakeDeviceEntryRepository.setUnlocked(true)
             runCurrent()
 
-            underTest.changeScene(SceneModel(SceneKey.Gone), "reason")
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Gone))
+            underTest.changeScene(SceneKey.Gone, "reason")
+            assertThat(currentScene).isEqualTo(SceneKey.Gone)
         }
 
     @Test(expected = IllegalStateException::class)
@@ -88,17 +89,18 @@
         testScope.runTest {
             kosmos.fakeDeviceEntryRepository.setUnlocked(false)
 
-            underTest.changeScene(SceneModel(SceneKey.Gone), "reason")
+            underTest.changeScene(SceneKey.Gone, "reason")
         }
 
     @Test
-    fun onSceneChanged() =
+    fun sceneChanged_inDataSource() =
         testScope.runTest {
-            val desiredScene by collectLastValue(underTest.desiredScene)
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
-            underTest.onSceneChanged(SceneModel(SceneKey.Shade), "reason")
-            assertThat(desiredScene).isEqualTo(SceneModel(SceneKey.Shade))
+            fakeSceneDataSource.changeScene(SceneKey.Shade)
+
+            assertThat(currentScene).isEqualTo(SceneKey.Shade)
         }
 
     @Test
@@ -142,20 +144,20 @@
         testScope.runTest {
             val transitionState =
                 MutableStateFlow<ObservableTransitionState>(
-                    ObservableTransitionState.Idle(underTest.desiredScene.value.key)
+                    ObservableTransitionState.Idle(underTest.currentScene.value)
                 )
             underTest.setTransitionState(transitionState)
 
             val transitionTo by collectLastValue(underTest.transitioningTo)
             assertThat(transitionTo).isNull()
 
-            underTest.changeScene(SceneModel(SceneKey.Shade), "reason")
+            underTest.changeScene(SceneKey.Shade, "reason")
             assertThat(transitionTo).isNull()
 
             val progress = MutableStateFlow(0f)
             transitionState.value =
                 ObservableTransitionState.Transition(
-                    fromScene = underTest.desiredScene.value.key,
+                    fromScene = underTest.currentScene.value,
                     toScene = SceneKey.Shade,
                     progress = progress,
                     isInitiatedByUserInput = false,
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
index 34c5173..ffea84b 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-@file:OptIn(ExperimentalCoroutinesApi::class)
+@file:OptIn(ExperimentalCoroutinesApi::class, ExperimentalCoroutinesApi::class)
 
 package com.android.systemui.scene.domain.startable
 
@@ -47,7 +47,7 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.statusbar.NotificationShadeWindowController
 import com.android.systemui.statusbar.phone.CentralSurfaces
 import com.android.systemui.statusbar.pipeline.mobile.data.repository.fakeMobileConnectionsRepository
@@ -59,7 +59,6 @@
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.flowOf
-import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
@@ -95,6 +94,7 @@
     private val sysUiState: SysUiState = mock()
     private val falsingCollector: FalsingCollector = mock()
     private val powerInteractor = PowerInteractorFactory.create().powerInteractor
+    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
 
     private lateinit var underTest: SceneContainerStartable
 
@@ -115,8 +115,8 @@
                 falsingCollector = falsingCollector,
                 powerInteractor = powerInteractor,
                 bouncerInteractor = bouncerInteractor,
-                simBouncerInteractor = dagger.Lazy { kosmos.simBouncerInteractor },
-                authenticationInteractor = dagger.Lazy { authenticationInteractor },
+                simBouncerInteractor = { kosmos.simBouncerInteractor },
+                authenticationInteractor = { authenticationInteractor },
                 windowController = windowController,
                 deviceProvisioningInteractor = kosmos.deviceProvisioningInteractor,
                 centralSurfaces = centralSurfaces,
@@ -126,8 +126,7 @@
     @Test
     fun hydrateVisibility() =
         testScope.runTest {
-            val currentDesiredSceneKey by
-                collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentDesiredSceneKey by collectLastValue(sceneInteractor.currentScene)
             val isVisible by collectLastValue(sceneInteractor.isVisible)
             val transitionStateFlow =
                 prepareState(
@@ -140,7 +139,8 @@
             underTest.start()
             assertThat(isVisible).isFalse()
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Shade, "reason")
             transitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     fromScene = SceneKey.Gone,
@@ -150,11 +150,12 @@
                     isUserInputOngoing = flowOf(false),
                 )
             assertThat(isVisible).isTrue()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Shade)
             transitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Shade)
             assertThat(isVisible).isTrue()
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             transitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     fromScene = SceneKey.Shade,
@@ -164,7 +165,7 @@
                     isUserInputOngoing = flowOf(false),
                 )
             assertThat(isVisible).isTrue()
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Gone)
             transitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Gone)
             assertThat(isVisible).isFalse()
         }
@@ -196,7 +197,7 @@
     @Test
     fun startsInLockscreenScene() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState()
 
             underTest.start()
@@ -208,7 +209,7 @@
     @Test
     fun switchToLockscreenWhenDeviceLocks() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isDeviceUnlocked = true,
                 initialSceneKey = SceneKey.Gone,
@@ -224,7 +225,7 @@
     @Test
     fun switchFromBouncerToGoneWhenDeviceUnlocked() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isDeviceUnlocked = false,
                 initialSceneKey = SceneKey.Bouncer,
@@ -240,7 +241,7 @@
     @Test
     fun switchFromLockscreenToGoneWhenDeviceUnlocksWithBypassOn() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isBypassEnabled = true,
                 initialSceneKey = SceneKey.Lockscreen,
@@ -256,7 +257,7 @@
     @Test
     fun stayOnLockscreenWhenDeviceUnlocksWithBypassOff() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isBypassEnabled = false,
                 initialSceneKey = SceneKey.Lockscreen,
@@ -274,7 +275,7 @@
     @Test
     fun stayOnCurrentSceneWhenDeviceIsUnlockedAndUserIsNotOnLockscreen() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             val transitionStateFlowValue =
                 prepareState(
                     isBypassEnabled = true,
@@ -284,7 +285,7 @@
             underTest.start()
             runCurrent()
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Shade), "switch to shade")
+            sceneInteractor.changeScene(SceneKey.Shade, "switch to shade")
             transitionStateFlowValue.value = ObservableTransitionState.Idle(SceneKey.Shade)
             assertThat(currentSceneKey).isEqualTo(SceneKey.Shade)
 
@@ -297,7 +298,7 @@
     @Test
     fun switchToGoneWhenDeviceIsUnlockedAndUserIsOnBouncerWithBypassDisabled() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isBypassEnabled = false,
                 initialSceneKey = SceneKey.Bouncer,
@@ -315,7 +316,7 @@
     @Test
     fun switchToLockscreenWhenDeviceSleepsLocked() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 isDeviceUnlocked = false,
                 initialSceneKey = SceneKey.Shade,
@@ -347,11 +348,12 @@
                         kosmos.fakeDeviceEntryRepository.setUnlocked(true)
                         runCurrent()
                     }
-                    sceneInteractor.changeScene(SceneModel(sceneKey), "reason")
+                    fakeSceneDataSource.pause()
+                    sceneInteractor.changeScene(sceneKey, "reason")
                     runCurrent()
                     verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY)
 
-                    sceneInteractor.onSceneChanged(SceneModel(sceneKey), "reason")
+                    fakeSceneDataSource.unpause(expectedScene = sceneKey)
                     runCurrent()
                     verify(sysUiState, times(index)).commitUpdate(Display.DEFAULT_DISPLAY)
 
@@ -364,7 +366,7 @@
     @Test
     fun switchToGoneWhenDeviceStartsToWakeUp_authMethodNone() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
                 authenticationMethod = AuthenticationMethodModel.None,
@@ -380,7 +382,7 @@
     @Test
     fun stayOnLockscreenWhenDeviceStartsToWakeUp_authMethodSwipe() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
                 authenticationMethod = AuthenticationMethodModel.None,
@@ -396,7 +398,7 @@
     @Test
     fun doesNotSwitchToGoneWhenDeviceStartsToWakeUp_authMethodSecure() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
                 authenticationMethod = AuthenticationMethodModel.Pin,
@@ -411,7 +413,7 @@
     @Test
     fun switchToGoneWhenDeviceStartsToWakeUp_authMethodSecure_deviceUnlocked() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
                 authenticationMethod = AuthenticationMethodModel.Pin,
@@ -450,7 +452,7 @@
                     SceneKey.Bouncer,
                 )
                 .forEach { sceneKey ->
-                    sceneInteractor.changeScene(SceneModel(sceneKey), "reason")
+                    sceneInteractor.changeScene(sceneKey, "reason")
                     runCurrent()
                     verify(falsingCollector, never()).onSuccessfulUnlock()
                 }
@@ -458,7 +460,7 @@
             // Changing to the Gone scene should report a successful unlock.
             kosmos.fakeDeviceEntryRepository.setUnlocked(true)
             runCurrent()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             runCurrent()
             verify(falsingCollector).onSuccessfulUnlock()
 
@@ -471,13 +473,13 @@
                     SceneKey.Gone,
                 )
                 .forEach { sceneKey ->
-                    sceneInteractor.changeScene(SceneModel(sceneKey), "reason")
+                    sceneInteractor.changeScene(sceneKey, "reason")
                     runCurrent()
                     verify(falsingCollector, times(1)).onSuccessfulUnlock()
                 }
 
             // Changing to the Lockscreen scene shouldn't report a successful unlock.
-            sceneInteractor.changeScene(SceneModel(SceneKey.Lockscreen), "reason")
+            sceneInteractor.changeScene(SceneKey.Lockscreen, "reason")
             runCurrent()
             verify(falsingCollector, times(1)).onSuccessfulUnlock()
 
@@ -490,13 +492,13 @@
                     SceneKey.Bouncer,
                 )
                 .forEach { sceneKey ->
-                    sceneInteractor.changeScene(SceneModel(sceneKey), "reason")
+                    sceneInteractor.changeScene(sceneKey, "reason")
                     runCurrent()
                     verify(falsingCollector, times(1)).onSuccessfulUnlock()
                 }
 
             // Changing to the Gone scene should report a second successful unlock.
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             runCurrent()
             verify(falsingCollector, times(2)).onSuccessfulUnlock()
         }
@@ -525,7 +527,7 @@
     @Test
     fun bouncerImeHidden_shouldTransitionBackToLockscreen() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
                 authenticationMethod = AuthenticationMethodModel.Password,
@@ -647,13 +649,13 @@
             runCurrent()
             verify(falsingCollector).onBouncerHidden()
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Bouncer), "reason")
+            sceneInteractor.changeScene(SceneKey.Bouncer, "reason")
             runCurrent()
             verify(falsingCollector).onBouncerShown()
 
             kosmos.fakeDeviceEntryRepository.setUnlocked(true)
             runCurrent()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             runCurrent()
             verify(falsingCollector, times(2)).onBouncerHidden()
         }
@@ -661,7 +663,7 @@
     @Test
     fun switchesToBouncer_whenSimBecomesLocked() =
         testScope.runTest {
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
 
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
@@ -681,7 +683,7 @@
     fun switchesToLockscreen_whenSimBecomesUnlocked() =
         testScope.runTest {
             kosmos.fakeMobileConnectionsRepository.isAnySimSecure.value = true
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
 
             prepareState(
                 initialSceneKey = SceneKey.Bouncer,
@@ -700,7 +702,7 @@
     fun switchesToGone_whenSimBecomesUnlocked_ifDeviceUnlockedAndLockscreenDisabled() =
         testScope.runTest {
             kosmos.fakeMobileConnectionsRepository.isAnySimSecure.value = true
-            val currentSceneKey by collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentSceneKey by collectLastValue(sceneInteractor.currentScene)
 
             prepareState(
                 initialSceneKey = SceneKey.Lockscreen,
@@ -719,8 +721,7 @@
     @Test
     fun hydrateWindowFocus() =
         testScope.runTest {
-            val currentDesiredSceneKey by
-                collectLastValue(sceneInteractor.desiredScene.map { it.key })
+            val currentDesiredSceneKey by collectLastValue(sceneInteractor.currentScene)
             val transitionStateFlow =
                 prepareState(
                     isDeviceUnlocked = true,
@@ -733,7 +734,8 @@
             runCurrent()
             verify(windowController, times(1)).setNotificationShadeFocusable(false)
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Shade, "reason")
             transitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     fromScene = SceneKey.Gone,
@@ -745,12 +747,13 @@
             runCurrent()
             verify(windowController, times(1)).setNotificationShadeFocusable(false)
 
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Shade)
             transitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Shade)
             runCurrent()
             verify(windowController, times(1)).setNotificationShadeFocusable(true)
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
             transitionStateFlow.value =
                 ObservableTransitionState.Transition(
                     fromScene = SceneKey.Shade,
@@ -762,7 +765,7 @@
             runCurrent()
             verify(windowController, times(1)).setNotificationShadeFocusable(true)
 
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Gone)
             transitionStateFlow.value = ObservableTransitionState.Idle(SceneKey.Gone)
             runCurrent()
             verify(windowController, times(2)).setNotificationShadeFocusable(false)
@@ -965,8 +968,8 @@
         verifyDuringTransition: (() -> Unit)? = null,
         verifyAfterTransition: (() -> Unit)? = null,
     ) {
-        val fromScene = sceneInteractor.desiredScene.value.key
-        sceneInteractor.changeScene(SceneModel(toScene), "reason")
+        val fromScene = sceneInteractor.currentScene.value
+        sceneInteractor.changeScene(toScene, "reason")
         runCurrent()
         verifyBeforeTransition?.invoke()
 
@@ -1020,8 +1023,7 @@
         sceneInteractor.setTransitionState(transitionStateFlow)
         initialSceneKey?.let {
             transitionStateFlow.value = ObservableTransitionState.Idle(it)
-            sceneInteractor.changeScene(SceneModel(it), "reason")
-            sceneInteractor.onSceneChanged(SceneModel(it), "reason")
+            sceneInteractor.changeScene(it, "reason")
         }
         authenticationMethod?.let {
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(authenticationMethod)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt
new file mode 100644
index 0000000..ed4b1e6
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegatorTest.kt
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.scene.initialSceneKey
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class SceneDataSourceDelegatorTest : SysuiTestCase() {
+
+    private val kosmos = testKosmos()
+    private val testScope = kosmos.testScope
+    private val initialSceneKey = kosmos.initialSceneKey
+    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
+
+    private val underTest = kosmos.sceneDataSourceDelegator
+
+    @Test
+    fun currentScene_withoutDelegate_startsWithInitialScene() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            underTest.setDelegate(null)
+
+            assertThat(currentScene).isEqualTo(initialSceneKey)
+        }
+
+    @Test
+    fun currentScene_withoutDelegate_doesNothing() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            underTest.setDelegate(null)
+            assertThat(currentScene).isNotEqualTo(SceneKey.Bouncer)
+
+            underTest.changeScene(toScene = SceneKey.Bouncer)
+
+            assertThat(currentScene).isEqualTo(initialSceneKey)
+        }
+
+    @Test
+    fun currentScene_withDelegate_startsWithInitialScene() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(initialSceneKey)
+        }
+
+    @Test
+    fun currentScene_withDelegate_changesScenes() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isNotEqualTo(SceneKey.Bouncer)
+
+            underTest.changeScene(toScene = SceneKey.Bouncer)
+
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
+        }
+
+    @Test
+    fun currentScene_reflectsDelegate() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+
+            fakeSceneDataSource.changeScene(toScene = SceneKey.Bouncer)
+
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
+        }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
index a16ce43..6c78317 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModelTest.kt
@@ -23,11 +23,12 @@
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.classifier.domain.interactor.falsingInteractor
 import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testScope
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.sceneKeys
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -41,7 +42,10 @@
 class SceneContainerViewModelTest : SysuiTestCase() {
 
     private val kosmos = testKosmos()
+    private val testScope by lazy { kosmos.testScope }
     private val interactor by lazy { kosmos.sceneInteractor }
+    private val fakeSceneDataSource = kosmos.fakeSceneDataSource
+
     private lateinit var underTest: SceneContainerViewModel
 
     @Before
@@ -55,16 +59,17 @@
     }
 
     @Test
-    fun isVisible() = runTest {
-        val isVisible by collectLastValue(underTest.isVisible)
-        assertThat(isVisible).isTrue()
+    fun isVisible() =
+        testScope.runTest {
+            val isVisible by collectLastValue(underTest.isVisible)
+            assertThat(isVisible).isTrue()
 
-        interactor.setVisible(false, "reason")
-        assertThat(isVisible).isFalse()
+            interactor.setVisible(false, "reason")
+            assertThat(isVisible).isFalse()
 
-        interactor.setVisible(true, "reason")
-        assertThat(isVisible).isTrue()
-    }
+            interactor.setVisible(true, "reason")
+            assertThat(isVisible).isTrue()
+        }
 
     @Test
     fun allSceneKeys() {
@@ -72,12 +77,13 @@
     }
 
     @Test
-    fun sceneTransition() = runTest {
-        val currentScene by collectLastValue(underTest.currentScene)
-        assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Lockscreen))
+    fun sceneTransition() =
+        testScope.runTest {
+            val currentScene by collectLastValue(underTest.currentScene)
+            assertThat(currentScene).isEqualTo(SceneKey.Lockscreen)
 
-        underTest.onSceneChanged(SceneModel(SceneKey.Shade))
+            fakeSceneDataSource.changeScene(SceneKey.Shade)
 
-        assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Shade))
-    }
+            assertThat(currentScene).isEqualTo(SceneKey.Shade)
+        }
 }
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
index 51b8342..ec424b0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ShadeControllerSceneImplTest.kt
@@ -30,7 +30,6 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.shade.domain.interactor.shadeInteractor
 import com.android.systemui.statusbar.CommandQueue
@@ -88,7 +87,7 @@
             runCurrent()
 
             // THEN the shade remains collapsed and the post-collapse action ran
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Gone)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Gone)
             verify(testRunnable, times(1)).run()
         }
 
@@ -106,7 +105,7 @@
             runCurrent()
 
             // THEN the shade remains expanded and the post-collapse action did not run
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Shade)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Shade)
             assertThat(shadeInteractor.isAnyFullyExpanded.value).isTrue()
             verify(testRunnable, never()).run()
         }
@@ -123,7 +122,7 @@
             runCurrent()
 
             // THEN the shade collapses back to lockscreen and the post-collapse action ran
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Lockscreen)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Lockscreen)
         }
 
     @Test
@@ -138,7 +137,7 @@
             runCurrent()
 
             // THEN the shade collapses back to lockscreen and the post-collapse action ran
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Gone)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Gone)
         }
 
     @Test
@@ -172,7 +171,7 @@
         }
 
     private fun setScene(key: SceneKey) {
-        sceneInteractor.changeScene(SceneModel(key), "test")
+        sceneInteractor.changeScene(key, "test")
         sceneInteractor.setTransitionState(
             MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(key))
         )
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
index d3c6598..ec4da04 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImplTest.kt
@@ -26,7 +26,6 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.shared.recents.utilities.Utilities
 import com.android.systemui.testKosmos
 import com.google.common.truth.Truth.assertThat
@@ -60,7 +59,7 @@
             setScene(SceneKey.Shade)
             underTest.animateCollapseQs(true)
             runCurrent()
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Shade)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Shade)
         }
 
     @Test
@@ -70,7 +69,7 @@
             setScene(SceneKey.QuickSettings)
             underTest.animateCollapseQs(true)
             runCurrent()
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Gone)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Gone)
         }
 
     @Test
@@ -80,7 +79,7 @@
             setScene(SceneKey.QuickSettings)
             underTest.animateCollapseQs(true)
             runCurrent()
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Lockscreen)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Lockscreen)
         }
 
     @Test
@@ -89,7 +88,7 @@
             setScene(SceneKey.QuickSettings)
             underTest.animateCollapseQs(false)
             runCurrent()
-            assertThat(sceneInteractor.desiredScene.value.key).isEqualTo(SceneKey.Shade)
+            assertThat(sceneInteractor.currentScene.value).isEqualTo(SceneKey.Shade)
         }
 
     private fun enterDevice() {
@@ -99,7 +98,7 @@
     }
 
     private fun setScene(key: SceneKey) {
-        sceneInteractor.changeScene(SceneModel(key), "test")
+        sceneInteractor.changeScene(key, "test")
         sceneInteractor.setTransitionState(
             MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(key))
         )
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
index f1f5dc3..799e8f0 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/shade/ui/viewmodel/ShadeSceneViewModelTest.kt
@@ -31,7 +31,6 @@
 import com.android.systemui.qs.ui.adapter.FakeQSSceneAdapter
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel
 import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
 import com.android.systemui.statusbar.pipeline.airplane.domain.interactor.AirplaneModeInteractor
@@ -146,8 +145,7 @@
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.None
             )
-            sceneInteractor.changeScene(SceneModel(SceneKey.Lockscreen), "reason")
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Lockscreen), "reason")
+            sceneInteractor.changeScene(SceneKey.Lockscreen, "reason")
 
             assertThat(upTransitionSceneKey).isEqualTo(SceneKey.Lockscreen)
         }
@@ -162,8 +160,7 @@
                 AuthenticationMethodModel.None
             )
             runCurrent()
-            sceneInteractor.changeScene(SceneModel(SceneKey.Gone), "reason")
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Gone), "reason")
+            sceneInteractor.changeScene(SceneKey.Gone, "reason")
 
             assertThat(upTransitionSceneKey).isEqualTo(SceneKey.Gone)
         }
@@ -171,7 +168,7 @@
     @Test
     fun onContentClicked_deviceUnlocked_switchesToGone() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
             )
@@ -180,13 +177,13 @@
 
             underTest.onContentClicked()
 
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Gone))
+            assertThat(currentScene).isEqualTo(SceneKey.Gone)
         }
 
     @Test
     fun onContentClicked_deviceLockedSecurely_switchesToBouncer() =
         testScope.runTest {
-            val currentScene by collectLastValue(sceneInteractor.desiredScene)
+            val currentScene by collectLastValue(sceneInteractor.currentScene)
             kosmos.fakeAuthenticationRepository.setAuthenticationMethod(
                 AuthenticationMethodModel.Pin
             )
@@ -195,7 +192,7 @@
 
             underTest.onContentClicked()
 
-            assertThat(currentScene).isEqualTo(SceneModel(SceneKey.Bouncer))
+            assertThat(currentScene).isEqualTo(SceneKey.Bouncer)
         }
 
     @Test
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
index 4d7d5d3..efd8f00 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/NotificationStackAppearanceIntegrationTest.kt
@@ -30,7 +30,7 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.fakeSceneDataSource
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationStackAppearanceViewModel
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.notificationsPlaceholderViewModel
 import com.android.systemui.testKosmos
@@ -59,6 +59,7 @@
     private val placeholderViewModel by lazy { kosmos.notificationsPlaceholderViewModel }
     private val appearanceViewModel by lazy { kosmos.notificationStackAppearanceViewModel }
     private val sceneInteractor by lazy { kosmos.sceneInteractor }
+    private val fakeSceneDataSource by lazy { kosmos.fakeSceneDataSource }
 
     @Test
     fun updateBounds() =
@@ -97,7 +98,8 @@
             val expandFraction by collectLastValue(appearanceViewModel.expandFraction)
             assertThat(expandFraction).isEqualTo(0f)
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.Shade, "reason")
             val transitionProgress = MutableStateFlow(0f)
             transitionState.value =
                 ObservableTransitionState.Transition(
@@ -115,7 +117,7 @@
                 assertThat(expandFraction).isWithin(0.01f).of(progress)
             }
 
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.Shade), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.Shade)
             assertThat(expandFraction).isWithin(0.01f).of(1f)
         }
 
@@ -142,7 +144,8 @@
             val expandFraction by collectLastValue(appearanceViewModel.expandFraction)
             assertThat(expandFraction).isEqualTo(1f)
 
-            sceneInteractor.changeScene(SceneModel(SceneKey.QuickSettings), "reason")
+            fakeSceneDataSource.pause()
+            sceneInteractor.changeScene(SceneKey.QuickSettings, "reason")
             val transitionProgress = MutableStateFlow(0f)
             transitionState.value =
                 ObservableTransitionState.Transition(
@@ -160,7 +163,7 @@
                 assertThat(expandFraction).isEqualTo(1f)
             }
 
-            sceneInteractor.onSceneChanged(SceneModel(SceneKey.QuickSettings), "reason")
+            fakeSceneDataSource.unpause(expectedScene = SceneKey.QuickSettings)
             assertThat(expandFraction).isEqualTo(1f)
         }
 }
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/domain/interactor/AudioModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
similarity index 88%
rename from packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/domain/interactor/AudioModeInteractorTest.kt
rename to packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
index 4dbf865..fe34361 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/domain/interactor/AudioModeInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioModeInteractorTest.kt
@@ -14,13 +14,14 @@
  * limitations under the License.
  */
 
-package com.android.settingslib.volume.domain.interactor
+package com.android.systemui.volume.domain.interactor
 
 import android.media.AudioManager
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
-import com.android.settingslib.BaseTest
-import com.android.settingslib.volume.data.repository.FakeAudioRepository
+import com.android.settingslib.volume.domain.interactor.AudioModeInteractor
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.volume.data.repository.FakeAudioRepository
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.launchIn
@@ -34,7 +35,7 @@
 @OptIn(ExperimentalCoroutinesApi::class)
 @RunWith(AndroidJUnit4::class)
 @SmallTest
-class AudioModeInteractorTest : BaseTest() {
+class AudioModeInteractorTest : SysuiTestCase() {
 
     private val testScope = TestScope()
     private val fakeAudioRepository = FakeAudioRepository()
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt
new file mode 100644
index 0000000..ec37925
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteriaTest.kt
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.domain
+
+import android.media.AudioManager
+import android.media.session.MediaSession
+import android.media.session.PlaybackState
+import android.testing.TestableLooper.RunWithLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.android.systemui.volume.audioModeInteractor
+import com.android.systemui.volume.audioRepository
+import com.android.systemui.volume.localMediaRepository
+import com.android.systemui.volume.mediaController
+import com.android.systemui.volume.mediaControllerRepository
+import com.android.systemui.volume.mediaOutputInteractor
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@RunWithLooper(setAsMainLooper = true)
+class MediaOutputAvailabilityCriteriaTest : SysuiTestCase() {
+
+    private val kosmos = testKosmos()
+
+    private lateinit var underTest: MediaOutputAvailabilityCriteria
+
+    @Before
+    fun setup() {
+        with(kosmos) {
+            whenever(mediaController.packageName).thenReturn("test.pkg")
+            whenever(mediaController.sessionToken).thenReturn(MediaSession.Token(0, mock {}))
+            whenever(mediaController.playbackState).thenReturn(PlaybackState.Builder().build())
+
+            mediaControllerRepository.setActiveLocalMediaController(mediaController)
+
+            underTest = MediaOutputAvailabilityCriteria(mediaOutputInteractor, audioModeInteractor)
+        }
+    }
+
+    @Test
+    fun notInCallAndHasDevices_isAvailable_true() {
+        with(kosmos) {
+            testScope.runTest {
+                audioRepository.setMode(AudioManager.MODE_NORMAL)
+                localMediaRepository.updateMediaDevices(listOf(mock {}))
+
+                val isAvailable by collectLastValue(underTest.isAvailable())
+                runCurrent()
+
+                assertThat(isAvailable).isTrue()
+            }
+        }
+    }
+    @Test
+    fun inCallAndHasDevices_isAvailable_false() {
+        with(kosmos) {
+            testScope.runTest {
+                audioRepository.setMode(AudioManager.MODE_IN_CALL)
+                localMediaRepository.updateMediaDevices(listOf(mock {}))
+
+                val isAvailable by collectLastValue(underTest.isAvailable())
+                runCurrent()
+
+                assertThat(isAvailable).isFalse()
+            }
+        }
+    }
+
+    @Test
+    fun notInCallAndHasDevices_isAvailable_false() {
+        with(kosmos) {
+            testScope.runTest {
+                audioRepository.setMode(AudioManager.MODE_NORMAL)
+                localMediaRepository.updateMediaDevices(emptyList())
+
+                val isAvailable by collectLastValue(underTest.isAvailable())
+                runCurrent()
+
+                assertThat(isAvailable).isFalse()
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt
new file mode 100644
index 0000000..243aab2
--- /dev/null
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModelTest.kt
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel
+
+import android.content.applicationContext
+import android.media.session.MediaSession
+import android.media.session.PlaybackState
+import android.testing.TestableLooper
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.res.R
+import com.android.systemui.testKosmos
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.android.systemui.volume.localMediaRepository
+import com.android.systemui.volume.mediaController
+import com.android.systemui.volume.mediaControllerRepository
+import com.android.systemui.volume.mediaOutputInteractor
+import com.android.systemui.volume.panel.mediaOutputActionsInteractor
+import com.android.systemui.volume.panel.volumePanelViewModel
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+class MediaOutputViewModelTest : SysuiTestCase() {
+
+    private val kosmos = testKosmos()
+    private val playbackStateBuilder = PlaybackState.Builder()
+
+    private lateinit var underTest: MediaOutputViewModel
+
+    @Before
+    fun setup() {
+        with(kosmos) {
+            underTest =
+                MediaOutputViewModel(
+                    applicationContext,
+                    testScope.backgroundScope,
+                    volumePanelViewModel,
+                    mediaOutputActionsInteractor,
+                    mediaOutputInteractor,
+                )
+
+            with(context.orCreateTestableResources) {
+                addOverride(R.string.media_output_label_title, "media_output_label_title")
+                addOverride(
+                    R.string.media_output_title_without_playing,
+                    "media_output_title_without_playing"
+                )
+            }
+
+            whenever(mediaController.packageName).thenReturn("test.pkg")
+            whenever(mediaController.sessionToken).thenReturn(MediaSession.Token(0, mock {}))
+            whenever(mediaController.playbackState).then { playbackStateBuilder.build() }
+
+            mediaControllerRepository.setActiveLocalMediaController(mediaController)
+        }
+    }
+
+    @Test
+    fun playingSession_connectedDeviceViewMode_hasTheDevice() {
+        with(kosmos) {
+            testScope.runTest {
+                playbackStateBuilder.setState(PlaybackState.STATE_PLAYING, 0, 0f)
+                localMediaRepository.updateCurrentConnectedDevice(
+                    mock { whenever(name).thenReturn("test_device") }
+                )
+
+                val connectedDeviceViewModel by collectLastValue(underTest.connectedDeviceViewModel)
+                runCurrent()
+
+                assertThat(connectedDeviceViewModel!!.label).isEqualTo("media_output_label_title")
+                assertThat(connectedDeviceViewModel!!.deviceName).isEqualTo("test_device")
+            }
+        }
+    }
+
+    @Test
+    fun notPlaying_connectedDeviceViewMode_hasTheDevice() {
+        with(kosmos) {
+            testScope.runTest {
+                playbackStateBuilder.setState(PlaybackState.STATE_STOPPED, 0, 0f)
+                localMediaRepository.updateCurrentConnectedDevice(
+                    mock { whenever(name).thenReturn("test_device") }
+                )
+
+                val connectedDeviceViewModel by collectLastValue(underTest.connectedDeviceViewModel)
+                runCurrent()
+
+                assertThat(connectedDeviceViewModel!!.label)
+                    .isEqualTo("media_output_title_without_playing")
+                assertThat(connectedDeviceViewModel!!.deviceName).isEqualTo("test_device")
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/DefaultComponentsLayoutManagerTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/DefaultComponentsLayoutManagerTest.kt
index 7c99360..71866b3 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/DefaultComponentsLayoutManagerTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/ui/viewmodel/DefaultComponentsLayoutManagerTest.kt
@@ -50,7 +50,7 @@
         val component4 = ComponentState(COMPONENT_4, kosmos.mockVolumePanelUiComponent, false)
         val layout =
             underTest.layout(
-                VolumePanelState(0, false),
+                VolumePanelState(0, false, false),
                 setOf(bottomBarComponentState, component1, component2, component3, component4)
             )
 
@@ -71,7 +71,7 @@
         val component1State = ComponentState(COMPONENT_1, kosmos.mockVolumePanelUiComponent, false)
         val component2State = ComponentState(COMPONENT_2, kosmos.mockVolumePanelUiComponent, false)
         underTest.layout(
-            VolumePanelState(0, false),
+            VolumePanelState(0, false, false),
             setOf(
                 component1State,
                 component2State,
diff --git a/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml b/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml
index 50d5607..41fb57a 100644
--- a/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml
+++ b/packages/SystemUI/res-keyguard/layout/alternate_bouncer.xml
@@ -32,4 +32,24 @@
         android:importantForAccessibility="no"
         sysui:ignoreRightInset="true"
     />
+    <!-- Keyguard messages -->
+    <LinearLayout
+        android:id="@+id/alternate_bouncer_message_area_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:layout_marginTop="@dimen/status_bar_height"
+        android:layout_gravity="top|center_horizontal"
+        android:gravity="center_horizontal">
+        <com.android.keyguard.AuthKeyguardMessageArea
+            android:id="@+id/alternate_bouncer_message_area"
+            style="@style/Keyguard.TextView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/keyguard_lock_padding"
+            android:gravity="center"
+            android:singleLine="true"
+            android:ellipsize="marquee"
+            android:focusable="true"/>
+    </LinearLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/layout/media_session_view.xml b/packages/SystemUI/res/layout/media_session_view.xml
index 5db9eee..109e63c 100644
--- a/packages/SystemUI/res/layout/media_session_view.xml
+++ b/packages/SystemUI/res/layout/media_session_view.xml
@@ -67,6 +67,18 @@
         android:background="@drawable/qs_media_outline_layout_bg"
         />
 
+    <com.android.systemui.surfaceeffects.loadingeffect.LoadingEffectView
+        android:id="@+id/loading_effect_view"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/qs_media_session_height_expanded"
+        app:layout_constraintStart_toStartOf="@id/album_art"
+        app:layout_constraintEnd_toEndOf="@id/album_art"
+        app:layout_constraintTop_toTopOf="@id/album_art"
+        app:layout_constraintBottom_toBottomOf="@id/album_art"
+        android:clipToOutline="true"
+        android:background="@drawable/qs_media_outline_layout_bg"
+        />
+
     <!-- Guideline for output switcher -->
     <androidx.constraintlayout.widget.Guideline
         android:id="@+id/center_vertical_guideline"
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 7537a00..a681da3 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -608,7 +608,6 @@
     <dimen name="volume_panel_slice_horizontal_padding">24dp</dimen>
 
     <dimen name="volume_panel_corner_radius">52dp</dimen>
-    <dimen name="volume_panel_content_padding">24dp</dimen>
     <dimen name="volume_panel_bottom_bar_horizontal_padding">24dp</dimen>
     <dimen name="volume_panel_bottom_bar_bottom_padding">20dp</dimen>
 
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index 2ab0813..71ae0d7 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -228,6 +228,7 @@
     <item type="id" name="ambient_indication_container" />
     <item type="id" name="status_view_media_container" />
     <item type="id" name="smart_space_barrier_bottom" />
+    <item type="id" name="small_clock_guideline_top" />
     <item type="id" name="weather_clock_date_and_icons_barrier_bottom" />
 
     <!-- Privacy dialog -->
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index e401c71..a7d93e7 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -1416,6 +1416,9 @@
     <!-- Indication on the keyguard that appears when a trust agents unlocks the device. [CHAR LIMIT=40] -->
     <string name="keyguard_indication_trust_unlocked">Kept unlocked by TrustAgent</string>
 
+    <!-- Message asking the user to authenticate with primary authentication methods (PIN/pattern/password) or biometrics after the device is locked by adaptive auth. [CHAR LIMIT=60] -->
+    <string name="kg_prompt_after_adaptive_auth_lock">Theft protection\nDevice locked, too many unlock attempts</string>
+
     <!-- Accessibility string for current zen mode and selected exit condition. A template that simply concatenates existing mode string and the current condition description. [CHAR LIMIT=20] -->
     <string name="zen_mode_and_condition"><xliff:g id="zen_mode" example="Priority interruptions only">%1$s</xliff:g>. <xliff:g id="exit_condition" example="For one hour">%2$s</xliff:g></string>
 
@@ -1532,6 +1535,12 @@
 
     <string name="volume_dialog_ringer_guidance_ring">Calls and notifications will ring (<xliff:g id="volume level" example="56">%1$s</xliff:g>)</string>
 
+    <!-- Title with application label for media output settings. [CHAR LIMIT=20] -->
+    <string name="media_output_label_title">Playing <xliff:g id="label" example="Music Player">%s</xliff:g> on</string>
+
+    <!-- Title for media output settings without media is playing. [CHAR LIMIT=20] -->
+    <string name="media_output_title_without_playing">Audio will play on</string>
+
     <!-- Name of special SystemUI debug settings -->
     <string name="system_ui_tuner">System UI Tuner</string>
 
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index ab3cacb..f1d4d71 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -953,13 +953,13 @@
         <item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item>
     </style>
 
-    <style name="Theme.VolumePanelActivity" parent="@style/Theme.SystemUI">
+    <style name="Theme.VolumePanelActivity"
+        parent="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen">
         <item name="android:windowIsTranslucent">true</item>
         <item name="android:windowBackground">@android:color/transparent</item>
-        <item name="android:windowActionBar">false</item>
-        <item name="android:windowNoTitle">true</item>
-        <!-- Setting a placeholder will avoid using the SystemUI icon on the splash screen.  -->
-        <item name="android:windowSplashScreenAnimatedIcon">@drawable/ic_blank</item>
+        <item name="android:backgroundDimEnabled">true</item>
+        <item name="android:windowCloseOnTouchOutside">true</item>
+        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
     </style>
 
     <style name="Theme.UserSwitcherFullscreenDialog" parent="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen">
diff --git a/packages/SystemUI/res/xml/media_session_collapsed.xml b/packages/SystemUI/res/xml/media_session_collapsed.xml
index c053b33..2f2b10f 100644
--- a/packages/SystemUI/res/xml/media_session_collapsed.xml
+++ b/packages/SystemUI/res/xml/media_session_collapsed.xml
@@ -55,6 +55,15 @@
         app:layout_constraintBottom_toBottomOf="@+id/album_art" />
 
     <Constraint
+        android:id="@+id/loading_effect_view"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/qs_media_session_height_collapsed"
+        app:layout_constraintStart_toStartOf="@+id/album_art"
+        app:layout_constraintEnd_toEndOf="@+id/album_art"
+        app:layout_constraintTop_toTopOf="@+id/album_art"
+        app:layout_constraintBottom_toBottomOf="@+id/album_art" />
+
+    <Constraint
         android:id="@+id/header_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/packages/SystemUI/res/xml/media_session_expanded.xml b/packages/SystemUI/res/xml/media_session_expanded.xml
index 8bf7560d..0140d52 100644
--- a/packages/SystemUI/res/xml/media_session_expanded.xml
+++ b/packages/SystemUI/res/xml/media_session_expanded.xml
@@ -48,6 +48,15 @@
         app:layout_constraintBottom_toBottomOf="@+id/album_art" />
 
     <Constraint
+        android:id="@+id/loading_effect_view"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/qs_media_session_height_expanded"
+        app:layout_constraintStart_toStartOf="@+id/album_art"
+        app:layout_constraintEnd_toEndOf="@+id/album_art"
+        app:layout_constraintTop_toTopOf="@+id/album_art"
+        app:layout_constraintBottom_toBottomOf="@+id/album_art" />
+
+    <Constraint
         android:id="@+id/header_title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
diff --git a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
index 91e6b62..8b2a0ec 100644
--- a/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
+++ b/packages/SystemUI/src/com/android/keyguard/ClockEventController.kt
@@ -43,7 +43,6 @@
 import com.android.systemui.flags.Flags.REGION_SAMPLING
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.lifecycle.repeatWhenAttached
 import com.android.systemui.log.core.Logger
@@ -316,7 +315,7 @@
         object : KeyguardUpdateMonitorCallback() {
             override fun onKeyguardVisibilityChanged(visible: Boolean) {
                 isKeyguardVisible = visible
-                if (!KeyguardShadeMigrationNssl.isEnabled) {
+                if (!migrateClocksToBlueprint()) {
                     if (!isKeyguardVisible) {
                         clock?.run {
                             smallClock.animations.doze(if (isDozing) 1f else 0f)
@@ -410,7 +409,7 @@
             parent.repeatWhenAttached {
                 repeatOnLifecycle(Lifecycle.State.CREATED) {
                     listenForDozing(this)
-                    if (KeyguardShadeMigrationNssl.isEnabled) {
+                    if (migrateClocksToBlueprint()) {
                         listenForDozeAmountTransition(this)
                         listenForAnyStateToAodTransition(this)
                     } else {
@@ -421,9 +420,11 @@
         smallTimeListener?.update(shouldTimeListenerRun)
         largeTimeListener?.update(shouldTimeListenerRun)
 
-        // Query ZenMode data
-        zenModeCallback.onZenChanged(zenModeController.zen)
-        zenModeCallback.onNextAlarmChanged()
+        bgExecutor.execute {
+            // Query ZenMode data
+            zenModeCallback.onZenChanged(zenModeController.zen)
+            zenModeCallback.onNextAlarmChanged()
+        }
     }
 
     fun unregisterListeners() {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
index 2db3795..e621ffe 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
@@ -47,7 +47,6 @@
 import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
 import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor;
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.ui.view.InWindowLauncherUnlockAnimationManager;
 import com.android.systemui.log.LogBuffer;
 import com.android.systemui.log.core.LogLevel;
@@ -349,7 +348,7 @@
     }
 
     int getNotificationIconAreaHeight() {
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             return 0;
         } else if (NotificationIconContainerRefactor.isEnabled()) {
             return mAodIconContainer != null ? mAodIconContainer.getHeight() : 0;
@@ -597,7 +596,7 @@
     }
 
     private void updateAodIcons() {
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             NotificationIconContainer nic = (NotificationIconContainer)
                     mView.findViewById(
                             com.android.systemui.res.R.id.left_aligned_notification_icon_container);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
index 3585feb..84c8ea7 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPasswordView.java
@@ -19,6 +19,7 @@
 import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 import static android.view.WindowInsets.Type.ime;
 
+import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_ADAPTIVE_AUTH_REQUEST;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_DEVICE_ADMIN;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NONE;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT;
@@ -126,6 +127,8 @@
                 return R.string.kg_prompt_reason_timeout_password;
             case PROMPT_REASON_TRUSTAGENT_EXPIRED:
                 return R.string.kg_prompt_reason_timeout_password;
+            case PROMPT_REASON_ADAPTIVE_AUTH_REQUEST:
+                return R.string.kg_prompt_after_adaptive_auth_lock;
             case PROMPT_REASON_NONE:
                 return 0;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
index db7ff88..bf8900d 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPatternViewController.java
@@ -331,6 +331,9 @@
             case PROMPT_REASON_TRUSTAGENT_EXPIRED:
                 resId = R.string.kg_prompt_reason_timeout_pattern;
                 break;
+            case PROMPT_REASON_ADAPTIVE_AUTH_REQUEST:
+                resId = R.string.kg_prompt_after_adaptive_auth_lock;
+                break;
             case PROMPT_REASON_NONE:
                 break;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
index fcff0db..bcab6f0 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java
@@ -16,6 +16,7 @@
 
 package com.android.keyguard;
 
+import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_ADAPTIVE_AUTH_REQUEST;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_DEVICE_ADMIN;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NONE;
 import static com.android.keyguard.KeyguardSecurityView.PROMPT_REASON_NON_STRONG_BIOMETRIC_TIMEOUT;
@@ -138,6 +139,8 @@
                 return R.string.kg_prompt_reason_timeout_pin;
             case PROMPT_REASON_TRUSTAGENT_EXPIRED:
                 return R.string.kg_prompt_reason_timeout_pin;
+            case PROMPT_REASON_ADAPTIVE_AUTH_REQUEST:
+                return R.string.kg_prompt_after_adaptive_auth_lock;
             case PROMPT_REASON_NONE:
                 return 0;
             default:
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityView.java
index 83b1a2c..3e87c1b6 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityView.java
@@ -67,6 +67,11 @@
     int PROMPT_REASON_TRUSTAGENT_EXPIRED = 8;
 
     /**
+     * Some auth is required because adaptive auth has determined risk
+     */
+    int PROMPT_REASON_ADAPTIVE_AUTH_REQUEST = 9;
+
+    /**
      * Strong auth is required because the device has just booted because of an automatic
      * mainline update.
      */
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
index 1758831..9421f15 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java
@@ -54,7 +54,6 @@
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.shared.model.TransitionState;
 import com.android.systemui.keyguard.shared.model.TransitionStep;
 import com.android.systemui.plugins.clocks.ClockController;
@@ -231,7 +230,7 @@
         }
 
         mDumpManager.registerDumpable(getInstanceName(), this);
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             startCoroutines(EmptyCoroutineContext.INSTANCE);
         }
     }
@@ -511,7 +510,7 @@
         ConstraintSet constraintSet = new ConstraintSet();
         constraintSet.clone(layout);
         int guideline;
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             guideline = R.id.split_shade_guideline;
         } else {
             guideline = R.id.qs_edge_guideline;
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 536f3af..38c2829e 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -35,6 +35,7 @@
 import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
 import static android.os.BatteryManager.CHARGING_POLICY_DEFAULT;
 
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_BOOT;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT;
@@ -382,6 +383,7 @@
     private List<SubscriptionInfo> mSubscriptionInfo;
     @VisibleForTesting
     protected int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
+    private boolean mFingerprintDetectRunning;
     private boolean mIsDreaming;
     private boolean mLogoutEnabled;
     private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -1003,6 +1005,7 @@
         final boolean wasCancellingRestarting = mFingerprintRunningState
                 == BIOMETRIC_STATE_CANCELLING_RESTARTING;
         mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
+        mFingerprintDetectRunning = false;
         if (wasCancellingRestarting) {
             KeyguardUpdateMonitor.this.updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
         } else {
@@ -1111,6 +1114,9 @@
         boolean wasRunning = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
         boolean isRunning = fingerprintRunningState == BIOMETRIC_STATE_RUNNING;
         mFingerprintRunningState = fingerprintRunningState;
+        if (mFingerprintRunningState == BIOMETRIC_STATE_STOPPED) {
+            mFingerprintDetectRunning = false;
+        }
         mLogger.logFingerprintRunningState(mFingerprintRunningState);
         // Clients of KeyguardUpdateMonitor don't care about the internal state about the
         // asynchronousness of the cancel cycle. So only notify them if the actually running state
@@ -1570,6 +1576,14 @@
         return isEncrypted || isLockDown;
     }
 
+    /**
+     * Whether the device is locked by adaptive auth
+     */
+    public boolean isDeviceLockedByAdaptiveAuth(int userId) {
+        return containsFlag(mStrongAuthTracker.getStrongAuthForUser(userId),
+                SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST);
+    }
+
     private boolean containsFlag(int haystack, int needle) {
         return (haystack & needle) != 0;
     }
@@ -1835,8 +1849,16 @@
                 @Override
                 public void onFingerprintDetected(int sensorId, int userId,
                         boolean isStrongBiometric) {
-                    handleBiometricDetected(userId, FINGERPRINT, isStrongBiometric);
+                    // Fingerprint lifecycle ends
+                    if (mHandler.hasCallbacks(mFpCancelNotReceived)) {
+                        mLogger.d("onFingerprintDetected()"
+                                + " triggered while waiting for cancellation, removing watchdog");
+                        mHandler.removeCallbacks(mFpCancelNotReceived);
+                    }
+                    // Don't send cancel if detect succeeds
+                    mFingerprintCancelSignal = null;
                     setFingerprintRunningState(BIOMETRIC_STATE_STOPPED);
+                    handleBiometricDetected(userId, FINGERPRINT, isStrongBiometric);
                 }
             };
 
@@ -2099,6 +2121,7 @@
     @VisibleForTesting
     void resetBiometricListeningState() {
         mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
+        mFingerprintDetectRunning = false;
     }
 
     @VisibleForTesting
@@ -2537,8 +2560,11 @@
             return;
         }
         final boolean shouldListenForFingerprint = shouldListenForFingerprint(isUdfpsSupported());
-        final boolean runningOrRestarting = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING
+        final boolean running = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
+        final boolean runningOrRestarting = running
                 || mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
+        final boolean runDetect = !isUnlockingWithFingerprintAllowed();
+
         if (runningOrRestarting && !shouldListenForFingerprint) {
             if (action == BIOMETRIC_ACTION_START) {
                 mLogger.v("Ignoring stopListeningForFingerprint()");
@@ -2550,7 +2576,18 @@
                 mLogger.v("Ignoring startListeningForFingerprint()");
                 return;
             }
-            startListeningForFingerprint();
+            startListeningForFingerprint(runDetect);
+        } else if (running && (runDetect != mFingerprintDetectRunning)) {
+            if (action == BIOMETRIC_ACTION_STOP) {
+                if (runDetect) {
+                    mLogger.v("Allowing startListeningForFingerprint(detect) despite"
+                            + " BIOMETRIC_ACTION_STOP since auth was running before.");
+                } else {
+                    mLogger.v("Ignoring startListeningForFingerprint() switch detect -> auth");
+                    return;
+                }
+            }
+            startListeningForFingerprint(runDetect);
         }
     }
 
@@ -2809,7 +2846,6 @@
                         && biometricEnabledForUser
                         && !isUserInLockdown(user);
         final boolean strongerAuthRequired = !isUnlockingWithFingerprintAllowed();
-        final boolean isSideFps = isSfpsSupported() && isSfpsEnrolled();
         final boolean shouldListenBouncerState =
                 !strongerAuthRequired || !mPrimaryBouncerIsOrWillBeShowing;
 
@@ -2872,7 +2908,7 @@
         }
     }
 
-    private void startListeningForFingerprint() {
+    private void startListeningForFingerprint(boolean runDetect) {
         final int userId = mSelectedUserInteractor.getSelectedUserId();
         final boolean unlockPossible = isUnlockWithFingerprintPossible(userId);
         if (mFingerprintCancelSignal != null) {
@@ -2902,18 +2938,20 @@
                         mFingerprintInteractiveToAuthProvider.getVendorExtension(userId));
             }
 
-            if (!isUnlockingWithFingerprintAllowed()) {
+            if (runDetect) {
                 mLogger.v("startListeningForFingerprint - detect");
                 mFpm.detectFingerprint(
                         mFingerprintCancelSignal,
                         mFingerprintDetectionCallback,
                         fingerprintAuthenticateOptions);
+                mFingerprintDetectRunning = true;
             } else {
                 mLogger.v("startListeningForFingerprint");
                 mFpm.authenticate(null /* crypto */, mFingerprintCancelSignal,
                         mFingerprintAuthenticationCallback,
                         null /* handler */,
                         fingerprintAuthenticateOptions);
+                mFingerprintDetectRunning = false;
             }
             setFingerprintRunningState(BIOMETRIC_STATE_RUNNING);
         }
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
index 9ebae90..2000028 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.keyguard;
 
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
 import static com.android.systemui.statusbar.StatusBarState.SHADE;
 
@@ -23,7 +24,6 @@
 import android.view.View;
 
 import com.android.app.animation.Interpolators;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.log.LogBuffer;
 import com.android.systemui.log.core.LogLevel;
 import com.android.systemui.statusbar.StatusBarState;
@@ -109,7 +109,7 @@
                 animProps.setDelay(0).setDuration(160);
                 log("goingToFullShade && !keyguardFadingAway");
             }
-            if (KeyguardShadeMigrationNssl.isEnabled()) {
+            if (migrateClocksToBlueprint()) {
                 log("Using LockscreenToGoneTransition 1");
             } else {
                 PropertyAnimator.setProperty(
@@ -167,7 +167,7 @@
                         animProps,
                         true /* animate */);
             } else if (mScreenOffAnimationController.shouldAnimateInKeyguard()) {
-                if (KeyguardShadeMigrationNssl.isEnabled()) {
+                if (migrateClocksToBlueprint()) {
                     log("Using GoneToAodTransition");
                     mKeyguardViewVisibilityAnimating = false;
                 } else {
@@ -183,7 +183,7 @@
                 mView.setVisibility(View.VISIBLE);
             }
         } else {
-            if (KeyguardShadeMigrationNssl.isEnabled()) {
+            if (migrateClocksToBlueprint()) {
                 log("Using LockscreenToGoneTransition 2");
             } else {
                 log("Direct set Visibility to GONE");
diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/ClockRegistryModule.java b/packages/SystemUI/src/com/android/keyguard/dagger/ClockRegistryModule.java
index 878a5d8..a0f15ef 100644
--- a/packages/SystemUI/src/com/android/keyguard/dagger/ClockRegistryModule.java
+++ b/packages/SystemUI/src/com/android/keyguard/dagger/ClockRegistryModule.java
@@ -33,6 +33,7 @@
 import com.android.systemui.res.R;
 import com.android.systemui.shared.clocks.ClockRegistry;
 import com.android.systemui.shared.clocks.DefaultClockProvider;
+import com.android.systemui.util.ThreadAssert;
 
 import dagger.Module;
 import dagger.Provides;
@@ -74,7 +75,8 @@
                 clockBuffers,
                 /* keepAllLoaded = */ false,
                 /* subTag = */ "System",
-                /* isTransitClockEnabled = */ featureFlags.isEnabled(Flags.TRANSIT_CLOCK));
+                /* isTransitClockEnabled = */ featureFlags.isEnabled(Flags.TRANSIT_CLOCK),
+                new ThreadAssert());
         registry.registerListeners();
         return registry;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepository.kt b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepository.kt
index 401ac0f..4069cec 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepository.kt
@@ -16,11 +16,29 @@
 
 package com.android.systemui.accessibility.data.repository
 
+import android.annotation.SuppressLint
+import android.content.ComponentName
+import android.content.Context
+import android.text.TextUtils
 import android.util.SparseArray
+import android.view.accessibility.AccessibilityManager
 import androidx.annotation.GuardedBy
+import com.android.internal.accessibility.AccessibilityShortcutController
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.qs.pipeline.shared.TileSpec
+import com.android.systemui.qs.tiles.ColorCorrectionTile
+import com.android.systemui.qs.tiles.ColorInversionTile
+import com.android.systemui.qs.tiles.FontScalingTile
+import com.android.systemui.qs.tiles.OneHandedModeTile
+import com.android.systemui.qs.tiles.ReduceBrightColorsTile
 import javax.inject.Inject
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.SharedFlow
+import kotlinx.coroutines.withContext
 
 /** Provides data related to accessibility quick setting shortcut option. */
 interface AccessibilityQsShortcutsRepository {
@@ -29,14 +47,35 @@
      * setting option.
      */
     fun a11yQsShortcutTargets(userId: Int): SharedFlow<Set<String>>
+
+    /** Notify accessibility manager that there are changes to the accessibility tiles */
+    suspend fun notifyAccessibilityManagerTilesChanged(userContext: Context, tiles: List<TileSpec>)
 }
 
 @SysUISingleton
 class AccessibilityQsShortcutsRepositoryImpl
 @Inject
 constructor(
+    private val manager: AccessibilityManager,
     private val userA11yQsShortcutsRepositoryFactory: UserA11yQsShortcutsRepository.Factory,
+    @Background private val backgroundDispatcher: CoroutineDispatcher,
 ) : AccessibilityQsShortcutsRepository {
+    companion object {
+        val TILE_SPEC_TO_COMPONENT_MAPPING =
+            mapOf(
+                ColorCorrectionTile.TILE_SPEC to
+                    AccessibilityShortcutController.DALTONIZER_TILE_COMPONENT_NAME,
+                ColorInversionTile.TILE_SPEC to
+                    AccessibilityShortcutController.COLOR_INVERSION_TILE_COMPONENT_NAME,
+                OneHandedModeTile.TILE_SPEC to
+                    AccessibilityShortcutController.ONE_HANDED_TILE_COMPONENT_NAME,
+                ReduceBrightColorsTile.TILE_SPEC to
+                    AccessibilityShortcutController
+                        .REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME,
+                FontScalingTile.TILE_SPEC to
+                    AccessibilityShortcutController.FONT_SIZE_TILE_COMPONENT_NAME,
+            )
+    }
 
     @GuardedBy("userA11yQsShortcutsRepositories")
     private val userA11yQsShortcutsRepositories = SparseArray<UserA11yQsShortcutsRepository>()
@@ -51,4 +90,72 @@
             userA11yQsShortcutsRepositories.get(userId).targets
         }
     }
+
+    @SuppressLint("MissingPermission") // android.permission.STATUS_BAR_SERVICE
+    override suspend fun notifyAccessibilityManagerTilesChanged(
+        userContext: Context,
+        tiles: List<TileSpec>
+    ) {
+        val newTiles = mutableListOf<ComponentName>()
+        val accessibilityTileServices = getAccessibilityTileServices(userContext)
+        tiles.forEach { tileSpec ->
+            when (tileSpec) {
+                is TileSpec.CustomTileSpec -> {
+                    if (accessibilityTileServices.contains(tileSpec.componentName)) {
+                        newTiles.add(tileSpec.componentName)
+                    }
+                }
+                is TileSpec.PlatformTileSpec -> {
+                    if (TILE_SPEC_TO_COMPONENT_MAPPING.containsKey(tileSpec.spec)) {
+                        newTiles.add(TILE_SPEC_TO_COMPONENT_MAPPING[tileSpec.spec]!!)
+                    }
+                }
+                TileSpec.Invalid -> {
+                    // do nothing
+                }
+            }
+        }
+
+        withContext(backgroundDispatcher) {
+            manager.notifyQuickSettingsTilesChanged(userContext.userId, newTiles)
+        }
+    }
+
+    private suspend fun getAccessibilityTileServices(context: Context): Set<ComponentName> =
+        coroutineScope {
+            val a11yServiceTileServices: Deferred<Set<ComponentName>> =
+                async(backgroundDispatcher) {
+                    manager.installedAccessibilityServiceList
+                        .mapNotNull {
+                            val packageName = it.resolveInfo.serviceInfo.packageName
+                            val tileServiceClass = it.tileServiceName
+
+                            if (!TextUtils.isEmpty(tileServiceClass)) {
+                                ComponentName(packageName, tileServiceClass!!)
+                            } else {
+                                null
+                            }
+                        }
+                        .toSet()
+                }
+
+            val a11yShortcutInfoTileServices: Deferred<Set<ComponentName>> =
+                async(backgroundDispatcher) {
+                    manager
+                        .getInstalledAccessibilityShortcutListAsUser(context, context.userId)
+                        .mapNotNull {
+                            val packageName = it.componentName.packageName
+                            val tileServiceClass = it.tileServiceName
+
+                            if (!TextUtils.isEmpty(tileServiceClass)) {
+                                ComponentName(packageName, tileServiceClass!!)
+                            } else {
+                                null
+                            }
+                        }
+                        .toSet()
+                }
+
+            a11yServiceTileServices.await() + a11yShortcutInfoTileServices.await()
+        }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java
index 975a602..ad6609a 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuItemAccessibilityDelegate.java
@@ -100,7 +100,7 @@
                     new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                             R.id.action_edit,
                             res.getString(
-                                    R.string.accessibility_floating_button_action_remove_menu));
+                                    R.string.accessibility_floating_button_action_edit));
             info.addAction(edit);
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
index 035ccbd..27f9106fd 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuView.java
@@ -41,6 +41,8 @@
 import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.internal.accessibility.dialog.AccessibilityTarget;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.modules.expresslog.Counter;
 import com.android.systemui.Flags;
 import com.android.systemui.util.settings.SecureSettings;
 
@@ -436,6 +438,20 @@
         mContext.startActivity(getIntentForEditScreen());
     }
 
+    void incrementTexMetricForAllTargets(String metric) {
+        if (!Flags.floatingMenuDragToEdit()) {
+            return;
+        }
+        for (AccessibilityTarget target : mTargetFeatures) {
+            incrementTexMetric(metric, target.getUid());
+        }
+    }
+
+    @VisibleForTesting
+    void incrementTexMetric(String metric, int uid) {
+        Counter.logIncrementWithUid(metric, uid);
+    }
+
     Intent getIntentForEditScreen() {
         List<String> targets = new SettingsStringUtil.ColonDelimitedSet.OfStrings(
                 mSecureSettings.getStringForUser(
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
index a883c00..6d4baf4 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayer.java
@@ -92,6 +92,20 @@
         MenuView.OnMoveToTuckedListener {
     private static final int SHOW_MESSAGE_DELAY_MS = 3000;
 
+    /**
+     * Counter indicating the FAB was dragged to the Dismiss action button.
+     *
+     * <p>Defined in frameworks/proto_logging/stats/express/catalog/accessibility.cfg.
+     */
+    static final String TEX_METRIC_DISMISS = "accessibility.value_fab_shortcut_action_dismiss";
+
+    /**
+     * Counter indicating the FAB was dragged to the Edit action button.
+     *
+     * <p>Defined in frameworks/proto_logging/stats/express/catalog/accessibility.cfg.
+     */
+    static final String TEX_METRIC_EDIT = "accessibility.value_fab_shortcut_action_edit";
+
     private final WindowManager mWindowManager;
     private final MenuView mMenuView;
     private final MenuListViewTouchHandler mMenuListViewTouchHandler;
@@ -229,20 +243,23 @@
         }
         mDragToInteractAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() {
             @Override
-            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
                 mDragToInteractAnimationController.animateInteractMenu(
                         target.getTargetView().getId(), /* scaleUp= */ true);
             }
 
             @Override
             public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject,
                     float velocityX, float velocityY, boolean wasFlungOut) {
                 mDragToInteractAnimationController.animateInteractMenu(
                         target.getTargetView().getId(), /* scaleUp= */ false);
             }
 
             @Override
-            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
                 dispatchAccessibilityAction(target.getTargetView().getId());
             }
         });
@@ -457,9 +474,11 @@
             } else {
                 hideMenuAndShowMessage();
             }
+            mMenuView.incrementTexMetricForAllTargets(TEX_METRIC_DISMISS);
         } else if (id == R.id.action_edit
                 && Flags.floatingMenuDragToEdit()) {
             mMenuView.gotoEditScreen();
+            mMenuView.incrementTexMetricForAllTargets(TEX_METRIC_EDIT);
         }
         mDismissView.hide();
         mDragToInteractView.hide();
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
index 685ea81..74ea58c 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java
@@ -21,6 +21,7 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.provider.Settings;
+import android.service.voice.VisualQueryAttentionResult;
 import android.service.voice.VoiceInteractionSession;
 import android.util.Log;
 
@@ -157,12 +158,14 @@
     private final IVisualQueryDetectionAttentionListener mVisualQueryDetectionAttentionListener =
             new IVisualQueryDetectionAttentionListener.Stub() {
                 @Override
-                public void onAttentionGained() {
+                public void onAttentionGained(VisualQueryAttentionResult attentionResult) {
+                    // TODO (b/319132184): Implemented this with different types.
                     handleVisualAttentionChanged(true);
                 }
 
                 @Override
-                public void onAttentionLost() {
+                public void onAttentionLost(int interactionIntention) {
+                    //TODO (b/319132184): Implemented this with different types.
                     handleVisualAttentionChanged(false);
                 }
             };
@@ -472,6 +475,7 @@
                 });
     }
 
+    // TODO (b/319132184): Implemented this with different types.
     private void handleVisualAttentionChanged(boolean attentionGained) {
         final StatusBarManager statusBarManager = mContext.getSystemService(StatusBarManager.class);
         if (statusBarManager != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index 3397906..0bd44f0 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -17,6 +17,7 @@
 package com.android.systemui.biometrics;
 
 import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
+import static android.hardware.biometrics.Flags.customBiometricPrompt;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_BIOMETRIC_PROMPT_TRANSITION;
@@ -401,37 +402,8 @@
             @Nullable FaceSensorPropertiesInternal faceProps,
             @NonNull VibratorHelper vibratorHelper
     ) {
-        if (Utils.isBiometricAllowed(config.mPromptInfo)) {
-            mPromptSelectorInteractorProvider.get().useBiometricsForAuthentication(
-                    config.mPromptInfo,
-                    config.mUserId,
-                    config.mOperationId,
-                    new BiometricModalities(fpProps, faceProps),
-                    config.mOpPackageName);
-
-            if (constraintBp()) {
-                mBiometricView = BiometricViewBinder.bind(mLayout, viewModel, null,
-                        // TODO(b/201510778): This uses the wrong timeout in some cases
-                        getJankListener(mLayout, TRANSIT,
-                                BiometricViewSizeBinder.ANIMATE_MEDIUM_TO_LARGE_DURATION_MS),
-                        mBackgroundView, mBiometricCallback, mApplicationCoroutineScope,
-                        vibratorHelper);
-            } else {
-                final BiometricPromptLayout view = (BiometricPromptLayout) layoutInflater.inflate(
-                        R.layout.biometric_prompt_layout, null, false);
-                mBiometricView = BiometricViewBinder.bind(view, viewModel, mPanelController,
-                        // TODO(b/201510778): This uses the wrong timeout in some cases
-                        getJankListener(view, TRANSIT,
-                                BiometricViewSizeBinder.ANIMATE_MEDIUM_TO_LARGE_DURATION_MS),
-                        mBackgroundView, mBiometricCallback, mApplicationCoroutineScope,
-                        vibratorHelper);
-
-                // TODO(b/251476085): migrate these dependencies
-                if (fpProps != null && fpProps.isAnyUdfpsType()) {
-                    view.setUdfpsAdapter(new UdfpsDialogMeasureAdapter(view, fpProps),
-                            config.mScaleProvider);
-                }
-            }
+        if (Utils.isBiometricAllowed(config.mPromptInfo) || customBiometricPrompt()) {
+            addBiometricView(config, layoutInflater, viewModel, fpProps, faceProps, vibratorHelper);
         } else if (constraintBp() && Utils.isDeviceCredentialAllowed(mConfig.mPromptInfo)) {
             addCredentialView(true, false);
         } else {
@@ -439,6 +411,44 @@
         }
     }
 
+
+    private void addBiometricView(@NonNull Config config, @NonNull LayoutInflater layoutInflater,
+            @NonNull PromptViewModel viewModel,
+            @Nullable FingerprintSensorPropertiesInternal fpProps,
+            @Nullable FaceSensorPropertiesInternal faceProps,
+            @NonNull VibratorHelper vibratorHelper) {
+        mPromptSelectorInteractorProvider.get().useBiometricsForAuthentication(
+                config.mPromptInfo,
+                config.mUserId,
+                config.mOperationId,
+                new BiometricModalities(fpProps, faceProps),
+                config.mOpPackageName);
+
+        if (constraintBp()) {
+            mBiometricView = BiometricViewBinder.bind(mLayout, viewModel, null,
+                    // TODO(b/201510778): This uses the wrong timeout in some cases
+                    getJankListener(mLayout, TRANSIT,
+                            BiometricViewSizeBinder.ANIMATE_MEDIUM_TO_LARGE_DURATION_MS),
+                    mBackgroundView, mBiometricCallback, mApplicationCoroutineScope,
+                    vibratorHelper);
+        } else {
+            final BiometricPromptLayout view = (BiometricPromptLayout) layoutInflater.inflate(
+                    R.layout.biometric_prompt_layout, null, false);
+            mBiometricView = BiometricViewBinder.bind(view, viewModel, mPanelController,
+                    // TODO(b/201510778): This uses the wrong timeout in some cases
+                    getJankListener(view, TRANSIT,
+                            BiometricViewSizeBinder.ANIMATE_MEDIUM_TO_LARGE_DURATION_MS),
+                    mBackgroundView, mBiometricCallback, mApplicationCoroutineScope,
+                    vibratorHelper);
+
+            // TODO(b/251476085): migrate these dependencies
+            if (fpProps != null && fpProps.isAnyUdfpsType()) {
+                view.setUdfpsAdapter(new UdfpsDialogMeasureAdapter(view, fpProps),
+                        config.mScaleProvider);
+            }
+        }
+    }
+
     private void onBackInvoked() {
         sendEarlyUserCanceled();
         animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
@@ -524,7 +534,7 @@
                 () -> animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED));
         if (constraintBp()) {
             // Do nothing on attachment with constraintLayout
-        } else if (Utils.isBiometricAllowed(mConfig.mPromptInfo)) {
+        } else if (Utils.isBiometricAllowed(mConfig.mPromptInfo) || customBiometricPrompt()) {
             mBiometricScrollView.addView(mBiometricView.asView());
         } else if (Utils.isDeviceCredentialAllowed(mConfig.mPromptInfo)) {
             addCredentialView(true /* animatePanel */, false /* animateContents */);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDeferral.kt b/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDeferral.kt
index b015f70..8c68eac 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDeferral.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/FaceHelpMessageDeferral.kt
@@ -20,23 +20,37 @@
 import com.android.keyguard.logging.BiometricMessageDeferralLogger
 import com.android.keyguard.logging.FaceMessageDeferralLogger
 import com.android.systemui.Dumpable
-import com.android.systemui.res.R
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.dump.DumpManager
+import com.android.systemui.res.R
 import java.io.PrintWriter
 import java.util.Objects
 import javax.inject.Inject
 
+@SysUISingleton
+class FaceHelpMessageDeferralFactory
+@Inject
+constructor(
+    @Main private val resources: Resources,
+    private val logBuffer: FaceMessageDeferralLogger,
+    private val dumpManager: DumpManager
+) {
+    fun create(): FaceHelpMessageDeferral {
+        return FaceHelpMessageDeferral(
+            resources = resources,
+            logBuffer = logBuffer,
+            dumpManager = dumpManager,
+        )
+    }
+}
+
 /**
  * Provides whether a face acquired help message should be shown immediately when its received or
  * should be shown when face auth times out. See [updateMessage] and [getDeferredMessage].
  */
-@SysUISingleton
-class FaceHelpMessageDeferral
-@Inject
-constructor(
-    @Main resources: Resources,
+class FaceHelpMessageDeferral(
+    resources: Resources,
     logBuffer: FaceMessageDeferralLogger,
     dumpManager: DumpManager
 ) :
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractor.kt b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractor.kt
index e6939f0..ff9cdbd 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/domain/interactor/FingerprintPropertyInteractor.kt
@@ -39,6 +39,8 @@
     configurationInteractor: ConfigurationInteractor,
     displayStateInteractor: DisplayStateInteractor,
 ) {
+    val isUdfps: Flow<Boolean> = repository.sensorType.map { it.isUdfps() }
+
     /**
      * Devices with multiple physical displays use unique display ids to determine which sensor is
      * on the active physical display. This value represents a unique physical display id.
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
index 31aadf5..b0cc3bd 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
@@ -22,6 +22,7 @@
 import android.hardware.biometrics.BiometricAuthenticator
 import android.hardware.biometrics.BiometricConstants
 import android.hardware.biometrics.BiometricPrompt
+import android.hardware.biometrics.Flags.customBiometricPrompt
 import android.hardware.face.FaceManager
 import android.text.method.ScrollingMovementMethod
 import android.util.Log
@@ -123,13 +124,6 @@
                 (view as BiometricPromptLayout).updatedFingerprintAffordanceSize
             }
 
-        PromptIconViewBinder.bind(
-            iconView,
-            iconOverlayView,
-            iconSizeOverride,
-            viewModel,
-        )
-
         val indicatorMessageView = view.requireViewById<TextView>(R.id.indicator)
 
         // Negative-side (left) buttons
@@ -156,6 +150,18 @@
         view.repeatWhenAttached {
             // these do not change and need to be set before any size transitions
             val modalities = viewModel.modalities.first()
+
+            // If there is no biometrics available, biometric prompt is showing just for displaying
+            // content, no authentication needed.
+            if (!(customBiometricPrompt() && modalities.isEmpty)) {
+                PromptIconViewBinder.bind(
+                    iconView,
+                    iconOverlayView,
+                    iconSizeOverride,
+                    viewModel,
+                )
+            }
+
             if (modalities.hasFingerprint) {
                 /**
                  * Load the given [rawResources] immediately so they are cached for use in the
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
index 2417fe9..a37d916 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewSizeBinder.kt
@@ -21,6 +21,7 @@
 import android.animation.ValueAnimator
 import android.graphics.Outline
 import android.graphics.Rect
+import android.hardware.biometrics.Flags
 import android.transition.AutoTransition
 import android.transition.TransitionManager
 import android.view.Surface
@@ -59,6 +60,7 @@
 import kotlin.math.abs
 import kotlin.math.min
 import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.first
 import kotlinx.coroutines.launch
 
 /** Helper for [BiometricViewBinder] to handle resize transitions. */
@@ -219,6 +221,18 @@
 
                 view.repeatWhenAttached {
                     var currentSize: PromptSize? = null
+                    val modalities = viewModel.modalities.first()
+                    // TODO(b/288175072): Move all visibility settings together.
+                    //  If there is no biometrics available, biometric prompt is showing just for
+                    // displaying content, no authentication needed.
+                    if (Flags.customBiometricPrompt() && modalities.isEmpty) {
+                        smallConstraintSet.setVisibility(iconHolderView.id, View.GONE)
+                        smallConstraintSet.setVisibility(R.id.biometric_icon_overlay, View.GONE)
+                        smallConstraintSet.setVisibility(R.id.indicator, View.GONE)
+                        mediumConstraintSet.setVisibility(iconHolderView.id, View.GONE)
+                        mediumConstraintSet.setVisibility(R.id.biometric_icon_overlay, View.GONE)
+                        mediumConstraintSet.setVisibility(R.id.indicator, View.GONE)
+                    }
                     lifecycleScope.launch {
                         combine(viewModel.position, viewModel.size, ::Pair).collect {
                             (position, size) ->
@@ -299,6 +313,7 @@
                 // TODO(b/251476085): migrate the legacy panel controller and simplify this
                 view.repeatWhenAttached {
                     var currentSize: PromptSize? = null
+                    val modalities = viewModel.modalities.first()
                     lifecycleScope.launch {
                         /**
                          * View is only set visible in BiometricViewSizeBinder once PromptSize is
@@ -318,6 +333,9 @@
                             for (v in viewsToHideWhenSmall) {
                                 v.showContentOrHide(forceHide = size.isSmall)
                             }
+                            if (Flags.customBiometricPrompt() && modalities.isEmpty) {
+                                iconHolderView.visibility = View.GONE
+                            }
                             if (currentSize == null && size.isSmall) {
                                 iconHolderView.alpha = 0f
                             }
@@ -328,8 +346,7 @@
                             // TODO(b/302735104): Fix wrong height due to the delay of
                             // PromptContentView. addOnLayoutChangeListener() will cause crash when
                             // showing credential view, since |PromptIconViewModel| won't release
-                            // the
-                            // flow.
+                            // the flow.
                             // propagate size changes to legacy panel controller and animate
                             // transitions
                             view.doOnLayout {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
index 7b4be02..9c28f1c 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/SideFpsOverlayViewBinder.kt
@@ -115,17 +115,11 @@
     }
 
     private var overlayView: View? = null
-    private var lottie: LottieAnimationView? = null
 
     /** Show the side fingerprint sensor indicator */
     private fun show() {
-        overlayView?.let {
-            if (it.isAttachedToWindow) {
-                lottie = it.requireViewById<LottieAnimationView>(R.id.sidefps_animation)
-                lottie?.pauseAnimation()
-                lottie?.removeAllLottieOnCompositionLoadedListener()
-                windowManager.get().removeView(it)
-            }
+        if (overlayView?.isAttachedToWindow == true) {
+            return
         }
 
         overlayView = layoutInflater.get().inflate(R.layout.sidefps_view, null, false)
diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractor.kt b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractor.kt
index ef4554c..c25e748 100644
--- a/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/bouncer/domain/interactor/BouncerMessageInteractor.kt
@@ -50,6 +50,7 @@
 import com.android.systemui.res.R.string.kg_primary_auth_locked_out_password
 import com.android.systemui.res.R.string.kg_primary_auth_locked_out_pattern
 import com.android.systemui.res.R.string.kg_primary_auth_locked_out_pin
+import com.android.systemui.res.R.string.kg_prompt_after_adaptive_auth_lock
 import com.android.systemui.res.R.string.kg_prompt_after_dpm_lock
 import com.android.systemui.res.R.string.kg_prompt_after_update_password
 import com.android.systemui.res.R.string.kg_prompt_after_update_pattern
@@ -92,6 +93,7 @@
 private const val REBOOT_MAINLINE_UPDATE = "reboot,mainline_update"
 private const val TAG = "BouncerMessageInteractor"
 
+/** Handles business logic for the primary bouncer message area. */
 @SysUISingleton
 class BouncerMessageInteractor
 @Inject
@@ -207,6 +209,11 @@
                     } else {
                         faceLockedOut(currentSecurityMode, isFingerprintAuthCurrentlyAllowed.value)
                     }
+                } else if (flags.isSomeAuthRequiredAfterAdaptiveAuthRequest) {
+                    authRequiredAfterAdaptiveAuthRequest(
+                        currentSecurityMode,
+                        isFingerprintAuthCurrentlyAllowed.value
+                    )
                 } else if (
                     trustOrBiometricsAvailable &&
                         flags.strongerAuthRequiredAfterNonStrongBiometricsTimeout
@@ -463,6 +470,34 @@
     }.toMessage()
 }
 
+private fun authRequiredAfterAdaptiveAuthRequest(
+    securityMode: SecurityMode,
+    fpAuthIsAllowed: Boolean
+): BouncerMessageModel {
+    return if (fpAuthIsAllowed) authRequiredAfterAdaptiveAuthRequestFingerprintAllowed(securityMode)
+    else
+        return when (securityMode) {
+            SecurityMode.Pattern -> Pair(keyguard_enter_pattern, kg_prompt_after_adaptive_auth_lock)
+            SecurityMode.Password ->
+                Pair(keyguard_enter_password, kg_prompt_after_adaptive_auth_lock)
+            SecurityMode.PIN -> Pair(keyguard_enter_pin, kg_prompt_after_adaptive_auth_lock)
+            else -> Pair(0, 0)
+        }.toMessage()
+}
+
+private fun authRequiredAfterAdaptiveAuthRequestFingerprintAllowed(
+    securityMode: SecurityMode
+): BouncerMessageModel {
+    return when (securityMode) {
+        SecurityMode.Pattern ->
+            Pair(kg_unlock_with_pattern_or_fp, kg_prompt_after_adaptive_auth_lock)
+        SecurityMode.Password ->
+            Pair(kg_unlock_with_password_or_fp, kg_prompt_after_adaptive_auth_lock)
+        SecurityMode.PIN -> Pair(kg_unlock_with_pin_or_fp, kg_prompt_after_adaptive_auth_lock)
+        else -> Pair(0, 0)
+    }.toMessage()
+}
+
 private fun authRequiredAfterUserLockdown(securityMode: SecurityMode): BouncerMessageModel {
     return when (securityMode) {
         SecurityMode.Pattern -> Pair(keyguard_enter_pattern, kg_prompt_after_user_lockdown_pattern)
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalRepository.kt
index 4a06585f5..9e68ff8 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalRepository.kt
@@ -102,7 +102,7 @@
 
     override val isCommunalHubShowing: Flow<Boolean> =
         if (sceneContainerFlags.isEnabled()) {
-            sceneContainerRepository.desiredScene.map { scene -> scene.key == SceneKey.Communal }
+            sceneContainerRepository.currentScene.map { sceneKey -> sceneKey == SceneKey.Communal }
         } else {
             desiredScene.map { sceneKey -> sceneKey == CommunalSceneKey.Communal }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/compose/BaseComposeFacade.kt b/packages/SystemUI/src/com/android/systemui/compose/BaseComposeFacade.kt
index 4e23ecd9..a0aaa90 100644
--- a/packages/SystemUI/src/com/android/systemui/compose/BaseComposeFacade.kt
+++ b/packages/SystemUI/src/com/android/systemui/compose/BaseComposeFacade.kt
@@ -33,6 +33,7 @@
 import com.android.systemui.people.ui.viewmodel.PeopleViewModel
 import com.android.systemui.qs.footer.ui.viewmodel.FooterActionsViewModel
 import com.android.systemui.scene.shared.model.Scene
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.shared.model.SceneKey
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import com.android.systemui.volume.panel.ui.viewmodel.VolumePanelViewModel
@@ -78,7 +79,7 @@
     fun setVolumePanelActivityContent(
         activity: ComponentActivity,
         viewModel: VolumePanelViewModel,
-        onDismissAnimationFinished: () -> Unit,
+        onDismiss: () -> Unit,
     )
 
     /** Create a [View] to represent [viewModel] on screen. */
@@ -95,6 +96,7 @@
         viewModel: SceneContainerViewModel,
         windowInsets: StateFlow<WindowInsets?>,
         sceneByKey: Map<SceneKey, Scene>,
+        dataSourceDelegator: SceneDataSourceDelegator,
     ): View
 
     /** Creates sticky key indicator content presenting provided [viewModel] */
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index 1720de8..e893177 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -88,6 +88,8 @@
 import com.android.systemui.recents.Recents;
 import com.android.systemui.recordissue.RecordIssueModule;
 import com.android.systemui.retail.dagger.RetailModeModule;
+import com.android.systemui.scene.shared.model.SceneDataSource;
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator;
 import com.android.systemui.scene.ui.view.WindowRootViewComponent;
 import com.android.systemui.screenrecord.ScreenRecordModule;
 import com.android.systemui.screenshot.dagger.ScreenshotModule;
@@ -393,4 +395,7 @@
     @IntoMap
     @ClassKey(SystemUISecondaryUserService.class)
     abstract Service bindsSystemUISecondaryUserService(SystemUISecondaryUserService service);
+
+    @Binds
+    abstract SceneDataSource bindSceneDataSource(SceneDataSourceDelegator delegator);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractor.kt
new file mode 100644
index 0000000..55d2bfc
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractor.kt
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.deviceentry.domain.interactor
+
+import android.content.res.Resources
+import com.android.systemui.biometrics.domain.interactor.FingerprintPropertyInteractor
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FaceMessage
+import com.android.systemui.deviceentry.shared.model.FaceTimeoutMessage
+import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FingerprintLockoutMessage
+import com.android.systemui.deviceentry.shared.model.FingerprintMessage
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
+import com.android.systemui.res.R
+import com.android.systemui.util.kotlin.sample
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.filterIsInstance
+import kotlinx.coroutines.flow.filterNot
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.merge
+
+/**
+ * BiometricMessage business logic. Filters biometric error/acquired/fail/success events for
+ * authentication events that should never surface a message to the user at the current device
+ * state.
+ */
+@ExperimentalCoroutinesApi
+@SysUISingleton
+class BiometricMessageInteractor
+@Inject
+constructor(
+    @Main private val resources: Resources,
+    fingerprintAuthInteractor: DeviceEntryFingerprintAuthInteractor,
+    fingerprintPropertyInteractor: FingerprintPropertyInteractor,
+    faceAuthInteractor: DeviceEntryFaceAuthInteractor,
+    biometricSettingsInteractor: DeviceEntryBiometricSettingsInteractor,
+) {
+    private val faceHelp: Flow<HelpFaceAuthenticationStatus> =
+        faceAuthInteractor.authenticationStatus.filterIsInstance<HelpFaceAuthenticationStatus>()
+    private val faceError: Flow<ErrorFaceAuthenticationStatus> =
+        faceAuthInteractor.authenticationStatus.filterIsInstance<ErrorFaceAuthenticationStatus>()
+    private val faceFailure: Flow<FailedFaceAuthenticationStatus> =
+        faceAuthInteractor.authenticationStatus.filterIsInstance<FailedFaceAuthenticationStatus>()
+
+    /**
+     * The acquisition message ids to show message when both fingerprint and face are enrolled and
+     * enabled for device entry.
+     */
+    private val coExFaceAcquisitionMsgIdsToShow: Set<Int> =
+        resources.getIntArray(R.array.config_face_help_msgs_when_fingerprint_enrolled).toSet()
+
+    private fun ErrorFingerprintAuthenticationStatus.shouldSuppressError(): Boolean {
+        return isCancellationError() || isPowerPressedError()
+    }
+
+    private fun ErrorFaceAuthenticationStatus.shouldSuppressError(): Boolean {
+        return isCancellationError() || isUnableToProcessError()
+    }
+
+    private val fingerprintErrorMessage: Flow<FingerprintMessage> =
+        fingerprintAuthInteractor.fingerprintError
+            .filterNot { it.shouldSuppressError() }
+            .sample(biometricSettingsInteractor.fingerprintAuthCurrentlyAllowed, ::Pair)
+            .filter { (errorStatus, fingerprintAuthAllowed) ->
+                fingerprintAuthAllowed || errorStatus.isLockoutError()
+            }
+            .map { (errorStatus, _) ->
+                when {
+                    errorStatus.isLockoutError() -> FingerprintLockoutMessage(errorStatus.msg)
+                    else -> FingerprintMessage(errorStatus.msg)
+                }
+            }
+
+    private val fingerprintHelpMessage: Flow<FingerprintMessage> =
+        fingerprintAuthInteractor.fingerprintHelp
+            .sample(biometricSettingsInteractor.fingerprintAuthCurrentlyAllowed, ::Pair)
+            .filter { (_, fingerprintAuthAllowed) -> fingerprintAuthAllowed }
+            .map { (helpStatus, _) ->
+                FingerprintMessage(
+                    helpStatus.msg,
+                )
+            }
+
+    private val fingerprintFailMessage: Flow<FingerprintMessage> =
+        fingerprintPropertyInteractor.isUdfps.flatMapLatest { isUdfps ->
+            fingerprintAuthInteractor.fingerprintFailure
+                .sample(biometricSettingsInteractor.fingerprintAuthCurrentlyAllowed)
+                .filter { fingerprintAuthAllowed -> fingerprintAuthAllowed }
+                .map {
+                    FingerprintMessage(
+                        if (isUdfps) {
+                            resources.getString(
+                                com.android.internal.R.string.fingerprint_udfps_error_not_match
+                            )
+                        } else {
+                            resources.getString(
+                                com.android.internal.R.string.fingerprint_error_not_match
+                            )
+                        },
+                    )
+                }
+        }
+
+    val fingerprintMessage: Flow<FingerprintMessage> =
+        merge(
+            fingerprintErrorMessage,
+            fingerprintFailMessage,
+            fingerprintHelpMessage,
+        )
+
+    private val faceHelpMessage: Flow<FaceMessage> =
+        biometricSettingsInteractor.fingerprintAndFaceEnrolledAndEnabled
+            .flatMapLatest { fingerprintAndFaceEnrolledAndEnabled ->
+                if (fingerprintAndFaceEnrolledAndEnabled) {
+                    faceHelp.filter { faceAuthHelpStatus ->
+                        coExFaceAcquisitionMsgIdsToShow.contains(faceAuthHelpStatus.msgId)
+                    }
+                } else {
+                    faceHelp
+                }
+            }
+            .sample(biometricSettingsInteractor.faceAuthCurrentlyAllowed, ::Pair)
+            .filter { (_, faceAuthCurrentlyAllowed) -> faceAuthCurrentlyAllowed }
+            .map { (status, _) -> FaceMessage(status.msg) }
+
+    private val faceFailureMessage: Flow<FaceMessage> =
+        faceFailure
+            .sample(biometricSettingsInteractor.faceAuthCurrentlyAllowed)
+            .filter { faceAuthCurrentlyAllowed -> faceAuthCurrentlyAllowed }
+            .map { FaceMessage(resources.getString(R.string.keyguard_face_failed)) }
+
+    private val faceErrorMessage: Flow<FaceMessage> =
+        faceError
+            .filterNot { it.shouldSuppressError() }
+            .sample(biometricSettingsInteractor.faceAuthCurrentlyAllowed, ::Pair)
+            .filter { (errorStatus, faceAuthCurrentlyAllowed) ->
+                faceAuthCurrentlyAllowed || errorStatus.isLockoutError()
+            }
+            .map { (status, _) ->
+                when {
+                    status.isTimeoutError() -> FaceTimeoutMessage(status.msg)
+                    else -> FaceMessage(status.msg)
+                }
+            }
+
+    // TODO(b/317215391): support showing face acquired messages on timeout + face lockout errors
+    val faceMessage: Flow<FaceMessage> =
+        merge(
+            faceHelpMessage,
+            faceFailureMessage,
+            faceErrorMessage,
+        )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractor.kt
new file mode 100644
index 0000000..4515fcb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractor.kt
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 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 com.android.systemui.deviceentry.domain.interactor
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+
+/** Encapsulates business logic for device entry biometric settings. */
+@ExperimentalCoroutinesApi
+@SysUISingleton
+class DeviceEntryBiometricSettingsInteractor
+@Inject
+constructor(
+    repository: BiometricSettingsRepository,
+) {
+    val fingerprintAuthCurrentlyAllowed: Flow<Boolean> =
+        repository.isFingerprintAuthCurrentlyAllowed
+    val faceAuthCurrentlyAllowed: Flow<Boolean> = repository.isFaceAuthCurrentlyAllowed
+
+    /** Whether both fingerprint and face are enrolled and enabled for device entry. */
+    val fingerprintAndFaceEnrolledAndEnabled: Flow<Boolean> =
+        combine(
+            repository.isFingerprintEnrolledAndEnabled,
+            repository.isFaceAuthEnrolledAndEnabled,
+        ) { fpEnabled, faceEnabled ->
+            fpEnabled && faceEnabled
+        }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFingerprintAuthInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFingerprintAuthInteractor.kt
index 2461c26..a5f6f7c 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFingerprintAuthInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFingerprintAuthInteractor.kt
@@ -18,8 +18,10 @@
 
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
 import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
 import com.android.systemui.keyguard.shared.model.FingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.filterIsInstance
@@ -30,9 +32,6 @@
 constructor(
     repository: DeviceEntryFingerprintAuthRepository,
 ) {
-    val fingerprintFailure: Flow<FailFingerprintAuthenticationStatus> =
-        repository.authenticationStatus.filterIsInstance<FailFingerprintAuthenticationStatus>()
-
     /** Whether fingerprint authentication is currently running or not */
     val isRunning: Flow<Boolean> = repository.isRunning
 
@@ -41,4 +40,11 @@
         repository.authenticationStatus
 
     val isLockedOut: Flow<Boolean> = repository.isLockedOut
+
+    val fingerprintFailure: Flow<FailFingerprintAuthenticationStatus> =
+        repository.authenticationStatus.filterIsInstance<FailFingerprintAuthenticationStatus>()
+    val fingerprintError: Flow<ErrorFingerprintAuthenticationStatus> =
+        repository.authenticationStatus.filterIsInstance<ErrorFingerprintAuthenticationStatus>()
+    val fingerprintHelp: Flow<HelpFingerprintAuthenticationStatus> =
+        repository.authenticationStatus.filterIsInstance<HelpFingerprintAuthenticationStatus>()
 }
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
index 73389cb..21fd87c 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt
@@ -26,7 +26,6 @@
 import com.android.systemui.scene.domain.interactor.SceneInteractor
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -80,8 +79,7 @@
      * Note: This does not imply that the lockscreen is visible or not.
      */
     val isDeviceEntered: StateFlow<Boolean> =
-        sceneInteractor.desiredScene
-            .map { it.key }
+        sceneInteractor.currentScene
             .filter { currentScene ->
                 currentScene == SceneKey.Gone || currentScene == SceneKey.Lockscreen
             }
@@ -150,12 +148,12 @@
         applicationScope.launch {
             if (isAuthenticationRequired()) {
                 sceneInteractor.changeScene(
-                    scene = SceneModel(SceneKey.Bouncer),
+                    toScene = SceneKey.Bouncer,
                     loggingReason = "request to unlock device while authentication required",
                 )
             } else {
                 sceneInteractor.changeScene(
-                    scene = SceneModel(SceneKey.Gone),
+                    toScene = SceneKey.Gone,
                     loggingReason = "request to unlock device while authentication isn't required",
                 )
             }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractor.kt
similarity index 88%
rename from packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt
rename to packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractor.kt
index 6382338..79455eb 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractor.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -11,10 +11,10 @@
  * 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
+ * limitations under the License.
  */
 
-package com.android.systemui.keyguard.domain.interactor
+package com.android.systemui.deviceentry.domain.interactor
 
 import android.content.Context
 import android.content.Intent
@@ -22,7 +22,10 @@
 import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.deviceentry.shared.model.BiometricMessage
+import com.android.systemui.deviceentry.shared.model.FingerprintLockoutMessage
 import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
 import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
 import com.android.systemui.plugins.ActivityStarter
@@ -40,7 +43,6 @@
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.launch
 
 /** Business logic for handling authentication events when an app is occluding the lockscreen. */
@@ -77,16 +79,15 @@
     private val fingerprintLockoutEvents: Flow<Unit> =
         fingerprintAuthRepository.authenticationStatus
             .ifKeyguardOccludedByApp()
-            .filter { it is ErrorFingerprintAuthenticationStatus && it.isLockoutMessage() }
+            .filter { it is ErrorFingerprintAuthenticationStatus && it.isLockoutError() }
             .map {} // maps FingerprintAuthenticationStatus => Unit
     val message: Flow<BiometricMessage?> =
-        merge(
-                biometricMessageInteractor.fingerprintErrorMessage.filterNot {
-                    it.isFingerprintLockoutMessage()
-                },
-                biometricMessageInteractor.fingerprintFailMessage,
-                biometricMessageInteractor.fingerprintHelpMessage,
-            )
+        biometricMessageInteractor.fingerprintMessage
+            .filterNot { fingerprintMessage ->
+                // On lockout, the device will show the bouncer. Let's not show the message
+                // before the transition or else it'll look flickery.
+                fingerprintMessage is FingerprintLockoutMessage
+            }
             .ifKeyguardOccludedByApp(/* elseFlow */ flowOf(null))
 
     init {
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/BiometricMessageModels.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/BiometricMessageModels.kt
new file mode 100644
index 0000000..118215c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/BiometricMessageModels.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 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 com.android.systemui.deviceentry.shared.model
+
+/**
+ * BiometricMessage provided by
+ * [com.android.systemui.deviceentry.domain.interactor.BiometricMessageInteractor]
+ */
+sealed class BiometricMessage(
+    val message: String?,
+)
+
+/** Face biometric message */
+open class FaceMessage(faceMessage: String?) : BiometricMessage(faceMessage)
+
+data class FaceTimeoutMessage(
+    private val faceTimeoutMessage: String?,
+) : FaceMessage(faceTimeoutMessage)
+
+/** Fingerprint biometric message */
+open class FingerprintMessage(fingerprintMessage: String?) : BiometricMessage(fingerprintMessage)
+
+data class FingerprintLockoutMessage(
+    private val fingerprintLockoutMessage: String?,
+) : FingerprintMessage(fingerprintLockoutMessage)
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/FaceAuthenticationModels.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/FaceAuthenticationModels.kt
index f006b34..5f1667a 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/FaceAuthenticationModels.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/shared/model/FaceAuthenticationModels.kt
@@ -71,11 +71,16 @@
      */
     fun isCancellationError() = msgId == FaceManager.FACE_ERROR_CANCELED
 
+    fun isUnableToProcessError() = msgId == FaceManager.FACE_ERROR_UNABLE_TO_PROCESS
+
     /** Method that checks if [msgId] is a hardware error. */
     fun isHardwareError() =
         msgId == FaceManager.FACE_ERROR_HW_UNAVAILABLE ||
             msgId == FaceManager.FACE_ERROR_UNABLE_TO_PROCESS
 
+    /** Method that checks if [msgId] is a timeout error. */
+    fun isTimeoutError() = msgId == FaceManager.FACE_ERROR_TIMEOUT
+
     companion object {
         /**
          * Error message that is created when cancel confirmation is not received from FaceManager
diff --git a/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt b/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
index 83b2ee2..7a24d76 100644
--- a/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
+++ b/packages/SystemUI/src/com/android/systemui/flags/FlagDependencies.kt
@@ -22,16 +22,13 @@
 import com.android.server.notification.Flags.crossAppPoliteNotifications
 import com.android.server.notification.Flags.politeNotifications
 import com.android.server.notification.Flags.vibrateWhileUnlocked
-import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
 import com.android.systemui.Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR
 import com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT
-import com.android.systemui.Flags.communalHub
 import com.android.systemui.Flags.keyguardBottomAreaRefactor
 import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.flags.Flags.MIGRATE_KEYGUARD_STATUS_BAR_VIEW
 import com.android.systemui.keyguard.shared.ComposeLockscreen
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.scene.shared.flag.SceneContainerFlag
 import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor
 import com.android.systemui.statusbar.notification.interruption.VisualInterruptionRefactor
@@ -54,20 +51,13 @@
         FooterViewRefactor.token dependsOn NotificationIconContainerRefactor.token
         NotificationAvalancheSuppression.token dependsOn VisualInterruptionRefactor.token
 
-        // Internal keyguard dependencies
-        KeyguardShadeMigrationNssl.token dependsOn keyguardBottomAreaRefactor
-
         // SceneContainer dependencies
         SceneContainerFlag.getFlagDependencies().forEach { (alpha, beta) -> alpha dependsOn beta }
         SceneContainerFlag.getMainStaticFlag() dependsOn MIGRATE_KEYGUARD_STATUS_BAR_VIEW
 
         // ComposeLockscreen dependencies
-        ComposeLockscreen.token dependsOn KeyguardShadeMigrationNssl.token
         ComposeLockscreen.token dependsOn keyguardBottomAreaRefactor
         ComposeLockscreen.token dependsOn migrateClocksToBlueprint
-
-        // CommunalHub dependencies
-        communalHub dependsOn KeyguardShadeMigrationNssl.token
     }
 
     private inline val politeNotifications
@@ -80,6 +70,4 @@
         get() = FlagToken(FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR, keyguardBottomAreaRefactor())
     private inline val migrateClocksToBlueprint
         get() = FlagToken(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT, migrateClocksToBlueprint())
-    private inline val communalHub
-        get() = FlagToken(FLAG_COMMUNAL_HUB, communalHub())
 }
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
index 2cff947..afcb03d 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java
@@ -2689,10 +2689,12 @@
         protected final void setRotationSuggestionsEnabled(boolean enabled) {
             try {
                 final int userId = Binder.getCallingUserHandle().getIdentifier();
-                final int what = enabled
-                        ? StatusBarManager.DISABLE2_NONE
-                        : StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS;
-                mStatusBarService.disable2ForUser(what, mToken, mContext.getPackageName(), userId);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                if (enabled) {
+                    info.setRotationSuggestionDisabled(true);
+                }
+                mStatusBarService.disableForUser(info, mToken, mContext.getPackageName(), userId,
+                        "setRotationSuggestionsEnabled");
             } catch (RemoteException ex) {
                 throw ex.rethrowFromSystemServer();
             }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
index e23ec89..00ec1a1 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
@@ -404,6 +404,7 @@
     public static final int INDICATION_TYPE_BIOMETRIC_MESSAGE = 11;
     public static final int INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP = 12;
     public static final int INDICATION_IS_DISMISSIBLE = 13;
+    public static final int INDICATION_TYPE_ADAPTIVE_AUTH = 14;
 
     @IntDef({
             INDICATION_TYPE_NONE,
@@ -419,7 +420,8 @@
             INDICATION_TYPE_REVERSE_CHARGING,
             INDICATION_TYPE_BIOMETRIC_MESSAGE,
             INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP,
-            INDICATION_IS_DISMISSIBLE
+            INDICATION_IS_DISMISSIBLE,
+            INDICATION_TYPE_ADAPTIVE_AUTH
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface IndicationType{}
@@ -455,6 +457,8 @@
                 return "biometric_message";
             case INDICATION_TYPE_BIOMETRIC_MESSAGE_FOLLOW_UP:
                 return "biometric_message_followup";
+            case INDICATION_TYPE_ADAPTIVE_AUTH:
+                return "adaptive_auth";
             default:
                 return "unknown[" + type + "]";
         }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
index abe49ee..e35c5a6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewConfigurator.kt
@@ -53,6 +53,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardIndicationAreaViewModel
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenContentViewModel
 import com.android.systemui.keyguard.ui.viewmodel.OccludingAppDeviceEntryMessageViewModel
 import com.android.systemui.plugins.FalsingManager
@@ -98,8 +99,10 @@
     private val falsingManager: FalsingManager,
     private val aodAlphaViewModel: AodAlphaViewModel,
     private val keyguardClockViewModel: KeyguardClockViewModel,
+    private val smartspaceViewModel: KeyguardSmartspaceViewModel,
     private val lockscreenContentViewModel: LockscreenContentViewModel,
     private val lockscreenSceneBlueprintsLazy: Lazy<Set<LockscreenSceneBlueprint>>,
+    private val keyguardBlueprintViewBinder: KeyguardBlueprintViewBinder,
 ) : CoreStartable {
 
     private var rootViewHandle: DisposableHandle? = null
@@ -143,10 +146,11 @@
                 cs.connect(composeView.id, BOTTOM, PARENT_ID, BOTTOM)
                 keyguardRootView.addView(composeView)
             } else {
-                KeyguardBlueprintViewBinder.bind(
+                keyguardBlueprintViewBinder.bind(
                     keyguardRootView,
                     keyguardBlueprintViewModel,
                     keyguardClockViewModel,
+                    smartspaceViewModel,
                 )
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 0ee924d..641b967 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.keyguard;
 
+import static android.app.StatusBarManager.DISABLE2_NONE;
 import static android.app.StatusBarManager.SESSION_KEYGUARD;
 import static android.provider.Settings.Secure.LOCK_SCREEN_LOCK_AFTER_TIMEOUT;
 import static android.provider.Settings.System.LOCKSCREEN_SOUNDS_ENABLED;
@@ -29,6 +30,7 @@
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_OCCLUSION;
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_TRANSITION_FROM_AOD;
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_LOCKSCREEN_UNLOCK_ANIMATION;
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_USER_REQUEST;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW;
@@ -689,18 +691,17 @@
                             } else {
                                 resetStateLocked();
                             }
-                        } else {
-                            if (lastSimStateWasLocked && mShowing) {
-                                if (DEBUG_SIM_STATES) {
-                                    Log.d(TAG, "SIM moved to "
-                                            + "NOT_READY/ABSENT/UNKNOWN when the previous state "
-                                            + "was locked. Reset the state.");
-                                }
+                        }
+                        if (simState == TelephonyManager.SIM_STATE_ABSENT) {
+                            // MVNO SIMs can become transiently NOT_READY when switching networks,
+                            // so we should only lock when they are ABSENT.
+                            if (lastSimStateWasLocked) {
+                                if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to ABSENT when the "
+                                        + "previous state was locked. Reset the state.");
                                 resetStateLocked();
                             }
+                            mSimWasLocked.append(slotId, false);
                         }
-
-                        mSimWasLocked.append(slotId, false);
                     }
                     break;
                 case TelephonyManager.SIM_STATE_PIN_REQUIRED:
@@ -920,15 +921,17 @@
                 return KeyguardSecurityView.PROMPT_REASON_USER_REQUEST;
             } else if ((strongAuth & STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW) != 0) {
                 return KeyguardSecurityView.PROMPT_REASON_DEVICE_ADMIN;
+            } else if (any && ((strongAuth & STRONG_AUTH_REQUIRED_AFTER_LOCKOUT) != 0
+                    || mUpdateMonitor.isFingerprintLockedOut())) {
+                return KeyguardSecurityView.PROMPT_REASON_AFTER_LOCKOUT;
+            } else if ((strongAuth & SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST) != 0) {
+                return KeyguardSecurityView.PROMPT_REASON_ADAPTIVE_AUTH_REQUEST;
             } else if (trustAgentsEnabled
                     && (strongAuth & SOME_AUTH_REQUIRED_AFTER_USER_REQUEST) != 0) {
                 return KeyguardSecurityView.PROMPT_REASON_USER_REQUEST;
             } else if (trustAgentsEnabled
                     && (strongAuth & SOME_AUTH_REQUIRED_AFTER_TRUSTAGENT_EXPIRED) != 0) {
                 return KeyguardSecurityView.PROMPT_REASON_TRUSTAGENT_EXPIRED;
-            } else if (any && ((strongAuth & STRONG_AUTH_REQUIRED_AFTER_LOCKOUT) != 0
-                    || mUpdateMonitor.isFingerprintLockedOut())) {
-                return KeyguardSecurityView.PROMPT_REASON_AFTER_LOCKOUT;
             } else if (any && (strongAuth & STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE) != 0) {
                 return KeyguardSecurityView.PROMPT_REASON_PREPARE_FOR_UPDATE;
             } else if (any && (strongAuth
@@ -3403,9 +3406,12 @@
             //  unless disable is called to show un-hide it once first
             if (forceClearFlags) {
                 try {
-                    mStatusBarService.disableForUser(flags, mStatusBarDisableToken,
+                    StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags,
+                            DISABLE2_NONE);
+                    mStatusBarService.disableForUser(info, mStatusBarDisableToken,
                             mContext.getPackageName(),
-                            mSelectedUserInteractor.getSelectedUserId(true));
+                            mSelectedUserInteractor.getSelectedUserId(true),
+                            "adjustStatusBarLocked - force clear flags");
                 } catch (RemoteException e) {
                     Log.d(TAG, "Failed to force clear flags", e);
                 }
@@ -3431,9 +3437,11 @@
             }
 
             try {
-                mStatusBarService.disableForUser(flags, mStatusBarDisableToken,
-                        mContext.getPackageName(),
-                        mSelectedUserInteractor.getSelectedUserId(true));
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags,
+                        DISABLE2_NONE);
+                mStatusBarService.disableForUser(info, mStatusBarDisableToken,
+                        mContext.getPackageName(), mSelectedUserInteractor.getSelectedUserId(true),
+                        "adjustStatusBarLocked - set disable flags");
             } catch (RemoteException e) {
                 Log.d(TAG, "Failed to set disable flags: " + flags, e);
             }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
index 0b227fa..968c3e3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java
@@ -73,6 +73,7 @@
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
 import com.android.systemui.util.DeviceConfigProxy;
+import com.android.systemui.util.ThreadAssert;
 import com.android.systemui.util.kotlin.JavaAdapter;
 import com.android.systemui.util.settings.SecureSettings;
 import com.android.systemui.util.settings.SystemSettings;
@@ -223,6 +224,13 @@
         return new KeyguardQuickAffordancesMetricsLoggerImpl();
     }
 
+    /** */
+    @Provides
+    @SysUISingleton
+    static ThreadAssert providesThreadAssert() {
+        return new ThreadAssert();
+    }
+
     /** Binds {@link KeyguardUpdateMonitor} as a {@link CoreStartable}. */
     @Binds
     @IntoMap
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
index 9381830..0659c7c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepository.kt
@@ -17,14 +17,16 @@
 
 package com.android.systemui.keyguard.data.repository
 
+import android.os.Handler
 import android.util.Log
 import com.android.systemui.common.ui.data.repository.ConfigurationRepository
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT
 import com.android.systemui.keyguard.ui.view.layout.blueprints.KeyguardBlueprintModule
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType.DefaultTransition
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config
+import com.android.systemui.util.ThreadAssert
 import java.io.PrintWriter
 import java.util.TreeMap
 import javax.inject.Inject
@@ -49,16 +51,17 @@
 constructor(
     configurationRepository: ConfigurationRepository,
     blueprints: Set<@JvmSuppressWildcards KeyguardBlueprint>,
+    @Main val handler: Handler,
+    val assert: ThreadAssert,
 ) {
     // This is TreeMap so that we can order the blueprints and assign numerical values to the
     // blueprints in the adb tool.
     private val blueprintIdMap: TreeMap<String, KeyguardBlueprint> =
         TreeMap<String, KeyguardBlueprint>().apply { putAll(blueprints.associateBy { it.id }) }
     val blueprint: MutableStateFlow<KeyguardBlueprint> = MutableStateFlow(blueprintIdMap[DEFAULT]!!)
-    val refreshBluePrint: MutableSharedFlow<Unit> = MutableSharedFlow(extraBufferCapacity = 1)
-    val refreshBlueprintTransition: MutableSharedFlow<IntraBlueprintTransitionType> =
-        MutableSharedFlow(extraBufferCapacity = 1)
+    val refreshTransition = MutableSharedFlow<Config>(extraBufferCapacity = 1)
     val configurationChange: Flow<Unit> = configurationRepository.onAnyConfigurationChange
+    private var targetTransitionConfig: Config? = null
 
     /**
      * Emits the blueprint value to the collectors.
@@ -105,14 +108,32 @@
         blueprint?.let { this.blueprint.value = it }
     }
 
-    /** Re-emits the last emitted blueprint value if possible. */
-    fun refreshBlueprint() {
-        refreshBlueprintWithTransition(DefaultTransition)
-    }
+    /**
+     * Re-emits the last emitted blueprint value if possible. This is delayed until next frame to
+     * dedupe requests and determine the correct transition to execute.
+     */
+    fun refreshBlueprint(config: Config = Config.DEFAULT) {
+        fun scheduleCallback() {
+            // We use a handler here instead of a CoroutineDipsatcher because the one provided by
+            // @Main CoroutineDispatcher is currently Dispatchers.Main.immediate, which doesn't
+            // delay the callback, and instead runs it imemdiately.
+            handler.post {
+                assert.isMainThread()
+                targetTransitionConfig?.let {
+                    val success = refreshTransition.tryEmit(it)
+                    if (!success) {
+                        Log.e(TAG, "refreshBlueprint: Failed to emit blueprint refresh: $it")
+                    }
+                }
+                targetTransitionConfig = null
+            }
+        }
 
-    fun refreshBlueprintWithTransition(type: IntraBlueprintTransitionType = DefaultTransition) {
-        refreshBluePrint.tryEmit(Unit)
-        refreshBlueprintTransition.tryEmit(type)
+        assert.isMainThread()
+        if ((targetTransitionConfig?.type?.priority ?: Int.MIN_VALUE) < config.type.priority) {
+            if (targetTransitionConfig == null) scheduleCallback()
+            targetTransitionConfig = config
+        }
     }
 
     /** Prints all available blueprints to the PrintWriter. */
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractor.kt
deleted file mode 100644
index 508f71a..0000000
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractor.kt
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- *  Copyright (C) 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 com.android.systemui.keyguard.domain.interactor
-
-import android.content.res.Resources
-import android.hardware.biometrics.BiometricSourceType
-import android.hardware.biometrics.BiometricSourceType.FINGERPRINT
-import android.hardware.fingerprint.FingerprintManager
-import com.android.keyguard.KeyguardUpdateMonitor
-import com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED
-import com.android.systemui.biometrics.data.repository.FingerprintPropertyRepository
-import com.android.systemui.biometrics.shared.model.FingerprintSensorType
-import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository
-import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.util.IndicationHelper
-import javax.inject.Inject
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.flow.filterNot
-import kotlinx.coroutines.flow.flatMapLatest
-import kotlinx.coroutines.flow.map
-
-/**
- * BiometricMessage business logic. Filters biometric error/acquired/fail/success events for
- * authentication events that should never surface a message to the user at the current device
- * state.
- */
-@ExperimentalCoroutinesApi
-@SysUISingleton
-class BiometricMessageInteractor
-@Inject
-constructor(
-    @Main private val resources: Resources,
-    private val fingerprintAuthRepository: DeviceEntryFingerprintAuthRepository,
-    private val fingerprintPropertyRepository: FingerprintPropertyRepository,
-    private val indicationHelper: IndicationHelper,
-    private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
-) {
-    val fingerprintErrorMessage: Flow<BiometricMessage> =
-        fingerprintAuthRepository.authenticationStatus
-            .filter {
-                it is ErrorFingerprintAuthenticationStatus &&
-                    !indicationHelper.shouldSuppressErrorMsg(FINGERPRINT, it.msgId)
-            }
-            .map {
-                val errorStatus = it as ErrorFingerprintAuthenticationStatus
-                BiometricMessage(
-                    FINGERPRINT,
-                    BiometricMessageType.ERROR,
-                    errorStatus.msgId,
-                    errorStatus.msg,
-                )
-            }
-
-    val fingerprintHelpMessage: Flow<BiometricMessage> =
-        fingerprintAuthRepository.authenticationStatus
-            .filter { it is HelpFingerprintAuthenticationStatus }
-            .filterNot { isPrimaryAuthRequired() }
-            .map {
-                val helpStatus = it as HelpFingerprintAuthenticationStatus
-                BiometricMessage(
-                    FINGERPRINT,
-                    BiometricMessageType.HELP,
-                    helpStatus.msgId,
-                    helpStatus.msg,
-                )
-            }
-
-    val fingerprintFailMessage: Flow<BiometricMessage> =
-        isUdfps().flatMapLatest { isUdfps ->
-            fingerprintAuthRepository.authenticationStatus
-                .filter { it is FailFingerprintAuthenticationStatus }
-                .filterNot { isPrimaryAuthRequired() }
-                .map {
-                    BiometricMessage(
-                        FINGERPRINT,
-                        BiometricMessageType.FAIL,
-                        BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED,
-                        if (isUdfps) {
-                            resources.getString(
-                                com.android.internal.R.string.fingerprint_udfps_error_not_match
-                            )
-                        } else {
-                            resources.getString(
-                                com.android.internal.R.string.fingerprint_error_not_match
-                            )
-                        },
-                    )
-                }
-        }
-
-    private fun isUdfps() =
-        fingerprintPropertyRepository.sensorType.map {
-            it == FingerprintSensorType.UDFPS_OPTICAL ||
-                it == FingerprintSensorType.UDFPS_ULTRASONIC
-        }
-
-    private fun isPrimaryAuthRequired(): Boolean {
-        // Only checking if unlocking with Biometric is allowed (no matter strong or non-strong
-        // as long as primary auth, i.e. PIN/pattern/password, is required), so it's ok to
-        // pass true for isStrongBiometric to isUnlockingWithBiometricAllowed() to bypass the
-        // check of whether non-strong biometric is allowed since strong biometrics can still be
-        // used.
-        return !keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(true /* isStrongBiometric */)
-    }
-}
-
-data class BiometricMessage(
-    val source: BiometricSourceType,
-    val type: BiometricMessageType,
-    val id: Int,
-    val message: String?,
-) {
-    fun isFingerprintLockoutMessage(): Boolean {
-        return source == FINGERPRINT &&
-            type == BiometricMessageType.ERROR &&
-            (id == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT ||
-                id == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT)
-    }
-}
-
-enum class BiometricMessageType {
-    HELP,
-    ERROR,
-    FAIL,
-}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
index e20f570..7593ac2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
@@ -150,6 +150,7 @@
                 when (toState) {
                     KeyguardState.DREAMING -> TO_DREAMING_DURATION
                     KeyguardState.AOD -> TO_AOD_DURATION
+                    KeyguardState.DOZING -> TO_DOZING_DURATION
                     KeyguardState.LOCKSCREEN -> TO_LOCKSCREEN_DURATION
                     else -> DEFAULT_DURATION
                 }.inWholeMilliseconds
@@ -160,6 +161,7 @@
         private val DEFAULT_DURATION = 500.milliseconds
         val TO_DREAMING_DURATION = 933.milliseconds
         val TO_AOD_DURATION = 1300.milliseconds
+        val TO_DOZING_DURATION = 933.milliseconds
         val TO_LOCKSCREEN_DURATION = DEFAULT_DURATION
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
index 1da0a0e..57e9ac7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.keyguard.domain.interactor
 
 import android.animation.ValueAnimator
+import android.util.MathUtils
 import com.android.app.animation.Interpolators
 import com.android.systemui.communal.shared.model.CommunalSceneKey
 import com.android.systemui.dagger.SysUISingleton
@@ -208,7 +209,10 @@
                                     }
                                 transitionRepository.updateTransition(
                                     id,
-                                    1f - shadeExpansion,
+                                    // This maps the shadeExpansion to a much faster curve, to match
+                                    // the existing logic
+                                    1f -
+                                        MathUtils.constrainedMap(0f, 1f, 0.95f, 1f, shadeExpansion),
                                     nextState,
                                 )
 
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
index 566e006..56d64a2 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractor.kt
@@ -24,13 +24,12 @@
 import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint
 import com.android.systemui.keyguard.ui.view.layout.blueprints.SplitShadeKeyguardBlueprint
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType.DefaultTransition
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
 import com.android.systemui.statusbar.policy.SplitShadeStateController
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.launch
 
@@ -44,20 +43,14 @@
     private val splitShadeStateController: SplitShadeStateController,
 ) {
 
-    /**
-     * The current blueprint for the lockscreen.
-     *
-     * This flow can also emit the same blueprint value if refreshBlueprint is emitted.
-     */
+    /** The current blueprint for the lockscreen. */
     val blueprint: Flow<KeyguardBlueprint> = keyguardBlueprintRepository.blueprint
 
-    val blueprintWithTransition =
-        combine(
-            keyguardBlueprintRepository.refreshBluePrint,
-            keyguardBlueprintRepository.refreshBlueprintTransition
-        ) { _, source ->
-            source
-        }
+    /**
+     * Triggered when the blueprint isn't changed, but the ConstraintSet should be rebuilt and
+     * optionally a transition should be fired to move to the rebuilt ConstraintSet.
+     */
+    val refreshTransition = keyguardBlueprintRepository.refreshTransition
 
     init {
         applicationScope.launch {
@@ -105,14 +98,11 @@
         return keyguardBlueprintRepository.applyBlueprint(blueprintId)
     }
 
-    /** Re-emits the blueprint value to the collectors. */
-    fun refreshBlueprint() {
-        keyguardBlueprintRepository.refreshBlueprint()
-    }
+    /** Emits a value to refresh the blueprint with the appropriate transition. */
+    fun refreshBlueprint(type: Type = Type.NoTransition) = refreshBlueprint(Config(type))
 
-    fun refreshBlueprintWithTransition(type: IntraBlueprintTransitionType = DefaultTransition) {
-        keyguardBlueprintRepository.refreshBlueprintWithTransition(type)
-    }
+    /** Emits a value to refresh the blueprint with the appropriate transition. */
+    fun refreshBlueprint(config: Config) = keyguardBlueprintRepository.refreshBlueprint(config)
 
     fun getCurrentBlueprint(): KeyguardBlueprint {
         return keyguardBlueprintRepository.blueprint.value
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
index 22d11d0..78749ea 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractor.kt
@@ -37,6 +37,7 @@
 import com.android.systemui.keyguard.shared.model.DozeStateModel
 import com.android.systemui.keyguard.shared.model.DozeStateModel.Companion.isDozeOff
 import com.android.systemui.keyguard.shared.model.DozeTransitionModel
+import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
 import com.android.systemui.keyguard.shared.model.StatusBarState
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.res.R
@@ -79,6 +80,7 @@
     bouncerRepository: KeyguardBouncerRepository,
     configurationInteractor: ConfigurationInteractor,
     shadeRepository: ShadeRepository,
+    keyguardTransitionInteractor: KeyguardTransitionInteractor,
     sceneInteractorProvider: Provider<SceneInteractor>,
 ) {
     // TODO(b/296118689): move to a repository
@@ -233,8 +235,36 @@
     /** The position of the keyguard clock. */
     val clockPosition: Flow<Position> = repository.clockPosition
 
+    @Deprecated("Use the relevant TransitionViewModel")
     val keyguardAlpha: Flow<Float> = repository.keyguardAlpha
 
+    /**
+     * When the lockscreen can be dismissed, emit an alpha value as the user swipes up. This is
+     * useful just before the code commits to moving to GONE.
+     *
+     * This uses legacyShadeExpansion to process swipe up events. In the future, the touch input
+     * signal should be sent directly to transitions.
+     */
+    val dismissAlpha: Flow<Float?> =
+        combine(
+                shadeRepository.legacyShadeExpansion,
+                statusBarState,
+                keyguardTransitionInteractor.currentKeyguardState,
+                isKeyguardDismissible,
+            ) { legacyShadeExpansion, statusBarState, currentKeyguardState, isKeyguardDismissible ->
+                if (
+                    statusBarState == StatusBarState.KEYGUARD &&
+                        isKeyguardDismissible &&
+                        currentKeyguardState == LOCKSCREEN
+                ) {
+                    MathUtils.constrainedMap(0f, 1f, 0.95f, 1f, legacyShadeExpansion)
+                } else {
+                    null
+                }
+            }
+            .onStart { emit(null) }
+            .distinctUntilChanged()
+
     val keyguardTranslationY: Flow<Float> =
         configurationInteractor
             .dimensionPixelSize(R.dimen.keyguard_translate_distance_on_swipe_up)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
index 310f13d..d1fd719 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
@@ -56,7 +56,6 @@
 constructor(
     @Application val scope: CoroutineScope,
     private val repository: KeyguardTransitionRepository,
-    private val keyguardInteractor: dagger.Lazy<KeyguardInteractor>,
     private val fromLockscreenTransitionInteractor: dagger.Lazy<FromLockscreenTransitionInteractor>,
     private val fromPrimaryBouncerTransitionInteractor:
         dagger.Lazy<FromPrimaryBouncerTransitionInteractor>,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/KeyguardShadeMigrationNssl.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/KeyguardShadeMigrationNssl.kt
deleted file mode 100644
index 23642a7..0000000
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/KeyguardShadeMigrationNssl.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 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 com.android.systemui.keyguard.shared
-
-import com.android.systemui.Flags
-import com.android.systemui.flags.FlagToken
-import com.android.systemui.flags.RefactorFlagUtils
-
-/** Helper for reading or using the keyguard shade migration nssl flag state. */
-@Suppress("NOTHING_TO_INLINE")
-object KeyguardShadeMigrationNssl {
-    /** The aconfig flag name */
-    const val FLAG_NAME = Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL
-
-    /** A token used for dependency declaration */
-    val token: FlagToken
-        get() = FlagToken(FLAG_NAME, isEnabled)
-
-    /** Is the refactor enabled */
-    @JvmStatic
-    inline val isEnabled
-        get() = Flags.keyguardShadeMigrationNssl()
-
-    /**
-     * Called to ensure code is only run when the flag is enabled. This protects users from the
-     * unintended behaviors caused by accidentally running new logic, while also crashing on an eng
-     * build to ensure that the refactor author catches issues in testing.
-     */
-    @JvmStatic
-    inline fun isUnexpectedlyInLegacyMode() =
-        RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, FLAG_NAME)
-
-    /**
-     * Called to ensure code is only run when the flag is disabled. This will throw an exception if
-     * the flag is enabled to ensure that the refactor author catches issues in testing.
-     */
-    @JvmStatic
-    inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME)
-}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/AuthenticationFlags.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/AuthenticationFlags.kt
index cf5b88f..08904b6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/AuthenticationFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/AuthenticationFlags.kt
@@ -60,6 +60,12 @@
             LockPatternUtils.StrongAuthTracker
                 .STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT
         )
+
+    val isSomeAuthRequiredAfterAdaptiveAuthRequest =
+        containsFlag(
+            flag,
+            LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST
+        )
 }
 
 private fun containsFlag(haystack: Int, needle: Int): Boolean {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FingerprintAuthenticationModels.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FingerprintAuthenticationModels.kt
index 474de77..d8b7b4a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FingerprintAuthenticationModels.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FingerprintAuthenticationModels.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.keyguard.shared.model
 
+import android.hardware.biometrics.BiometricFingerprintConstants
 import android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_GOOD
 import android.hardware.biometrics.BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START
 import android.hardware.fingerprint.FingerprintManager
@@ -61,8 +62,14 @@
     // present to break equality check if the same error occurs repeatedly.
     val createdAt: Long = elapsedRealtime(),
 ) : FingerprintAuthenticationStatus() {
-    fun isLockoutMessage(): Boolean {
-        return msgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT ||
+    fun isCancellationError(): Boolean =
+        msgId == BiometricFingerprintConstants.FINGERPRINT_ERROR_CANCELED ||
+            msgId == BiometricFingerprintConstants.FINGERPRINT_ERROR_USER_CANCELED
+
+    fun isPowerPressedError(): Boolean =
+        msgId == BiometricFingerprintConstants.BIOMETRIC_ERROR_POWER_PRESSED
+
+    fun isLockoutError(): Boolean =
+        msgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT ||
             msgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerMessageAreaViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerMessageAreaViewBinder.kt
new file mode 100644
index 0000000..9186dde
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerMessageAreaViewBinder.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 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 com.android.systemui.keyguard.ui.binder
+
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.repeatOnLifecycle
+import com.android.keyguard.AuthKeyguardMessageArea
+import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerMessageAreaViewModel
+import com.android.systemui.lifecycle.repeatWhenAttached
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+/** Binds the alternate bouncer message view to its view-model. */
+@ExperimentalCoroutinesApi
+object AlternateBouncerMessageAreaViewBinder {
+
+    /** Binds the view to the view-model, continuing to update the former based on the latter. */
+    @JvmStatic
+    fun bind(
+        view: AuthKeyguardMessageArea,
+        viewModel: AlternateBouncerMessageAreaViewModel,
+    ) {
+        view.setIsVisible(true)
+        view.repeatWhenAttached {
+            repeatOnLifecycle(Lifecycle.State.STARTED) {
+                viewModel.message.collect { biometricMsg ->
+                    if (biometricMsg == null) {
+                        view.setMessage("", true)
+                    } else {
+                        view.setMessage(biometricMsg.message, true)
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
index b2a3549..d400210 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/AlternateBouncerViewBinder.kt
@@ -62,6 +62,11 @@
                 alternateBouncerDependencies.udfpsAccessibilityOverlayViewModel,
         )
 
+        AlternateBouncerMessageAreaViewBinder.bind(
+            view = view.requireViewById(R.id.alternate_bouncer_message_area),
+            viewModel = alternateBouncerDependencies.messageAreaViewModel,
+        )
+
         val scrim = view.requireViewById(R.id.alternate_bouncer_scrim) as ScrimView
         val viewModel = alternateBouncerDependencies.viewModel
         val swipeUpAnywhereGestureHandler =
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
index 404046b..66fc995 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBlueprintViewBinder.kt
@@ -17,7 +17,9 @@
 
 package com.android.systemui.keyguard.ui.binder
 
+import android.os.Handler
 import android.os.Trace
+import android.transition.Transition
 import android.transition.TransitionManager
 import android.util.Log
 import androidx.constraintlayout.widget.ConstraintLayout
@@ -25,98 +27,182 @@
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.repeatOnLifecycle
 import com.android.systemui.Flags.keyguardBottomAreaRefactor
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.BaseBlueprintTransition
 import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardBlueprintViewModel
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 import com.android.systemui.lifecycle.repeatWhenAttached
+import javax.inject.Inject
+import kotlin.math.max
 import kotlinx.coroutines.launch
 
-class KeyguardBlueprintViewBinder {
-    companion object {
-        private const val TAG = "KeyguardBlueprintViewBinder"
+private const val TAG = "KeyguardBlueprintViewBinder"
+private const val DEBUG = true
 
-        fun bind(
-            constraintLayout: ConstraintLayout,
-            viewModel: KeyguardBlueprintViewModel,
-            clockViewModel: KeyguardClockViewModel
-        ) {
-            constraintLayout.repeatWhenAttached {
-                repeatOnLifecycle(Lifecycle.State.CREATED) {
-                    launch {
-                        viewModel.blueprint.collect { blueprint ->
-                            val prevBluePrint = viewModel.currentBluePrint
-                            Trace.beginSection("KeyguardBlueprint#applyBlueprint")
-                            Log.d(TAG, "applying blueprint: $blueprint")
-                            TransitionManager.endTransitions(constraintLayout)
+@SysUISingleton
+class KeyguardBlueprintViewBinder
+@Inject
+constructor(
+    @Main private val handler: Handler,
+) {
+    private var runningPriority = -1
+    private val runningTransitions = mutableSetOf<Transition>()
+    private val isTransitionRunning: Boolean
+        get() = runningTransitions.size > 0
+    private val transitionListener =
+        object : Transition.TransitionListener {
+            override fun onTransitionCancel(transition: Transition) {
+                if (DEBUG) Log.e(TAG, "onTransitionCancel: ${transition::class.simpleName}")
+                runningTransitions.remove(transition)
+            }
 
-                            val cs =
-                                ConstraintSet().apply {
-                                    clone(constraintLayout)
-                                    val emptyLayout = ConstraintSet.Layout()
-                                    knownIds.forEach {
-                                        getConstraint(it).layout.copyFrom(emptyLayout)
-                                    }
-                                    blueprint.applyConstraints(this)
-                                }
+            override fun onTransitionEnd(transition: Transition) {
+                if (DEBUG) Log.e(TAG, "onTransitionEnd: ${transition::class.simpleName}")
+                runningTransitions.remove(transition)
+            }
 
-                            // Apply transition.
+            override fun onTransitionPause(transition: Transition) {
+                if (DEBUG) Log.i(TAG, "onTransitionPause: ${transition::class.simpleName}")
+                runningTransitions.remove(transition)
+            }
+
+            override fun onTransitionResume(transition: Transition) {
+                if (DEBUG) Log.i(TAG, "onTransitionResume: ${transition::class.simpleName}")
+                runningTransitions.add(transition)
+            }
+
+            override fun onTransitionStart(transition: Transition) {
+                if (DEBUG) Log.i(TAG, "onTransitionStart: ${transition::class.simpleName}")
+                runningTransitions.add(transition)
+            }
+        }
+
+    fun bind(
+        constraintLayout: ConstraintLayout,
+        viewModel: KeyguardBlueprintViewModel,
+        clockViewModel: KeyguardClockViewModel,
+        smartspaceViewModel: KeyguardSmartspaceViewModel,
+    ) {
+        constraintLayout.repeatWhenAttached {
+            repeatOnLifecycle(Lifecycle.State.CREATED) {
+                launch {
+                    viewModel.blueprint.collect { blueprint ->
+                        Trace.beginSection("KeyguardBlueprintViewBinder#applyBlueprint")
+                        val prevBluePrint = viewModel.currentBluePrint
+
+                        val cs =
+                            ConstraintSet().apply {
+                                clone(constraintLayout)
+                                val emptyLayout = ConstraintSet.Layout()
+                                knownIds.forEach { getConstraint(it).layout.copyFrom(emptyLayout) }
+                                blueprint.applyConstraints(this)
+                            }
+
+                        var transition =
                             if (
                                 !keyguardBottomAreaRefactor() &&
                                     prevBluePrint != null &&
                                     prevBluePrint != blueprint
                             ) {
-                                TransitionManager.beginDelayedTransition(
-                                    constraintLayout,
-                                    BaseBlueprintTransition(clockViewModel)
-                                        .addTransition(
-                                            IntraBlueprintTransition(
-                                                IntraBlueprintTransitionType.NoTransition,
-                                                clockViewModel
-                                            )
+                                BaseBlueprintTransition(clockViewModel)
+                                    .addTransition(
+                                        IntraBlueprintTransition(
+                                            Config.DEFAULT,
+                                            clockViewModel,
+                                            smartspaceViewModel
                                         )
-                                )
-                            } else {
-                                TransitionManager.beginDelayedTransition(
-                                    constraintLayout,
-                                    IntraBlueprintTransition(
-                                        IntraBlueprintTransitionType.NoTransition,
-                                        clockViewModel
                                     )
+                            } else {
+                                IntraBlueprintTransition(
+                                    Config.DEFAULT,
+                                    clockViewModel,
+                                    smartspaceViewModel
                                 )
                             }
 
-                            // Add and remove views of sections that are not contained by the
-                            // other.
+                        runTransition(constraintLayout, transition, Config.DEFAULT) {
+                            // Add and remove views of sections that are not contained by the other.
                             blueprint.replaceViews(prevBluePrint, constraintLayout)
                             cs.applyTo(constraintLayout)
-
-                            viewModel.currentBluePrint = blueprint
-                            Trace.endSection()
                         }
+
+                        viewModel.currentBluePrint = blueprint
+                        Trace.endSection()
                     }
+                }
 
-                    launch {
-                        viewModel.blueprintWithTransition.collect { source ->
-                            TransitionManager.endTransitions(constraintLayout)
+                launch {
+                    viewModel.refreshTransition.collect { transition ->
+                        Trace.beginSection("KeyguardBlueprintViewBinder#refreshTransition")
+                        val cs =
+                            ConstraintSet().apply {
+                                clone(constraintLayout)
+                                viewModel.currentBluePrint?.applyConstraints(this)
+                            }
 
-                            val cs =
-                                ConstraintSet().apply {
-                                    clone(constraintLayout)
-                                    viewModel.currentBluePrint?.applyConstraints(this)
-                                }
-
-                            TransitionManager.beginDelayedTransition(
-                                constraintLayout,
-                                IntraBlueprintTransition(source, clockViewModel)
-                            )
+                        runTransition(
+                            constraintLayout,
+                            IntraBlueprintTransition(
+                                transition,
+                                clockViewModel,
+                                smartspaceViewModel
+                            ),
+                            transition,
+                        ) {
                             cs.applyTo(constraintLayout)
-                            Trace.endSection()
                         }
+                        Trace.endSection()
                     }
                 }
             }
         }
     }
+
+    private fun runTransition(
+        constraintLayout: ConstraintLayout,
+        transition: Transition,
+        config: Config,
+        apply: () -> Unit,
+    ) {
+        val currentPriority = if (isTransitionRunning) runningPriority else -1
+        if (config.checkPriority && config.type.priority < currentPriority) {
+            if (DEBUG) {
+                Log.w(
+                    TAG,
+                    "runTransition: skipping ${transition::class.simpleName}: " +
+                        "currentPriority=$currentPriority; config=$config"
+                )
+            }
+            apply()
+            return
+        }
+
+        if (DEBUG) {
+            Log.i(
+                TAG,
+                "runTransition: running ${transition::class.simpleName}: " +
+                    "currentPriority=$currentPriority; config=$config"
+            )
+        }
+
+        // beginDelayedTransition makes a copy, so we temporarially add the uncopied transition to
+        // the running set until the copy is started by the handler.
+        runningTransitions.add(transition)
+        transition.addListener(transitionListener)
+        runningPriority = max(currentPriority, config.type.priority)
+
+        handler.post {
+            if (config.terminatePrevious) {
+                TransitionManager.endTransitions(constraintLayout)
+            }
+
+            TransitionManager.beginDelayedTransition(constraintLayout, transition)
+            runningTransitions.remove(transition)
+            apply()
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt
index 62a6e8b..01596ed 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardClockViewBinder.kt
@@ -30,7 +30,7 @@
 import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardClockInteractor
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
 import com.android.systemui.keyguard.ui.view.layout.sections.ClockSection
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
 import com.android.systemui.lifecycle.repeatWhenAttached
@@ -39,6 +39,8 @@
 import kotlinx.coroutines.launch
 
 object KeyguardClockViewBinder {
+    private val TAG = KeyguardClockViewBinder::class.simpleName!!
+
     @JvmStatic
     fun bind(
         clockSection: ClockSection,
@@ -68,9 +70,7 @@
                     if (!migrateClocksToBlueprint()) return@launch
                     viewModel.clockSize.collect {
                         updateBurnInLayer(keyguardRootView, viewModel)
-                        blueprintInteractor.refreshBlueprintWithTransition(
-                            IntraBlueprintTransitionType.ClockSize
-                        )
+                        blueprintInteractor.refreshBlueprint(Type.ClockSize)
                     }
                 }
                 launch {
@@ -83,13 +83,9 @@
                                 it.largeClock.config.hasCustomPositionUpdatedAnimation &&
                                     it.config.id == DEFAULT_CLOCK_ID
                             ) {
-                                blueprintInteractor.refreshBlueprintWithTransition(
-                                    IntraBlueprintTransitionType.DefaultClockStepping
-                                )
+                                blueprintInteractor.refreshBlueprint(Type.DefaultClockStepping)
                             } else {
-                                blueprintInteractor.refreshBlueprintWithTransition(
-                                    IntraBlueprintTransitionType.DefaultTransition
-                                )
+                                blueprintInteractor.refreshBlueprint(Type.DefaultTransition)
                             }
                         }
                     }
@@ -102,9 +98,7 @@
                             if (
                                 viewModel.useLargeClock && it.config.id == "DIGITAL_CLOCK_WEATHER"
                             ) {
-                                blueprintInteractor.refreshBlueprintWithTransition(
-                                    IntraBlueprintTransitionType.DefaultTransition
-                                )
+                                blueprintInteractor.refreshBlueprint(Type.DefaultTransition)
                             }
                         }
                     }
@@ -112,6 +106,7 @@
             }
         }
     }
+
     @VisibleForTesting
     fun updateBurnInLayer(
         keyguardRootView: ConstraintLayout,
@@ -171,6 +166,7 @@
             }
         }
     }
+
     fun applyConstraints(
         clockSection: ClockSection,
         rootView: ConstraintLayout,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
index 1b7a507..c58a03c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardRootViewBinder.kt
@@ -43,7 +43,6 @@
 import com.android.systemui.common.shared.model.TintedIcon
 import com.android.systemui.common.ui.ConfigurationState
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryHapticsInteractor
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardRootViewModel
@@ -146,7 +145,7 @@
                         }
                     }
 
-                    if (KeyguardShadeMigrationNssl.isEnabled) {
+                    if (migrateClocksToBlueprint()) {
                         launch {
                             viewModel.burnInLayerVisibility.collect { visibility ->
                                 childViews[burnInLayerId]?.visibility = visibility
@@ -179,7 +178,7 @@
                         }
 
                         launch {
-                            viewModel.lockscreenStateAlpha.collect { alpha ->
+                            viewModel.lockscreenStateAlpha(viewState).collect { alpha ->
                                 childViews[statusViewId]?.alpha = alpha
                             }
                         }
@@ -316,7 +315,7 @@
             }
         }
 
-        if (KeyguardShadeMigrationNssl.isEnabled) {
+        if (migrateClocksToBlueprint()) {
             burnInParams.update { current ->
                 current.copy(translationY = { childViews[burnInLayerId]?.translationY })
             }
@@ -415,7 +414,9 @@
         configuration: ConfigurationState,
         screenOffAnimationController: ScreenOffAnimationController,
     ) {
-        KeyguardShadeMigrationNssl.assertInLegacyMode()
+        if (migrateClocksToBlueprint()) {
+            throw IllegalStateException("should only be called in legacy code paths")
+        }
         if (NotificationIconContainerRefactor.isUnexpectedlyInLegacyMode()) return
         coroutineScope {
             val iconAppearTranslationPx =
@@ -444,7 +445,7 @@
             }
         when {
             !isVisible.isAnimating -> {
-                if (!KeyguardShadeMigrationNssl.isEnabled) {
+                if (!migrateClocksToBlueprint()) {
                     translationY = 0f
                 }
                 visibility =
@@ -494,7 +495,7 @@
         animatorListener: Animator.AnimatorListener,
     ) {
         if (animate) {
-            if (!KeyguardShadeMigrationNssl.isEnabled) {
+            if (!migrateClocksToBlueprint()) {
                 translationY = -iconAppearTranslation.toFloat()
             }
             alpha = 0f
@@ -502,19 +503,19 @@
                 .alpha(1f)
                 .setInterpolator(Interpolators.LINEAR)
                 .setDuration(AOD_ICONS_APPEAR_DURATION)
-                .apply { if (KeyguardShadeMigrationNssl.isEnabled) animateInIconTranslation() }
+                .apply { if (migrateClocksToBlueprint()) animateInIconTranslation() }
                 .setListener(animatorListener)
                 .start()
         } else {
             alpha = 1.0f
-            if (!KeyguardShadeMigrationNssl.isEnabled) {
+            if (!migrateClocksToBlueprint()) {
                 translationY = 0f
             }
         }
     }
 
     private fun View.animateInIconTranslation() {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             animate().animateInIconTranslation().setDuration(AOD_ICONS_APPEAR_DURATION).start()
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
index 08a2b9c..b77f0c5 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardSmartspaceViewBinder.kt
@@ -23,6 +23,8 @@
 import androidx.lifecycle.repeatOnLifecycle
 import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.keyguard.domain.interactor.KeyguardBlueprintInteractor
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 import com.android.systemui.lifecycle.repeatWhenAttached
@@ -49,7 +51,13 @@
                             clockViewModel,
                             smartspaceViewModel
                         )
-                        blueprintInteractor.refreshBlueprintWithTransition()
+                        blueprintInteractor.refreshBlueprint(
+                            Config(
+                                Type.SmartspaceVisibility,
+                                checkPriority = false,
+                                terminatePrevious = false,
+                            )
+                        )
                     }
                 }
 
@@ -57,7 +65,13 @@
                     if (!migrateClocksToBlueprint()) return@launch
                     smartspaceViewModel.bcSmartspaceVisibility.collect {
                         updateBCSmartspaceInBurnInLayer(keyguardRootView, clockViewModel)
-                        blueprintInteractor.refreshBlueprintWithTransition()
+                        blueprintInteractor.refreshBlueprint(
+                            Config(
+                                Type.SmartspaceVisibility,
+                                checkPriority = false,
+                                terminatePrevious = false,
+                            )
+                        )
                     }
                 }
             }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
index fab60e8..951df5a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/transitions/DeviceEntryIconTransitionModule.kt
@@ -23,6 +23,7 @@
 import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GoneToAodTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GoneToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGoneTransitionViewModel
@@ -116,6 +117,12 @@
 
     @Binds
     @IntoSet
+    abstract fun goneToLockscreen(
+        impl: GoneToLockscreenTransitionViewModel
+    ): DeviceEntryIconTransition
+
+    @Binds
+    @IntoSet
     abstract fun occludedToAod(impl: OccludedToAodTransitionViewModel): DeviceEntryIconTransition
 
     @Binds
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
index bc9671e..77f7ac8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprint.kt
@@ -33,6 +33,7 @@
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultUdfpsAccessibilityOverlaySection
 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule.Companion.KEYGUARD_AMBIENT_INDICATION_AREA_SECTION
+import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSliceViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
 import java.util.Optional
 import javax.inject.Inject
@@ -65,6 +66,7 @@
     communalTutorialIndicatorSection: CommunalTutorialIndicatorSection,
     clockSection: ClockSection,
     smartspaceSection: SmartspaceSection,
+    keyguardSliceViewSection: KeyguardSliceViewSection,
     udfpsAccessibilityOverlaySection: DefaultUdfpsAccessibilityOverlaySection,
 ) : KeyguardBlueprint {
     override val id: String = DEFAULT
@@ -83,6 +85,7 @@
             aodBurnInSection,
             communalTutorialIndicatorSection,
             clockSection,
+            keyguardSliceViewSection,
             defaultDeviceEntrySection,
             udfpsAccessibilityOverlaySection, // Add LAST: Intentionally has z-order above others
         )
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/ShortcutsBesideUdfpsKeyguardBlueprint.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/ShortcutsBesideUdfpsKeyguardBlueprint.kt
index d118d4d..55b2381 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/ShortcutsBesideUdfpsKeyguardBlueprint.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/ShortcutsBesideUdfpsKeyguardBlueprint.kt
@@ -33,6 +33,7 @@
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultUdfpsAccessibilityOverlaySection
 import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSectionsModule
+import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSliceViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
 import com.android.systemui.util.kotlin.getOrNull
 import java.util.Optional
@@ -60,6 +61,7 @@
     communalTutorialIndicatorSection: CommunalTutorialIndicatorSection,
     clockSection: ClockSection,
     smartspaceSection: SmartspaceSection,
+    keyguardSliceViewSection: KeyguardSliceViewSection,
     udfpsAccessibilityOverlaySection: DefaultUdfpsAccessibilityOverlaySection,
 ) : KeyguardBlueprint {
     override val id: String = SHORTCUTS_BESIDE_UDFPS
@@ -78,6 +80,7 @@
             aodBurnInSection,
             communalTutorialIndicatorSection,
             clockSection,
+            keyguardSliceViewSection,
             defaultDeviceEntrySection,
             udfpsAccessibilityOverlaySection, // Add LAST: Intentionally has z-order above others
         )
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/IntraBlueprintTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/IntraBlueprintTransition.kt
index 524aa1a..3adeb2a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/IntraBlueprintTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/blueprints/transitions/IntraBlueprintTransition.kt
@@ -20,26 +20,45 @@
 import com.android.systemui.keyguard.ui.view.layout.sections.transitions.ClockSizeTransition
 import com.android.systemui.keyguard.ui.view.layout.sections.transitions.DefaultClockSteppingTransition
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
-
-enum class IntraBlueprintTransitionType {
-    ClockSize,
-    ClockCenter,
-    DefaultClockStepping,
-    DefaultTransition,
-    AodNotifIconsTransition,
-    // When transition between blueprint, we don't need any duration or interpolator but we need
-    // all elements go to correct state
-    NoTransition,
-}
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 
 class IntraBlueprintTransition(
-    type: IntraBlueprintTransitionType,
-    clockViewModel: KeyguardClockViewModel
+    config: IntraBlueprintTransition.Config,
+    clockViewModel: KeyguardClockViewModel,
+    smartspaceViewModel: KeyguardSmartspaceViewModel,
 ) : TransitionSet() {
+
+    enum class Type(
+        val priority: Int,
+    ) {
+        ClockSize(100),
+        ClockCenter(99),
+        DefaultClockStepping(98),
+        AodNotifIconsTransition(97),
+        SmartspaceVisibility(2),
+        DefaultTransition(1),
+        // When transition between blueprint, we don't need any duration or interpolator but we need
+        // all elements go to correct state
+        NoTransition(0),
+    }
+
+    data class Config(
+        val type: Type,
+        val checkPriority: Boolean = true,
+        val terminatePrevious: Boolean = true,
+    ) {
+        companion object {
+            val DEFAULT = Config(Type.NoTransition)
+        }
+    }
+
     init {
         ordering = ORDERING_TOGETHER
-        if (type == IntraBlueprintTransitionType.DefaultClockStepping)
-            addTransition(clockViewModel.clock?.let { DefaultClockSteppingTransition(it) })
-        addTransition(ClockSizeTransition(type, clockViewModel))
+        when (config.type) {
+            Type.NoTransition -> {}
+            Type.DefaultClockStepping ->
+                addTransition(clockViewModel.clock?.let { DefaultClockSteppingTransition(it) })
+            else -> addTransition(ClockSizeTransition(config, clockViewModel, smartspaceViewModel))
+        }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodBurnInSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodBurnInSection.kt
index 9a1fcc1..282c495 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodBurnInSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodBurnInSection.kt
@@ -22,7 +22,6 @@
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.constraintlayout.widget.ConstraintSet
 import com.android.systemui.Flags.migrateClocksToBlueprint
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.KeyguardSection
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
 import com.android.systemui.res.R
@@ -37,7 +36,7 @@
 ) : KeyguardSection() {
     private lateinit var burnInLayer: AodBurnInLayer
     override fun addViews(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
 
@@ -58,16 +57,14 @@
     }
 
     override fun bindData(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
-        if (migrateClocksToBlueprint()) {
-            clockViewModel.burnInLayer = burnInLayer
-        }
+        clockViewModel.burnInLayer = burnInLayer
     }
 
     override fun applyConstraints(constraintSet: ConstraintSet) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
index ad589df..3d9c04e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/AodNotificationIconsSection.kt
@@ -28,7 +28,6 @@
 import androidx.constraintlayout.widget.ConstraintSet.TOP
 import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.common.ui.ConfigurationState
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.KeyguardSection
 import com.android.systemui.res.R
 import com.android.systemui.statusbar.notification.icon.ui.viewbinder.AlwaysOnDisplayNotificationIconViewStore
@@ -59,7 +58,7 @@
     private lateinit var nic: NotificationIconContainer
 
     override fun addViews(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         nic =
@@ -78,7 +77,7 @@
     }
 
     override fun bindData(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
 
@@ -99,7 +98,7 @@
     }
 
     override fun applyConstraints(constraintSet: ConstraintSet) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         val bottomMargin =
@@ -114,12 +113,9 @@
                 BOTTOM
             }
         constraintSet.apply {
-            if (migrateClocksToBlueprint()) {
-                connect(nicId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, bottomMargin)
-                setGoneMargin(nicId, BOTTOM, bottomMargin)
-            } else {
-                connect(nicId, TOP, R.id.keyguard_status_view, topAlignment, bottomMargin)
-            }
+            connect(nicId, TOP, R.id.smart_space_barrier_bottom, BOTTOM, bottomMargin)
+            setGoneMargin(nicId, BOTTOM, bottomMargin)
+
             connect(
                 nicId,
                 START,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
index 631b342..54a7ca4 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSection.kt
@@ -24,7 +24,7 @@
 import androidx.constraintlayout.widget.ConstraintSet
 import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
 import androidx.constraintlayout.widget.ConstraintSet.END
-import androidx.constraintlayout.widget.ConstraintSet.INVISIBLE
+import androidx.constraintlayout.widget.ConstraintSet.GONE
 import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
 import androidx.constraintlayout.widget.ConstraintSet.START
 import androidx.constraintlayout.widget.ConstraintSet.TOP
@@ -52,11 +52,6 @@
     visibility: Int,
 ) = views.forEach { view -> this.setVisibility(view.id, visibility) }
 
-internal fun ConstraintSet.setAlpha(
-    views: Iterable<View>,
-    alpha: Float,
-) = views.forEach { view -> this.setAlpha(view.id, alpha) }
-
 open class ClockSection
 @Inject
 constructor(
@@ -105,7 +100,7 @@
         // Add constraint between elements in clock and clock container
         return constraintSet.apply {
             setVisibility(getTargetClockFace(clock).views, VISIBLE)
-            setVisibility(getNonTargetClockFace(clock).views, INVISIBLE)
+            setVisibility(getNonTargetClockFace(clock).views, GONE)
             if (!keyguardClockViewModel.useLargeClock) {
                 connect(sharedR.id.bc_smartspace_view, TOP, sharedR.id.date_smartspace_view, BOTTOM)
             }
@@ -150,6 +145,7 @@
             }
         }
     }
+
     open fun applyDefaultConstraints(constraints: ConstraintSet) {
         val guideline =
             if (keyguardClockViewModel.clockShouldBeCentered.value) PARENT_ID
@@ -168,8 +164,8 @@
             largeClockTopMargin += getDimen(ENHANCED_SMARTSPACE_HEIGHT)
 
             connect(R.id.lockscreen_clock_view_large, TOP, PARENT_ID, TOP, largeClockTopMargin)
-            constrainHeight(R.id.lockscreen_clock_view_large, WRAP_CONTENT)
             constrainWidth(R.id.lockscreen_clock_view_large, WRAP_CONTENT)
+            constrainHeight(R.id.lockscreen_clock_view_large, WRAP_CONTENT)
             constrainWidth(R.id.lockscreen_clock_view, WRAP_CONTENT)
             constrainHeight(
                 R.id.lockscreen_clock_view,
@@ -190,11 +186,10 @@
                     context.resources.getDimensionPixelSize(R.dimen.keyguard_clock_top_margin) +
                         Utils.getStatusBarHeaderHeightKeyguard(context)
                 }
-            if (keyguardClockViewModel.useLargeClock) {
-                smallClockTopMargin -=
-                    context.resources.getDimensionPixelSize(customizationR.dimen.small_clock_height)
-            }
-            connect(R.id.lockscreen_clock_view, TOP, PARENT_ID, TOP, smallClockTopMargin)
+
+            create(R.id.small_clock_guideline_top, ConstraintSet.HORIZONTAL_GUIDELINE)
+            setGuidelineBegin(R.id.small_clock_guideline_top, smallClockTopMargin)
+            connect(R.id.lockscreen_clock_view, TOP, R.id.small_clock_guideline_top, BOTTOM)
         }
 
         constrainWeatherClockDateIconsBarrier(constraints)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt
index 75132a5..218af29 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultNotificationStackScrollLayoutSection.kt
@@ -27,7 +27,6 @@
 import com.android.systemui.Flags.centralizedStatusBarDimensRefactor
 import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.res.R
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.shade.LargeScreenHeaderHelper
@@ -71,7 +70,7 @@
         mainDispatcher,
     ) {
     override fun applyConstraints(constraintSet: ConstraintSet) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         constraintSet.apply {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultStatusViewSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultStatusViewSection.kt
index 851a45f..390b39f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultStatusViewSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/DefaultStatusViewSection.kt
@@ -31,8 +31,8 @@
 import androidx.constraintlayout.widget.ConstraintSet.TOP
 import com.android.keyguard.KeyguardStatusView
 import com.android.keyguard.dagger.KeyguardStatusViewComponent
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.keyguard.KeyguardViewConfigurator
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.KeyguardSection
 import com.android.systemui.media.controls.ui.KeyguardMediaController
 import com.android.systemui.res.R
@@ -58,7 +58,7 @@
     private val statusViewId = R.id.keyguard_status_view
 
     override fun addViews(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         // At startup, 2 views with the ID `R.id.keyguard_status_view` will be available.
@@ -83,7 +83,7 @@
     }
 
     override fun bindData(constraintLayout: ConstraintLayout) {
-        if (KeyguardShadeMigrationNssl.isEnabled) {
+        if (migrateClocksToBlueprint()) {
             constraintLayout.findViewById<KeyguardStatusView?>(R.id.keyguard_status_view)?.let {
                 val statusViewComponent =
                     keyguardStatusViewComponentFactory.build(it, context.display)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/KeyguardSliceViewSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/KeyguardSliceViewSection.kt
new file mode 100644
index 0000000..d572c51
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/KeyguardSliceViewSection.kt
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.keyguard.ui.view.layout.sections
+
+import android.view.View
+import android.view.ViewGroup
+import androidx.constraintlayout.widget.Barrier
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.ConstraintSet
+import com.android.systemui.Flags.migrateClocksToBlueprint
+import com.android.systemui.keyguard.shared.model.KeyguardSection
+import com.android.systemui.res.R
+import com.android.systemui.statusbar.lockscreen.LockscreenSmartspaceController
+import javax.inject.Inject
+
+class KeyguardSliceViewSection
+@Inject
+constructor(
+    val smartspaceController: LockscreenSmartspaceController,
+) : KeyguardSection() {
+    override fun addViews(constraintLayout: ConstraintLayout) {
+        if (!migrateClocksToBlueprint()) return
+        if (smartspaceController.isEnabled()) return
+
+        constraintLayout.findViewById<View?>(R.id.keyguard_slice_view)?.let {
+            (it.parent as ViewGroup).removeView(it)
+            constraintLayout.addView(it)
+        }
+    }
+
+    override fun bindData(constraintLayout: ConstraintLayout) {}
+
+    override fun applyConstraints(constraintSet: ConstraintSet) {
+        if (!migrateClocksToBlueprint()) return
+        if (smartspaceController.isEnabled()) return
+
+        constraintSet.apply {
+            connect(
+                R.id.keyguard_slice_view,
+                ConstraintSet.START,
+                ConstraintSet.PARENT_ID,
+                ConstraintSet.START
+            )
+            connect(
+                R.id.keyguard_slice_view,
+                ConstraintSet.END,
+                ConstraintSet.PARENT_ID,
+                ConstraintSet.END
+            )
+            constrainHeight(R.id.keyguard_slice_view, ConstraintSet.WRAP_CONTENT)
+
+            connect(
+                R.id.keyguard_slice_view,
+                ConstraintSet.TOP,
+                R.id.lockscreen_clock_view,
+                ConstraintSet.BOTTOM
+            )
+
+            createBarrier(
+                R.id.smart_space_barrier_bottom,
+                Barrier.BOTTOM,
+                0,
+                *intArrayOf(R.id.keyguard_slice_view)
+            )
+        }
+    }
+
+    override fun removeViews(constraintLayout: ConstraintLayout) {
+        if (!migrateClocksToBlueprint()) return
+        if (smartspaceController.isEnabled()) return
+
+        constraintLayout.removeView(R.id.keyguard_slice_view)
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
index 52d94a0..d0f57c7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/NotificationStackScrollLayoutSection.kt
@@ -25,8 +25,8 @@
 import androidx.constraintlayout.widget.ConstraintSet
 import androidx.constraintlayout.widget.ConstraintSet.BOTTOM
 import androidx.constraintlayout.widget.ConstraintSet.TOP
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.KeyguardSection
 import com.android.systemui.res.R
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
@@ -83,7 +83,7 @@
     }
 
     override fun addViews(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         // This moves the existing NSSL view to a different parent, as the controller is a
@@ -99,7 +99,7 @@
     }
 
     override fun bindData(constraintLayout: ConstraintLayout) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
index 2f99719..b0f7a25 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSection.kt
@@ -53,14 +53,15 @@
     private var dateView: View? = null
 
     private var smartspaceVisibilityListener: OnGlobalLayoutListener? = null
+    private var pastVisibility: Int = -1
 
     override fun addViews(constraintLayout: ConstraintLayout) {
-        if (!migrateClocksToBlueprint()) {
-            return
-        }
+        if (!migrateClocksToBlueprint()) return
+        if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
         smartspaceView = smartspaceController.buildAndConnectView(constraintLayout)
         weatherView = smartspaceController.buildAndConnectWeatherView(constraintLayout)
         dateView = smartspaceController.buildAndConnectDateView(constraintLayout)
+        pastVisibility = smartspaceView?.visibility ?: View.GONE
         if (keyguardSmartspaceViewModel.isSmartspaceEnabled) {
             constraintLayout.addView(smartspaceView)
             if (keyguardSmartspaceViewModel.isDateWeatherDecoupled) {
@@ -69,26 +70,21 @@
             }
         }
         keyguardUnlockAnimationController.lockscreenSmartspace = smartspaceView
-        smartspaceVisibilityListener =
-            object : OnGlobalLayoutListener {
-                var pastVisibility = GONE
-                override fun onGlobalLayout() {
-                    smartspaceView?.let {
-                        val newVisibility = it.visibility
-                        if (pastVisibility != newVisibility) {
-                            keyguardSmartspaceInteractor.setBcSmartspaceVisibility(newVisibility)
-                            pastVisibility = newVisibility
-                        }
-                    }
+        smartspaceVisibilityListener = OnGlobalLayoutListener {
+            smartspaceView?.let {
+                val newVisibility = it.visibility
+                if (pastVisibility != newVisibility) {
+                    keyguardSmartspaceInteractor.setBcSmartspaceVisibility(newVisibility)
+                    pastVisibility = newVisibility
                 }
             }
+        }
         smartspaceView?.viewTreeObserver?.addOnGlobalLayoutListener(smartspaceVisibilityListener)
     }
 
     override fun bindData(constraintLayout: ConstraintLayout) {
-        if (!migrateClocksToBlueprint()) {
-            return
-        }
+        if (!migrateClocksToBlueprint()) return
+        if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
         KeyguardSmartspaceViewBinder.bind(
             constraintLayout,
             keyguardClockViewModel,
@@ -98,9 +94,8 @@
     }
 
     override fun applyConstraints(constraintSet: ConstraintSet) {
-        if (!migrateClocksToBlueprint()) {
-            return
-        }
+        if (!migrateClocksToBlueprint()) return
+        if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
         val horizontalPaddingStart =
             context.resources.getDimensionPixelSize(R.dimen.below_clock_padding_start) +
                 context.resources.getDimensionPixelSize(R.dimen.status_view_margin_horizontal)
@@ -196,9 +191,8 @@
     }
 
     override fun removeViews(constraintLayout: ConstraintLayout) {
-        if (!migrateClocksToBlueprint()) {
-            return
-        }
+        if (!migrateClocksToBlueprint()) return
+        if (!keyguardSmartspaceViewModel.isSmartspaceEnabled) return
         listOf(smartspaceView, dateView, weatherView).forEach {
             it?.let {
                 if (it.parent == constraintLayout) {
@@ -211,6 +205,9 @@
     }
 
     private fun updateVisibility(constraintSet: ConstraintSet) {
+        // This may update the visibility of the smartspace views
+        smartspaceController.requestSmartspaceUpdate()
+
         constraintSet.apply {
             setVisibility(
                 sharedR.id.weather_smartspace_view,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
index 3e35ae4..2545302 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/SplitShadeNotificationStackScrollLayoutSection.kt
@@ -23,8 +23,8 @@
 import androidx.constraintlayout.widget.ConstraintSet.PARENT_ID
 import androidx.constraintlayout.widget.ConstraintSet.START
 import androidx.constraintlayout.widget.ConstraintSet.TOP
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 import com.android.systemui.res.R
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
@@ -67,7 +67,7 @@
         mainDispatcher,
     ) {
     override fun applyConstraints(constraintSet: ConstraintSet) {
-        if (!KeyguardShadeMigrationNssl.isEnabled) {
+        if (!migrateClocksToBlueprint()) {
             return
         }
         constraintSet.apply {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
index 99565b1..ab0d489 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/ClockSizeTransition.kt
@@ -17,175 +17,312 @@
 package com.android.systemui.keyguard.ui.view.layout.sections.transitions
 
 import android.animation.Animator
-import android.animation.ObjectAnimator
-import android.transition.ChangeBounds
+import android.animation.AnimatorListenerAdapter
+import android.animation.ValueAnimator
+import android.graphics.Rect
+import android.transition.Transition
 import android.transition.TransitionSet
 import android.transition.TransitionValues
-import android.transition.Visibility
+import android.util.Log
 import android.view.View
 import android.view.ViewGroup
+import android.view.ViewTreeObserver.OnPreDrawListener
 import com.android.app.animation.Interpolators
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
 import com.android.systemui.keyguard.ui.viewmodel.KeyguardClockViewModel
+import com.android.systemui.keyguard.ui.viewmodel.KeyguardSmartspaceViewModel
 import com.android.systemui.res.R
 import com.android.systemui.shared.R as sharedR
+import kotlin.math.abs
 
-const val CLOCK_OUT_MILLIS = 133L
-const val CLOCK_IN_MILLIS = 167L
-val CLOCK_IN_INTERPOLATOR = Interpolators.LINEAR_OUT_SLOW_IN
-const val CLOCK_IN_START_DELAY_MILLIS = 133L
-val CLOCK_OUT_INTERPOLATOR = Interpolators.LINEAR
+internal fun View.setRect(rect: Rect) =
+    this.setLeftTopRightBottom(rect.left, rect.top, rect.right, rect.bottom)
 
 class ClockSizeTransition(
-    val type: IntraBlueprintTransitionType,
-    clockViewModel: KeyguardClockViewModel
+    config: IntraBlueprintTransition.Config,
+    clockViewModel: KeyguardClockViewModel,
+    smartspaceViewModel: KeyguardSmartspaceViewModel,
 ) : TransitionSet() {
     init {
         ordering = ORDERING_TOGETHER
-        addTransition(ClockOutTransition(clockViewModel, type))
-        addTransition(ClockInTransition(clockViewModel, type))
-        addTransition(SmartspaceChangeBounds(clockViewModel, type))
-        addTransition(ClockInChangeBounds(clockViewModel, type))
-        addTransition(ClockOutChangeBounds(clockViewModel, type))
+        if (config.type != Type.SmartspaceVisibility) {
+            addTransition(ClockFaceOutTransition(config, clockViewModel, smartspaceViewModel))
+            addTransition(ClockFaceInTransition(config, clockViewModel, smartspaceViewModel))
+        }
+        addTransition(SmartspaceMoveTransition(config, clockViewModel))
     }
 
-    class ClockInTransition(viewModel: KeyguardClockViewModel, type: IntraBlueprintTransitionType) :
-        Visibility() {
-        init {
-            mode = MODE_IN
-            if (type != IntraBlueprintTransitionType.NoTransition) {
-                duration = CLOCK_IN_MILLIS
-                startDelay = CLOCK_IN_START_DELAY_MILLIS
-                interpolator = Interpolators.LINEAR_OUT_SLOW_IN
-            } else {
-                duration = 0
-                startDelay = 0
-            }
+    open class VisibilityBoundsTransition() : Transition() {
+        var captureSmartspace: Boolean = false
 
-            addTarget(sharedR.id.bc_smartspace_view)
-            addTarget(sharedR.id.date_smartspace_view)
-            addTarget(sharedR.id.weather_smartspace_view)
-            if (viewModel.useLargeClock) {
-                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
-            } else {
-                addTarget(R.id.lockscreen_clock_view)
-            }
+        override fun captureEndValues(transition: TransitionValues) = captureValues(transition)
+        override fun captureStartValues(transition: TransitionValues) = captureValues(transition)
+        override fun getTransitionProperties(): Array<String> = TRANSITION_PROPERTIES
+        open fun mutateBounds(
+            view: View,
+            fromVis: Int,
+            toVis: Int,
+            fromBounds: Rect,
+            toBounds: Rect,
+            fromSSBounds: Rect?,
+            toSSBounds: Rect?
+        ) {}
+
+        private fun captureValues(transition: TransitionValues) {
+            val view = transition.view
+            transition.values[PROP_VISIBILITY] = view.visibility
+            transition.values[PROP_ALPHA] = view.alpha
+            transition.values[PROP_BOUNDS] = Rect(view.left, view.top, view.right, view.bottom)
+
+            if (!captureSmartspace) return
+            val ss = (view.parent as View).findViewById<View>(sharedR.id.bc_smartspace_view)
+            if (ss == null) return
+            transition.values[SMARTSPACE_BOUNDS] = Rect(ss.left, ss.top, ss.right, ss.bottom)
         }
 
-        override fun onAppear(
-            sceneRoot: ViewGroup?,
-            view: View,
+        override fun createAnimator(
+            sceenRoot: ViewGroup,
             startValues: TransitionValues?,
             endValues: TransitionValues?
-        ): Animator {
-            return ObjectAnimator.ofFloat(view, "alpha", 1f).also {
-                it.duration = duration
-                it.startDelay = startDelay
-                it.interpolator = interpolator
-                it.addUpdateListener { view.alpha = it.animatedValue as Float }
-                it.start()
-            }
-        }
-    }
+        ): Animator? {
+            if (startValues == null || endValues == null) return null
 
-    class ClockOutTransition(
-        viewModel: KeyguardClockViewModel,
-        type: IntraBlueprintTransitionType
-    ) : Visibility() {
-        init {
-            mode = MODE_OUT
-            if (type != IntraBlueprintTransitionType.NoTransition) {
-                duration = CLOCK_OUT_MILLIS
-                interpolator = CLOCK_OUT_INTERPOLATOR
-            } else {
-                duration = 0
+            val fromView = startValues.view
+            var fromVis = startValues.values[PROP_VISIBILITY] as Int
+            var fromIsVis = fromVis == View.VISIBLE
+            var fromAlpha = startValues.values[PROP_ALPHA] as Float
+            val fromBounds = startValues.values[PROP_BOUNDS] as Rect
+            val fromSSBounds =
+                if (captureSmartspace) startValues.values[SMARTSPACE_BOUNDS] as Rect else null
+
+            val toView = endValues.view
+            val toVis = endValues.values[PROP_VISIBILITY] as Int
+            val toBounds = endValues.values[PROP_BOUNDS] as Rect
+            val toSSBounds =
+                if (captureSmartspace) endValues.values[SMARTSPACE_BOUNDS] as Rect else null
+            val toIsVis = toVis == View.VISIBLE
+            val toAlpha = if (toIsVis) 1f else 0f
+
+            // Align starting visibility and alpha
+            if (!fromIsVis) fromAlpha = 0f
+            else if (fromAlpha <= 0f) {
+                fromIsVis = false
+                fromVis = View.INVISIBLE
             }
 
-            addTarget(sharedR.id.bc_smartspace_view)
-            addTarget(sharedR.id.date_smartspace_view)
-            addTarget(sharedR.id.weather_smartspace_view)
-            if (viewModel.useLargeClock) {
-                addTarget(R.id.lockscreen_clock_view)
-            } else {
-                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
-            }
-        }
-
-        override fun onDisappear(
-            sceneRoot: ViewGroup?,
-            view: View,
-            startValues: TransitionValues?,
-            endValues: TransitionValues?
-        ): Animator {
-            return ObjectAnimator.ofFloat(view, "alpha", 0f).also {
-                it.duration = duration
-                it.interpolator = interpolator
-                it.addUpdateListener { view.alpha = it.animatedValue as Float }
-                it.start()
-            }
-        }
-    }
-
-    class ClockInChangeBounds(
-        viewModel: KeyguardClockViewModel,
-        type: IntraBlueprintTransitionType
-    ) : ChangeBounds() {
-        init {
-            if (type != IntraBlueprintTransitionType.NoTransition) {
-                duration = CLOCK_IN_MILLIS
-                startDelay = CLOCK_IN_START_DELAY_MILLIS
-                interpolator = CLOCK_IN_INTERPOLATOR
-            } else {
-                duration = 0
-                startDelay = 0
+            mutateBounds(toView, fromVis, toVis, fromBounds, toBounds, fromSSBounds, toSSBounds)
+            if (fromIsVis == toIsVis && fromBounds.equals(toBounds)) {
+                if (DEBUG) {
+                    Log.w(
+                        TAG,
+                        "Skipping no-op transition: $toView; " +
+                            "vis: $fromVis -> $toVis; " +
+                            "alpha: $fromAlpha -> $toAlpha; " +
+                            "bounds: $fromBounds -> $toBounds; "
+                    )
+                }
+                return null
             }
 
-            if (viewModel.useLargeClock) {
-                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
-            } else {
-                addTarget(R.id.lockscreen_clock_view)
-            }
-        }
-    }
+            val sendToBack = fromIsVis && !toIsVis
+            fun lerp(start: Int, end: Int, fract: Float): Int =
+                (start * (1f - fract) + end * fract).toInt()
+            fun computeBounds(fract: Float): Rect =
+                Rect(
+                    lerp(fromBounds.left, toBounds.left, fract),
+                    lerp(fromBounds.top, toBounds.top, fract),
+                    lerp(fromBounds.right, toBounds.right, fract),
+                    lerp(fromBounds.bottom, toBounds.bottom, fract)
+                )
 
-    class ClockOutChangeBounds(
-        viewModel: KeyguardClockViewModel,
-        type: IntraBlueprintTransitionType
-    ) : ChangeBounds() {
-        init {
-            if (type != IntraBlueprintTransitionType.NoTransition) {
-                duration = CLOCK_OUT_MILLIS
-                interpolator = CLOCK_OUT_INTERPOLATOR
-            } else {
-                duration = 0
+            fun assignAnimValues(src: String, alpha: Float, fract: Float, vis: Int? = null) {
+                val bounds = computeBounds(fract)
+                if (DEBUG) Log.i(TAG, "$src: $toView; alpha=$alpha; vis=$vis; bounds=$bounds;")
+                toView.setVisibility(vis ?: View.VISIBLE)
+                toView.setAlpha(alpha)
+                toView.setRect(bounds)
             }
-            if (viewModel.useLargeClock) {
-                addTarget(R.id.lockscreen_clock_view)
-            } else {
-                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
-            }
-        }
-    }
 
-    class SmartspaceChangeBounds(
-        viewModel: KeyguardClockViewModel,
-        val type: IntraBlueprintTransitionType = IntraBlueprintTransitionType.DefaultTransition
-    ) : ChangeBounds() {
-        init {
-            if (type != IntraBlueprintTransitionType.NoTransition) {
-                duration =
-                    if (viewModel.useLargeClock) {
-                        STATUS_AREA_MOVE_UP_MILLIS
-                    } else {
-                        STATUS_AREA_MOVE_DOWN_MILLIS
+            if (DEBUG) {
+                Log.i(
+                    TAG,
+                    "transitioning: $toView; " +
+                        "vis: $fromVis -> $toVis; " +
+                        "alpha: $fromAlpha -> $toAlpha; " +
+                        "bounds: $fromBounds -> $toBounds; "
+                )
+            }
+
+            return ValueAnimator.ofFloat(fromAlpha, toAlpha).also { anim ->
+                // We enforce the animation parameters on the target view every frame using a
+                // predraw listener. This is suboptimal but prevents issues with layout passes
+                // overwriting the animation for individual frames.
+                val predrawCallback = OnPreDrawListener {
+                    assignAnimValues("predraw", anim.animatedValue as Float, anim.animatedFraction)
+                    return@OnPreDrawListener true
+                }
+
+                anim.duration = duration
+                anim.startDelay = startDelay
+                anim.interpolator = interpolator
+                anim.addListener(
+                    object : AnimatorListenerAdapter() {
+                        override fun onAnimationStart(anim: Animator) {
+                            assignAnimValues("start", fromAlpha, 0f)
+                        }
+
+                        override fun onAnimationEnd(anim: Animator) {
+                            assignAnimValues("end", toAlpha, 1f, toVis)
+                            if (sendToBack) toView.translationZ = 0f
+                            toView.viewTreeObserver.removeOnPreDrawListener(predrawCallback)
+                        }
                     }
-                interpolator = Interpolators.EMPHASIZED
-            } else {
-                duration = 0
+                )
+                toView.viewTreeObserver.addOnPreDrawListener(predrawCallback)
             }
+        }
+
+        companion object {
+            private const val PROP_VISIBILITY = "ClockSizeTransition:Visibility"
+            private const val PROP_ALPHA = "ClockSizeTransition:Alpha"
+            private const val PROP_BOUNDS = "ClockSizeTransition:Bounds"
+            private const val SMARTSPACE_BOUNDS = "ClockSizeTransition:SSBounds"
+            private val TRANSITION_PROPERTIES =
+                arrayOf(PROP_VISIBILITY, PROP_ALPHA, PROP_BOUNDS, SMARTSPACE_BOUNDS)
+
+            private val DEBUG = true
+            private val TAG = ClockFaceInTransition::class.simpleName!!
+        }
+    }
+
+    class ClockFaceInTransition(
+        config: IntraBlueprintTransition.Config,
+        val viewModel: KeyguardClockViewModel,
+        val smartspaceViewModel: KeyguardSmartspaceViewModel,
+    ) : VisibilityBoundsTransition() {
+        init {
+            duration = CLOCK_IN_MILLIS
+            startDelay = CLOCK_IN_START_DELAY_MILLIS
+            interpolator = CLOCK_IN_INTERPOLATOR
+            captureSmartspace = !viewModel.useLargeClock && smartspaceViewModel.isSmartspaceEnabled
+
+            if (viewModel.useLargeClock) {
+                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
+            } else {
+                addTarget(R.id.lockscreen_clock_view)
+            }
+        }
+
+        override fun mutateBounds(
+            view: View,
+            fromVis: Int,
+            toVis: Int,
+            fromBounds: Rect,
+            toBounds: Rect,
+            fromSSBounds: Rect?,
+            toSSBounds: Rect?
+        ) {
+            fromBounds.left = toBounds.left
+            fromBounds.right = toBounds.right
+            if (viewModel.useLargeClock) {
+                // Large clock shouldn't move
+                fromBounds.top = toBounds.top
+                fromBounds.bottom = toBounds.bottom
+            } else if (toSSBounds != null && fromSSBounds != null) {
+                // Instead of moving the small clock the full distance, we compute the distance
+                // smartspace will move. We then scale this to match the duration of this animation
+                // so that the small clock moves at the same speed as smartspace.
+                val ssTranslation =
+                    abs((toSSBounds.top - fromSSBounds.top) * SMALL_CLOCK_IN_MOVE_SCALE).toInt()
+                fromBounds.top = toBounds.top - ssTranslation
+                fromBounds.bottom = toBounds.bottom - ssTranslation
+            } else {
+                Log.e(TAG, "mutateBounds: smallClock received no smartspace bounds")
+            }
+        }
+
+        companion object {
+            const val CLOCK_IN_MILLIS = 167L
+            const val CLOCK_IN_START_DELAY_MILLIS = 133L
+            val CLOCK_IN_INTERPOLATOR = Interpolators.LINEAR_OUT_SLOW_IN
+            const val SMALL_CLOCK_IN_MOVE_SCALE =
+                CLOCK_IN_MILLIS / SmartspaceMoveTransition.STATUS_AREA_MOVE_DOWN_MILLIS.toFloat()
+            private val TAG = ClockFaceInTransition::class.simpleName!!
+        }
+    }
+
+    class ClockFaceOutTransition(
+        config: IntraBlueprintTransition.Config,
+        val viewModel: KeyguardClockViewModel,
+        val smartspaceViewModel: KeyguardSmartspaceViewModel,
+    ) : VisibilityBoundsTransition() {
+        init {
+            duration = CLOCK_OUT_MILLIS
+            interpolator = CLOCK_OUT_INTERPOLATOR
+            captureSmartspace = viewModel.useLargeClock && smartspaceViewModel.isSmartspaceEnabled
+
+            if (viewModel.useLargeClock) {
+                addTarget(R.id.lockscreen_clock_view)
+            } else {
+                viewModel.clock?.let { it.largeClock.layout.views.forEach { addTarget(it) } }
+            }
+        }
+
+        override fun mutateBounds(
+            view: View,
+            fromVis: Int,
+            toVis: Int,
+            fromBounds: Rect,
+            toBounds: Rect,
+            fromSSBounds: Rect?,
+            toSSBounds: Rect?
+        ) {
+            toBounds.left = fromBounds.left
+            toBounds.right = fromBounds.right
+            if (!viewModel.useLargeClock) {
+                // Large clock shouldn't move
+                toBounds.top = fromBounds.top
+                toBounds.bottom = fromBounds.bottom
+            } else if (toSSBounds != null && fromSSBounds != null) {
+                // Instead of moving the small clock the full distance, we compute the distance
+                // smartspace will move. We then scale this to match the duration of this animation
+                // so that the small clock moves at the same speed as smartspace.
+                val ssTranslation =
+                    abs((toSSBounds.top - fromSSBounds.top) * SMALL_CLOCK_OUT_MOVE_SCALE).toInt()
+                toBounds.top = fromBounds.top - ssTranslation
+                toBounds.bottom = fromBounds.bottom - ssTranslation
+            } else {
+                Log.w(TAG, "mutateBounds: smallClock received no smartspace bounds")
+            }
+        }
+
+        companion object {
+            const val CLOCK_OUT_MILLIS = 133L
+            val CLOCK_OUT_INTERPOLATOR = Interpolators.LINEAR
+            const val SMALL_CLOCK_OUT_MOVE_SCALE =
+                CLOCK_OUT_MILLIS / SmartspaceMoveTransition.STATUS_AREA_MOVE_UP_MILLIS.toFloat()
+            private val TAG = ClockFaceOutTransition::class.simpleName!!
+        }
+    }
+
+    // TODO: Might need a mechanism to update this one while in-progress
+    class SmartspaceMoveTransition(
+        val config: IntraBlueprintTransition.Config,
+        viewModel: KeyguardClockViewModel,
+    ) : VisibilityBoundsTransition() {
+        init {
+            duration =
+                if (viewModel.useLargeClock) STATUS_AREA_MOVE_UP_MILLIS
+                else STATUS_AREA_MOVE_DOWN_MILLIS
+            interpolator = Interpolators.EMPHASIZED
             addTarget(sharedR.id.date_smartspace_view)
             addTarget(sharedR.id.weather_smartspace_view)
             addTarget(sharedR.id.bc_smartspace_view)
+
+            // Notifications normally and media on split shade needs to be moved
+            addTarget(R.id.aod_notification_icon_container)
+            addTarget(R.id.status_view_media_container)
         }
 
         companion object {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt
index c35dad7..60ab40c 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/view/layout/sections/transitions/DefaultClockSteppingTransition.kt
@@ -24,12 +24,15 @@
 import com.android.app.animation.Interpolators
 import com.android.systemui.plugins.clocks.ClockController
 
-class DefaultClockSteppingTransition(private val clock: ClockController) : Transition() {
+class DefaultClockSteppingTransition(
+    private val clock: ClockController,
+) : Transition() {
     init {
         interpolator = Interpolators.LINEAR
         duration = KEYGUARD_STATUS_VIEW_CUSTOM_CLOCK_MOVE_DURATION_MS
         addTarget(clock.largeClock.view)
     }
+
     private fun captureValues(transitionValues: TransitionValues) {
         transitionValues.values[PROP_BOUNDS_LEFT] = transitionValues.view.left
         val locationInWindowTmp = IntArray(2)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
index 6846886..065c20a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerDependencies.kt
@@ -36,4 +36,5 @@
     val udfpsIconViewModel: AlternateBouncerUdfpsIconViewModel,
     val udfpsAccessibilityOverlayViewModel:
         Lazy<AlternateBouncerUdfpsAccessibilityOverlayViewModel>,
+    val messageAreaViewModel: AlternateBouncerMessageAreaViewModel,
 )
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModel.kt
new file mode 100644
index 0000000..49c64bd
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AlternateBouncerMessageAreaViewModel.kt
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 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 com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
+import com.android.systemui.deviceentry.domain.interactor.BiometricMessageInteractor
+import com.android.systemui.deviceentry.shared.model.BiometricMessage
+import com.android.systemui.deviceentry.shared.model.FaceMessage
+import com.android.systemui.deviceentry.shared.model.FaceTimeoutMessage
+import com.android.systemui.deviceentry.shared.model.FingerprintLockoutMessage
+import com.android.systemui.deviceentry.shared.model.FingerprintMessage
+import javax.inject.Inject
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.filterNot
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.merge
+
+/** View model for the alternate bouncer message area. */
+@ExperimentalCoroutinesApi
+class AlternateBouncerMessageAreaViewModel
+@Inject
+constructor(
+    biometricMessageInteractor: BiometricMessageInteractor,
+    alternateBouncerInteractor: AlternateBouncerInteractor,
+) {
+
+    private val faceHelp: Flow<FaceMessage> =
+        biometricMessageInteractor.faceMessage.filterNot { faceMessage ->
+            faceMessage !is FaceTimeoutMessage
+        }
+    private val fingerprintMessages: Flow<FingerprintMessage> =
+        biometricMessageInteractor.fingerprintMessage.filterNot { fingerprintMessage ->
+            // On lockout, the device will show the bouncer. Let's not show the message
+            // before the transition or else it'll look flickery.
+            fingerprintMessage is FingerprintLockoutMessage
+        }
+
+    val message: Flow<BiometricMessage?> =
+        alternateBouncerInteractor.isVisible.flatMapLatest { isVisible ->
+            if (isVisible) {
+                merge(
+                    faceHelp,
+                    fingerprintMessages,
+                )
+            } else {
+                flowOf(null)
+            }
+        }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt
index d4ea728..f208e85 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModel.kt
@@ -19,15 +19,15 @@
 package com.android.systemui.keyguard.ui.viewmodel
 
 import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
+import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
+import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.combineTransform
 import kotlinx.coroutines.flow.distinctUntilChanged
-import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.onStart
 
 /** Models UI state for the alpha of the AOD (always-on display). */
@@ -35,27 +35,28 @@
 class AodAlphaViewModel
 @Inject
 constructor(
-    keyguardInteractor: KeyguardInteractor,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
-    occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
+    goneToAodTransitionViewModel: GoneToAodTransitionViewModel,
+    goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
 ) {
 
     /** The alpha level for the entire lockscreen while in AOD. */
     val alpha: Flow<Float> =
-        combine(
-                keyguardTransitionInteractor.transitionValue(KeyguardState.GONE).onStart {
-                    emit(0f)
-                },
-                merge(
-                    keyguardInteractor.keyguardAlpha,
-                    occludedToLockscreenTransitionViewModel.lockscreenAlpha,
-                )
-            ) { transitionToGone, alpha ->
-                if (transitionToGone == 1f) {
-                    // Ensures content is not visible when in GONE state
-                    0f
-                } else {
-                    alpha
+        combineTransform(
+                keyguardTransitionInteractor.transitions,
+                goneToAodTransitionViewModel.enterFromTopAnimationAlpha.onStart { emit(0f) },
+                goneToDozingTransitionViewModel.lockscreenAlpha.onStart { emit(0f) },
+            ) { step, goneToAodAlpha, goneToDozingAlpha ->
+                if (step.to == GONE) {
+                    // When transitioning to GONE, only emit a value when complete as other
+                    // transitions may be controlling the alpha fade
+                    if (step.value == 1f) {
+                        emit(0f)
+                    }
+                } else if (step.from == GONE && step.to == AOD) {
+                    emit(goneToAodAlpha)
+                } else if (step.from == GONE && step.to == DOZING) {
+                    emit(goneToDozingAlpha)
                 }
             }
             .distinctUntilChanged()
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
index 8110de2..6fcbf48 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodBurnInViewModel.kt
@@ -31,6 +31,7 @@
 import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER
 import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
 import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
+import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
 import com.android.systemui.keyguard.shared.model.TransitionState
 import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
 import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
@@ -66,9 +67,6 @@
     private val occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
     private val keyguardClockViewModel: KeyguardClockViewModel,
 ) {
-    /** Alpha for elements that appear and move during the animation -> AOD */
-    val alpha: Flow<Float> = goneToAodTransitionViewModel.enterFromTopAnimationAlpha
-
     /** Horizontal translation for elements that need to apply anti-burn-in tactics. */
     fun translationX(
         params: BurnInParameters,
@@ -131,6 +129,9 @@
         return combine(
             merge(
                     keyguardTransitionInteractor.transition(GONE, AOD).map { it.value },
+                    keyguardTransitionInteractor.transition(AOD, PRIMARY_BOUNCER).map {
+                        1f - it.value
+                    },
                     keyguardTransitionInteractor.transition(ALTERNATE_BOUNCER, AOD).map {
                         it.value
                     },
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt
index 6d1d3cb..9fa1423 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModel.kt
@@ -29,8 +29,6 @@
 import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.emptyFlow
-import kotlinx.coroutines.flow.flatMapLatest
 
 /**
  * Breaks down AOD->LOCKSCREEN transition into discrete steps for corresponding views to consume.
@@ -59,21 +57,32 @@
         var startValue = 0f
         return transitionAnimation.sharedFlowWithState(
             duration = 500.milliseconds,
-            onStart = {
-                startValue = currentTranslationY() ?: 0f
-                startValue
-            },
+            onStart = { startValue = currentTranslationY() ?: 0f },
             onStep = { MathUtils.lerp(startValue, 0f, FAST_OUT_SLOW_IN.getInterpolation(it)) },
         )
     }
 
     /** Ensure alpha is set to be visible */
-    val lockscreenAlpha: Flow<Float> =
-        transitionAnimation.sharedFlow(
+    fun lockscreenAlpha(viewState: ViewStateAccessor): Flow<Float> {
+        var startAlpha: Float? = null
+        return transitionAnimation.sharedFlow(
             duration = 500.milliseconds,
-            onStart = { 1f },
-            onStep = { 1f },
+            onStep = {
+                if (startAlpha == null) {
+                    startAlpha = viewState.alpha()
+                }
+                MathUtils.lerp(startAlpha!!, 1f, it)
+            },
+            onFinish = {
+                startAlpha = null
+                1f
+            },
+            onCancel = {
+                startAlpha = null
+                1f
+            },
         )
+    }
 
     val shortcutsAlpha: Flow<Float> =
         transitionAnimation.sharedFlow(
@@ -84,19 +93,15 @@
         )
 
     val deviceEntryBackgroundViewAlpha: Flow<Float> =
-        deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps ->
-            if (isUdfps) {
-                // fade in
-                transitionAnimation.sharedFlow(
-                    duration = 250.milliseconds,
-                    onStep = { it },
-                    onFinish = { 1f },
-                )
-            } else {
-                // background view isn't visible, so return an empty flow
-                emptyFlow()
-            }
-        }
+        transitionAnimation.sharedFlow(
+            duration = 250.milliseconds,
+            onStep = { it },
+            onFinish = { 1f },
+        )
 
-    override val deviceEntryParentViewAlpha: Flow<Float> = lockscreenAlpha
+    override val deviceEntryParentViewAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            duration = 500.milliseconds,
+            onStep = { 1f },
+        )
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
index be9ae1d..302ba72 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryBackgroundViewModel.kt
@@ -23,6 +23,8 @@
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.onStart
@@ -33,6 +35,7 @@
 @Inject
 constructor(
     val context: Context,
+    val deviceEntryIconViewModel: DeviceEntryIconViewModel,
     configurationInteractor: ConfigurationInteractor,
     lockscreenToAodTransitionViewModel: LockscreenToAodTransitionViewModel,
     aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
@@ -42,30 +45,47 @@
     occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
     dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
     alternateBouncerToAodTransitionViewModel: AlternateBouncerToAodTransitionViewModel,
+    goneToLockscreenTransitionViewModel: GoneToLockscreenTransitionViewModel,
 ) {
     val color: Flow<Int> =
-        configurationInteractor.onAnyConfigurationChange
-            .map {
-                Utils.getColorAttrDefaultColor(context, com.android.internal.R.attr.colorSurface)
+        deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground ->
+            if (useBackground) {
+                configurationInteractor.onAnyConfigurationChange
+                    .map {
+                        Utils.getColorAttrDefaultColor(
+                            context,
+                            com.android.internal.R.attr.colorSurface
+                        )
+                    }
+                    .onStart {
+                        emit(
+                            Utils.getColorAttrDefaultColor(
+                                context,
+                                com.android.internal.R.attr.colorSurface
+                            )
+                        )
+                    }
+            } else {
+                flowOf(0)
             }
-            .onStart {
-                emit(
-                    Utils.getColorAttrDefaultColor(
-                        context,
-                        com.android.internal.R.attr.colorSurface
-                    )
-                )
-            }
+        }
     val alpha: Flow<Float> =
-        setOf(
-                lockscreenToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                aodToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                goneToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                primaryBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                occludedToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                occludedToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                dreamingToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
-                alternateBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
-            )
-            .merge()
+        deviceEntryIconViewModel.useBackgroundProtection.flatMapLatest { useBackground ->
+            if (useBackground) {
+                setOf(
+                        lockscreenToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        aodToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        goneToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        primaryBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        occludedToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        occludedToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        dreamingToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        alternateBouncerToAodTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                        goneToLockscreenTransitionViewModel.deviceEntryBackgroundViewAlpha,
+                    )
+                    .merge()
+            } else {
+                flowOf(0f)
+            }
+        }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
index a3d5453..c9cf0c3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DeviceEntryIconViewModel.kt
@@ -34,9 +34,11 @@
 import dagger.Lazy
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flow
 import kotlinx.coroutines.flow.flowOf
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.merge
@@ -175,19 +177,33 @@
                 flowOf(BurnInOffsets(x = 0, y = 0, progress = 0f))
             }
         }
+
+    private val isUnlocked: Flow<Boolean> =
+        deviceEntryInteractor.isUnlocked.flatMapLatest { isUnlocked ->
+            if (!isUnlocked) {
+                flowOf(false)
+            } else {
+                flow {
+                    // delay in case device ends up transitioning away from the lock screen;
+                    // we don't want to animate to the unlocked icon and just let the
+                    // icon fade with the transition to GONE
+                    delay(UNLOCKED_DELAY_MS)
+                    emit(true)
+                }
+            }
+        }
+
     val iconType: Flow<DeviceEntryIconView.IconType> =
         combine(
             deviceEntryUdfpsInteractor.isListeningForUdfps,
-            deviceEntryInteractor.isUnlocked,
+            keyguardInteractor.isKeyguardDismissible,
         ) { isListeningForUdfps, isUnlocked ->
-            if (isUnlocked) {
+            if (isListeningForUdfps) {
+                DeviceEntryIconView.IconType.FINGERPRINT
+            } else if (isUnlocked) {
                 DeviceEntryIconView.IconType.UNLOCK
             } else {
-                if (isListeningForUdfps) {
-                    DeviceEntryIconView.IconType.FINGERPRINT
-                } else {
-                    DeviceEntryIconView.IconType.LOCK
-                }
+                DeviceEntryIconView.IconType.LOCK
             }
         }
     val isLongPressEnabled: Flow<Boolean> =
@@ -229,6 +245,10 @@
                 DeviceEntryIconView.AccessibilityHintType.NONE
         }
     }
+
+    companion object {
+        const val UNLOCKED_DELAY_MS = 50L
+    }
 }
 
 data class BurnInOffsets(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModel.kt
index e4610c1..f81941b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DozingToLockscreenTransitionViewModel.kt
@@ -50,6 +50,8 @@
             onCancel = { 0f },
         )
 
+    val lockscreenAlpha: Flow<Float> = shortcutsAlpha
+
     override val deviceEntryParentViewAlpha: Flow<Float> =
         transitionAnimation.immediatelyTransitionTo(1f)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt
index ead2d48..3802d5d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModel.kt
@@ -30,9 +30,7 @@
 import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.emptyFlow
 import kotlinx.coroutines.flow.filter
-import kotlinx.coroutines.flow.flatMapLatest
 
 /**
  * Breaks down DREAMING->LOCKSCREEN transition into discrete steps for corresponding views to
@@ -107,14 +105,6 @@
             onCancel = { 0f },
         )
 
-    val deviceEntryBackgroundViewAlpha =
-        deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfps ->
-            if (isUdfps) {
-                // immediately show; will fade in with deviceEntryParentViewAlpha
-                transitionAnimation.immediatelyTransitionTo(1f)
-            } else {
-                emptyFlow()
-            }
-        }
+    val deviceEntryBackgroundViewAlpha = transitionAnimation.immediatelyTransitionTo(1f)
     override val deviceEntryParentViewAlpha = lockscreenAlpha
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModel.kt
index 85885b0..9fc759b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToAodTransitionViewModel.kt
@@ -53,7 +53,6 @@
         return transitionAnimation.sharedFlowWithState(
             startTime = 600.milliseconds,
             duration = 500.milliseconds,
-            onStart = { translatePx },
             onStep = { translatePx + it * -translatePx },
             onFinish = { 0f },
             onCancel = { 0f },
@@ -66,7 +65,6 @@
         transitionAnimation.sharedFlow(
             startTime = 700.milliseconds,
             duration = 400.milliseconds,
-            onStart = { 0f },
             onStep = { it },
             onFinish = { 1f },
             onCancel = { 1f },
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModel.kt
new file mode 100644
index 0000000..55a289e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModel.kt
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 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 com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.domain.interactor.FromGoneTransitionInteractor.Companion.TO_DOZING_DURATION
+import com.android.systemui.keyguard.shared.model.KeyguardState
+import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.Flow
+
+/** Breaks down GONE->DOZING transition into discrete steps for corresponding views to consume. */
+@ExperimentalCoroutinesApi
+@SysUISingleton
+class GoneToDozingTransitionViewModel
+@Inject
+constructor(
+    animationFlow: KeyguardTransitionAnimationFlow,
+) {
+
+    private val transitionAnimation =
+        animationFlow.setup(
+            duration = TO_DOZING_DURATION,
+            from = KeyguardState.GONE,
+            to = KeyguardState.DOZING,
+        )
+
+    val lockscreenAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            duration = 500.milliseconds,
+            onStep = { 0f },
+            onCancel = { 1f },
+            onFinish = { 1f },
+        )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToLockscreenTransitionViewModel.kt
index 793abb4..e0b1c50 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/GoneToLockscreenTransitionViewModel.kt
@@ -20,6 +20,7 @@
 import com.android.systemui.keyguard.domain.interactor.FromGoneTransitionInteractor.Companion.TO_LOCKSCREEN_DURATION
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
+import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
 import javax.inject.Inject
 import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.flow.Flow
@@ -29,7 +30,7 @@
 @Inject
 constructor(
     animationFlow: KeyguardTransitionAnimationFlow,
-) {
+) : DeviceEntryIconTransition {
 
     private val transitionAnimation =
         animationFlow.setup(
@@ -44,4 +45,10 @@
             onStep = { it },
             onCancel = { 0f },
         )
+
+    val deviceEntryBackgroundViewAlpha: Flow<Float> =
+        transitionAnimation.immediatelyTransitionTo(1f)
+
+    override val deviceEntryParentViewAlpha: Flow<Float> =
+        transitionAnimation.immediatelyTransitionTo(1f)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBlueprintViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBlueprintViewModel.kt
index d22856b..edd3318 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBlueprintViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBlueprintViewModel.kt
@@ -23,8 +23,10 @@
 
 class KeyguardBlueprintViewModel
 @Inject
-constructor(keyguardBlueprintInteractor: KeyguardBlueprintInteractor) {
+constructor(
+    keyguardBlueprintInteractor: KeyguardBlueprintInteractor,
+) {
     var currentBluePrint: KeyguardBlueprint? = null
     val blueprint = keyguardBlueprintInteractor.blueprint
-    val blueprintWithTransition = keyguardBlueprintInteractor.blueprintWithTransition
+    val refreshTransition = keyguardBlueprintInteractor.refreshTransition
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
index 83be651..f790d35 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModel.kt
@@ -48,6 +48,7 @@
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.filterNotNull
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.onStart
@@ -63,15 +64,25 @@
     private val communalInteractor: CommunalInteractor,
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
     private val notificationsKeyguardInteractor: NotificationsKeyguardInteractor,
-    private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
-    private val lockscreenToGoneTransitionViewModel: LockscreenToGoneTransitionViewModel,
     private val alternateBouncerToGoneTransitionViewModel:
         AlternateBouncerToGoneTransitionViewModel,
-    private val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel,
-    private val lockscreenToGlanceableHubTransitionViewModel:
-        LockscreenToGlanceableHubTransitionViewModel,
+    private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
+    private val dozingToLockscreenTransitionViewModel: DozingToLockscreenTransitionViewModel,
     private val glanceableHubToLockscreenTransitionViewModel:
         GlanceableHubToLockscreenTransitionViewModel,
+    private val lockscreenToDreamingTransitionViewModel: LockscreenToDreamingTransitionViewModel,
+    private val lockscreenToGlanceableHubTransitionViewModel:
+        LockscreenToGlanceableHubTransitionViewModel,
+    private val lockscreenToGoneTransitionViewModel: LockscreenToGoneTransitionViewModel,
+    private val lockscreenToOccludedTransitionViewModel: LockscreenToOccludedTransitionViewModel,
+    private val lockscreenToPrimaryBouncerTransitionViewModel:
+        LockscreenToPrimaryBouncerTransitionViewModel,
+    private val occludedToAodTransitionViewModel: OccludedToAodTransitionViewModel,
+    private val occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
+    private val primaryBouncerToAodTransitionViewModel: PrimaryBouncerToAodTransitionViewModel,
+    private val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel,
+    private val primaryBouncerToLockscreenTransitionViewModel:
+        PrimaryBouncerToLockscreenTransitionViewModel,
     private val screenOffAnimationController: ScreenOffAnimationController,
     private val aodBurnInViewModel: AodBurnInViewModel,
     private val aodAlphaViewModel: AodAlphaViewModel,
@@ -110,13 +121,24 @@
                 // The transitions are mutually exclusive, so they are safe to merge to get the last
                 // value emitted by any of them. Do not add flows that cannot make this guarantee.
                 merge(
-                    aodAlphaViewModel.alpha,
-                    lockscreenToGlanceableHubTransitionViewModel.keyguardAlpha,
-                    glanceableHubToLockscreenTransitionViewModel.keyguardAlpha,
-                    lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState),
-                    primaryBouncerToGoneTransitionViewModel.lockscreenAlpha,
-                    alternateBouncerToGoneTransitionViewModel.lockscreenAlpha,
-                )
+                        aodAlphaViewModel.alpha,
+                        keyguardInteractor.dismissAlpha.filterNotNull(),
+                        alternateBouncerToGoneTransitionViewModel.lockscreenAlpha,
+                        aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
+                        dozingToLockscreenTransitionViewModel.lockscreenAlpha,
+                        glanceableHubToLockscreenTransitionViewModel.keyguardAlpha,
+                        lockscreenToDreamingTransitionViewModel.lockscreenAlpha,
+                        lockscreenToGlanceableHubTransitionViewModel.keyguardAlpha,
+                        lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState),
+                        lockscreenToOccludedTransitionViewModel.lockscreenAlpha,
+                        lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha,
+                        occludedToAodTransitionViewModel.lockscreenAlpha,
+                        occludedToLockscreenTransitionViewModel.lockscreenAlpha,
+                        primaryBouncerToAodTransitionViewModel.lockscreenAlpha,
+                        primaryBouncerToGoneTransitionViewModel.lockscreenAlpha,
+                        primaryBouncerToLockscreenTransitionViewModel.lockscreenAlpha,
+                    )
+                    .onStart { emit(1f) }
             ) { isIdleOnCommunal, alpha ->
                 if (isIdleOnCommunal) {
                     // Keyguard should not show while the communal hub is fully visible. This check
@@ -131,10 +153,13 @@
     }
 
     /** Specific alpha value for elements visible during [KeyguardState.LOCKSCREEN] */
-    val lockscreenStateAlpha: Flow<Float> = aodToLockscreenTransitionViewModel.lockscreenAlpha
+    @Deprecated("only used for legacy status view")
+    fun lockscreenStateAlpha(viewState: ViewStateAccessor): Flow<Float> {
+        return aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState)
+    }
 
     /** For elements that appear and move during the animation -> AOD */
-    val burnInLayerAlpha: Flow<Float> = aodBurnInViewModel.alpha
+    val burnInLayerAlpha: Flow<Float> = aodAlphaViewModel.alpha
 
     fun translationY(params: BurnInParameters): Flow<Float> {
         return aodBurnInViewModel.translationY(params)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
index ce47f3c6..0cfc757 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToPrimaryBouncerTransitionViewModel.kt
@@ -51,6 +51,8 @@
             onStep = { 1f - it }
         )
 
+    val lockscreenAlpha: Flow<Float> = shortcutsAlpha
+
     override val deviceEntryParentViewAlpha: Flow<Float> =
         shadeDependentFlows.transitionFlow(
             flowWhenShadeIsNotExpanded =
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModel.kt
index 07c1141..d7ba46b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToAodTransitionViewModel.kt
@@ -23,6 +23,7 @@
 import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
 import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
 import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.emptyFlow
@@ -47,6 +48,14 @@
     val deviceEntryBackgroundViewAlpha: Flow<Float> =
         transitionAnimation.immediatelyTransitionTo(0f)
 
+    /** Lockscreen views alpha */
+    val lockscreenAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            startTime = 233.milliseconds,
+            duration = 250.milliseconds,
+            onStep = { it },
+        )
+
     override val deviceEntryParentViewAlpha: Flow<Float> =
         deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled.flatMapLatest { udfpsEnrolledAndEnabled
             ->
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
index 90195bd..3a19780 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModel.kt
@@ -29,7 +29,6 @@
 import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.emptyFlow
 import kotlinx.coroutines.flow.flatMapLatest
 
 /**
@@ -79,19 +78,11 @@
             startTime = 233.milliseconds,
             duration = 250.milliseconds,
             onStep = { it },
-            onStart = { 0f },
             name = "OCCLUDED->LOCKSCREEN: lockscreenAlpha",
         )
 
     val deviceEntryBackgroundViewAlpha: Flow<Float> =
-        deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled.flatMapLatest {
-            isUdfpsEnrolledAndEnabled ->
-            if (isUdfpsEnrolledAndEnabled) {
-                transitionAnimation.immediatelyTransitionTo(1f)
-            } else {
-                emptyFlow()
-            }
-        }
+        transitionAnimation.immediatelyTransitionTo(1f)
 
     override val deviceEntryParentViewAlpha: Flow<Float> = lockscreenAlpha
 }
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludingAppDeviceEntryMessageViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludingAppDeviceEntryMessageViewModel.kt
index 3a162d7..846bcbf 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludingAppDeviceEntryMessageViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/OccludingAppDeviceEntryMessageViewModel.kt
@@ -18,8 +18,8 @@
 package com.android.systemui.keyguard.ui.viewmodel
 
 import com.android.systemui.dagger.SysUISingleton
-import com.android.systemui.keyguard.domain.interactor.BiometricMessage
-import com.android.systemui.keyguard.domain.interactor.OccludingAppDeviceEntryInteractor
+import com.android.systemui.deviceentry.domain.interactor.OccludingAppDeviceEntryInteractor
+import com.android.systemui.deviceentry.shared.model.BiometricMessage
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
index cd8e2f1..942903b 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToAodTransitionViewModel.kt
@@ -49,13 +49,13 @@
         )
 
     val deviceEntryBackgroundViewAlpha: Flow<Float> =
-        deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { isUdfpsEnrolledAndEnabled ->
-            if (isUdfpsEnrolledAndEnabled) {
-                transitionAnimation.immediatelyTransitionTo(0f)
-            } else {
-                emptyFlow()
-            }
-        }
+        transitionAnimation.immediatelyTransitionTo(0f)
+
+    val lockscreenAlpha: Flow<Float> =
+        transitionAnimation.sharedFlow(
+            duration = FromPrimaryBouncerTransitionInteractor.TO_AOD_DURATION,
+            onStep = { it }
+        )
 
     override val deviceEntryParentViewAlpha: Flow<Float> =
         deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled.flatMapLatest {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
index 284a134..34c9ac9 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToLockscreenTransitionViewModel.kt
@@ -16,6 +16,7 @@
 
 package com.android.systemui.keyguard.ui.viewmodel
 
+import com.android.app.animation.Interpolators.EMPHASIZED_ACCELERATE
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryUdfpsInteractor
 import com.android.systemui.keyguard.domain.interactor.FromPrimaryBouncerTransitionInteractor
@@ -23,6 +24,7 @@
 import com.android.systemui.keyguard.ui.KeyguardTransitionAnimationFlow
 import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransition
 import javax.inject.Inject
+import kotlin.time.Duration.Companion.milliseconds
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.emptyFlow
@@ -58,10 +60,13 @@
 
     val shortcutsAlpha: Flow<Float> =
         transitionAnimation.sharedFlow(
-            duration = FromPrimaryBouncerTransitionInteractor.TO_LOCKSCREEN_DURATION,
+            duration = 250.milliseconds,
+            interpolator = EMPHASIZED_ACCELERATE,
             onStep = { it }
         )
 
+    val lockscreenAlpha: Flow<Float> = shortcutsAlpha
+
     override val deviceEntryParentViewAlpha: Flow<Float> =
         transitionAnimation.immediatelyTransitionTo(1f)
 }
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/models/player/MediaViewHolder.kt b/packages/SystemUI/src/com/android/systemui/media/controls/models/player/MediaViewHolder.kt
index 1b14f75..898eacf 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/models/player/MediaViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/models/player/MediaViewHolder.kt
@@ -25,8 +25,9 @@
 import android.widget.TextView
 import androidx.constraintlayout.widget.Barrier
 import com.android.internal.widget.CachingIconView
-import com.android.systemui.res.R
 import com.android.systemui.media.controls.models.GutsViewHolder
+import com.android.systemui.res.R
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffectView
 import com.android.systemui.surfaceeffects.ripple.MultiRippleView
 import com.android.systemui.surfaceeffects.turbulencenoise.TurbulenceNoiseView
 import com.android.systemui.util.animation.TransitionLayout
@@ -42,6 +43,7 @@
     val multiRippleView = itemView.requireViewById<MultiRippleView>(R.id.touch_ripple_view)
     val turbulenceNoiseView =
         itemView.requireViewById<TurbulenceNoiseView>(R.id.turbulence_noise_view)
+    val loadingEffectView = itemView.requireViewById<LoadingEffectView>(R.id.loading_effect_view)
     val appIcon = itemView.requireViewById<ImageView>(R.id.icon)
     val titleText = itemView.requireViewById<TextView>(R.id.header_title)
     val artistText = itemView.requireViewById<TextView>(R.id.header_artist)
@@ -171,6 +173,7 @@
             setOf(
                 R.id.album_art,
                 R.id.turbulence_noise_view,
+                R.id.loading_effect_view,
                 R.id.touch_ripple_view,
             )
     }
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/ColorSchemeTransition.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/ColorSchemeTransition.kt
index c87fd14..952f9b8 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/ColorSchemeTransition.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/ColorSchemeTransition.kt
@@ -29,6 +29,7 @@
 import com.android.settingslib.Utils
 import com.android.systemui.media.controls.models.player.MediaViewHolder
 import com.android.systemui.monet.ColorScheme
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffect
 import com.android.systemui.surfaceeffects.ripple.MultiRippleController
 import com.android.systemui.surfaceeffects.turbulencenoise.TurbulenceNoiseController
 
@@ -118,6 +119,7 @@
         turbulenceNoiseController,
         ::AnimatingColorTransition
     )
+    var loadingEffect: LoadingEffect? = null
 
     val bgColor = context.getColor(com.google.android.material.R.color.material_dynamic_neutral20)
     val surfaceColor =
@@ -128,7 +130,6 @@
             mediaViewHolder.albumView.backgroundTintList = colorList
             mediaViewHolder.gutsViewHolder.setSurfaceColor(surfaceColor)
         }
-
     val accentPrimary =
         animatingColorTransitionFactory(
             loadDefaultColor(R.attr.textColorPrimary),
@@ -139,6 +140,7 @@
             mediaViewHolder.gutsViewHolder.setAccentPrimaryColor(accentPrimary)
             multiRippleController.updateColor(accentPrimary)
             turbulenceNoiseController.updateNoiseColor(accentPrimary)
+            loadingEffect?.updateColor(accentPrimary)
         }
 
     val accentSecondary =
diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
index aa92814..e97c9d3d 100644
--- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/MediaControlPanel.java
@@ -41,6 +41,7 @@
 import android.graphics.ColorMatrix;
 import android.graphics.ColorMatrixColorFilter;
 import android.graphics.Matrix;
+import android.graphics.Paint;
 import android.graphics.Rect;
 import android.graphics.drawable.Animatable;
 import android.graphics.drawable.BitmapDrawable;
@@ -81,6 +82,7 @@
 import com.android.internal.widget.CachingIconView;
 import com.android.settingslib.widget.AdaptiveIcon;
 import com.android.systemui.ActivityIntentHelper;
+import com.android.systemui.Flags;
 import com.android.systemui.animation.ActivityTransitionAnimator;
 import com.android.systemui.animation.GhostedViewTransitionAnimatorController;
 import com.android.systemui.bluetooth.BroadcastDialogController;
@@ -111,6 +113,9 @@
 import com.android.systemui.shared.system.SysUiStatsLog;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffect;
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffect.Companion.AnimationState;
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffectView;
 import com.android.systemui.surfaceeffects.ripple.MultiRippleController;
 import com.android.systemui.surfaceeffects.ripple.MultiRippleView;
 import com.android.systemui.surfaceeffects.ripple.RippleAnimation;
@@ -248,13 +253,34 @@
     private String mCurrentBroadcastApp;
     private MultiRippleController mMultiRippleController;
     private TurbulenceNoiseController mTurbulenceNoiseController;
+    private LoadingEffect mLoadingEffect;
     private final GlobalSettings mGlobalSettings;
-
+    private final Random mRandom = new Random();
     private TurbulenceNoiseAnimationConfig mTurbulenceNoiseAnimationConfig;
     private boolean mWasPlaying = false;
     private boolean mButtonClicked = false;
 
-    private final Random mRandom = new Random();
+    private final LoadingEffect.Companion.PaintDrawCallback mNoiseDrawCallback =
+            new LoadingEffect.Companion.PaintDrawCallback() {
+                @Override
+                public void onDraw(@NonNull Paint loadingPaint) {
+                    mMediaViewHolder.getLoadingEffectView().draw(loadingPaint);
+                }
+            };
+    private final LoadingEffect.Companion.AnimationStateChangedCallback mStateChangedCallback =
+            new LoadingEffect.Companion.AnimationStateChangedCallback() {
+                @Override
+                public void onStateChanged(@NonNull AnimationState oldState,
+                        @NonNull AnimationState newState) {
+                    LoadingEffectView loadingEffectView =
+                            mMediaViewHolder.getLoadingEffectView();
+                    if (newState == AnimationState.NOT_PLAYING) {
+                        loadingEffectView.setVisibility(View.INVISIBLE);
+                    } else {
+                        loadingEffectView.setVisibility(View.VISIBLE);
+                    }
+                }
+            };
 
     /**
      * Initialize a new control panel
@@ -456,6 +482,10 @@
 
         TurbulenceNoiseView turbulenceNoiseView = vh.getTurbulenceNoiseView();
         turbulenceNoiseView.setBlendMode(BlendMode.SCREEN);
+        LoadingEffectView loadingEffectView = vh.getLoadingEffectView();
+        loadingEffectView.setBlendMode(BlendMode.SCREEN);
+        loadingEffectView.setVisibility(View.INVISIBLE);
+
         mTurbulenceNoiseController = new TurbulenceNoiseController(turbulenceNoiseView);
 
         mColorSchemeTransition = new ColorSchemeTransition(
@@ -587,22 +617,41 @@
             }
         }
 
-        // Turbulence noise
         if (shouldPlayTurbulenceNoise()) {
+            // Need to create the config here to get the correct view size and color.
             if (mTurbulenceNoiseAnimationConfig == null) {
                 mTurbulenceNoiseAnimationConfig =
-                        createTurbulenceNoiseAnimation();
+                        createTurbulenceNoiseConfig();
             }
-            // Color will be correctly updated in ColorSchemeTransition.
-            mTurbulenceNoiseController.play(
-                    Type.SIMPLEX_NOISE,
-                    mTurbulenceNoiseAnimationConfig
-            );
-            mMainExecutor.executeDelayed(
-                    mTurbulenceNoiseController::finish,
-                    TURBULENCE_NOISE_PLAY_DURATION
-            );
+
+            if (Flags.shaderlibLoadingEffectRefactor()) {
+                if (mLoadingEffect == null) {
+                    mLoadingEffect = new LoadingEffect(
+                            Type.SIMPLEX_NOISE,
+                            mTurbulenceNoiseAnimationConfig,
+                            mNoiseDrawCallback,
+                            mStateChangedCallback
+                    );
+                    mColorSchemeTransition.setLoadingEffect(mLoadingEffect);
+                }
+
+                mLoadingEffect.play();
+                mMainExecutor.executeDelayed(
+                        mLoadingEffect::finish,
+                        TURBULENCE_NOISE_PLAY_DURATION
+                );
+            } else {
+                mTurbulenceNoiseController.play(
+                        Type.SIMPLEX_NOISE,
+                        mTurbulenceNoiseAnimationConfig
+                );
+                mMainExecutor.executeDelayed(
+                        mTurbulenceNoiseController::finish,
+                        TURBULENCE_NOISE_PLAY_DURATION
+                );
+            }
         }
+
         mButtonClicked = false;
         mWasPlaying = isPlaying();
 
@@ -1232,7 +1281,13 @@
         return mButtonClicked && !mWasPlaying && isPlaying();
     }
 
-    private TurbulenceNoiseAnimationConfig createTurbulenceNoiseAnimation() {
+    private TurbulenceNoiseAnimationConfig createTurbulenceNoiseConfig() {
+        View targetView = Flags.shaderlibLoadingEffectRefactor()
+                ? mMediaViewHolder.getLoadingEffectView() :
+                mMediaViewHolder.getTurbulenceNoiseView();
+        int width = targetView.getWidth();
+        int height = targetView.getHeight();
+
         return new TurbulenceNoiseAnimationConfig(
                 /* gridCount= */ 2.14f,
                 TurbulenceNoiseAnimationConfig.DEFAULT_LUMINOSITY_MULTIPLIER,
@@ -1242,10 +1297,11 @@
                 /* noiseMoveSpeedX= */ 0.42f,
                 /* noiseMoveSpeedY= */ 0f,
                 TurbulenceNoiseAnimationConfig.DEFAULT_NOISE_SPEED_Z,
+                // Color will be correctly updated in ColorSchemeTransition.
                 /* color= */ mColorSchemeTransition.getAccentPrimary().getCurrentColor(),
                 /* backgroundColor= */ Color.BLACK,
-                /* width= */ mMediaViewHolder.getTurbulenceNoiseView().getWidth(),
-                /* height= */ mMediaViewHolder.getTurbulenceNoiseView().getHeight(),
+                width,
+                height,
                 TurbulenceNoiseAnimationConfig.DEFAULT_MAX_DURATION_IN_MILLIS,
                 /* easeInDuration= */ 1350f,
                 /* easeOutDuration= */ 1350f,
diff --git a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt
index 25d89fa..02be0c1 100644
--- a/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/media/dialog/MediaOutputDialogFactory.kt
@@ -35,10 +35,10 @@
 import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection
 import javax.inject.Inject
 
-/**
- * Factory to create [MediaOutputDialog] objects.
- */
-open class MediaOutputDialogFactory @Inject constructor(
+/** Factory to create [MediaOutputDialog] objects. */
+open class MediaOutputDialogFactory
+@Inject
+constructor(
     private val context: Context,
     private val mediaSessionManager: MediaSessionManager,
     private val lbm: LocalBluetoothManager?,
@@ -55,46 +55,93 @@
     private val userTracker: UserTracker
 ) {
     companion object {
-        private const val INTERACTION_JANK_TAG = "media_output"
+        const val INTERACTION_JANK_TAG = "media_output"
         var mediaOutputDialog: MediaOutputDialog? = null
     }
 
     /** Creates a [MediaOutputDialog] for the given package. */
     open fun create(packageName: String, aboveStatusBar: Boolean, view: View? = null) {
-        create(packageName, aboveStatusBar, view, includePlaybackAndAppMetadata = true)
+        createWithController(
+            packageName,
+            aboveStatusBar,
+            controller =
+                view?.let {
+                    DialogTransitionAnimator.Controller.fromView(
+                        it,
+                        DialogCuj(
+                            InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
+                            INTERACTION_JANK_TAG
+                        )
+                    )
+                },
+        )
     }
 
-    open fun createDialogForSystemRouting() {
-        create(packageName = null, aboveStatusBar = false, includePlaybackAndAppMetadata = false)
+    /** Creates a [MediaOutputDialog] for the given package. */
+    open fun createWithController(
+        packageName: String,
+        aboveStatusBar: Boolean,
+        controller: DialogTransitionAnimator.Controller?,
+    ) {
+        create(
+            packageName,
+            aboveStatusBar,
+            dialogTransitionAnimatorController = controller,
+            includePlaybackAndAppMetadata = true
+        )
+    }
+
+    open fun createDialogForSystemRouting(controller: DialogTransitionAnimator.Controller? = null) {
+        create(
+            packageName = null,
+            aboveStatusBar = false,
+            dialogTransitionAnimatorController = null,
+            includePlaybackAndAppMetadata = false
+        )
     }
 
     private fun create(
-            packageName: String?,
-            aboveStatusBar: Boolean,
-            view: View? = null,
-            includePlaybackAndAppMetadata: Boolean = true
+        packageName: String?,
+        aboveStatusBar: Boolean,
+        dialogTransitionAnimatorController: DialogTransitionAnimator.Controller?,
+        includePlaybackAndAppMetadata: Boolean = true
     ) {
         // Dismiss the previous dialog, if any.
         mediaOutputDialog?.dismiss()
 
-        val controller = MediaOutputController(
-            context, packageName,
-            mediaSessionManager, lbm, starter, notifCollection,
-            dialogTransitionAnimator, nearbyMediaDevicesManager, audioManager,
-            powerExemptionManager, keyGuardManager, featureFlags, userTracker)
+        val controller =
+            MediaOutputController(
+                context,
+                packageName,
+                mediaSessionManager,
+                lbm,
+                starter,
+                notifCollection,
+                dialogTransitionAnimator,
+                nearbyMediaDevicesManager,
+                audioManager,
+                powerExemptionManager,
+                keyGuardManager,
+                featureFlags,
+                userTracker
+            )
         val dialog =
-            MediaOutputDialog(context, aboveStatusBar, broadcastSender, controller,
-                    dialogTransitionAnimator, uiEventLogger, includePlaybackAndAppMetadata)
+            MediaOutputDialog(
+                context,
+                aboveStatusBar,
+                broadcastSender,
+                controller,
+                dialogTransitionAnimator,
+                uiEventLogger,
+                includePlaybackAndAppMetadata
+            )
         mediaOutputDialog = dialog
 
         // Show the dialog.
-        if (view != null) {
-            dialogTransitionAnimator.showFromView(
-                dialog, view,
-                cuj = DialogCuj(
-                    InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
-                    INTERACTION_JANK_TAG
-                )
+        if (dialogTransitionAnimatorController != null) {
+            dialogTransitionAnimator.show(
+                dialog,
+                dialogTransitionAnimatorController,
             )
         } else {
             dialog.show()
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
index 092f1ed..152f193 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java
@@ -44,6 +44,7 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
+import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.statusbar.RegisterStatusBarResult;
 import com.android.settingslib.applications.InterestingConfigChanges;
@@ -89,7 +90,16 @@
     private final TaskbarDelegate mTaskbarDelegate;
     private final NavBarHelper mNavBarHelper;
     private int mNavMode;
+    /**
+     * Indicates whether the active display is a large screen, e.g. tablets, foldable devices in
+     * the unfolded state.
+     */
     @VisibleForTesting boolean mIsLargeScreen;
+    /**
+     * Indicates whether the device is a phone, rather than everything else (e.g. foldables,
+     * tablets) is considered not a handheld device.
+     */
+    @VisibleForTesting boolean mIsPhone;
 
     /** A displayId - nav bar maps. */
     @VisibleForTesting
@@ -139,6 +149,8 @@
                 dumpManager, autoHideController, lightBarController, pipOptional,
                 backAnimation.orElse(null), taskStackChangeListeners);
         mIsLargeScreen = isLargeScreen(mContext);
+        mIsPhone =
+                mContext.getResources().getIntArray(R.array.config_foldedDeviceStates).length == 0;
         dumpManager.registerDumpable(this);
     }
 
@@ -253,9 +265,8 @@
 
     /** @return {@code true} if taskbar is enabled, false otherwise */
     private boolean initializeTaskbarIfNecessary() {
-        // Enable for large screens or (phone AND flag is set); assuming phone = !mIsLargeScreen
-        boolean taskbarEnabled = (mIsLargeScreen || enableTaskbarNavbarUnification())
-                && shouldCreateNavBarAndTaskBar(mContext.getDisplayId());
+        boolean taskbarEnabled = supportsTaskbar() && shouldCreateNavBarAndTaskBar(
+                mContext.getDisplayId());
 
         if (taskbarEnabled) {
             Trace.beginSection("NavigationBarController#initializeTaskbarIfNecessary");
@@ -274,6 +285,12 @@
         return taskbarEnabled;
     }
 
+    @VisibleForTesting
+    boolean supportsTaskbar() {
+        // Enable for tablets, unfolded state on a foldable device or (non handheld AND flag is set)
+        return mIsLargeScreen || (!mIsPhone && enableTaskbarNavbarUnification());
+    }
+
     private final CommandQueue.Callbacks mCommandQueueCallbacks = new CommandQueue.Callbacks() {
         @Override
         public void onDisplayRemoved(int displayId) {
diff --git a/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java b/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
index 3671dd4..b4cc196 100644
--- a/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
+++ b/packages/SystemUI/src/com/android/systemui/process/ProcessWrapper.java
@@ -39,7 +39,10 @@
     /**
      * Returns {@link UserHandle} as returned statically by {@link Process#myUserHandle()}.
      *
-     * Please strongly consider using {@link com.android.systemui.settings.UserTracker} instead.
+     * This should not be used to get the "current" user. This information only applies to the
+     * current process, not the current state of SystemUI. Please use
+     * {@link com.android.systemui.settings.UserTracker} if you want to learn about the currently
+     * active user in SystemUI.
      */
     public UserHandle myUserHandle() {
         return Process.myUserHandle();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractor.kt
new file mode 100644
index 0000000..88784bf
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/interactor/AccessibilityTilesInteractor.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.qs.pipeline.domain.interactor
+
+import android.content.Context
+import android.view.accessibility.Flags
+import com.android.systemui.accessibility.data.repository.AccessibilityQsShortcutsRepository
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.qs.pipeline.domain.model.TileModel
+import com.android.systemui.qs.pipeline.shared.TileSpec
+import com.android.systemui.util.kotlin.sample
+import java.util.concurrent.atomic.AtomicBoolean
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+
+/** Observe the tiles in the QS Panel and perform accessibility related actions */
+@SysUISingleton
+class AccessibilityTilesInteractor
+@Inject
+constructor(
+    private val a11yQsShortcutsRepository: AccessibilityQsShortcutsRepository,
+    @Background private val backgroundDispatcher: CoroutineDispatcher,
+    @Application private val scope: CoroutineScope,
+) {
+    private val initialized = AtomicBoolean(false)
+
+    /** Start collection of signals following the user from [currentTilesInteractor]. */
+    fun init(currentTilesInteractor: CurrentTilesInteractor) {
+        if (!initialized.compareAndSet(/* expectedValue= */ false, /* newValue= */ true)) {
+            return
+        }
+
+        if (Flags.a11yQsShortcut()) {
+            startObservingTiles(currentTilesInteractor)
+        }
+    }
+
+    private fun startObservingTiles(currentTilesInteractor: CurrentTilesInteractor) {
+        scope.launch(backgroundDispatcher) {
+            currentTilesInteractor.currentTiles
+                .sample(currentTilesInteractor.userContext) { currentTiles, userContext ->
+                    Data(currentTiles.map(TileModel::spec), userContext)
+                }
+                .collectLatest {
+                    a11yQsShortcutsRepository.notifyAccessibilityManagerTilesChanged(
+                        it.userContext,
+                        it.currentTileSpecs
+                    )
+                }
+        }
+    }
+
+    private data class Data(
+        val currentTileSpecs: List<TileSpec>,
+        val userContext: Context,
+    )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
index 2930acd..af1d195 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/pipeline/domain/startable/QSPipelineCoreStartable.kt
@@ -18,6 +18,7 @@
 
 import com.android.systemui.CoreStartable
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.qs.pipeline.domain.interactor.AccessibilityTilesInteractor
 import com.android.systemui.qs.pipeline.domain.interactor.AutoAddInteractor
 import com.android.systemui.qs.pipeline.domain.interactor.CurrentTilesInteractor
 import com.android.systemui.qs.pipeline.domain.interactor.RestoreReconciliationInteractor
@@ -29,6 +30,7 @@
 @Inject
 constructor(
     private val currentTilesInteractor: CurrentTilesInteractor,
+    private val accessibilityTilesInteractor: AccessibilityTilesInteractor,
     private val autoAddInteractor: AutoAddInteractor,
     private val featureFlags: QSPipelineFlagsRepository,
     private val restoreReconciliationInteractor: RestoreReconciliationInteractor,
@@ -36,6 +38,7 @@
 
     override fun start() {
         if (featureFlags.pipelineEnabled) {
+            accessibilityTilesInteractor.init(currentTilesInteractor)
             autoAddInteractor.init(currentTilesInteractor)
             restoreReconciliationInteractor.start()
         }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
index 8a900ece..17454a9 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/ui/viewmodel/QuickSettingsSceneViewModel.kt
@@ -23,8 +23,8 @@
 import com.android.systemui.qs.ui.adapter.QSSceneAdapter
 import com.android.systemui.scene.shared.model.Direction
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.scene.shared.model.UserAction
+import com.android.systemui.scene.shared.model.UserActionResult
 import com.android.systemui.shade.ui.viewmodel.ShadeHeaderViewModel
 import com.android.systemui.statusbar.notification.stack.ui.viewmodel.NotificationsPlaceholderViewModel
 import java.util.concurrent.atomic.AtomicBoolean
@@ -45,11 +45,13 @@
     val destinationScenes =
         qsSceneAdapter.isCustomizing.map { customizing ->
             if (customizing) {
-                mapOf<UserAction, SceneModel>(UserAction.Back to SceneModel(SceneKey.QuickSettings))
+                mapOf<UserAction, UserActionResult>(
+                    UserAction.Back to UserActionResult(SceneKey.QuickSettings)
+                )
             } else {
                 mapOf(
-                    UserAction.Back to SceneModel(SceneKey.Shade),
-                    UserAction.Swipe(Direction.UP) to SceneModel(SceneKey.Shade),
+                    UserAction.Back to UserActionResult(SceneKey.Shade),
+                    UserAction.Swipe(Direction.UP) to UserActionResult(SceneKey.Shade),
                 )
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/scene/data/repository/SceneContainerRepository.kt b/packages/SystemUI/src/com/android/systemui/scene/data/repository/SceneContainerRepository.kt
index 350fa38..a302194 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/data/repository/SceneContainerRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/data/repository/SceneContainerRepository.kt
@@ -21,8 +21,9 @@
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneContainerConfig
+import com.android.systemui.scene.shared.model.SceneDataSource
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.TransitionKey
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -41,9 +42,9 @@
 constructor(
     @Application applicationScope: CoroutineScope,
     private val config: SceneContainerConfig,
+    private val dataSource: SceneDataSource,
 ) {
-    private val _desiredScene = MutableStateFlow(SceneModel(config.initialSceneKey))
-    val desiredScene: StateFlow<SceneModel> = _desiredScene.asStateFlow()
+    val currentScene: StateFlow<SceneKey> = dataSource.currentScene
 
     private val _isVisible = MutableStateFlow(true)
     val isVisible: StateFlow<Boolean> = _isVisible.asStateFlow()
@@ -69,16 +70,22 @@
         return config.sceneKeys
     }
 
-    fun setDesiredScene(scene: SceneModel) {
-        check(allSceneKeys().contains(scene.key)) {
+    fun changeScene(
+        toScene: SceneKey,
+        transitionKey: TransitionKey? = null,
+    ) {
+        check(allSceneKeys().contains(toScene)) {
             """
-                Cannot set the desired scene key to "${scene.key}". The configuration does not
+                Cannot set the desired scene key to "$toScene". The configuration does not
                 contain a scene with that key.
             """
                 .trimIndent()
         }
 
-        _desiredScene.value = scene
+        dataSource.changeScene(
+            toScene = toScene,
+            transitionKey = transitionKey,
+        )
     }
 
     /** Sets whether the container is visible. */
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
index b9e9fe7..494c86c 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
@@ -24,7 +24,8 @@
 import com.android.systemui.scene.shared.logger.SceneLogger
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.TransitionKey
+import com.android.systemui.util.kotlin.pairwiseBy
 import javax.inject.Inject
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -55,34 +56,25 @@
 ) {
 
     /**
-     * The currently *desired* scene.
+     * The current scene.
      *
-     * **Important:** this value will _commonly be different_ from what is being rendered in the UI,
-     * by design.
-     *
-     * There are two intended sources for this value:
-     * 1. Programmatic requests to transition to another scene (calls to [changeScene]).
-     * 2. Reports from the UI about completing a transition to another scene (calls to
-     *    [onSceneChanged]).
-     *
-     * Both the sources above cause the value of this flow to change; however, they cause mismatches
-     * in different ways.
-     *
-     * **Updates from programmatic transitions**
-     *
-     * When an external bit of code asks the framework to switch to another scene, the value here
-     * will update immediately. Downstream, the UI will detect this change and initiate the
-     * transition animation. As the transition animation progresses, a threshold will be reached, at
-     * which point the UI and the state here will match each other.
-     *
-     * **Updates from the UI**
-     *
-     * When the user interacts with the UI, the UI runs a transition animation that tracks the user
-     * pointer (for example, the user's finger). During this time, the state value here and what the
-     * UI shows will likely not match. Once/if a threshold is met, the UI reports it and commits the
-     * change, making the value here match the UI again.
+     * Note that during a transition between scenes, more than one scene might be rendered but only
+     * one is considered the committed/current scene.
      */
-    val desiredScene: StateFlow<SceneModel> = repository.desiredScene
+    val currentScene: StateFlow<SceneKey> =
+        repository.currentScene
+            .pairwiseBy(initialValue = repository.currentScene.value) { from, to ->
+                logger.logSceneChangeCommitted(
+                    from = from,
+                    to = to,
+                )
+                to
+            }
+            .stateIn(
+                scope = applicationScope,
+                started = SharingStarted.WhileSubscribed(),
+                initialValue = repository.currentScene.value,
+            )
 
     /**
      * The current state of the transition.
@@ -146,14 +138,32 @@
     /**
      * Requests a scene change to the given scene.
      *
-     * The change is animated. Therefore, while the value in [desiredScene] will update immediately,
-     * it will be some time before the UI will switch to the desired scene. The scene change
-     * requested is remembered here but served by the UI layer, which will start a transition
-     * animation. Once enough of the transition has occurred, the system will come into agreement
-     * between the [desiredScene] and the UI.
+     * The change is animated. Therefore, it will be some time before the UI will switch to the
+     * desired scene. Once enough of the transition has occurred, the [currentScene] will become
+     * [toScene] (unless the transition is canceled by user action or another call to this method).
      */
-    fun changeScene(scene: SceneModel, loggingReason: String) {
-        updateDesiredScene(scene, loggingReason, logger::logSceneChangeRequested)
+    fun changeScene(
+        toScene: SceneKey,
+        loggingReason: String,
+        transitionKey: TransitionKey? = null,
+    ) {
+        check(toScene != SceneKey.Gone || deviceUnlockedInteractor.isDeviceUnlocked.value) {
+            "Cannot change to the Gone scene while the device is locked. Logging reason for scene" +
+                " change was: $loggingReason"
+        }
+
+        val currentSceneKey = currentScene.value
+        if (currentSceneKey == toScene) {
+            return
+        }
+
+        logger.logSceneChangeRequested(
+            from = currentSceneKey,
+            to = toScene,
+            reason = loggingReason,
+        )
+
+        repository.changeScene(toScene, transitionKey)
     }
 
     /** Sets the visibility of the container. */
@@ -184,39 +194,4 @@
     fun onUserInput() {
         powerInteractor.onUserTouch()
     }
-
-    /**
-     * Notifies that the UI has transitioned sufficiently to the given scene.
-     *
-     * *Not intended for external use!*
-     *
-     * Once a transition between one scene and another passes a threshold, the UI invokes this
-     * method to report it, updating the value in [desiredScene] to match what the UI shows.
-     */
-    fun onSceneChanged(scene: SceneModel, loggingReason: String) {
-        updateDesiredScene(scene, loggingReason, logger::logSceneChangeCommitted)
-    }
-
-    private fun updateDesiredScene(
-        scene: SceneModel,
-        loggingReason: String,
-        log: (from: SceneKey, to: SceneKey, loggingReason: String) -> Unit,
-    ) {
-        check(scene.key != SceneKey.Gone || deviceUnlockedInteractor.isDeviceUnlocked.value) {
-            "Cannot change to the Gone scene while the device is locked. Logging reason for scene" +
-                " change was: $loggingReason"
-        }
-
-        val currentSceneKey = desiredScene.value.key
-        if (currentSceneKey == scene.key) {
-            return
-        }
-
-        log(
-            /* from= */ currentSceneKey,
-            /* to= */ scene.key,
-            /* loggingReason= */ loggingReason,
-        )
-        repository.setDesiredScene(scene)
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
index dcd87c0..605a5d9 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt
@@ -40,7 +40,6 @@
 import com.android.systemui.scene.shared.logger.SceneLogger
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.statusbar.NotificationShadeWindowController
 import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
 import com.android.systemui.statusbar.phone.CentralSurfaces
@@ -164,9 +163,9 @@
         applicationScope.launch {
             // TODO (b/308001302): Move this to a bouncer specific interactor.
             bouncerInteractor.onImeHiddenByUser.collectLatest {
-                if (sceneInteractor.desiredScene.value.key == SceneKey.Bouncer) {
+                if (sceneInteractor.currentScene.value == SceneKey.Bouncer) {
                     sceneInteractor.changeScene(
-                        scene = SceneModel(SceneKey.Lockscreen),
+                        toScene = SceneKey.Lockscreen,
                         loggingReason = "IME hidden",
                     )
                 }
@@ -353,8 +352,8 @@
         }
 
         applicationScope.launch {
-            sceneInteractor.desiredScene
-                .map { it.key == SceneKey.Bouncer }
+            sceneInteractor.currentScene
+                .map { it == SceneKey.Bouncer }
                 .distinctUntilChanged()
                 .collect { switchedToBouncerScene ->
                     if (switchedToBouncerScene) {
@@ -422,7 +421,7 @@
 
     private fun switchToScene(targetSceneKey: SceneKey, loggingReason: String) {
         sceneInteractor.changeScene(
-            scene = SceneModel(targetSceneKey),
+            toScene = targetSceneKey,
             loggingReason = loggingReason,
         )
     }
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
index a755805..4ccb18f 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/flag/SceneContainerFlags.kt
@@ -19,15 +19,16 @@
 package com.android.systemui.scene.shared.flag
 
 import com.android.systemui.Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR
+import com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT
 import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
 import com.android.systemui.Flags.keyguardBottomAreaRefactor
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.Flags.sceneContainer
 import com.android.systemui.compose.ComposeFacade
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.flags.FlagToken
 import com.android.systemui.flags.Flags.SCENE_CONTAINER_ENABLED
 import com.android.systemui.flags.RefactorFlagUtils
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.media.controls.util.MediaInSceneContainerFlag
 import dagger.Module
 import dagger.Provides
@@ -43,7 +44,7 @@
             SCENE_CONTAINER_ENABLED && // mainStaticFlag
             sceneContainer() && // mainAconfigFlag
                 keyguardBottomAreaRefactor() &&
-                KeyguardShadeMigrationNssl.isEnabled &&
+                migrateClocksToBlueprint() &&
                 MediaInSceneContainerFlag.isEnabled &&
                 // NOTE: Changes should also be made in getSecondaryFlags and @EnableSceneContainer
                 ComposeFacade.isComposeAvailable()
@@ -63,7 +64,7 @@
     inline fun getSecondaryFlags(): Sequence<FlagToken> =
         sequenceOf(
             FlagToken(FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR, keyguardBottomAreaRefactor()),
-            KeyguardShadeMigrationNssl.token,
+            FlagToken(FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT, migrateClocksToBlueprint()),
             MediaInSceneContainerFlag.token,
             // NOTE: Changes should also be made in isEnabled and @EnableSceneContainer
         )
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt
index c2c2e04..d59fcff 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/logger/SceneLogger.kt
@@ -62,7 +62,6 @@
     fun logSceneChangeCommitted(
         from: SceneKey,
         to: SceneKey,
-        reason: String,
     ) {
         logBuffer.log(
             tag = TAG,
@@ -70,9 +69,8 @@
             messageInitializer = {
                 str1 = from.toString()
                 str2 = to.toString()
-                str3 = reason
             },
-            messagePrinter = { "Scene change committed: $str1 → $str2, reason: $str3" },
+            messagePrinter = { "Scene change committed: $str1 → $str2" },
         )
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scene.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scene.kt
index 2e45353..05056c1 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scene.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/Scene.kt
@@ -32,7 +32,7 @@
     val key: SceneKey
 
     /**
-     * The mapping between [UserAction] and destination [SceneModel]s.
+     * The mapping between [UserAction] and destination [UserActionResult]s.
      *
      * When the scene framework detects a user action, if the current scene has a map entry for that
      * user action, the framework starts a transition to the scene in the map.
@@ -40,7 +40,7 @@
      * Once the [Scene] becomes the current one, the scene framework will read this property and set
      * up a collector to watch for new mapping values. If every map entry provided by the scene, the
      * framework will set up user input handling for its [UserAction] and, if such a user action is
-     * detected, initiate a transition to the specified [SceneModel].
+     * detected, initiate a transition to the specified [UserActionResult].
      *
      * Note that reading from this method does _not_ mean that any user action has occurred.
      * Instead, the property is read before any user action/gesture is detected so that the
@@ -51,7 +51,7 @@
      * type is not currently active in the scene and should be ignored by the framework, while the
      * current scene is this one.
      */
-    val destinationScenes: StateFlow<Map<UserAction, SceneModel>>
+    val destinationScenes: StateFlow<Map<UserAction, UserActionResult>>
 }
 
 /** Enumerates all scene framework supported user actions. */
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSource.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSource.kt
new file mode 100644
index 0000000..f7b45e5
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSource.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+import kotlinx.coroutines.flow.StateFlow
+
+/** Defines interface for classes that provide access to scene state. */
+interface SceneDataSource {
+
+    /**
+     * The current scene, as seen by the real data source in the UI layer.
+     *
+     * During a transition between two scenes, the original scene will still be reflected in
+     * [currentScene] until a time when the UI layer decides to commit the change, which is when
+     * [currentScene] will have the value of the target/new scene.
+     */
+    val currentScene: StateFlow<SceneKey>
+
+    /**
+     * Asks for an asynchronous scene switch to [toScene], which will use the corresponding
+     * installed transition or the one specified by [transitionKey], if provided.
+     */
+    fun changeScene(
+        toScene: SceneKey,
+        transitionKey: TransitionKey? = null,
+    )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegator.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegator.kt
new file mode 100644
index 0000000..a50830c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneDataSourceDelegator.kt
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.scene.shared.model
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Application
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.stateIn
+
+/**
+ * Delegates calls to a runtime-provided [SceneDataSource] or to a no-op implementation if a
+ * delegate isn't set.
+ */
+@SysUISingleton
+class SceneDataSourceDelegator
+@Inject
+constructor(
+    @Application private val applicationScope: CoroutineScope,
+    config: SceneContainerConfig,
+) : SceneDataSource {
+
+    private val noOpDelegate = NoOpSceneDataSource(config.initialSceneKey)
+    private val delegateMutable = MutableStateFlow<SceneDataSource>(noOpDelegate)
+
+    override val currentScene: StateFlow<SceneKey> =
+        delegateMutable
+            .flatMapLatest { delegate -> delegate.currentScene }
+            .stateIn(
+                scope = applicationScope,
+                started = SharingStarted.WhileSubscribed(),
+                initialValue = config.initialSceneKey,
+            )
+
+    override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) {
+        delegateMutable.value.changeScene(
+            toScene = toScene,
+            transitionKey = transitionKey,
+        )
+    }
+
+    /**
+     * Binds the current, dependency injection provided [SceneDataSource] to the given object.
+     *
+     * In other words: once this is invoked, the state and functionality of the [SceneDataSource]
+     * will be served by the given [delegate].
+     *
+     * If `null` is passed in, the delegator will use a no-op implementation of [SceneDataSource].
+     *
+     * This removes any previously set delegate.
+     */
+    fun setDelegate(delegate: SceneDataSource?) {
+        delegateMutable.value = delegate ?: noOpDelegate
+    }
+
+    private class NoOpSceneDataSource(
+        initialSceneKey: SceneKey,
+    ) : SceneDataSource {
+        override val currentScene: StateFlow<SceneKey> =
+            MutableStateFlow(initialSceneKey).asStateFlow()
+        override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) = Unit
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKey.kt
similarity index 67%
rename from packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt
rename to packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKey.kt
index f3d549f..87332ae 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKey.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -16,12 +16,11 @@
 
 package com.android.systemui.scene.shared.model
 
-/** Models a scene. */
-data class SceneModel(
-
-    /** The key of the scene. */
-    val key: SceneKey,
-
-    /** An optional name for the transition that led to this scene being the current scene. */
-    val transitionName: String? = null,
+/**
+ * Key for a transition. This can be used to specify which transition spec should be used when
+ * starting the transition between two scenes.
+ */
+data class TransitionKey(
+    val debugName: String,
+    val identity: Any = Object(),
 )
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKeys.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKeys.kt
new file mode 100644
index 0000000..926878c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/TransitionKeys.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+/**
+ * Defines all known named transitions.
+ *
+ * These are the subset of transitions that can be referenced by key when asking for a scene change.
+ */
+object TransitionKeys {
+
+    /** Reference to a scene transition that can collapse the shade scene instantly. */
+    val CollapseShadeInstantly = TransitionKey("CollapseShadeInstantly")
+
+    /**
+     * Reference to a scene transition that can collapse the shade scene slightly faster than a
+     * normal collapse would.
+     */
+    val SlightlyFasterShadeCollapse = TransitionKey("SlightlyFasterShadeCollapse")
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionDistance.kt
similarity index 63%
copy from packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt
copy to packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionDistance.kt
index f3d549f..b93f837 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/shared/model/SceneModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionDistance.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -16,12 +16,11 @@
 
 package com.android.systemui.scene.shared.model
 
-/** Models a scene. */
-data class SceneModel(
+interface UserActionDistance {
 
-    /** The key of the scene. */
-    val key: SceneKey,
-
-    /** An optional name for the transition that led to this scene being the current scene. */
-    val transitionName: String? = null,
-)
+    /**
+     * Return the **absolute** distance of the user action (in pixels) given the size of the scene
+     * we are animating from and the orientation.
+     */
+    fun absoluteDistance(fromSceneWidth: Int, fromSceneHeight: Int, isHorizontal: Boolean): Float
+}
diff --git a/packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionResult.kt b/packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionResult.kt
new file mode 100644
index 0000000..e1b96e4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/scene/shared/model/UserActionResult.kt
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+data class UserActionResult(
+
+    /** The scene we should be transitioning due to the [UserAction]. */
+    val toScene: SceneKey,
+
+    /**
+     * The distance the action takes to animate from 0% to 100%.
+     *
+     * If `null`, a default distance will be used depending on the [UserAction] performed.
+     */
+    val distance: UserActionDistance? = null,
+
+    /**
+     * The key of the transition that should be used, if a specific one should be used.
+     *
+     * If `null`, the transition used will be the corresponding transition from the collection
+     * passed into the UI layer.
+     */
+    val transitionKey: TransitionKey? = null,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt
index c88a04c..67dc0cc 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootView.kt
@@ -7,6 +7,7 @@
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.scene.shared.model.Scene
 import com.android.systemui.scene.shared.model.SceneContainerConfig
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import com.android.systemui.statusbar.notification.stack.ui.view.SharedNotificationContainer
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -33,6 +34,7 @@
         flags: SceneContainerFlags,
         scenes: Set<Scene>,
         layoutInsetController: LayoutInsetsController,
+        sceneDataSourceDelegator: SceneDataSourceDelegator,
     ) {
         this.viewModel = viewModel
         setLayoutInsetsController(layoutInsetController)
@@ -46,7 +48,8 @@
             scenes = scenes,
             onVisibilityChangedInternal = { isVisible ->
                 super.setVisibility(if (isVisible) View.VISIBLE else View.INVISIBLE)
-            }
+            },
+            dataSourceDelegator = sceneDataSourceDelegator,
         )
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
index 2b978b2..45b6f65 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/view/SceneWindowRootViewBinder.kt
@@ -34,6 +34,7 @@
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.scene.shared.model.Scene
 import com.android.systemui.scene.shared.model.SceneContainerConfig
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.shared.model.SceneKey
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
 import com.android.systemui.statusbar.notification.stack.shared.flexiNotifsEnabled
@@ -54,6 +55,7 @@
         flags: SceneContainerFlags,
         scenes: Set<Scene>,
         onVisibilityChangedInternal: (isVisible: Boolean) -> Unit,
+        dataSourceDelegator: SceneDataSourceDelegator,
     ) {
         val unsortedSceneByKey: Map<SceneKey, Scene> = scenes.associateBy { scene -> scene.key }
         val sortedSceneByKey: Map<SceneKey, Scene> = buildMap {
@@ -90,6 +92,7 @@
                                 viewModel = viewModel,
                                 windowInsets = windowInsets,
                                 sceneByKey = sortedSceneByKey,
+                                dataSourceDelegator = dataSourceDelegator,
                             )
                             .also { it.id = R.id.scene_container_root_composable }
                     )
diff --git a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
index 2431660..5d290ce 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/ui/viewmodel/SceneContainerViewModel.kt
@@ -22,7 +22,6 @@
 import com.android.systemui.scene.domain.interactor.SceneInteractor
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
@@ -44,19 +43,11 @@
     val allSceneKeys: List<SceneKey> = sceneInteractor.allSceneKeys()
 
     /** The scene that should be rendered. */
-    val currentScene: StateFlow<SceneModel> = sceneInteractor.desiredScene
+    val currentScene: StateFlow<SceneKey> = sceneInteractor.currentScene
 
     /** Whether the container is visible. */
     val isVisible: StateFlow<Boolean> = sceneInteractor.isVisible
 
-    /** Notifies that the UI has transitioned sufficiently to the given scene. */
-    fun onSceneChanged(scene: SceneModel) {
-        sceneInteractor.onSceneChanged(
-            scene = scene,
-            loggingReason = SCENE_TRANSITION_LOGGING_REASON,
-        )
-    }
-
     /**
      * Binds the given flow so the system remembers it.
      *
diff --git a/packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt b/packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt
index 2f0fc51..ee602e5 100644
--- a/packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/sensorprivacy/SensorUseStartedActivity.kt
@@ -23,6 +23,7 @@
 import android.content.DialogInterface.BUTTON_POSITIVE
 import android.content.Intent
 import android.content.Intent.EXTRA_PACKAGE_NAME
+import android.content.pm.PackageManager
 import android.hardware.SensorPrivacyManager
 import android.hardware.SensorPrivacyManager.EXTRA_ALL_SENSORS
 import android.hardware.SensorPrivacyManager.EXTRA_SENSOR
@@ -31,6 +32,7 @@
 import android.os.Handler
 import android.window.OnBackInvokedDispatcher
 import androidx.annotation.OpenForTesting
+import com.android.internal.camera.flags.Flags
 import com.android.internal.util.FrameworkStatsLog.PRIVACY_TOGGLE_DIALOG_INTERACTION
 import com.android.internal.util.FrameworkStatsLog.PRIVACY_TOGGLE_DIALOG_INTERACTION__ACTION__CANCEL
 import com.android.internal.util.FrameworkStatsLog.PRIVACY_TOGGLE_DIALOG_INTERACTION__ACTION__ENABLE
@@ -90,14 +92,14 @@
             sensor = ALL_SENSORS
             val callback = IndividualSensorPrivacyController.Callback { _, _ ->
                 if (!sensorPrivacyController.isSensorBlocked(MICROPHONE) &&
-                        !sensorPrivacyController.isSensorBlocked(CAMERA)) {
+                        !isCameraBlocked(sensorUsePackageName)) {
                     finish()
                 }
             }
             sensorPrivacyListener = callback
             sensorPrivacyController.addCallback(callback)
             if (!sensorPrivacyController.isSensorBlocked(MICROPHONE) &&
-                    !sensorPrivacyController.isSensorBlocked(CAMERA)) {
+                    !isCameraBlocked(sensorUsePackageName)) {
                 finish()
                 return
             }
@@ -110,14 +112,22 @@
             }
             val callback = IndividualSensorPrivacyController.Callback {
                 whichSensor: Int, isBlocked: Boolean ->
-                if (whichSensor == sensor && !isBlocked) {
+                if (whichSensor != sensor) {
+                    // Ignore a callback; we're not interested in.
+                } else if ((whichSensor == CAMERA) && !isCameraBlocked(sensorUsePackageName)) {
+                    finish()
+                } else if ((whichSensor == MICROPHONE) && !isBlocked) {
                     finish()
                 }
             }
             sensorPrivacyListener = callback
             sensorPrivacyController.addCallback(callback)
 
-            if (!sensorPrivacyController.isSensorBlocked(sensor)) {
+            if ((sensor == CAMERA) && !isCameraBlocked(sensorUsePackageName)) {
+                finish()
+                return
+            } else if ((sensor == MICROPHONE) &&
+                    !sensorPrivacyController.isSensorBlocked(MICROPHONE)) {
                 finish()
                 return
             }
@@ -204,6 +214,22 @@
         recreate()
     }
 
+    private fun isAutomotive(): Boolean {
+        return getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)
+    }
+
+    private fun isCameraBlocked(packageName: String): Boolean {
+        if (Flags.cameraPrivacyAllowlist()) {
+            if (isAutomotive()) {
+                return sensorPrivacyController.isCameraPrivacyEnabled(packageName)
+            } else {
+                return sensorPrivacyController.isSensorBlocked(CAMERA)
+            }
+        } else {
+            return sensorPrivacyController.isSensorBlocked(CAMERA)
+        }
+    }
+
     private fun disableSensorPrivacy() {
         if (sensor == ALL_SENSORS) {
             sensorPrivacyController.setSensorBlocked(DIALOG, MICROPHONE, false)
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
index 2968490..9a03393 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java
@@ -71,7 +71,6 @@
 import android.util.Log;
 import android.util.MathUtils;
 import android.view.HapticFeedbackConstants;
-import android.view.InputDevice;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
@@ -137,7 +136,6 @@
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
 import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver;
 import com.android.systemui.keyguard.shared.ComposeLockscreen;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.shared.model.TransitionState;
 import com.android.systemui.keyguard.shared.model.TransitionStep;
 import com.android.systemui.keyguard.ui.binder.KeyguardLongPressViewBinder;
@@ -1022,7 +1020,7 @@
                 instantCollapse();
             } else {
                 mView.animate().cancel();
-                if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                if (!migrateClocksToBlueprint()) {
                     mView.animate()
                             .alpha(0f)
                             .setStartDelay(0)
@@ -1158,9 +1156,9 @@
         // Occluded->Lockscreen
         collectFlow(mView, mKeyguardTransitionInteractor.getOccludedToLockscreenTransition(),
                 mOccludedToLockscreenTransition, mMainDispatcher);
-        collectFlow(mView, mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha(),
-                setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
+            collectFlow(mView, mOccludedToLockscreenTransitionViewModel.getLockscreenAlpha(),
+                    setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
             collectFlow(mView,
                     mOccludedToLockscreenTransitionViewModel.getLockscreenTranslationY(),
                     setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
@@ -1169,9 +1167,11 @@
         // Lockscreen->Dreaming
         collectFlow(mView, mKeyguardTransitionInteractor.getLockscreenToDreamingTransition(),
                 mLockscreenToDreamingTransition, mMainDispatcher);
-        collectFlow(mView, mLockscreenToDreamingTransitionViewModel.getLockscreenAlpha(),
-                setDreamLockscreenTransitionAlpha(mNotificationStackScrollLayoutController),
-                mMainDispatcher);
+        if (!migrateClocksToBlueprint()) {
+            collectFlow(mView, mLockscreenToDreamingTransitionViewModel.getLockscreenAlpha(),
+                    setDreamLockscreenTransitionAlpha(mNotificationStackScrollLayoutController),
+                    mMainDispatcher);
+        }
         collectFlow(mView, mLockscreenToDreamingTransitionViewModel.lockscreenTranslationY(
                 mLockscreenToDreamingTransitionTranslationY),
                 setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
@@ -1179,8 +1179,10 @@
         // Gone->Dreaming
         collectFlow(mView, mKeyguardTransitionInteractor.getGoneToDreamingTransition(),
                 mGoneToDreamingTransition, mMainDispatcher);
-        collectFlow(mView, mGoneToDreamingTransitionViewModel.getLockscreenAlpha(),
-                setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
+        if (!migrateClocksToBlueprint()) {
+            collectFlow(mView, mGoneToDreamingTransitionViewModel.getLockscreenAlpha(),
+                    setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
+        }
         collectFlow(mView, mGoneToDreamingTransitionViewModel.lockscreenTranslationY(
                 mGoneToDreamingTransitionTranslationY),
                 setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
@@ -1188,16 +1190,18 @@
         // Lockscreen->Occluded
         collectFlow(mView, mKeyguardTransitionInteractor.getLockscreenToOccludedTransition(),
                 mLockscreenToOccludedTransition, mMainDispatcher);
-        collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenAlpha(),
-                setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
+            collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenAlpha(),
+                    setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
             collectFlow(mView, mLockscreenToOccludedTransitionViewModel.getLockscreenTranslationY(),
                     setTransitionY(mNotificationStackScrollLayoutController), mMainDispatcher);
         }
 
         // Primary bouncer->Gone (ensures lockscreen content is not visible on successful auth)
-        collectFlow(mView, mPrimaryBouncerToGoneTransitionViewModel.getLockscreenAlpha(),
-                setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
+        if (!migrateClocksToBlueprint()) {
+            collectFlow(mView, mPrimaryBouncerToGoneTransitionViewModel.getLockscreenAlpha(),
+                    setTransitionAlpha(mNotificationStackScrollLayoutController), mMainDispatcher);
+        }
     }
 
     @VisibleForTesting
@@ -1272,7 +1276,7 @@
             mKeyguardStatusViewController.onDestroy();
         }
 
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             // Need a shared controller until mKeyguardStatusViewController can be removed from
             // here, due to important state being set in that controller. Rebind in order to pick
             // up config changes
@@ -1328,7 +1332,7 @@
         // Reset any left over overscroll state. It is a rare corner case but can happen.
         mQsController.setOverScrollAmount(0);
         mScrimController.setNotificationsOverScrollAmount(0);
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mNotificationStackScrollLayoutController.setOverExpansion(0);
             mNotificationStackScrollLayoutController.setOverScrollAmount(0);
         }
@@ -1349,7 +1353,7 @@
         }
         updateClockAppearance();
         mQsController.updateQsState();
-        if (!KeyguardShadeMigrationNssl.isEnabled() && !FooterViewRefactor.isEnabled()) {
+        if (!migrateClocksToBlueprint() && !FooterViewRefactor.isEnabled()) {
             mNotificationStackScrollLayoutController.updateFooter();
         }
     }
@@ -1381,7 +1385,7 @@
     void reInflateViews() {
         debugLog("reInflateViews");
         // Re-inflate the status view group.
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             KeyguardStatusView keyguardStatusView =
                     mNotificationContainerParent.findViewById(R.id.keyguard_status_view);
             int statusIndex = mNotificationContainerParent.indexOfChild(keyguardStatusView);
@@ -1501,7 +1505,7 @@
     }
 
     private void updateMaxDisplayedNotifications(boolean recompute) {
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             return;
         }
 
@@ -1658,7 +1662,7 @@
                 mKeyguardStatusViewController.getClockBottom(mStatusBarHeaderHeightKeyguard),
                 mKeyguardStatusViewController.isClockTopAligned());
         mClockPositionAlgorithm.run(mClockPositionResult);
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mKeyguardStatusViewController.setLockscreenClockY(
                     mClockPositionAlgorithm.getExpandedPreferredClockY());
         }
@@ -1672,7 +1676,7 @@
         boolean animate = mNotificationStackScrollLayoutController.isAddOrRemoveAnimationPending();
         boolean animateClock = (animate || mAnimateNextPositionUpdate) && shouldAnimateClockChange;
 
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mKeyguardStatusViewController.updatePosition(
                     mClockPositionResult.clockX, mClockPositionResult.clockY,
                     mClockPositionResult.clockScale, animateClock);
@@ -1748,7 +1752,7 @@
     private void updateKeyguardStatusViewAlignment(boolean animate) {
         boolean shouldBeCentered = shouldKeyguardStatusViewBeCentered();
         ConstraintLayout layout;
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             layout = mKeyguardViewConfigurator.getKeyguardRootView();
         } else {
             layout = mNotificationContainerParent;
@@ -1924,7 +1928,7 @@
         }
         float alpha = mClockPositionResult.clockAlpha * mKeyguardOnlyContentAlpha;
         mKeyguardStatusViewController.setAlpha(alpha);
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             // TODO (b/296373478) This is for split shade media movement.
         } else {
             mKeyguardStatusViewController
@@ -2517,7 +2521,7 @@
     void requestScrollerTopPaddingUpdate(boolean animate) {
         float padding = mQsController.calculateNotificationsTopPadding(mIsExpandingOrCollapsing,
                 getKeyguardNotificationStaticPadding(), mExpandedFraction);
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             mSharedNotificationContainerInteractor.setTopPosition(padding);
         } else {
             mNotificationStackScrollLayoutController.updateTopPadding(padding, animate);
@@ -2699,7 +2703,7 @@
             return;
         }
 
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             float alpha = 1f;
             if (mClosingWithAlphaFadeOut && !mExpandingFromHeadsUp
                 && !mHeadsUpManager.hasPinnedHeadsUp()) {
@@ -2734,6 +2738,9 @@
     }
 
     private void updateKeyguardBottomAreaAlpha() {
+        if (migrateClocksToBlueprint()) {
+            return;
+        }
         if (mIsOcclusionTransitionRunning) {
             return;
         }
@@ -2972,7 +2979,7 @@
 
     @Override
     public void onScreenTurningOn() {
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mKeyguardStatusViewController.dozeTimeTick();
         }
     }
@@ -3224,7 +3231,7 @@
 
     public void dozeTimeTick() {
         mLockIconViewController.dozeTimeTick();
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mKeyguardStatusViewController.dozeTimeTick();
         }
         if (mInterpolatedDarkAmount > 0) {
@@ -4440,7 +4447,7 @@
                     && statusBarState == KEYGUARD) {
                 // This means we're doing the screen off animation - position the keyguard status
                 // view where it'll be on AOD, so we can animate it in.
-                if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                if (!migrateClocksToBlueprint()) {
                     mKeyguardStatusViewController.updatePosition(
                             mClockPositionResult.clockX,
                             mClockPositionResult.clockYFullyDozing,
@@ -4560,7 +4567,7 @@
         setDozing(true /* dozing */, false /* animate */);
         mStatusBarStateController.setUpcomingState(KEYGUARD);
 
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             mStatusBarStateController.setState(KEYGUARD);
         } else {
             mStatusBarStateListener.onStateChanged(KEYGUARD);
@@ -4621,7 +4628,7 @@
             setIsFullWidth(mNotificationStackScrollLayoutController.getWidth() == mView.getWidth());
 
             // Update Clock Pivot (used by anti-burnin transformations)
-            if (!KeyguardShadeMigrationNssl.isEnabled()) {
+            if (!migrateClocksToBlueprint()) {
                 mKeyguardStatusViewController.updatePivot(mView.getWidth(), mView.getHeight());
             }
 
@@ -4731,7 +4738,7 @@
     private Consumer<Float> setTransitionY(
                 NotificationStackScrollLayoutController stackScroller) {
         return (Float translationY) -> {
-            if (!KeyguardShadeMigrationNssl.isEnabled()) {
+            if (!migrateClocksToBlueprint()) {
                 mKeyguardStatusViewController.setTranslationY(translationY,
                         /* excludeMedia= */false);
                 stackScroller.setTranslationY(translationY);
@@ -4773,7 +4780,7 @@
          */
         @Override
         public boolean onInterceptTouchEvent(MotionEvent event) {
-            if (KeyguardShadeMigrationNssl.isEnabled() && !mUseExternalTouch) {
+            if (migrateClocksToBlueprint() && !mUseExternalTouch) {
                 return false;
             }
 
@@ -4844,7 +4851,7 @@
 
             switch (event.getActionMasked()) {
                 case MotionEvent.ACTION_DOWN:
-                    if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                    if (!migrateClocksToBlueprint()) {
                         mCentralSurfaces.userActivity();
                     }
                     mAnimatingOnDown = mHeightAnimator != null && !mIsSpringBackAnimation;
@@ -4945,7 +4952,7 @@
          */
         @Override
         public boolean onTouchEvent(MotionEvent event) {
-            if (KeyguardShadeMigrationNssl.isEnabled() && !mUseExternalTouch) {
+            if (migrateClocksToBlueprint() && !mUseExternalTouch) {
                 return false;
             }
 
@@ -5057,19 +5064,6 @@
                 return false;
             }
 
-            final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(
-                    mTrackpadGestureFeaturesEnabled, event) || isTrackpadThreeFingerSwipe(
-                    mTrackpadGestureFeaturesEnabled, event);
-
-            // On expanding, single mouse click expands the panel instead of dragging.
-            if (isFullyCollapsed() && (event.isFromSource(InputDevice.SOURCE_MOUSE)
-                    && !isTrackpadTwoOrThreeFingerSwipe)) {
-                if (event.getAction() == MotionEvent.ACTION_UP) {
-                    expand(true /* animate */);
-                }
-                return true;
-            }
-
             /*
              * We capture touch events here and update the expand height here in case according to
              * the users fingers. This also handles multi-touch.
@@ -5090,6 +5084,10 @@
                 mIgnoreXTouchSlop = true;
             }
 
+            final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(
+                    mTrackpadGestureFeaturesEnabled, event) || isTrackpadThreeFingerSwipe(
+                    mTrackpadGestureFeaturesEnabled, event);
+
             switch (event.getActionMasked()) {
                 case MotionEvent.ACTION_DOWN:
                     if (QuickStepContract.ALLOW_BACK_GESTURE_IN_SHADE && mAnimateBack) {
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
index aa2d606..99e91c1 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.shade;
 
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 import static com.android.systemui.flags.Flags.LOCKSCREEN_WALLPAPER_DREAM_ENABLED;
 import static com.android.systemui.flags.Flags.TRACKPAD_GESTURE_COMMON;
 import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
@@ -48,7 +49,6 @@
 import com.android.systemui.keyevent.domain.interactor.SysUIKeyEventHandler;
 import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.shared.model.TransitionState;
 import com.android.systemui.keyguard.shared.model.TransitionStep;
 import com.android.systemui.keyguard.ui.binder.AlternateBouncerViewBinder;
@@ -320,7 +320,7 @@
                     mTouchActive = true;
                     mTouchCancelled = false;
                     mDownEvent = ev;
-                    if (KeyguardShadeMigrationNssl.isEnabled()) {
+                    if (migrateClocksToBlueprint()) {
                         mService.userActivity();
                     }
                 } else if (ev.getActionMasked() == MotionEvent.ACTION_UP
@@ -475,7 +475,7 @@
                         && !bouncerShowing
                         && !mStatusBarStateController.isDozing()) {
                     if (mDragDownHelper.isDragDownEnabled()) {
-                        if (KeyguardShadeMigrationNssl.isEnabled()) {
+                        if (migrateClocksToBlueprint()) {
                             // When on lockscreen, if the touch originates at the top of the screen
                             // go directly to QS and not the shade
                             if (mStatusBarStateController.getState() == KEYGUARD
@@ -488,7 +488,7 @@
 
                         // This handles drag down over lockscreen
                         boolean result = mDragDownHelper.onInterceptTouchEvent(ev);
-                        if (KeyguardShadeMigrationNssl.isEnabled()) {
+                        if (migrateClocksToBlueprint()) {
                             if (result) {
                                 mLastInterceptWasDragDownHelper = true;
                                 if (ev.getAction() == MotionEvent.ACTION_DOWN) {
@@ -520,7 +520,7 @@
                 MotionEvent cancellation = MotionEvent.obtain(ev);
                 cancellation.setAction(MotionEvent.ACTION_CANCEL);
                 mStackScrollLayout.onInterceptTouchEvent(cancellation);
-                if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                if (!migrateClocksToBlueprint()) {
                     mNotificationPanelViewController.handleExternalInterceptTouch(cancellation);
                 }
                 cancellation.recycle();
@@ -535,7 +535,7 @@
                 if (mStatusBarKeyguardViewManager.onTouch(ev)) {
                     return true;
                 }
-                if (KeyguardShadeMigrationNssl.isEnabled()) {
+                if (migrateClocksToBlueprint()) {
                     if (mLastInterceptWasDragDownHelper && (mDragDownHelper.isDraggingDown())) {
                         // we still want to finish our drag down gesture when locking the screen
                         handled |= mDragDownHelper.onTouchEvent(ev) || handled;
@@ -625,7 +625,7 @@
     }
 
     private boolean didNotificationPanelInterceptEvent(MotionEvent ev) {
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             // Since NotificationStackScrollLayout is now a sibling of notification_panel, we need
             // to also ask NotificationPanelViewController directly, in order to process swipe up
             // events originating from notifications
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQSContainerController.kt b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQSContainerController.kt
index c0afa32..457b3d7 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQSContainerController.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQSContainerController.kt
@@ -28,10 +28,10 @@
 import androidx.constraintlayout.widget.ConstraintSet.TOP
 import androidx.lifecycle.lifecycleScope
 import com.android.systemui.Flags.centralizedStatusBarDimensRefactor
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.fragments.FragmentService
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.lifecycle.repeatWhenAttached
 import com.android.systemui.navigationbar.NavigationModeController
 import com.android.systemui.plugins.qs.QS
@@ -284,7 +284,7 @@
     }
 
     private fun setNotificationsConstraints(constraintSet: ConstraintSet) {
-        if (KeyguardShadeMigrationNssl.isEnabled) {
+        if (migrateClocksToBlueprint()) {
             return
         }
         val startConstraintId = if (splitShadeEnabled) R.id.qs_edge_guideline else PARENT_ID
diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java
index 25e558e..e82f2d3 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationsQuickSettingsContainer.java
@@ -18,6 +18,8 @@
 
 import static androidx.constraintlayout.core.widgets.Optimizer.OPTIMIZATION_GRAPH;
 
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
+
 import android.app.Fragment;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -33,7 +35,6 @@
 import androidx.constraintlayout.widget.ConstraintSet;
 
 import com.android.systemui.fragments.FragmentHostManager.FragmentListener;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.plugins.qs.QS;
 import com.android.systemui.res.R;
 import com.android.systemui.statusbar.notification.AboveShelfObserver;
@@ -189,7 +190,7 @@
 
     @Override
     protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
-        if (KeyguardShadeMigrationNssl.isEnabled()) {
+        if (migrateClocksToBlueprint()) {
             return super.drawChild(canvas, child, drawingTime);
         }
         int layoutIndex = mLayoutDrawingOrder.indexOf(child);
diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
index f3e9c75..f86c71b 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
+++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java
@@ -21,6 +21,7 @@
 
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE;
 import static com.android.systemui.Flags.centralizedStatusBarDimensRefactor;
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
 import static com.android.systemui.shade.NotificationPanelViewController.COUNTER_PANEL_OPEN_QS;
 import static com.android.systemui.shade.NotificationPanelViewController.FLING_COLLAPSE;
@@ -70,7 +71,6 @@
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor;
 import com.android.systemui.dump.DumpManager;
 import com.android.systemui.fragments.FragmentHostManager;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.media.controls.pipeline.MediaDataManager;
 import com.android.systemui.media.controls.ui.MediaHierarchyManager;
 import com.android.systemui.plugins.FalsingManager;
@@ -1782,7 +1782,7 @@
                     // Dragging down on the lockscreen statusbar should prohibit other interactions
                     // immediately, otherwise we'll wait on the touchslop. This is to allow
                     // dragging down to expanded quick settings directly on the lockscreen.
-                    if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                    if (!migrateClocksToBlueprint()) {
                         mPanelView.getParent().requestDisallowInterceptTouchEvent(true);
                     }
                 }
@@ -1827,7 +1827,7 @@
                         && Math.abs(h) > Math.abs(x - mInitialTouchX)
                         && shouldQuickSettingsIntercept(
                         mInitialTouchX, mInitialTouchY, h)) {
-                    if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                    if (!migrateClocksToBlueprint()) {
                         mPanelView.getParent().requestDisallowInterceptTouchEvent(true);
                     }
                     mShadeLog.onQsInterceptMoveQsTrackingEnabled(h);
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
index 4e8b403..6a2a6a4 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeControllerSceneImpl.kt
@@ -26,7 +26,8 @@
 import com.android.systemui.log.dagger.ShadeTouchLog
 import com.android.systemui.scene.domain.interactor.SceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
+import com.android.systemui.scene.shared.model.TransitionKeys.CollapseShadeInstantly
+import com.android.systemui.scene.shared.model.TransitionKeys.SlightlyFasterShadeCollapse
 import com.android.systemui.shade.ShadeController.ShadeVisibilityListener
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.statusbar.CommandQueue
@@ -97,8 +98,9 @@
     override fun instantCollapseShade() {
         // TODO(b/315921512) add support for instant transition
         sceneInteractor.changeScene(
-            SceneModel(getCollapseDestinationScene(), "instant"),
-            "hide shade"
+            getCollapseDestinationScene(),
+            "hide shade",
+            CollapseShadeInstantly,
         )
     }
 
@@ -119,10 +121,7 @@
             // release focus immediately to kick off focus change transition
             notificationShadeWindowController.setNotificationShadeFocusable(false)
             notificationStackScrollLayout.cancelExpandHelper()
-            sceneInteractor.changeScene(
-                SceneModel(SceneKey.Shade, null),
-                "ShadeController.animateExpandShade"
-            )
+            sceneInteractor.changeScene(SceneKey.Shade, "ShadeController.animateExpandShade")
             if (delayed) {
                 scope.launch {
                     delay(125)
@@ -136,8 +135,9 @@
 
     private fun animateCollapseShadeInternal() {
         sceneInteractor.changeScene(
-            SceneModel(getCollapseDestinationScene(), "ShadeController.animateCollapseShade"),
-            "ShadeController.animateCollapseShade"
+            getCollapseDestinationScene(),
+            "ShadeController.animateCollapseShade",
+            SlightlyFasterShadeCollapse,
         )
     }
 
@@ -183,17 +183,11 @@
     }
 
     override fun expandToNotifications() {
-        sceneInteractor.changeScene(
-            SceneModel(SceneKey.Shade, null),
-            "ShadeController.animateExpandShade"
-        )
+        sceneInteractor.changeScene(SceneKey.Shade, "ShadeController.animateExpandShade")
     }
 
     override fun expandToQs() {
-        sceneInteractor.changeScene(
-            SceneModel(SceneKey.QuickSettings, null),
-            "ShadeController.animateExpandQs"
-        )
+        sceneInteractor.changeScene(SceneKey.QuickSettings, "ShadeController.animateExpandQs")
     }
 
     override fun setVisibilityListener(listener: ShadeVisibilityListener) {
@@ -243,11 +237,11 @@
     }
 
     override fun isExpandedVisible(): Boolean {
-        return sceneInteractor.desiredScene.value.key != SceneKey.Gone
+        return sceneInteractor.currentScene.value != SceneKey.Gone
     }
 
     override fun onStatusBarTouch(event: MotionEvent) {
-        // The only call to this doesn't happen with KeyguardShadeMigrationNssl enabled
+        // The only call to this doesn't happen with migrateClocksToBlueprint() enabled
         throw UnsupportedOperationException()
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeViewProviderModule.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeViewProviderModule.kt
index f40be4b..2cb9f9a 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/ShadeViewProviderModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeViewProviderModule.kt
@@ -35,6 +35,7 @@
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.scene.shared.model.Scene
 import com.android.systemui.scene.shared.model.SceneContainerConfig
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.scene.ui.view.SceneWindowRootView
 import com.android.systemui.scene.ui.view.WindowRootView
 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
@@ -72,6 +73,7 @@
             flagsProvider: Provider<SceneContainerFlags>,
             scenesProvider: Provider<Set<@JvmSuppressWildcards Scene>>,
             layoutInsetController: NotificationInsetsController,
+            sceneDataSourceDelegator: Provider<SceneDataSourceDelegator>,
         ): WindowRootView {
             return if (sceneContainerFlags.isEnabled()) {
                 val sceneWindowRootView =
@@ -84,6 +86,7 @@
                     flags = flagsProvider.get(),
                     scenes = scenesProvider.get(),
                     layoutInsetController = layoutInsetController,
+                    sceneDataSourceDelegator = sceneDataSourceDelegator.get(),
                 )
                 sceneWindowRootView
             } else {
diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
index 9bbe1bd..a2e2598 100644
--- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeBackActionInteractorImpl.kt
@@ -19,7 +19,6 @@
 import com.android.systemui.deviceentry.domain.interactor.DeviceEntryInteractor
 import com.android.systemui.scene.domain.interactor.SceneInteractor
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import javax.inject.Inject
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 
@@ -44,7 +43,7 @@
                 } else {
                     SceneKey.Shade
                 }
-            sceneInteractor.changeScene(SceneModel(key), "animateCollapseQs")
+            sceneInteractor.changeScene(key, "animateCollapseQs")
         }
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt b/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
index 095d30e..52a1c15 100644
--- a/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
@@ -21,7 +21,9 @@
 import android.widget.RemoteViews
 import com.android.systemui.communal.smartspace.CommunalSmartspaceController
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.plugins.BcSmartspaceDataPlugin
+import java.util.concurrent.Executor
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -41,6 +43,7 @@
 @Inject
 constructor(
     private val communalSmartspaceController: CommunalSmartspaceController,
+    @Main private val uiExecutor: Executor,
 ) : SmartspaceRepository, BcSmartspaceDataPlugin.SmartspaceTargetListener {
 
     override val isSmartspaceRemoteViewsEnabled: Boolean
@@ -51,12 +54,18 @@
     override val communalSmartspaceTargets: Flow<List<SmartspaceTarget>> =
         _communalSmartspaceTargets
             .onStart {
-                communalSmartspaceController.addListener(listener = this@SmartspaceRepositoryImpl)
+                uiExecutor.execute {
+                    communalSmartspaceController.addListener(
+                        listener = this@SmartspaceRepositoryImpl
+                    )
+                }
             }
             .onCompletion {
-                communalSmartspaceController.removeListener(
-                    listener = this@SmartspaceRepositoryImpl
-                )
+                uiExecutor.execute {
+                    communalSmartspaceController.removeListener(
+                        listener = this@SmartspaceRepositoryImpl
+                    )
+                }
             }
 
     override fun onSmartspaceTargetsUpdated(targetsNullable: MutableList<out Parcelable>?) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 04d9b0c..19fe60a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -16,6 +16,7 @@
 
 package com.android.systemui.statusbar;
 
+import static android.adaptiveauth.Flags.enableAdaptiveAuth;
 import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED;
 import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_MANAGEMENT_DISCLOSURE;
 import static android.app.admin.DevicePolicyResources.Strings.SystemUi.KEYGUARD_NAMED_MANAGEMENT_DISCLOSURE;
@@ -32,6 +33,7 @@
 import static com.android.systemui.flags.Flags.LOCKSCREEN_WALLPAPER_DREAM_ENABLED;
 import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.IMPORTANT_MSG_MIN_DURATION;
 import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_IS_DISMISSIBLE;
+import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_ADAPTIVE_AUTH;
 import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_ALIGNMENT;
 import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_BATTERY;
 import static com.android.systemui.keyguard.KeyguardIndicationRotateTextViewController.INDICATION_TYPE_BIOMETRIC_MESSAGE;
@@ -87,6 +89,7 @@
 import com.android.settingslib.fuelgauge.BatteryStatus;
 import com.android.systemui.biometrics.AuthController;
 import com.android.systemui.biometrics.FaceHelpMessageDeferral;
+import com.android.systemui.biometrics.FaceHelpMessageDeferralFactory;
 import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
 import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
 import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -270,7 +273,7 @@
             ScreenLifecycle screenLifecycle,
             KeyguardBypassController keyguardBypassController,
             AccessibilityManager accessibilityManager,
-            FaceHelpMessageDeferral faceHelpMessageDeferral,
+            FaceHelpMessageDeferralFactory faceHelpMessageDeferral,
             KeyguardLogger keyguardLogger,
             AlternateBouncerInteractor alternateBouncerInteractor,
             AlarmManager alarmManager,
@@ -308,7 +311,7 @@
         mIndicationHelper = indicationHelper;
         mKeyguardInteractor = keyguardInteractor;
 
-        mFaceAcquiredMessageDeferral = faceHelpMessageDeferral;
+        mFaceAcquiredMessageDeferral = faceHelpMessageDeferral.create();
         mCoExFaceAcquisitionMsgIdsToShow = new HashSet<>();
         int[] msgIds = context.getResources().getIntArray(
                 com.android.systemui.res.R.array.config_face_help_msgs_when_fingerprint_enrolled);
@@ -453,6 +456,9 @@
         updateLockScreenAlignmentMsg();
         updateLockScreenLogoutView();
         updateLockScreenPersistentUnlockMsg();
+        if (enableAdaptiveAuth()) {
+            updateLockScreenAdaptiveAuthMsg(userId);
+        }
     }
 
     private void updateOrganizedOwnedDevice() {
@@ -739,6 +745,22 @@
         }
     }
 
+    private void updateLockScreenAdaptiveAuthMsg(int userId) {
+        final boolean deviceLocked = mKeyguardUpdateMonitor.isDeviceLockedByAdaptiveAuth(userId);
+        if (deviceLocked) {
+            mRotateTextViewController.updateIndication(
+                    INDICATION_TYPE_ADAPTIVE_AUTH,
+                    new KeyguardIndication.Builder()
+                            .setMessage(mContext
+                                    .getString(R.string.kg_prompt_after_adaptive_auth_lock))
+                            .setTextColor(mInitialTextColorState)
+                            .build(),
+                    true);
+        } else {
+            mRotateTextViewController.hideIndication(INDICATION_TYPE_ADAPTIVE_AUTH);
+        }
+    }
+
     private boolean isOrganizationOwnedDevice() {
         return mDevicePolicyManager.isDeviceManaged()
                 || mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index ef50265..2e71103 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -15,6 +15,7 @@
 import com.android.systemui.Dumpable
 import com.android.systemui.ExpandHelper
 import com.android.systemui.Flags.nsslFalsingFix
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.Gefingerpoken
 import com.android.systemui.biometrics.UdfpsKeyguardViewControllerLegacy
 import com.android.systemui.classifier.Classifier
@@ -23,7 +24,6 @@
 import com.android.systemui.dump.DumpManager
 import com.android.systemui.keyguard.WakefulnessLifecycle
 import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.media.controls.ui.MediaHierarchyManager
 import com.android.systemui.navigationbar.gestural.Utilities.isTrackpadScroll
 import com.android.systemui.plugins.ActivityStarter
@@ -890,7 +890,7 @@
                     isDraggingDown = false
                     isTrackpadReverseScroll = false
                     shadeRepository.setLegacyLockscreenShadeTracking(false)
-                    if (nsslFalsingFix() || KeyguardShadeMigrationNssl.isEnabled) {
+                    if (nsslFalsingFix() || migrateClocksToBlueprint()) {
                         return true
                     }
                 } else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 2a4753d..9916ef6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -749,7 +749,7 @@
                 || isNotifUserRedacted;
 
         boolean notificationRequestsRedaction =
-                ent.getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
+                ent.isNotificationVisibilityPrivate();
         boolean userForcesRedaction = packageHasVisibilityOverride(ent.getSbn().getKey());
 
         if (keyguardPrivateNotifications()) {
@@ -767,9 +767,7 @@
         }
         NotificationEntry entry = mCommonNotifCollectionLazy.get().getEntry(key);
         if (mFeatureFlags.isEnabled(Flags.NOTIF_LS_BACKGROUND_THREAD)) {
-            return entry != null && entry.getRanking().getChannel() != null
-                    && entry.getRanking().getChannel().getLockscreenVisibility()
-                    == Notification.VISIBILITY_PRIVATE;
+            return entry != null && entry.isChannelVisibilityPrivate();
         } else {
             return entry != null
                     && entry.getRanking().getLockscreenVisibilityOverride()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
index 4d37335..0e0f152 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java
@@ -766,7 +766,6 @@
             }
 
         } else if (viewEnd >= shelfClipStart
-                && view.isInShelf()
                 && (mAmbientState.isShadeExpanded()
                 || (!view.isPinned() && !view.isHeadsUpAnimatingAway()))) {
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationContentDescription.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationContentDescription.kt
index e7012ea51..17fc5c6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationContentDescription.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationContentDescription.kt
@@ -20,35 +20,14 @@
 
 import android.app.Notification
 import android.content.Context
-import android.content.pm.ApplicationInfo
 import android.text.TextUtils
-import android.util.Log
 import androidx.annotation.MainThread
 import com.android.systemui.res.R
 
-/**
- * Returns accessibility content description for a given notification.
- *
- * NOTE: This is a relatively slow call.
- */
+/** Returns accessibility content description for a given notification. */
 @MainThread
 fun contentDescForNotification(c: Context, n: Notification?): CharSequence {
-    var appName = ""
-    try {
-        val builder = Notification.Builder.recoverBuilder(c, n)
-        appName = builder.loadHeaderAppName()
-    } catch (e: RuntimeException) {
-        Log.e("ContentDescription", "Unable to recover builder", e)
-        // Trying to get the app name from the app info instead.
-        val appInfo =
-            n?.extras?.getParcelable(
-                Notification.EXTRA_BUILDER_APPLICATION_INFO,
-                ApplicationInfo::class.java
-            )
-        if (appInfo != null) {
-            appName = appInfo.loadLabel(c.packageManager).toString()
-        }
-    }
+    val appName = n?.loadHeaderAppName(c) ?: ""
     val title = n?.extras?.getCharSequence(Notification.EXTRA_TITLE)
     val text = n?.extras?.getCharSequence(Notification.EXTRA_TEXT)
     val ticker = n?.tickerText
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 8678f0a..e111525 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -998,6 +998,23 @@
         return style == null ? "nostyle" : style.getSimpleName();
     }
 
+    /**
+     * Return {@code true} if notification's visibility is {@link Notification.VISIBILITY_PRIVATE}
+     */
+    public boolean isNotificationVisibilityPrivate() {
+        return getSbn().getNotification().visibility == Notification.VISIBILITY_PRIVATE;
+    }
+
+    /**
+     * Return {@code true} if notification's channel lockscreen visibility is
+     * {@link Notification.VISIBILITY_PRIVATE}
+     */
+    public boolean isChannelVisibilityPrivate() {
+        return getRanking().getChannel() != null
+                && getRanking().getChannel().getLockscreenVisibility()
+                == Notification.VISIBILITY_PRIVATE;
+    }
+
     /** Information about a suggestion that is being edited. */
     public static class EditedSuggestionInfo {
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
index 54b6ad7..fb67f7c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HeadsUpCoordinator.kt
@@ -104,7 +104,7 @@
 
     /**
      * Once the pipeline starts running, we can look through posted entries and quickly process
-     * any that don't have groups, and thus will never gave a group alert edge case.
+     * any that don't have groups, and thus will never gave a group heads up edge case.
      */
     fun onBeforeTransformGroups(list: List<ListEntry>) {
         mNow = mSystemClock.currentTimeMillis()
@@ -125,7 +125,7 @@
     /**
      * Once we have a nearly final shade list (not including what's pruned for inflation reasons),
      * we know that stability and [NotifPromoter]s have been applied, so we can use the location of
-     * notifications in this list to determine what kind of group alert behavior should happen.
+     * notifications in this list to determine what kind of group heads up behavior should happen.
      */
     fun onBeforeFinalizeFilter(list: List<ListEntry>) = mHeadsUpManager.modifyHuns { hunMutator ->
         // Nothing to do if there are no other adds/updates
@@ -140,7 +140,7 @@
             .groupBy { it.sbn.groupKey }
         val groupLocationsByKey: Map<String, GroupLocation> by lazy { getGroupLocationsByKey(list) }
         mLogger.logEvaluatingGroups(postedEntriesByGroup.size)
-        // For each group, determine which notification(s) for a group should alert.
+        // For each group, determine which notification(s) for a group should heads up.
         postedEntriesByGroup.forEach { (groupKey, postedEntries) ->
             // get and classify the logical members
             val logicalMembers = logicalMembersByGroup[groupKey] ?: emptyList()
@@ -149,7 +149,7 @@
             // Report the start of this group's evaluation
             mLogger.logEvaluatingGroup(groupKey, postedEntries.size, logicalMembers.size)
 
-            // If there is no logical summary, then there is no alert to transfer
+            // If there is no logical summary, then there is no heads up to transfer
             if (logicalSummary == null) {
                 postedEntries.forEach {
                     handlePostedEntry(it, hunMutator, scenario = "logical-summary-missing")
@@ -157,43 +157,43 @@
                 return@forEach
             }
 
-            // If summary isn't wanted to be heads up, then there is no alert to transfer
+            // If summary isn't wanted to be heads up, then there is no heads up to transfer
             if (!isGoingToShowHunStrict(logicalSummary)) {
                 postedEntries.forEach {
-                    handlePostedEntry(it, hunMutator, scenario = "logical-summary-not-alerting")
+                    handlePostedEntry(it, hunMutator, scenario = "logical-summary-not-heads-up")
                 }
                 return@forEach
             }
 
-            // The group is alerting! Overall goals:
-            //  - Maybe transfer its alert to a child
-            //  - Also let any/all newly alerting children still alert
-            var childToReceiveParentAlert: NotificationEntry?
+            // The group is heads up! Overall goals:
+            //  - Maybe transfer its heads up to a child
+            //  - Also let any/all newly heads up children still heads up
+            var childToReceiveParentHeadsUp: NotificationEntry?
             var targetType = "undefined"
 
-            // If the parent is alerting, always look at the posted notification with the newest
+            // If the parent is heads up, always look at the posted notification with the newest
             // 'when', and if it is isolated with GROUP_ALERT_SUMMARY, then it should receive the
-            // parent's alert.
-            childToReceiveParentAlert =
-                findAlertOverride(postedEntries, groupLocationsByKey::getLocation)
-            if (childToReceiveParentAlert != null) {
-                targetType = "alertOverride"
+            // parent's heads up.
+            childToReceiveParentHeadsUp =
+                findHeadsUpOverride(postedEntries, groupLocationsByKey::getLocation)
+            if (childToReceiveParentHeadsUp != null) {
+                targetType = "headsUpOverride"
             }
 
-            // If the summary is Detached and we have not picked a receiver of the alert, then we
-            // need to look for the best child to alert in place of the summary.
+            // If the summary is Detached and we have not picked a receiver of the heads up, then we
+            // need to look for the best child to heads up in place of the summary.
             val isSummaryAttached = groupLocationsByKey.contains(logicalSummary.key)
-            if (!isSummaryAttached && childToReceiveParentAlert == null) {
-                childToReceiveParentAlert =
+            if (!isSummaryAttached && childToReceiveParentHeadsUp == null) {
+                childToReceiveParentHeadsUp =
                     findBestTransferChild(logicalMembers, groupLocationsByKey::getLocation)
-                if (childToReceiveParentAlert != null) {
+                if (childToReceiveParentHeadsUp != null) {
                     targetType = "bestChild"
                 }
             }
 
-            // If there is no child to receive the parent alert, then just handle the posted entries
-            // and return.
-            if (childToReceiveParentAlert == null) {
+            // If there is no child to receive the parent heads up, then just handle the posted
+            // entries and return.
+            if (childToReceiveParentHeadsUp == null) {
                 postedEntries.forEach {
                     handlePostedEntry(it, hunMutator, scenario = "no-transfer-target")
                 }
@@ -203,14 +203,14 @@
             // At this point we just need to initiate the transfer
             val summaryUpdate = mPostedEntries[logicalSummary.key]
 
-            // Because we now know for certain that some child is going to alert for this summary
-            // (as we have found a child to transfer the alert to), mark the group as having
+            // Because we now know for certain that some child is going to heads up for this summary
+            // (as we have found a child to transfer the heads up to), mark the group as having
             // interrupted. This will allow us to know in the future that the "should heads up"
             // state of this group has already been handled, just not via the summary entry itself.
             logicalSummary.setInterruption()
-            mLogger.logSummaryMarkedInterrupted(logicalSummary.key, childToReceiveParentAlert.key)
+            mLogger.logSummaryMarkedInterrupted(logicalSummary.key, childToReceiveParentHeadsUp.key)
 
-            // If the summary was not attached, then remove the alert from the detached summary.
+            // If the summary was not attached, then remove the heads up from the detached summary.
             // Otherwise we can simply ignore its posted update.
             if (!isSummaryAttached) {
                 val summaryUpdateForRemoval = summaryUpdate?.also {
@@ -221,60 +221,63 @@
                         wasUpdated = false,
                         shouldHeadsUpEver = false,
                         shouldHeadsUpAgain = false,
-                        isAlerting = mHeadsUpManager.isHeadsUpEntry(logicalSummary.key),
+                        isHeadsUpEntry = mHeadsUpManager.isHeadsUpEntry(logicalSummary.key),
                         isBinding = isEntryBinding(logicalSummary),
                 )
-                // If we transfer the alert and the summary isn't even attached, that means we
-                // should ensure the summary is no longer alerting, so we remove it here.
+                // If we transfer the heads up notification and the summary isn't even attached,
+                // that means we should ensure the summary is no longer a heads up notification,
+                // so we remove it here.
                 handlePostedEntry(
                         summaryUpdateForRemoval,
                         hunMutator,
-                        scenario = "detached-summary-remove-alert")
+                        scenario = "detached-summary-remove-heads-up")
             } else if (summaryUpdate != null) {
                 mLogger.logPostedEntryWillNotEvaluate(
                         summaryUpdate,
                         reason = "attached-summary-transferred")
             }
 
-            // Handle all posted entries -- if the child receiving the parent's alert is in the
-            // list, then set its flags to ensure it alerts.
-            var didAlertChildToReceiveParentAlert = false
+            // Handle all posted entries -- if the child receiving the parent's heads up is in the
+            // list, then set its flags to ensure it heads up.
+            var didHeadsUpChildToReceiveParentHeadsUp = false
             postedEntries.asSequence()
                     .filter { it.key != logicalSummary.key }
                     .forEach { postedEntry ->
-                        if (childToReceiveParentAlert.key == postedEntry.key) {
+                        if (childToReceiveParentHeadsUp.key == postedEntry.key) {
                             // Update the child's posted update so that it
                             postedEntry.shouldHeadsUpEver = true
                             postedEntry.shouldHeadsUpAgain = true
                             handlePostedEntry(
                                     postedEntry,
                                     hunMutator,
-                                    scenario = "child-alert-transfer-target-$targetType")
-                            didAlertChildToReceiveParentAlert = true
+                                    scenario = "child-heads-up-transfer-target-$targetType")
+                            didHeadsUpChildToReceiveParentHeadsUp = true
                         } else {
                             handlePostedEntry(
                                     postedEntry,
                                     hunMutator,
-                                    scenario = "child-alert-non-target")
+                                    scenario = "child-heads-up-non-target")
                         }
                     }
 
-            // If the child receiving the alert was not updated on this tick (which can happen in a
-            // standard alert transfer scenario), then construct an update so that we can apply it.
-            if (!didAlertChildToReceiveParentAlert) {
+            // If the child receiving the heads up notification was not updated on this tick
+            // (which can happen in a standard heads up transfer scenario), then construct an update
+            // so that we can apply it.
+            if (!didHeadsUpChildToReceiveParentHeadsUp) {
                 val posted = PostedEntry(
-                        childToReceiveParentAlert,
+                        childToReceiveParentHeadsUp,
                         wasAdded = false,
                         wasUpdated = false,
                         shouldHeadsUpEver = true,
                         shouldHeadsUpAgain = true,
-                        isAlerting = mHeadsUpManager.isHeadsUpEntry(childToReceiveParentAlert.key),
-                        isBinding = isEntryBinding(childToReceiveParentAlert),
+                        isHeadsUpEntry =
+                                mHeadsUpManager.isHeadsUpEntry(childToReceiveParentHeadsUp.key),
+                        isBinding = isEntryBinding(childToReceiveParentHeadsUp),
                 )
                 handlePostedEntry(
                         posted,
                         hunMutator,
-                        scenario = "non-posted-child-alert-transfer-target-$targetType")
+                        scenario = "non-posted-child-heads-up-transfer-target-$targetType")
             }
         }
         // After this method runs, all posted entries should have been handled (or skipped).
@@ -286,9 +289,9 @@
 
     /**
      * Find the posted child with the newest when, and return it if it is isolated and has
-     * GROUP_ALERT_SUMMARY so that it can be alerted.
+     * GROUP_ALERT_SUMMARY so that it can be heads uped.
      */
-    private fun findAlertOverride(
+    private fun findHeadsUpOverride(
         postedEntries: List<PostedEntry>,
         locationLookupByKey: (String) -> GroupLocation,
     ): NotificationEntry? = postedEntries.asSequence()
@@ -344,16 +347,17 @@
             }
         } else {
             if (posted.isHeadsUpAlready) {
-                // NOTE: This might be because we're alerting (i.e. tracked by HeadsUpManager) OR
-                // it could be because we're binding, and that will affect the next step.
+                // NOTE: This might be because we're showing heads up (i.e. tracked by
+                // HeadsUpManager) OR it could be because we're binding, and that will affect the
+                // next step.
                 if (posted.shouldHeadsUpEver) {
-                    // If alerting, we need to post an update.  Otherwise we're still binding,
-                    // and we can just let that finish.
-                    if (posted.isAlerting) {
+                    // If showing heads up, we need to post an update. Otherwise we're still
+                    // binding, and we can just let that finish.
+                    if (posted.isHeadsUpEntry) {
                         hunMutator.updateNotification(posted.key, posted.shouldHeadsUpAgain)
                     }
                 } else {
-                    if (posted.isAlerting) {
+                    if (posted.isHeadsUpEntry) {
                         // We don't want this to be interrupting anymore, let's remove it
                         hunMutator.removeNotification(posted.key, false /*removeImmediately*/)
                     } else {
@@ -408,7 +412,7 @@
                 wasUpdated = false,
                 shouldHeadsUpEver = shouldHeadsUpEver,
                 shouldHeadsUpAgain = true,
-                isAlerting = false,
+                isHeadsUpEntry = false,
                 isBinding = false,
             )
 
@@ -418,21 +422,21 @@
 
         /**
          * Notification could've updated to be heads up or not heads up. Even if it did update to
-         * heads up, if the notification specified that it only wants to alert once, don't heads
+         * heads up, if the notification specified that it only wants to heads up once, don't heads
          * up again.
          */
         override fun onEntryUpdated(entry: NotificationEntry) {
             val shouldHeadsUpEver =
                 mVisualInterruptionDecisionProvider.makeAndLogHeadsUpDecision(entry).shouldInterrupt
             val shouldHeadsUpAgain = shouldHunAgain(entry)
-            val isAlerting = mHeadsUpManager.isHeadsUpEntry(entry.key)
+            val isHeadsUpEntry = mHeadsUpManager.isHeadsUpEntry(entry.key)
             val isBinding = isEntryBinding(entry)
             val posted = mPostedEntries.compute(entry.key) { _, value ->
                 value?.also { update ->
                     update.wasUpdated = true
                     update.shouldHeadsUpEver = shouldHeadsUpEver
                     update.shouldHeadsUpAgain = update.shouldHeadsUpAgain || shouldHeadsUpAgain
-                    update.isAlerting = isAlerting
+                    update.isHeadsUpEntry = isHeadsUpEntry
                     update.isBinding = isBinding
                 } ?: PostedEntry(
                     entry,
@@ -440,15 +444,15 @@
                     wasUpdated = true,
                     shouldHeadsUpEver = shouldHeadsUpEver,
                     shouldHeadsUpAgain = shouldHeadsUpAgain,
-                    isAlerting = isAlerting,
+                    isHeadsUpEntry = isHeadsUpEntry,
                     isBinding = isBinding,
                 )
             }
-            // Handle cancelling alerts here, rather than in the OnBeforeFinalizeFilter, so that
+            // Handle cancelling heads up here, rather than in the OnBeforeFinalizeFilter, so that
             // work can be done before the ShadeListBuilder is run. This prevents re-entrant
             // behavior between this Coordinator, HeadsUpManager, and VisualStabilityManager.
             if (posted?.shouldHeadsUpEver == false) {
-                if (posted.isAlerting) {
+                if (posted.isHeadsUpEntry) {
                     // We don't want this to be interrupting anymore, let's remove it
                     mHeadsUpManager.removeNotification(posted.key, false /*removeImmediately*/)
                 } else if (posted.isBinding) {
@@ -462,7 +466,7 @@
         }
 
         /**
-         * Stop alerting HUNs that are removed from the notification collection
+         * Stop showing as heads up once removed from the notification collection
          */
         override fun onEntryRemoved(entry: NotificationEntry, reason: Int) {
             mPostedEntries.remove(entry.key)
@@ -484,7 +488,7 @@
 
         /**
          * Identify notifications whose heads-up state changes when the notification rankings are
-         * updated, and have those changed notifications alert if necessary.
+         * updated, and have those changed notifications heads up if necessary.
          *
          * This method will occur after any operations in onEntryAdded or onEntryUpdated, so any
          * handling of ranking changes needs to take into account that we may have just made a
@@ -492,7 +496,7 @@
          */
         override fun onRankingApplied() {
             // Because a ranking update may cause some notifications that are no longer (or were
-            // never) in mPostedEntries to need to alert, we need to check every notification
+            // never) in mPostedEntries to need to heads up, we need to check every notification
             // known to the pipeline.
             for (entry in mNotifPipeline.allNotifs) {
                 // Only consider entries that are recent enough, since we want to apply a fairly
@@ -500,9 +504,9 @@
                 // app-provided notification update.
                 if (!isNewEnoughForRankingUpdate(entry)) continue
 
-                // The only entries we consider alerting for here are entries that have never
-                // interrupted and that now say they should heads up or FSI; if they've alerted in
-                // the past, we don't want to incorrectly alert a second time if there wasn't an
+                // The only entries we consider heads up for here are entries that have never
+                // interrupted and that now say they should heads up or FSI; if they've heads uped in
+                // the past, we don't want to incorrectly heads up a second time if there wasn't an
                 // explicit notification update.
                 if (entry.hasInterrupted()) continue
 
@@ -561,7 +565,7 @@
     }
 
     /**
-     * Checks whether an update for a notification warrants an alert for the user.
+     * Checks whether an update for a notification warrants an heads up for the user.
      */
     private fun shouldHunAgain(entry: NotificationEntry): Boolean {
         return (!entry.hasInterrupted() ||
@@ -716,25 +720,25 @@
     }
 
     /**
-     * Whether the notification is already alerting or binding so that it can imminently alert
+     * Whether the notification is already heads up or binding so that it can imminently heads up
      */
     private fun isAttemptingToShowHun(entry: ListEntry) =
         mHeadsUpManager.isHeadsUpEntry(entry.key) || isEntryBinding(entry)
 
     /**
-     * Whether the notification is already alerting/binding per [isAttemptingToShowHun] OR if it
-     * has been updated so that it should alert this update.  This method is permissive because it
-     * returns `true` even if the update would (in isolation of its group) cause the alert to be
-     * retracted.  This is important for not retracting transferred group alerts.
+     * Whether the notification is already heads up/binding per [isAttemptingToShowHun] OR if it
+     * has been updated so that it should heads up this update.  This method is permissive because
+     * it returns `true` even if the update would (in isolation of its group) cause the heads up to
+     * be retracted.  This is important for not retracting transferred group heads ups.
      */
     private fun isGoingToShowHunNoRetract(entry: ListEntry) =
         mPostedEntries[entry.key]?.calculateShouldBeHeadsUpNoRetract ?: isAttemptingToShowHun(entry)
 
     /**
      * If the notification has been updated, then whether it should HUN in isolation, otherwise
-     * defers to the already alerting/binding state of [isAttemptingToShowHun].  This method is
-     * strict because any update which would revoke the alert supersedes the current
-     * alerting/binding state.
+     * defers to the already heads up/binding state of [isAttemptingToShowHun].  This method is
+     * strict because any update which would revoke the heads up supersedes the current
+     * heads up/binding state.
      */
     private fun isGoingToShowHunStrict(entry: ListEntry) =
         mPostedEntries[entry.key]?.calculateShouldBeHeadsUpStrict ?: isAttemptingToShowHun(entry)
@@ -760,12 +764,12 @@
         var wasUpdated: Boolean,
         var shouldHeadsUpEver: Boolean,
         var shouldHeadsUpAgain: Boolean,
-        var isAlerting: Boolean,
+        var isHeadsUpEntry: Boolean,
         var isBinding: Boolean,
     ) {
         val key = entry.key
         val isHeadsUpAlready: Boolean
-            get() = isAlerting || isBinding
+            get() = isHeadsUpEntry || isBinding
         val calculateShouldBeHeadsUpStrict: Boolean
             get() = shouldHeadsUpEver && (wasAdded || shouldHeadsUpAgain || isHeadsUpAlready)
         val calculateShouldBeHeadsUpNoRetract: Boolean
@@ -781,7 +785,7 @@
 /**
  * Invokes the given block with a [HunMutator] that defers all HUN removals. This ensures that the
  * HeadsUpManager is notified of additions before removals, which prevents a glitch where the
- * HeadsUpManager temporarily believes that nothing is alerting, causing bad re-entrant behavior.
+ * HeadsUpManager temporarily believes that nothing is heads up, causing bad re-entrant behavior.
  */
 private fun <R> HeadsUpManager.modifyHuns(block: (HunMutator) -> R): R {
     val mutator = HunMutatorImpl(this)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt
index de3a626..c8d6abe 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/icon/ui/viewbinder/NotificationIconContainerViewBinder.kt
@@ -311,12 +311,13 @@
                                 boundViewsByNotifKey[it.notifKey]?.first
                             }
                         val childCount = view.childCount
+                        val toRemove = mutableListOf<View>()
                         for (i in 0 until childCount) {
                             val actual = view.getChildAt(i)
                             val expected = expectedChildren.getOrNull(i)
                             if (expected == null) {
                                 Log.wtf(TAG, "[$logTag] Unexpected child $actual")
-                                view.removeView(actual)
+                                toRemove.add(actual)
                                 continue
                             }
                             if (actual === expected) {
@@ -325,6 +326,9 @@
                             view.removeView(expected)
                             view.addView(expected, i)
                         }
+                        for (child in toRemove) {
+                            view.removeView(child)
+                        }
                     }
                 }
             }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationMemoryLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationMemoryLogger.kt
index f096dd6..6e4b327 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationMemoryLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationMemoryLogger.kt
@@ -142,7 +142,7 @@
 
     private fun getAllNotificationsOnMainThread() =
         runBlocking(mainDispatcher) {
-            traceSection("NML#getNotifications") { notificationPipeline.allNotifs }
+            traceSection("NML#getNotifications") { notificationPipeline.allNotifs.toList() }
         }
 }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
index c4d266e..ec8e5d7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableView.java
@@ -720,6 +720,9 @@
         mInShelf = inShelf;
     }
 
+    /**
+     * @return true if the view is currently fully in the notification shelf.
+     */
     public boolean isInShelf() {
         return mInShelf;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
index 20fae88..c90acee 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/AmbientState.java
@@ -263,8 +263,8 @@
         return mStackHeight;
     }
 
-    /** Tracks the state from AlertingNotificationManager#hasNotifications() */
-    private boolean mHasAlertEntries;
+    /** Tracks the state from HeadsUpManager#hasNotifications() */
+    private boolean mHasHeadsUpEntries;
 
     @Inject
     public AmbientState(
@@ -563,7 +563,7 @@
     }
 
     public boolean hasPulsingNotifications() {
-        return mPulsing && mHasAlertEntries;
+        return mPulsing && mHasHeadsUpEntries;
     }
 
     public void setPulsing(boolean hasPulsing) {
@@ -716,8 +716,8 @@
         return mAppearFraction;
     }
 
-    public void setHasAlertEntries(boolean hasAlertEntries) {
-        mHasAlertEntries = hasAlertEntries;
+    public void setHasHeadsUpEntries(boolean hasHeadsUpEntries) {
+        mHasHeadsUpEntries = hasHeadsUpEntries;
     }
 
     public void setStackTopMargin(int stackTopMargin) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index aa9d3b2..933a780 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -5721,7 +5721,7 @@
 
     void setNumHeadsUp(long numHeadsUp) {
         mNumHeadsUp = numHeadsUp;
-        mAmbientState.setHasAlertEntries(numHeadsUp > 0);
+        mAmbientState.setHasHeadsUpEntries(numHeadsUp > 0);
     }
 
     public boolean getIsExpanded() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index 830b8c1..78e6a79 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -23,6 +23,7 @@
 import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_SCROLL_FLING;
 import static com.android.server.notification.Flags.screenshareNotificationHiding;
 import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 import static com.android.systemui.Flags.nsslFalsingFix;
 import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
 import static com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout.OnEmptySpaceClickListener;
@@ -71,7 +72,6 @@
 import com.android.systemui.flags.FeatureFlagsClassic;
 import com.android.systemui.flags.Flags;
 import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.shared.model.KeyguardState;
 import com.android.systemui.keyguard.shared.model.TransitionStep;
 import com.android.systemui.media.controls.ui.KeyguardMediaController;
@@ -2078,7 +2078,7 @@
             }
             boolean horizontalSwipeWantsIt = false;
             boolean scrollerWantsIt = false;
-            if (nsslFalsingFix() || KeyguardShadeMigrationNssl.isEnabled()) {
+            if (nsslFalsingFix() || migrateClocksToBlueprint()) {
                 // Reverse the order relative to the else statement. onScrollTouch will reset on an
                 // UP event, causing horizontalSwipeWantsIt to be set to true on vertical swipes.
                 if (mLongPressedView == null && !mView.isBeingDragged()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 15fde0e..634de7a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -826,16 +826,11 @@
                 }
             }
             if (row.isPinned()) {
-                if (NotificationsImprovedHunAnimation.isEnabled()) {
-                    // Make sure row yTranslation is at the HUN yTranslation,
-                    // which accounts for AmbientState.stackTopMargin in split-shade.
-                    childState.setYTranslation(headsUpTranslation);
-                } else {
-                    // Make sure row yTranslation is at maximum the HUN yTranslation,
-                    // which accounts for AmbientState.stackTopMargin in split-shade.
-                    childState.setYTranslation(
-                            Math.max(childState.getYTranslation(), headsUpTranslation));
-                }
+                // Make sure row yTranslation is at at least the HUN yTranslation,
+                // which accounts for AmbientState.stackTopMargin in split-shade.
+                // Once we start opening the shade, we keep the previously calculated translation.
+                childState.setYTranslation(
+                        Math.max(childState.getYTranslation(), headsUpTranslation));
                 childState.height = Math.max(row.getIntrinsicHeight(), childState.height);
                 childState.hidden = false;
                 ExpandableViewState topState =
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
index 433e5c7..ab62ed6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackStateAnimator.java
@@ -470,15 +470,8 @@
                 mHeadsUpAppearChildren.add(changingView);
 
                 mTmpState.copyFrom(changingView.getViewState());
-                if (event.headsUpFromBottom) {
-                    // start from the bottom of the screen
-                    mTmpState.setYTranslation(
-                            mHeadsUpAppearHeightBottom + mHeadsUpAppearStartAboveScreen);
-                } else {
-                    // start from the top of the screen
-                    mTmpState.setYTranslation(
-                            -mStackTopMargin - mHeadsUpAppearStartAboveScreen);
-                }
+                // translate the HUN in from the top, or the bottom of the screen
+                mTmpState.setYTranslation(getHeadsUpYTranslationStart(event.headsUpFromBottom));
                 // set the height and the initial position
                 mTmpState.applyToView(changingView);
                 mAnimationProperties.setCustomInterpolator(View.TRANSLATION_Y,
@@ -522,12 +515,20 @@
                     || event.animationType == ANIMATION_TYPE_HEADS_UP_DISAPPEAR_CLICK) {
                 mHeadsUpDisappearChildren.add(changingView);
                 Runnable endRunnable = null;
+                mTmpState.copyFrom(changingView.getViewState());
                 if (changingView.getParent() == null) {
                     // This notification was actually removed, so we need to add it
                     // transiently
                     mHostLayout.addTransientView(changingView, 0);
                     changingView.setTransientContainer(mHostLayout);
-                    mTmpState.initFrom(changingView);
+                    if (NotificationsImprovedHunAnimation.isEnabled()) {
+                        // StackScrollAlgorithm cannot find this view because it has been removed
+                        // from the NSSL. To correctly translate the view to the top or bottom of
+                        // the screen (where it animated from), we need to update its translation.
+                        mTmpState.setYTranslation(
+                                getHeadsUpYTranslationStart(event.headsUpFromBottom)
+                        );
+                    }
                     endRunnable = changingView::removeFromTransientContainer;
                 }
 
@@ -575,16 +576,19 @@
                             changingView.setInRemovalAnimation(true);
                         };
                     }
-                    if (NotificationsImprovedHunAnimation.isEnabled()) {
-                        mAnimationProperties.setCustomInterpolator(View.TRANSLATION_Y,
-                                Interpolators.FAST_OUT_SLOW_IN_REVERSE);
-                    }
                     long removeAnimationDelay = changingView.performRemoveAnimation(
                             ANIMATION_DURATION_HEADS_UP_DISAPPEAR,
                             0, 0.0f, true /* isHeadsUpAppear */,
                             startAnimation, postAnimation,
                             getGlobalAnimationFinishedListener());
                     mAnimationProperties.delay += removeAnimationDelay;
+                    if (NotificationsImprovedHunAnimation.isEnabled()) {
+                        mAnimationProperties.duration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR;
+                        mAnimationProperties.setCustomInterpolator(View.TRANSLATION_Y,
+                                Interpolators.FAST_OUT_SLOW_IN_REVERSE);
+                        mAnimationProperties.getAnimationFilter().animateY = true;
+                        mTmpState.animateTo(changingView, mAnimationProperties);
+                    }
                 } else if (endRunnable != null) {
                     endRunnable.run();
                 }
@@ -595,6 +599,15 @@
         return needsCustomAnimation;
     }
 
+    private float getHeadsUpYTranslationStart(boolean headsUpFromBottom) {
+        if (headsUpFromBottom) {
+            // start from the bottom of the screen
+            return mHeadsUpAppearHeightBottom + mHeadsUpAppearStartAboveScreen;
+        }
+        // start from the top of the screen
+        return -mStackTopMargin - mHeadsUpAppearStartAboveScreen;
+    }
+
     public void animateOverScrollToAmount(float targetAmount, final boolean onTop,
             final boolean isRubberbanded) {
         final float startOverScrollAmount = mHostLayout.getCurrentOverScrollAmount(onTop);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index ff00cb3..476b054 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -25,31 +25,37 @@
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.model.Edge
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER
 import com.android.systemui.keyguard.shared.model.KeyguardState.AOD
 import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
-import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING
 import com.android.systemui.keyguard.shared.model.KeyguardState.GLANCEABLE_HUB
 import com.android.systemui.keyguard.shared.model.KeyguardState.GONE
 import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
-import com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED
 import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
+import com.android.systemui.keyguard.shared.model.StatusBarState.SHADE
 import com.android.systemui.keyguard.shared.model.StatusBarState.SHADE_LOCKED
+import com.android.systemui.keyguard.shared.model.TransitionState.FINISHED
 import com.android.systemui.keyguard.shared.model.TransitionState.RUNNING
 import com.android.systemui.keyguard.shared.model.TransitionState.STARTED
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.AodBurnInViewModel
+import com.android.systemui.keyguard.ui.viewmodel.AodToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.BurnInParameters
+import com.android.systemui.keyguard.ui.viewmodel.DozingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.GlanceableHubToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GoneToDozingTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.GoneToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.LockscreenToOccludedTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.LockscreenToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.OccludedToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.OccludedToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToGoneTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.PrimaryBouncerToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.ViewStateAccessor
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.statusbar.notification.stack.domain.interactor.SharedNotificationContainerInteractor
@@ -85,67 +91,32 @@
     keyguardTransitionInteractor: KeyguardTransitionInteractor,
     private val shadeInteractor: ShadeInteractor,
     communalInteractor: CommunalInteractor,
+    private val alternateBouncerToGoneTransitionViewModel:
+        AlternateBouncerToGoneTransitionViewModel,
+    private val aodToLockscreenTransitionViewModel: AodToLockscreenTransitionViewModel,
+    private val dozingToLockscreenTransitionViewModel: DozingToLockscreenTransitionViewModel,
+    private val dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
+    private val glanceableHubToLockscreenTransitionViewModel:
+        GlanceableHubToLockscreenTransitionViewModel,
+    private val goneToDozingTransitionViewModel: GoneToDozingTransitionViewModel,
+    private val goneToDreamingTransitionViewModel: GoneToDreamingTransitionViewModel,
+    private val lockscreenToDreamingTransitionViewModel: LockscreenToDreamingTransitionViewModel,
+    private val lockscreenToGlanceableHubTransitionViewModel:
+        LockscreenToGlanceableHubTransitionViewModel,
+    private val lockscreenToGoneTransitionViewModel: LockscreenToGoneTransitionViewModel,
+    private val lockscreenToPrimaryBouncerTransitionViewModel:
+        LockscreenToPrimaryBouncerTransitionViewModel,
+    private val lockscreenToOccludedTransitionViewModel: LockscreenToOccludedTransitionViewModel,
+    private val occludedToAodTransitionViewModel: OccludedToAodTransitionViewModel,
     private val occludedToLockscreenTransitionViewModel: OccludedToLockscreenTransitionViewModel,
-    lockscreenToGoneTransitionViewModel: LockscreenToGoneTransitionViewModel,
-    alternateBouncerToGoneTransitionViewModel: AlternateBouncerToGoneTransitionViewModel,
-    primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel,
-    lockscreenToOccludedTransitionViewModel: LockscreenToOccludedTransitionViewModel,
-    dreamingToLockscreenTransitionViewModel: DreamingToLockscreenTransitionViewModel,
-    lockscreenToDreamingTransitionViewModel: LockscreenToDreamingTransitionViewModel,
-    glanceableHubToLockscreenTransitionViewModel: GlanceableHubToLockscreenTransitionViewModel,
-    lockscreenToGlanceableHubTransitionViewModel: LockscreenToGlanceableHubTransitionViewModel,
+    private val primaryBouncerToGoneTransitionViewModel: PrimaryBouncerToGoneTransitionViewModel,
+    private val primaryBouncerToLockscreenTransitionViewModel:
+        PrimaryBouncerToLockscreenTransitionViewModel,
     private val aodBurnInViewModel: AodBurnInViewModel,
 ) {
     private val statesForConstrainedNotifications: Set<KeyguardState> =
         setOf(AOD, LOCKSCREEN, DOZING, ALTERNATE_BOUNCER, PRIMARY_BOUNCER)
 
-    private val edgeToAlphaViewModel =
-        mapOf<Edge?, (ViewStateAccessor) -> Flow<Float>>(
-            Edge(from = LOCKSCREEN, to = DREAMING) to
-                { _: ViewStateAccessor ->
-                    lockscreenToDreamingTransitionViewModel.lockscreenAlpha
-                },
-            Edge(from = LOCKSCREEN, to = GONE) to
-                { viewState: ViewStateAccessor ->
-                    lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState)
-                },
-            Edge(from = ALTERNATE_BOUNCER, to = GONE) to
-                { _: ViewStateAccessor ->
-                    alternateBouncerToGoneTransitionViewModel.lockscreenAlpha
-                },
-            Edge(from = PRIMARY_BOUNCER, to = GONE) to
-                { _: ViewStateAccessor ->
-                    primaryBouncerToGoneTransitionViewModel.lockscreenAlpha
-                },
-            Edge(from = DREAMING, to = LOCKSCREEN) to
-                { _: ViewStateAccessor ->
-                    dreamingToLockscreenTransitionViewModel.lockscreenAlpha
-                },
-            Edge(from = LOCKSCREEN, to = OCCLUDED) to
-                { _: ViewStateAccessor ->
-                    lockscreenToOccludedTransitionViewModel.lockscreenAlpha
-                },
-            Edge(from = OCCLUDED, to = LOCKSCREEN) to
-                { _: ViewStateAccessor ->
-                    occludedToLockscreenTransitionViewModel.lockscreenAlpha
-                },
-        )
-
-    private val lockscreenTransitionInProgress: Flow<Edge?> =
-        keyguardTransitionInteractor.transitions
-            .map { step ->
-                if (
-                    (step.transitionState == STARTED || step.transitionState == RUNNING) &&
-                        (step.from == LOCKSCREEN || step.to == LOCKSCREEN)
-                ) {
-                    Edge(step.from, step.to)
-                } else {
-                    null
-                }
-            }
-            .distinctUntilChanged()
-            .onStart { emit(null) }
-
     private val lockscreenToGlanceableHubRunning =
         keyguardTransitionInteractor
             .transition(LOCKSCREEN, GLANCEABLE_HUB)
@@ -300,54 +271,79 @@
     private val alphaForShadeAndQsExpansion: Flow<Float> =
         interactor.configurationBasedDimensions
             .flatMapLatest { configurationBasedDimensions ->
-                combine(
+                combineTransform(
                     shadeInteractor.shadeExpansion,
                     shadeInteractor.qsExpansion,
                 ) { shadeExpansion, qsExpansion ->
                     if (shadeExpansion > 0f || qsExpansion > 0f) {
                         if (configurationBasedDimensions.useSplitShade) {
-                            1f
+                            emit(1f)
                         } else {
                             // Fade as QS shade expands
-                            1f - qsExpansion
+                            emit(1f - qsExpansion)
                         }
-                    } else {
-                        // Not visible unless the shade/qs is visible
-                        0f
                     }
                 }
             }
-            .distinctUntilChanged()
+            .onStart { emit(0f) }
+
+    private val alphaWhenGoneAndShadeState: Flow<Float> =
+        combineTransform(
+            keyguardTransitionInteractor.transitions
+                .map { step -> step.to == GONE && step.transitionState == FINISHED }
+                .distinctUntilChanged(),
+            keyguardInteractor.statusBarState,
+        ) { isGoneTransitionFinished, statusBarState ->
+            if (isGoneTransitionFinished && statusBarState == SHADE) {
+                emit(1f)
+            }
+        }
 
     fun expansionAlpha(viewState: ViewStateAccessor): Flow<Float> {
-        // Due to issues with the legacy shade, some shade expansion events are sent incorrectly,
-        // such as when the shade resets. This can happen while the transition to/from LOCKSCREEN
-        // is running. Therefore use a series of flatmaps to prevent unwanted interruptions while
-        // those transitions are in progress. Without this, the alpha value will produce a visible
-        // flicker.
-        return lockscreenTransitionInProgress
-            .flatMapLatest { edge ->
-                edgeToAlphaViewModel.getOrDefault(
-                    edge,
-                    { _: ViewStateAccessor ->
-                        isOnLockscreenWithoutShade.flatMapLatest { isOnLockscreenWithoutShade ->
-                            combineTransform(
-                                keyguardInteractor.keyguardAlpha,
-                                shadeCollpaseFadeIn,
-                                alphaForShadeAndQsExpansion,
-                            ) { alpha, shadeCollpaseFadeIn, alphaForShadeAndQsExpansion ->
-                                if (isOnLockscreenWithoutShade) {
-                                    if (!shadeCollpaseFadeIn) {
-                                        emit(alpha)
-                                    }
-                                } else {
-                                    emit(alphaForShadeAndQsExpansion)
-                                }
-                            }
+        // All transition view models are mututally exclusive, and safe to merge
+        val alphaTransitions =
+            merge(
+                alternateBouncerToGoneTransitionViewModel.lockscreenAlpha,
+                aodToLockscreenTransitionViewModel.lockscreenAlpha(viewState),
+                dozingToLockscreenTransitionViewModel.lockscreenAlpha,
+                dreamingToLockscreenTransitionViewModel.lockscreenAlpha,
+                goneToDreamingTransitionViewModel.lockscreenAlpha,
+                goneToDozingTransitionViewModel.lockscreenAlpha,
+                lockscreenToDreamingTransitionViewModel.lockscreenAlpha,
+                lockscreenToGoneTransitionViewModel.lockscreenAlpha(viewState),
+                lockscreenToOccludedTransitionViewModel.lockscreenAlpha,
+                lockscreenToPrimaryBouncerTransitionViewModel.lockscreenAlpha,
+                occludedToAodTransitionViewModel.lockscreenAlpha,
+                occludedToLockscreenTransitionViewModel.lockscreenAlpha,
+                primaryBouncerToGoneTransitionViewModel.lockscreenAlpha,
+                primaryBouncerToLockscreenTransitionViewModel.lockscreenAlpha,
+            )
+
+        return merge(
+                alphaTransitions,
+                // Sends a final alpha value of 1f when truly gone, to make sure HUNs appear
+                alphaWhenGoneAndShadeState,
+                // These remaining cases handle alpha changes within an existing state, such as
+                // shade expansion or swipe to dismiss
+                combineTransform(
+                    isOnLockscreenWithoutShade,
+                    shadeCollpaseFadeIn,
+                    alphaForShadeAndQsExpansion,
+                    keyguardInteractor.dismissAlpha,
+                ) {
+                    isOnLockscreenWithoutShade,
+                    shadeCollpaseFadeIn,
+                    alphaForShadeAndQsExpansion,
+                    dismissAlpha ->
+                    if (isOnLockscreenWithoutShade) {
+                        if (!shadeCollpaseFadeIn && dismissAlpha != null) {
+                            emit(dismissAlpha)
                         }
+                    } else {
+                        emit(alphaForShadeAndQsExpansion)
                     }
-                )(viewState)
-            }
+                },
+            )
             .distinctUntilChanged()
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index 4a54111..b0fefdd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -16,7 +16,6 @@
 
 package com.android.systemui.statusbar.phone;
 
-import static android.app.StatusBarManager.DISABLE_HOME;
 import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
 import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
 import static android.app.StatusBarManager.WindowVisibleState;
@@ -28,6 +27,7 @@
 
 import static com.android.systemui.Dependency.TIME_TICK_HANDLER_NAME;
 import static com.android.systemui.Flags.lightRevealMigration;
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 import static com.android.systemui.Flags.newAodTransition;
 import static com.android.systemui.Flags.predictiveBackSysui;
 import static com.android.systemui.Flags.truncatedStatusBarIconsFix;
@@ -144,7 +144,6 @@
 import com.android.systemui.keyguard.KeyguardViewMediator;
 import com.android.systemui.keyguard.ScreenLifecycle;
 import com.android.systemui.keyguard.WakefulnessLifecycle;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.ui.binder.LightRevealScrimViewBinder;
 import com.android.systemui.keyguard.ui.viewmodel.LightRevealScrimViewModel;
 import com.android.systemui.navigationbar.NavigationBarController;
@@ -1006,8 +1005,14 @@
                 // this handling this post-init task. We force an update in this case, and use a new
                 // token to not conflict with any other disabled flags already requested by SysUI
                 Binder token = new Binder();
-                mBarService.disable(DISABLE_HOME, token, mContext.getPackageName());
-                mBarService.disable(0, token, mContext.getPackageName());
+                int userId = mContext.getUserId();
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setNavigationHomeDisabled(true);
+                mBarService.disableForUser(info, token, mContext.getPackageName(),
+                        userId, "set the initial view visibility");
+
+                mBarService.disableForUser(new StatusBarManager.DisableInfo(), token,
+                        mContext.getPackageName(), userId, "set the initial view visibility");
             } catch (RemoteException ex) {
                 ex.rethrowFromSystemServer();
             }
@@ -1463,7 +1468,7 @@
         return (v, event) -> {
             mAutoHideController.checkUserAutoHide(event);
             mRemoteInputManager.checkRemoteInputOutside(event);
-            if (!KeyguardShadeMigrationNssl.isEnabled()) {
+            if (!migrateClocksToBlueprint()) {
                 mShadeController.onStatusBarTouch(event);
             }
             return getNotificationShadeWindowView().onTouchEvent(event);
@@ -2500,7 +2505,7 @@
             mNotificationShadeWindowController.batchApplyWindowLayoutParams(()-> {
                 mDeviceInteractive = true;
 
-                boolean isFlaggedOff = newAodTransition() && KeyguardShadeMigrationNssl.isEnabled();
+                boolean isFlaggedOff = newAodTransition() && migrateClocksToBlueprint();
                 if (!isFlaggedOff && shouldAnimateDozeWakeup()) {
                     // If this is false, the power button must be physically pressed in order to
                     // trigger fingerprint authentication.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
index 2206be5..38b3718 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewController.java
@@ -20,6 +20,7 @@
 import static android.app.StatusBarManager.DISABLE_SYSTEM_INFO;
 
 import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
+import static com.android.systemui.Flags.updateUserSwitcherBackground;
 
 import android.content.res.Configuration;
 import android.content.res.Resources;
@@ -43,6 +44,7 @@
 import com.android.keyguard.KeyguardUpdateMonitorCallback;
 import com.android.keyguard.logging.KeyguardLogger;
 import com.android.systemui.battery.BatteryMeterViewController;
+import com.android.systemui.dagger.qualifiers.Background;
 import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.flags.FeatureFlags;
 import com.android.systemui.flags.Flags;
@@ -122,6 +124,7 @@
     private final SecureSettings mSecureSettings;
     private final CommandQueue mCommandQueue;
     private final Executor mMainExecutor;
+    private final Executor mBackgroundExecutor;
     private final Object mLock = new Object();
     private final KeyguardLogger mLogger;
 
@@ -296,6 +299,7 @@
             SecureSettings secureSettings,
             CommandQueue commandQueue,
             @Main Executor mainExecutor,
+            @Background Executor backgroundExecutor,
             KeyguardLogger logger,
             NotificationMediaManager notificationMediaManager,
             StatusOverlayHoverListenerFactory statusOverlayHoverListenerFactory
@@ -323,6 +327,7 @@
         mSecureSettings = secureSettings;
         mCommandQueue = commandQueue;
         mMainExecutor = mainExecutor;
+        mBackgroundExecutor = backgroundExecutor;
         mLogger = logger;
 
         mFirstBypassAttempt = mKeyguardBypassController.getBypassEnabled();
@@ -607,8 +612,18 @@
      * Updates visibility of the user switcher button based on {@link android.os.UserManager} state.
      */
     private void updateUserSwitcher() {
-        mView.setUserSwitcherEnabled(mUserManager.isUserSwitcherEnabled(getResources().getBoolean(
-                R.bool.qs_show_user_switcher_for_single_user)));
+        if (updateUserSwitcherBackground()) {
+            mBackgroundExecutor.execute(() -> {
+                final boolean isUserSwitcherEnabled = mUserManager.isUserSwitcherEnabled(
+                        getResources().getBoolean(R.bool.qs_show_user_switcher_for_single_user));
+                mMainExecutor.execute(() -> {
+                    mView.setUserSwitcherEnabled(isUserSwitcherEnabled);
+                });
+            });
+        } else {
+            mView.setUserSwitcherEnabled(mUserManager.isUserSwitcherEnabled(
+                    getResources().getBoolean(R.bool.qs_show_user_switcher_for_single_user)));
+        }
     }
 
     @VisibleForTesting
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImpl.java
index e79f3ff..94f62e0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LegacyNotificationIconAreaControllerImpl.java
@@ -16,6 +16,7 @@
 package com.android.systemui.statusbar.phone;
 
 import static com.android.systemui.Flags.newAodTransition;
+import static com.android.systemui.Flags.migrateClocksToBlueprint;
 
 import android.content.Context;
 import android.content.res.Resources;
@@ -40,7 +41,6 @@
 import com.android.systemui.demomode.DemoMode;
 import com.android.systemui.demomode.DemoModeController;
 import com.android.systemui.flags.FeatureFlags;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.plugins.DarkIconDispatcher;
 import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -545,7 +545,7 @@
             return;
         }
         if (mScreenOffAnimationController.shouldAnimateAodIcons()) {
-            if (!KeyguardShadeMigrationNssl.isEnabled()) {
+            if (!migrateClocksToBlueprint()) {
                 mAodIcons.setTranslationY(-mAodIconAppearTranslation);
             }
             mAodIcons.setAlpha(0);
@@ -557,14 +557,14 @@
                     .start();
         } else {
             mAodIcons.setAlpha(1.0f);
-            if (!KeyguardShadeMigrationNssl.isEnabled()) {
+            if (!migrateClocksToBlueprint()) {
                 mAodIcons.setTranslationY(0);
             }
         }
     }
 
     private void animateInAodIconTranslation() {
-        if (!KeyguardShadeMigrationNssl.isEnabled()) {
+        if (!migrateClocksToBlueprint()) {
             mAodIcons.animate()
                     .setInterpolator(Interpolators.DECELERATE_QUINT)
                     .translationY(0)
@@ -667,7 +667,7 @@
                 }
             } else {
                 mAodIcons.setAlpha(1.0f);
-                if (!KeyguardShadeMigrationNssl.isEnabled()) {
+                if (!migrateClocksToBlueprint()) {
                     mAodIcons.setTranslationY(0);
                 }
                 mAodIcons.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
index 8ac3b4a..d10ca3d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -38,9 +38,9 @@
 import com.android.internal.policy.SystemBarUtils;
 import com.android.systemui.Dependency;
 import com.android.systemui.Gefingerpoken;
-import com.android.systemui.res.R;
 import com.android.systemui.plugins.DarkIconDispatcher;
 import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
+import com.android.systemui.res.R;
 import com.android.systemui.statusbar.phone.userswitcher.StatusBarUserSwitcherContainer;
 import com.android.systemui.statusbar.policy.Clock;
 import com.android.systemui.statusbar.window.StatusBarWindowController;
@@ -67,6 +67,8 @@
     private int mStatusBarHeight;
     @Nullable
     private Gefingerpoken mTouchEventHandler;
+    private int mDensity;
+    private float mFontScale;
 
     /**
      * Draw this many pixels into the left/right side of the cutout to optimally use the space
@@ -167,13 +169,23 @@
             mDisplayCutout = getRootWindowInsets().getDisplayCutout();
         }
 
-        final Rect newSize = mContext.getResources().getConfiguration().windowConfiguration
-                .getMaxBounds();
+        Configuration newConfiguration = mContext.getResources().getConfiguration();
+        final Rect newSize = newConfiguration.windowConfiguration.getMaxBounds();
         if (!Objects.equals(newSize, mDisplaySize)) {
             changed = true;
             mDisplaySize = newSize;
         }
 
+        int density = newConfiguration.densityDpi;
+        if (density != mDensity) {
+            changed = true;
+            mDensity = density;
+        }
+        float fontScale = newConfiguration.fontScale;
+        if (fontScale != mFontScale) {
+            changed = true;
+            mFontScale = fontScale;
+        }
         return changed;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt
index f9702dd..a39bfe0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewController.kt
@@ -81,6 +81,7 @@
         statusContainer.setOnHoverListener(
             statusOverlayHoverListenerFactory.createDarkAwareListener(statusContainer)
         )
+        statusContainer.setOnClickListener { shadeViewController.expand(/* animate= */true) }
 
         progressProvider?.setReadyToHandleTransition(true)
         configurationController.addCallback(configurationListener)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 7f7eb04..9d70f42 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -439,8 +439,11 @@
         }
         mBypassController = bypassController;
         mNotificationContainer = notificationContainer;
-        mKeyguardMessageAreaController = mKeyguardMessageAreaFactory.create(
-                centralSurfaces.getKeyguardMessageArea());
+        if (!DeviceEntryUdfpsRefactor.isEnabled()) {
+            mKeyguardMessageAreaController = mKeyguardMessageAreaFactory.create(
+                    centralSurfaces.getKeyguardMessageArea());
+        }
+
         mCentralSurfacesRegistered = true;
 
         registerListeners();
@@ -863,6 +866,7 @@
 
         final boolean isShowingAlternateBouncer = mAlternateBouncerInteractor.isVisibleState();
         if (mKeyguardMessageAreaController != null) {
+            DeviceEntryUdfpsRefactor.assertInLegacyMode();
             mKeyguardMessageAreaController.setIsVisible(isShowingAlternateBouncer);
             mKeyguardMessageAreaController.setMessage("");
         }
@@ -1447,6 +1451,7 @@
     public void setKeyguardMessage(String message, ColorStateList colorState) {
         if (mAlternateBouncerInteractor.isVisibleState()) {
             if (mKeyguardMessageAreaController != null) {
+                DeviceEntryUdfpsRefactor.assertInLegacyMode();
                 mKeyguardMessageAreaController.setMessage(message);
             }
         } else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
index 665a571..223eaf7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
@@ -17,10 +17,10 @@
 import com.android.internal.jank.InteractionJankMonitor.CUJ_SCREEN_OFF_SHOW_AOD
 import com.android.systemui.DejankUtils
 import com.android.app.animation.Interpolators
+import com.android.systemui.Flags.migrateClocksToBlueprint
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.keyguard.KeyguardViewMediator
 import com.android.systemui.keyguard.WakefulnessLifecycle
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.shade.ShadeViewController
 import com.android.systemui.statusbar.CircleReveal
 import com.android.systemui.statusbar.LightRevealScrim
@@ -286,7 +286,7 @@
                 // up, with unpredictable consequences.
                 if (!powerManager.isInteractive(Display.DEFAULT_DISPLAY) &&
                         shouldAnimateInKeyguard) {
-                    if (!KeyguardShadeMigrationNssl.isEnabled) {
+                    if (!migrateClocksToBlueprint()) {
                         // Tracking this state should no longer be relevant, as the isInteractive
                         // check covers it
                         aodUiAnimationPlaying = true
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index fc2f6e9..c089092 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -35,6 +35,7 @@
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.bluetooth.LocalBluetoothProfile;
 import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
+import com.android.systemui.Flags;
 import com.android.systemui.bluetooth.BluetoothLogger;
 import com.android.systemui.dagger.SysUISingleton;
 import com.android.systemui.dagger.qualifiers.Background;
@@ -240,9 +241,21 @@
     @WorkerThread
     @Override
     public String getConnectedDeviceName() {
-        synchronized (mConnectedDevices) {
-            if (mConnectedDevices.size() == 1) {
-                return mConnectedDevices.get(0).getName();
+        if (Flags.getConnectedDeviceNameUnsynchronized()) {
+            CachedBluetoothDevice connectedDevice = null;
+            // Calling the getName() API for CachedBluetoothDevice outside the synchronized block
+            // so that the main thread is not blocked.
+            synchronized (mConnectedDevices) {
+                if (mConnectedDevices.size() == 1) {
+                    connectedDevice = mConnectedDevices.get(0);
+                }
+            }
+            return connectedDevice != null ? connectedDevice.getName() : null;
+        } else {
+            synchronized (mConnectedDevices) {
+                if (mConnectedDevices.size() == 1) {
+                    return mConnectedDevices.get(0).getName();
+                }
             }
         }
         return null;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.kt
index a7352be..420701f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.kt
@@ -61,16 +61,16 @@
     fun getTouchableRegion(): Region?
 
     /**
-     * Whether or not there are any active alerting notifications.
+     * Whether or not there are any entries managed by HeadsUpManager.
      *
-     * @return true if there is an alert, false otherwise
+     * @return true if there is a heads up entry, false otherwise
      */
     fun hasNotifications(): Boolean = false
 
     /** Returns whether there are any pinned Heads Up Notifications or not. */
     fun hasPinnedHeadsUp(): Boolean
 
-    /** Returns whether or not the given notification is alerting and managed by this manager. */
+    /** Returns whether or not the given notification is managed by this manager. */
     fun isHeadsUpEntry(key: String): Boolean
 
     fun isHeadsUpGoingAway(): Boolean
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyController.java
index eb08f37..eba3162 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyController.java
@@ -16,9 +16,12 @@
 
 package com.android.systemui.statusbar.policy;
 
+import android.annotation.FlaggedApi;
 import android.hardware.SensorPrivacyManager.Sensors.Sensor;
 import android.hardware.SensorPrivacyManager.Sources.Source;
 
+import com.android.internal.camera.flags.Flags;
+
 public interface IndividualSensorPrivacyController extends
         CallbackController<IndividualSensorPrivacyController.Callback> {
     void init();
@@ -42,6 +45,12 @@
      */
     boolean requiresAuthentication();
 
+    /**
+     * @return whether camera privacy is enabled for the package.
+     */
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    boolean isCameraPrivacyEnabled(String packageName);
+
     interface Callback {
         void onSensorBlockedChanged(@Sensor int sensor, boolean blocked);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyControllerImpl.java
index 87dfc99..58b82f1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/IndividualSensorPrivacyControllerImpl.java
@@ -19,6 +19,9 @@
 import static android.hardware.SensorPrivacyManager.Sensors.CAMERA;
 import static android.hardware.SensorPrivacyManager.Sensors.MICROPHONE;
 
+import android.Manifest;
+import android.annotation.FlaggedApi;
+import android.annotation.RequiresPermission;
 import android.hardware.SensorPrivacyManager;
 import android.hardware.SensorPrivacyManager.Sensors.Sensor;
 import android.hardware.SensorPrivacyManager.Sources.Source;
@@ -28,6 +31,8 @@
 
 import androidx.annotation.NonNull;
 
+import com.android.internal.camera.flags.Flags;
+
 import java.util.Set;
 
 public class IndividualSensorPrivacyControllerImpl implements IndividualSensorPrivacyController {
@@ -102,6 +107,13 @@
     }
 
     @Override
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+    public boolean isCameraPrivacyEnabled(String packageName) {
+        return mSensorPrivacyManager.isCameraPrivacyEnabled(packageName);
+    }
+
+    @Override
     public void addCallback(@NonNull Callback listener) {
         mCallbacks.add(listener);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
index 2b0a92c..6956a7d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerImpl.java
@@ -221,10 +221,15 @@
         // Exempt foreground service notifications from protection in effort to keep screen share
         // stop actions easily accessible
         StatusBarNotification sbn = entry.getSbn();
-        if (sbn.getNotification().isFgsOrUij()) {
-            return !sbn.getPackageName().equals(projection.getPackageName());
+        if (sbn.getNotification().isFgsOrUij()
+                && sbn.getPackageName().equals(projection.getPackageName())) {
+            return false;
         }
 
-        return true;
+        // Only protect/redact notifications if the developer has not explicitly set notification
+        // visibility as public and users has not adjusted default channel visibility to private
+        boolean notificationRequestsRedaction = entry.isNotificationVisibilityPrivate();
+        boolean userForcesRedaction = entry.isChannelVisibilityPrivate();
+        return notificationRequestsRedaction || userForcesRedaction;
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/OWNERS b/packages/SystemUI/src/com/android/systemui/statusbar/tv/OWNERS
new file mode 100644
index 0000000..43450c4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/OWNERS
@@ -0,0 +1,5 @@
+# Android TV Core Framework
+rgl@google.com
+valiiftime@google.com
+galinap@google.com
+robhor@google.com
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
index 1af5c46..67d6a7f 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/AudioModule.kt
@@ -16,11 +16,14 @@
 
 package com.android.systemui.volume.dagger
 
+import android.app.NotificationManager
 import android.content.Context
 import android.media.AudioManager
 import com.android.settingslib.media.data.repository.SpatializerRepository
 import com.android.settingslib.media.data.repository.SpatializerRepositoryImpl
 import com.android.settingslib.media.domain.interactor.SpatializerInteractor
+import com.android.settingslib.statusbar.notification.data.repository.NotificationsSoundPolicyRepository
+import com.android.settingslib.statusbar.notification.data.repository.NotificationsSoundPolicyRepositoryImpl
 import com.android.settingslib.volume.data.repository.AudioRepository
 import com.android.settingslib.volume.data.repository.AudioRepositoryImpl
 import com.android.settingslib.volume.domain.interactor.AudioModeInteractor
@@ -68,5 +71,19 @@
         @Provides
         fun provideSpatializerInetractor(repository: SpatializerRepository): SpatializerInteractor =
             SpatializerInteractor(repository)
+
+        @Provides
+        fun provideNotificationsSoundPolicyRepository(
+            context: Context,
+            notificationManager: NotificationManager,
+            @Background coroutineContext: CoroutineContext,
+            @Application coroutineScope: CoroutineScope,
+        ): NotificationsSoundPolicyRepository =
+            NotificationsSoundPolicyRepositoryImpl(
+                context,
+                notificationManager,
+                coroutineScope,
+                coroutineContext,
+            )
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/dagger/MediaDevicesModule.kt b/packages/SystemUI/src/com/android/systemui/volume/dagger/MediaDevicesModule.kt
index ab76d45..9f99e97 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/dagger/MediaDevicesModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/dagger/MediaDevicesModule.kt
@@ -24,6 +24,9 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Background
+import com.android.systemui.volume.panel.component.mediaoutput.data.repository.LocalMediaRepositoryFactory
+import com.android.systemui.volume.panel.component.mediaoutput.data.repository.LocalMediaRepositoryFactoryImpl
+import dagger.Binds
 import dagger.Module
 import dagger.Provides
 import kotlin.coroutines.CoroutineContext
@@ -32,6 +35,11 @@
 @Module
 interface MediaDevicesModule {
 
+    @Binds
+    fun bindLocalMediaRepositoryFactory(
+        impl: LocalMediaRepositoryFactoryImpl
+    ): LocalMediaRepositoryFactory
+
     companion object {
 
         @Provides
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/LocalMediaRepositoryFactory.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/LocalMediaRepositoryFactory.kt
index 0a1ee24..1f52260 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/LocalMediaRepositoryFactory.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/LocalMediaRepositoryFactory.kt
@@ -26,7 +26,12 @@
 import kotlin.coroutines.CoroutineContext
 import kotlinx.coroutines.CoroutineScope
 
-class LocalMediaRepositoryFactory
+interface LocalMediaRepositoryFactory {
+
+    fun create(packageName: String?): LocalMediaRepository
+}
+
+class LocalMediaRepositoryFactoryImpl
 @Inject
 constructor(
     private val intentsReceiver: AudioManagerIntentsReceiver,
@@ -34,9 +39,9 @@
     private val localMediaManagerFactory: LocalMediaManagerFactory,
     @Application private val coroutineScope: CoroutineScope,
     @Background private val backgroundCoroutineContext: CoroutineContext,
-) {
+) : LocalMediaRepositoryFactory {
 
-    fun create(packageName: String?): LocalMediaRepository =
+    override fun create(packageName: String?): LocalMediaRepository =
         LocalMediaRepositoryImpl(
             intentsReceiver,
             localMediaManagerFactory.create(packageName),
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt
new file mode 100644
index 0000000..020ec64
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/MediaOutputAvailabilityCriteria.kt
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.domain
+
+import com.android.settingslib.volume.domain.interactor.AudioModeInteractor
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor
+import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
+import com.android.systemui.volume.panel.domain.ComponentAvailabilityCriteria
+import javax.inject.Inject
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.combine
+
+/** Determines if the Media Output Volume Panel component is available. */
+@VolumePanelScope
+class MediaOutputAvailabilityCriteria
+@Inject
+constructor(
+    private val mediaOutputInteractor: MediaOutputInteractor,
+    private val audioModeInteractor: AudioModeInteractor,
+) : ComponentAvailabilityCriteria {
+
+    override fun isAvailable(): Flow<Boolean> {
+        return combine(mediaOutputInteractor.mediaDevices, audioModeInteractor.isOngoingCall) {
+            devices,
+            isOngoingCall ->
+            !isOngoingCall && devices.isNotEmpty()
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputActionsInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputActionsInteractor.kt
new file mode 100644
index 0000000..170b32c
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputActionsInteractor.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.domain.interactor
+
+import android.content.Intent
+import android.provider.Settings
+import com.android.internal.jank.InteractionJankMonitor
+import com.android.systemui.animation.DialogCuj
+import com.android.systemui.animation.DialogTransitionAnimator
+import com.android.systemui.animation.Expandable
+import com.android.systemui.media.dialog.MediaOutputDialogFactory
+import com.android.systemui.plugins.ActivityStarter
+import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaDeviceSession
+import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
+import javax.inject.Inject
+
+/** User actions interactor for Media Output Volume Panel component. */
+@VolumePanelScope
+class MediaOutputActionsInteractor
+@Inject
+constructor(
+    private val mediaOutputDialogFactory: MediaOutputDialogFactory,
+    private val activityStarter: ActivityStarter,
+) {
+
+    fun onDeviceClick(expandable: Expandable) {
+        activityStarter.startActivity(
+            Intent(Settings.ACTION_BLUETOOTH_SETTINGS),
+            true,
+            expandable.activityTransitionController(),
+        )
+    }
+
+    fun onBarClick(session: MediaDeviceSession, expandable: Expandable) {
+        when (session) {
+            is MediaDeviceSession.Active -> {
+                mediaOutputDialogFactory.createWithController(
+                    session.packageName,
+                    false,
+                    expandable.dialogController()
+                )
+            }
+            is MediaDeviceSession.Inactive -> {
+                mediaOutputDialogFactory.createDialogForSystemRouting(expandable.dialogController())
+            }
+            else -> {
+                /* do nothing */
+            }
+        }
+    }
+
+    private fun Expandable.dialogController(): DialogTransitionAnimator.Controller? {
+        return dialogTransitionController(
+            cuj =
+                DialogCuj(
+                    InteractionJankMonitor.CUJ_SHADE_DIALOG_OPEN,
+                    MediaOutputDialogFactory.INTERACTION_JANK_TAG
+                )
+        )
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
index 6c456f9..24cc29d 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/interactor/MediaOutputInteractor.kt
@@ -17,10 +17,14 @@
 package com.android.systemui.volume.panel.component.mediaoutput.domain.interactor
 
 import android.content.pm.PackageManager
+import android.media.session.MediaController
+import android.os.Handler
 import android.util.Log
 import com.android.settingslib.media.MediaDevice
 import com.android.settingslib.volume.data.repository.LocalMediaRepository
+import com.android.settingslib.volume.data.repository.MediaControllerChange
 import com.android.settingslib.volume.data.repository.MediaControllerRepository
+import com.android.settingslib.volume.data.repository.stateChanges
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.volume.panel.component.mediaoutput.data.repository.LocalMediaRepositoryFactory
 import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaDeviceSession
@@ -30,14 +34,21 @@
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.SharedFlow
 import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.filterIsInstance
 import kotlinx.coroutines.flow.flatMapLatest
+import kotlinx.coroutines.flow.flowOf
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.mapNotNull
+import kotlinx.coroutines.flow.onStart
 import kotlinx.coroutines.flow.shareIn
+import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.withContext
 
+/** Provides observable models about the current media session state. */
 @OptIn(ExperimentalCoroutinesApi::class)
 @VolumePanelScope
 class MediaOutputInteractor
@@ -47,32 +58,44 @@
     private val packageManager: PackageManager,
     @VolumePanelScope private val coroutineScope: CoroutineScope,
     @Background private val backgroundCoroutineContext: CoroutineContext,
+    @Background private val backgroundHandler: Handler,
     mediaControllerRepository: MediaControllerRepository
 ) {
 
-    val mediaDeviceSession: Flow<MediaDeviceSession> =
-        mediaControllerRepository.activeMediaController.mapNotNull { mediaController ->
-            if (mediaController == null) {
-                MediaDeviceSession.Inactive
-            } else {
+    /** Current [MediaDeviceSession]. Emits when the session playback changes. */
+    val mediaDeviceSession: StateFlow<MediaDeviceSession> =
+        mediaControllerRepository.activeLocalMediaController
+            .flatMapLatest { it?.mediaDeviceSession() ?: flowOf(MediaDeviceSession.Inactive) }
+            .flowOn(backgroundCoroutineContext)
+            .stateIn(coroutineScope, SharingStarted.Eagerly, MediaDeviceSession.Inactive)
+
+    private fun MediaController.mediaDeviceSession(): Flow<MediaDeviceSession> {
+        return stateChanges(backgroundHandler)
+            .onStart { emit(MediaControllerChange.PlaybackStateChanged(playbackState)) }
+            .filterIsInstance<MediaControllerChange.PlaybackStateChanged>()
+            .map {
                 MediaDeviceSession.Active(
-                    appLabel = getApplicationLabel(mediaController.packageName)
-                            ?: return@mapNotNull null,
-                    packageName = mediaController.packageName,
-                    sessionToken = mediaController.sessionToken,
+                    appLabel = getApplicationLabel(packageName)
+                            ?: return@map MediaDeviceSession.Inactive,
+                    packageName = packageName,
+                    sessionToken = sessionToken,
+                    playbackState = playbackState,
                 )
             }
-        }
-    private val localMediaRepository: Flow<LocalMediaRepository> =
+    }
+
+    private val localMediaRepository: SharedFlow<LocalMediaRepository> =
         mediaDeviceSession
             .map { (it as? MediaDeviceSession.Active)?.packageName }
             .distinctUntilChanged()
             .map { localMediaRepositoryFactory.create(it) }
-            .shareIn(coroutineScope, SharingStarted.WhileSubscribed(), replay = 1)
+            .shareIn(coroutineScope, SharingStarted.Eagerly, replay = 1)
 
+    /** Currently connected [MediaDevice]. */
     val currentConnectedDevice: Flow<MediaDevice?> =
         localMediaRepository.flatMapLatest { it.currentConnectedDevice }
 
+    /** A list of available [MediaDevice]s. */
     val mediaDevices: Flow<Collection<MediaDevice>> =
         localMediaRepository.flatMapLatest { it.mediaDevices }
 
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/model/MediaDeviceSession.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/model/MediaDeviceSession.kt
index f250308..71df8e5 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/model/MediaDeviceSession.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/domain/model/MediaDeviceSession.kt
@@ -17,6 +17,7 @@
 package com.android.systemui.volume.panel.component.mediaoutput.domain.model
 
 import android.media.session.MediaSession
+import android.media.session.PlaybackState
 
 /** Represents media playing on the connected device. */
 sealed interface MediaDeviceSession {
@@ -26,6 +27,7 @@
         val appLabel: CharSequence,
         val packageName: String,
         val sessionToken: MediaSession.Token,
+        val playbackState: PlaybackState?,
     ) : MediaDeviceSession
 
     /** Media is not playing. */
diff --git a/location/java/android/location/IGeocodeListener.aidl b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/ConnectedDeviceViewModel.kt
similarity index 62%
copy from location/java/android/location/IGeocodeListener.aidl
copy to packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/ConnectedDeviceViewModel.kt
index 8e10411..8ba672d 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/ConnectedDeviceViewModel.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,13 @@
  * limitations under the License.
  */
 
-package android.location;
-
-import android.location.Address;
+package com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel
 
 /**
- * An interface for returning geocode results.
- *
- * {@hide}
+ * Models part of the Media Session Volume Panel component that displays connected device
+ * information.
  */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
-}
+data class ConnectedDeviceViewModel(
+    val label: CharSequence,
+    val deviceName: CharSequence?,
+)
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt
new file mode 100644
index 0000000..e0718ac
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/DeviceIconViewModel.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel
+
+import com.android.systemui.common.shared.model.Color
+import com.android.systemui.common.shared.model.Icon
+
+/** Models Media Session Volume Panel component connected device icon. */
+sealed interface DeviceIconViewModel {
+
+    val icon: Icon
+    val backgroundColor: Color
+
+    class IsPlaying(
+        override val icon: Icon,
+        override val backgroundColor: Color,
+    ) : DeviceIconViewModel
+
+    class IsNotPlaying(
+        override val icon: Icon,
+        override val backgroundColor: Color,
+    ) : DeviceIconViewModel
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt
new file mode 100644
index 0000000..d148992
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/mediaoutput/ui/viewmodel/MediaOutputViewModel.kt
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.ui.viewmodel
+
+import android.content.Context
+import com.android.systemui.animation.Expandable
+import com.android.systemui.common.shared.model.Color
+import com.android.systemui.common.shared.model.Icon
+import com.android.systemui.res.R
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputActionsInteractor
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor
+import com.android.systemui.volume.panel.component.mediaoutput.domain.model.MediaDeviceSession
+import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
+import com.android.systemui.volume.panel.ui.viewmodel.VolumePanelViewModel
+import javax.inject.Inject
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.stateIn
+
+/** Models the UI of the Media Output Volume Panel component. */
+@VolumePanelScope
+class MediaOutputViewModel
+@Inject
+constructor(
+    private val context: Context,
+    @VolumePanelScope private val coroutineScope: CoroutineScope,
+    private val volumePanelViewModel: VolumePanelViewModel,
+    private val actionsInteractor: MediaOutputActionsInteractor,
+    interactor: MediaOutputInteractor,
+) {
+
+    private val mediaDeviceSession: StateFlow<MediaDeviceSession> =
+        interactor.mediaDeviceSession.stateIn(
+            coroutineScope,
+            SharingStarted.Eagerly,
+            MediaDeviceSession.Unknown,
+        )
+
+    val connectedDeviceViewModel: StateFlow<ConnectedDeviceViewModel?> =
+        combine(mediaDeviceSession, interactor.currentConnectedDevice) {
+                mediaDeviceSession,
+                currentConnectedDevice ->
+                ConnectedDeviceViewModel(
+                    if (mediaDeviceSession.isPlaying()) {
+                        context.getString(
+                            R.string.media_output_label_title,
+                            (mediaDeviceSession as MediaDeviceSession.Active).appLabel
+                        )
+                    } else {
+                        context.getString(R.string.media_output_title_without_playing)
+                    },
+                    currentConnectedDevice?.name,
+                )
+            }
+            .stateIn(
+                coroutineScope,
+                SharingStarted.Eagerly,
+                null,
+            )
+
+    val deviceIconViewModel: StateFlow<DeviceIconViewModel?> =
+        combine(mediaDeviceSession, interactor.currentConnectedDevice) {
+                mediaDeviceSession,
+                currentConnectedDevice ->
+                if (mediaDeviceSession.isPlaying()) {
+                    val icon =
+                        currentConnectedDevice?.icon?.let { Icon.Loaded(it, null) }
+                            ?: Icon.Resource(
+                                com.android.internal.R.drawable.ic_bt_headphones_a2dp,
+                                null
+                            )
+                    DeviceIconViewModel.IsPlaying(
+                        icon,
+                        Color.Attribute(com.android.internal.R.attr.materialColorSecondary),
+                    )
+                } else {
+                    DeviceIconViewModel.IsNotPlaying(
+                        Icon.Resource(R.drawable.ic_media_home_devices, null),
+                        Color.Attribute(com.android.internal.R.attr.materialColorSurface),
+                    )
+                }
+            }
+            .stateIn(
+                coroutineScope,
+                SharingStarted.Eagerly,
+                null,
+            )
+
+    private fun MediaDeviceSession.isPlaying(): Boolean =
+        this is MediaDeviceSession.Active && playbackState?.isActive == true
+
+    fun onDeviceClick(expandable: Expandable) {
+        actionsInteractor.onDeviceClick(expandable)
+        volumePanelViewModel.dismissPanel()
+    }
+
+    fun onBarClick(expandable: Expandable) {
+        actionsInteractor.onBarClick(mediaDeviceSession.value, expandable)
+        volumePanelViewModel.dismissPanel()
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/shared/model/VolumePanelComponents.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/shared/model/VolumePanelComponents.kt
index 842c323..6c742ba 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/shared/model/VolumePanelComponents.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/shared/model/VolumePanelComponents.kt
@@ -20,6 +20,7 @@
 
 object VolumePanelComponents {
 
+    const val MEDIA_OUTPUT: VolumePanelComponentKey = "media_output"
     const val BOTTOM_BAR: VolumePanelComponentKey = "bottom_bar"
     const val CAPTIONING: VolumePanelComponentKey = "captioning"
 }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/dagger/VolumePanelComponent.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/dagger/VolumePanelComponent.kt
index 841daf8..afd3f61 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/dagger/VolumePanelComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/dagger/VolumePanelComponent.kt
@@ -18,6 +18,7 @@
 
 import com.android.systemui.volume.panel.component.bottombar.BottomBarModule
 import com.android.systemui.volume.panel.component.captioning.CaptioningModule
+import com.android.systemui.volume.panel.component.mediaoutput.MediaOutputModule
 import com.android.systemui.volume.panel.dagger.factory.VolumePanelComponentFactory
 import com.android.systemui.volume.panel.dagger.scope.VolumePanelScope
 import com.android.systemui.volume.panel.domain.DomainModule
@@ -46,6 +47,7 @@
             // Components modules
             BottomBarModule::class,
             CaptioningModule::class,
+            MediaOutputModule::class,
         ]
 )
 interface VolumePanelComponent {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/domain/DomainModule.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/domain/DomainModule.kt
index defa92d..55d8de5 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/domain/DomainModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/domain/DomainModule.kt
@@ -51,6 +51,7 @@
         fun provideEnabledComponents(): Collection<VolumePanelComponentKey> {
             return setOf(
                 VolumePanelComponents.CAPTIONING,
+                VolumePanelComponents.MEDIA_OUTPUT,
                 VolumePanelComponents.BOTTOM_BAR,
             )
         }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/UiModule.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/UiModule.kt
index a3f052d..867df4a 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/UiModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/UiModule.kt
@@ -37,7 +37,11 @@
         @Provides
         @VolumePanelScope
         @HeaderComponents
-        fun provideHeaderComponents(): Collection<VolumePanelComponentKey> = setOf()
+        fun provideHeaderComponents(): Collection<VolumePanelComponentKey> {
+            return setOf(
+                VolumePanelComponents.MEDIA_OUTPUT,
+            )
+        }
 
         @Provides
         @VolumePanelScope
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/activity/VolumePanelActivity.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/activity/VolumePanelActivity.kt
index 1b2265b..53e1b8b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/activity/VolumePanelActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/activity/VolumePanelActivity.kt
@@ -20,8 +20,8 @@
 import androidx.activity.ComponentActivity
 import androidx.activity.enableEdgeToEdge
 import androidx.activity.viewModels
-import androidx.core.view.WindowCompat
 import com.android.systemui.compose.ComposeFacade
+import com.android.systemui.statusbar.policy.ConfigurationController
 import com.android.systemui.volume.panel.shared.flag.VolumePanelFlag
 import com.android.systemui.volume.panel.ui.viewmodel.VolumePanelViewModel
 import javax.inject.Inject
@@ -32,6 +32,7 @@
 constructor(
     private val volumePanelViewModelFactory: Provider<VolumePanelViewModel.Factory>,
     private val volumePanelFlag: VolumePanelFlag,
+    private val configurationController: ConfigurationController,
 ) : ComponentActivity() {
 
     private val viewModel: VolumePanelViewModel by
@@ -43,7 +44,11 @@
 
         volumePanelFlag.assertNewVolumePanel()
 
-        WindowCompat.setDecorFitsSystemWindows(window, false)
         ComposeFacade.setVolumePanelActivityContent(this, viewModel) { finish() }
     }
+
+    override fun onContentChanged() {
+        super.onContentChanged()
+        configurationController.onConfigurationChanged(resources.configuration)
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelState.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelState.kt
index f67db96..7f33a6b 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelState.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelState.kt
@@ -22,10 +22,13 @@
 /**
  * State of the Volume Panel itself.
  *
- * @property orientation is current Volume Panel orientation.
+ * @property orientation is current Volume Panel orientation
+ * @property isWideScreen is true when Volume Panel should use wide-screen layout and false the
+ *   otherwise
  */
 data class VolumePanelState(
     @Orientation val orientation: Int,
+    val isWideScreen: Boolean,
     val isVisible: Boolean,
 ) {
     init {
diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModel.kt
index d87a79e..3c5b75c 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/viewmodel/VolumePanelViewModel.kt
@@ -21,6 +21,7 @@
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import com.android.systemui.dagger.qualifiers.Application
+import com.android.systemui.res.R
 import com.android.systemui.statusbar.policy.ConfigurationController
 import com.android.systemui.statusbar.policy.onConfigChanged
 import com.android.systemui.volume.panel.dagger.VolumePanelComponent
@@ -72,7 +73,11 @@
                     .distinctUntilChanged(),
                 mutablePanelVisibility,
             ) { configuration, isVisible ->
-                VolumePanelState(orientation = configuration.orientation, isVisible = isVisible)
+                VolumePanelState(
+                    orientation = configuration.orientation,
+                    isVisible = isVisible,
+                    isWideScreen = !resources.getBoolean(R.bool.config_edgeToEdgeBottomSheetDialog),
+                )
             }
             .stateIn(
                 scope,
@@ -80,6 +85,7 @@
                 VolumePanelState(
                     orientation = resources.configuration.orientation,
                     isVisible = mutablePanelVisibility.value,
+                    isWideScreen = !resources.getBoolean(R.bool.config_edgeToEdgeBottomSheetDialog)
                 ),
             )
     val componentsLayout: Flow<ComponentsLayout> =
diff --git a/packages/SystemUI/src/com/android/systemui/wallet/controller/WalletContextualLocationsService.kt b/packages/SystemUI/src/com/android/systemui/wallet/controller/WalletContextualLocationsService.kt
index 1c17fc3..3c50c7b 100644
--- a/packages/SystemUI/src/com/android/systemui/wallet/controller/WalletContextualLocationsService.kt
+++ b/packages/SystemUI/src/com/android/systemui/wallet/controller/WalletContextualLocationsService.kt
@@ -6,9 +6,12 @@
 import androidx.annotation.VisibleForTesting
 import androidx.lifecycle.LifecycleService
 import androidx.lifecycle.lifecycleScope
+import com.android.systemui.Flags.registerNewWalletCardInBackground
+import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.flags.FeatureFlags
 import com.android.systemui.flags.Flags
 import javax.inject.Inject
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.launch
 
@@ -21,6 +24,7 @@
 class WalletContextualLocationsService
 @Inject
 constructor(
+    @Background private val backgroundDispatcher: CoroutineDispatcher,
     private val controller: WalletContextualSuggestionsController,
     private val featureFlags: FeatureFlags,
 ) : LifecycleService() {
@@ -29,20 +33,30 @@
 
     @VisibleForTesting
     constructor(
+        dispatcher: CoroutineDispatcher,
         controller: WalletContextualSuggestionsController,
         featureFlags: FeatureFlags,
         scope: CoroutineScope,
-    ) : this(controller, featureFlags) {
+    ) : this(dispatcher, controller, featureFlags) {
         this.scope = scope
     }
-
     override fun onBind(intent: Intent): IBinder {
         super.onBind(intent)
-        scope.launch {
-            controller.allWalletCards.collect { cards ->
-                val cardsSize = cards.size
-                Log.i(TAG, "Number of cards registered $cardsSize")
-                listener?.registerNewWalletCards(cards)
+        if (registerNewWalletCardInBackground()) {
+            scope.launch(backgroundDispatcher) {
+                controller.allWalletCards.collect { cards ->
+                    val cardsSize = cards.size
+                    Log.i(TAG, "Number of cards registered $cardsSize")
+                    listener?.registerNewWalletCards(cards)
+                }
+            }
+        } else {
+            scope.launch {
+                controller.allWalletCards.collect { cards ->
+                    val cardsSize = cards.size
+                    Log.i(TAG, "Number of cards registered $cardsSize")
+                    listener?.registerNewWalletCards(cards)
+                }
             }
         }
         return binder
@@ -77,17 +91,17 @@
         controller.setSuggestionCardIds(storeLocations.toSet())
     }
 
-    private val binder: IWalletContextualLocationsService.Stub
-    = object : IWalletContextualLocationsService.Stub() {
-        override fun addWalletCardsUpdatedListener(listener: IWalletCardsUpdatedListener) {
-            addWalletCardsUpdatedListenerInternal(listener)
+    private val binder: IWalletContextualLocationsService.Stub =
+        object : IWalletContextualLocationsService.Stub() {
+            override fun addWalletCardsUpdatedListener(listener: IWalletCardsUpdatedListener) {
+                addWalletCardsUpdatedListenerInternal(listener)
+            }
+            override fun onWalletContextualLocationsStateUpdated(storeLocations: List<String>) {
+                onWalletContextualLocationsStateUpdatedInternal(storeLocations)
+            }
         }
-        override fun onWalletContextualLocationsStateUpdated(storeLocations: List<String>) {
-            onWalletContextualLocationsStateUpdatedInternal(storeLocations)
-        }
-    }
 
     companion object {
         private const val TAG = "WalletContextualLocationsService"
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml
index 03fde9f..5882b56 100644
--- a/packages/SystemUI/tests/AndroidManifest.xml
+++ b/packages/SystemUI/tests/AndroidManifest.xml
@@ -207,6 +207,19 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+
+        <activity
+            android:name="com.android.systemui.accessibility.EmptyAccessibilityShortcutTargetActivity"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.ACCESSIBILITY_SHORTCUT_TARGET" />
+            </intent-filter>
+
+            <meta-data
+                android:name="android.accessibilityshortcut.target"
+                android:resource="@xml/accessibility_shortcut_test_activity" />
+        </activity>
     </application>
 
     <instrumentation android:name="android.testing.TestableInstrumentation"
diff --git a/packages/SystemUI/tests/res/values/strings.xml b/packages/SystemUI/tests/res/values/strings.xml
index b9f24c8..8019d18 100644
--- a/packages/SystemUI/tests/res/values/strings.xml
+++ b/packages/SystemUI/tests/res/values/strings.xml
@@ -17,5 +17,7 @@
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 
     <string name="test_content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultrices condimentum ultricies. Sed elementum at massa id sagittis. Nullam dictum massa lorem, nec ornare nunc pharetra vitae. Duis ultrices, felis eu condimentum congue, erat orci efficitur purus, ac rutrum odio lacus sed sapien. Suspendisse erat augue, eleifend eget auctor sagittis, porta eget nibh. Mauris pulvinar urna non justo condimentum, ut vehicula sapien finibus. Aliquam nibh magna, tincidunt ut viverra sed, placerat et turpis. Nam placerat, dui sed tincidunt consectetur, ante velit posuere mauris, tincidunt finibus velit lectus ac tortor. Cras eget lectus feugiat, porttitor velit nec, malesuada massa.</string>
-
+    <string name="test_a11y_shortcut_target_description">Test a11y shortcut target activity description</string>
+    <string name="test_a11y_shortcut_target_summary">Test a11y shortcut target activity summary</string>
+    <string name="test_a11y_shortcut_target_intro">Test a11y shortcut target activity intro</string>
 </resources>
diff --git a/packages/SystemUI/tests/res/xml/accessibility_shortcut_test_activity.xml b/packages/SystemUI/tests/res/xml/accessibility_shortcut_test_activity.xml
new file mode 100644
index 0000000..ad58453
--- /dev/null
+++ b/packages/SystemUI/tests/res/xml/accessibility_shortcut_test_activity.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ Copyright (C) 2024 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.
+  -->
+
+<accessibility-shortcut-target xmlns:android="http://schemas.android.com/apk/res/android"
+    android:description="@string/test_a11y_shortcut_target_description"
+    android:summary="@string/test_a11y_shortcut_target_summary"
+    android:animatedImageDrawable="@null"
+    android:htmlDescription="@null"
+    android:settingsActivity="com.android.systemui.accessibility.SettingsActivity"
+    android:tileService="com.android.systemui.accessibility.TileService"
+    android:intro="@string/test_a11y_shortcut_target_intro" />
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
index cd19259..3026966 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt
@@ -260,7 +260,7 @@
     @Test
     fun keyguardCallback_visibilityChanged_clockDozeCalled() =
         runBlocking(IMMEDIATE) {
-            mSetFlagsRule.disableFlags(AConfigFlags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL)
+            mSetFlagsRule.disableFlags(AConfigFlags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
             val captor = argumentCaptor<KeyguardUpdateMonitorCallback>()
             verify(keyguardUpdateMonitor).registerCallback(capture(captor))
 
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
index e8d86dd..9d81b96 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java
@@ -35,6 +35,7 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.systemui.Flags;
 import com.android.systemui.plugins.clocks.ClockFaceConfig;
 import com.android.systemui.plugins.clocks.ClockTickRate;
 import com.android.systemui.shared.clocks.ClockRegistry;
@@ -50,6 +51,8 @@
 public class KeyguardClockSwitchControllerTest extends KeyguardClockSwitchControllerBaseTest {
     @Test
     public void testInit_viewAlreadyAttached() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         mController.init();
 
         verifyAttachment(times(1));
@@ -57,6 +60,8 @@
 
     @Test
     public void testInit_viewNotYetAttached() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         ArgumentCaptor<View.OnAttachStateChangeListener> listenerArgumentCaptor =
                 ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
 
@@ -73,12 +78,16 @@
 
     @Test
     public void testInitSubControllers() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         mController.init();
         verify(mKeyguardSliceViewController).init();
     }
 
     @Test
     public void testInit_viewDetached() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         ArgumentCaptor<View.OnAttachStateChangeListener> listenerArgumentCaptor =
                 ArgumentCaptor.forClass(View.OnAttachStateChangeListener.class);
         mController.init();
@@ -92,6 +101,8 @@
 
     @Test
     public void testPluginPassesStatusBarState() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         ArgumentCaptor<ClockRegistry.ClockChangeListener> listenerArgumentCaptor =
                 ArgumentCaptor.forClass(ClockRegistry.ClockChangeListener.class);
 
@@ -105,6 +116,8 @@
 
     @Test
     public void testSmartspaceEnabledRemovesKeyguardStatusArea() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSmartspaceController.isEnabled()).thenReturn(true);
         mController.init();
 
@@ -113,6 +126,8 @@
 
     @Test
     public void onLocaleListChangedRebuildsSmartspaceView() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSmartspaceController.isEnabled()).thenReturn(true);
         mController.init();
 
@@ -123,6 +138,8 @@
 
     @Test
     public void onLocaleListChanged_rebuildsSmartspaceViews_whenDecouplingEnabled() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSmartspaceController.isEnabled()).thenReturn(true);
         when(mSmartspaceController.isDateWeatherDecoupled()).thenReturn(true);
         mController.init();
@@ -136,6 +153,8 @@
 
     @Test
     public void testSmartspaceDisabledShowsKeyguardStatusArea() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSmartspaceController.isEnabled()).thenReturn(false);
         mController.init();
 
@@ -144,6 +163,8 @@
 
     @Test
     public void testRefresh() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         mController.refresh();
 
         verify(mSmartspaceController).requestSmartspaceUpdate();
@@ -151,6 +172,8 @@
 
     @Test
     public void testChangeToDoubleLineClockSetsSmallClock() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSecureSettings.getIntForUser(Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK, 1,
                 UserHandle.USER_CURRENT))
                 .thenReturn(0);
@@ -174,11 +197,15 @@
 
     @Test
     public void testGetClock_ForwardsToClock() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         assertEquals(mClockController, mController.getClock());
     }
 
     @Test
     public void testGetLargeClockBottom_returnsExpectedValue() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mLargeClockFrame.getVisibility()).thenReturn(View.VISIBLE);
         when(mLargeClockFrame.getHeight()).thenReturn(100);
         when(mSmallClockFrame.getHeight()).thenReturn(50);
@@ -191,6 +218,8 @@
 
     @Test
     public void testGetSmallLargeClockBottom_returnsExpectedValue() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mLargeClockFrame.getVisibility()).thenReturn(View.GONE);
         when(mLargeClockFrame.getHeight()).thenReturn(100);
         when(mSmallClockFrame.getHeight()).thenReturn(50);
@@ -203,12 +232,16 @@
 
     @Test
     public void testGetClockBottom_nullClock_returnsZero() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mClockEventController.getClock()).thenReturn(null);
         assertEquals(0, mController.getClockBottom(10));
     }
 
     @Test
     public void testChangeLockscreenWeatherEnabledSetsWeatherViewVisible() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mSmartspaceController.isWeatherEnabled()).thenReturn(true);
         ArgumentCaptor<ContentObserver> observerCaptor =
                 ArgumentCaptor.forClass(ContentObserver.class);
@@ -227,6 +260,8 @@
 
     @Test
     public void testChangeClockDateWeatherEnabled_SetsDateWeatherViewVisibility() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         ArgumentCaptor<ClockRegistry.ClockChangeListener> listenerArgumentCaptor =
                 ArgumentCaptor.forClass(ClockRegistry.ClockChangeListener.class);
         when(mSmartspaceController.isEnabled()).thenReturn(true);
@@ -249,11 +284,15 @@
 
     @Test
     public void testGetClock_nullClock_returnsNull() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         when(mClockEventController.getClock()).thenReturn(null);
         assertNull(mController.getClock());
     }
 
     private void verifyAttachment(VerificationMode times) {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         verify(mClockRegistry, times).registerClockChangeListener(
                 any(ClockRegistry.ClockChangeListener.class));
         verify(mClockEventController, times).registerListeners(mView);
@@ -261,6 +300,8 @@
 
     @Test
     public void testSplitShadeEnabledSetToSmartspaceController() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         mController.setSplitShadeEnabled(true);
         verify(mSmartspaceController, times(1)).setSplitShadeEnabled(true);
         verify(mSmartspaceController, times(0)).setSplitShadeEnabled(false);
@@ -268,6 +309,8 @@
 
     @Test
     public void testSplitShadeDisabledSetToSmartspaceController() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         mController.setSplitShadeEnabled(false);
         verify(mSmartspaceController, times(1)).setSplitShadeEnabled(false);
         verify(mSmartspaceController, times(0)).setSplitShadeEnabled(true);
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
index 4508aea..b4a9d40 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchTest.java
@@ -40,6 +40,7 @@
 import android.widget.FrameLayout;
 import android.widget.TextView;
 
+import com.android.systemui.Flags;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.plugins.clocks.ClockController;
 import com.android.systemui.plugins.clocks.ClockFaceController;
@@ -79,6 +80,8 @@
 
     @Before
     public void setUp() {
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
+
         MockitoAnnotations.initMocks(this);
         when(mMockKeyguardSliceView.getContext()).thenReturn(mContext);
         when(mMockKeyguardSliceView.findViewById(R.id.keyguard_status_area))
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index be06cc5..538daee 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -1500,7 +1500,6 @@
 
         verify(mHandler).postDelayed(mKeyguardUpdateMonitor.mFpCancelNotReceived,
                 DEFAULT_CANCEL_SIGNAL_TIMEOUT);
-
         mKeyguardUpdateMonitor.onFingerprintAuthenticated(0, true);
         mTestableLooper.processAllMessages();
 
@@ -2016,6 +2015,34 @@
     }
 
     @Test
+    public void authenticateFingerprint_onFaceLockout_detectFingerprint() throws RemoteException {
+        // GIVEN fingerprintAuthenticate
+        mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
+        mTestableLooper.processAllMessages();
+        verifyFingerprintAuthenticateCall();
+        verifyFingerprintDetectNeverCalled();
+        clearInvocations(mFingerprintManager);
+
+        // WHEN class 3 face is locked out
+        when(mFaceAuthInteractor.isFaceAuthStrong()).thenReturn(true);
+        when(mFaceAuthInteractor.isFaceAuthEnabledAndEnrolled()).thenReturn(true);
+        setupFingerprintAuth(/* isClass3 */ true);
+        // GIVEN primary auth is not required by StrongAuthTracker
+        primaryAuthNotRequiredByStrongAuthTracker();
+
+        // WHEN face (class 3) is locked out
+        faceAuthLockOut();
+        mTestableLooper.processAllMessages();
+
+        // THEN unlocking with fingerprint is not allowed
+        Assert.assertFalse(mKeyguardUpdateMonitor.isUnlockingWithBiometricAllowed(
+                BiometricSourceType.FINGERPRINT));
+
+        // THEN fingerprint detect gets called
+        verifyFingerprintDetectCall();
+    }
+
+    @Test
     public void testFingerprintSensorProperties() throws RemoteException {
         mFingerprintAuthenticatorsRegisteredCallback.onAllAuthenticatorsRegistered(
                 new ArrayList<>());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt
new file mode 100644
index 0000000..bd446b9
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/data/repository/AccessibilityQsShortcutsRepositoryImplForDeviceTest.kt
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.accessibility.data.repository
+
+import android.accessibilityservice.AccessibilityServiceInfo
+import android.content.ComponentName
+import android.content.pm.ResolveInfo
+import android.content.pm.ServiceInfo
+import android.view.accessibility.AccessibilityManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.internal.accessibility.AccessibilityShortcutController
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.qs.pipeline.shared.TileSpec
+import com.android.systemui.qs.tiles.ColorCorrectionTile
+import com.android.systemui.qs.tiles.ColorInversionTile
+import com.android.systemui.qs.tiles.FontScalingTile
+import com.android.systemui.qs.tiles.OneHandedModeTile
+import com.android.systemui.qs.tiles.ReduceBrightColorsTile
+import com.android.systemui.util.mockito.whenever
+import com.android.systemui.util.settings.FakeSettings
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito
+import org.mockito.internal.util.reflection.FieldSetter
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+
+/**
+ * Unit tests for AccessibilityQsShortcutsRepositoryImpl that requires a device. For example, we
+ * can't mock the AccessibilityShortcutInfo for test. MultiValentTest doesn't compile when using
+ * newly introduced methods and constants.
+ */
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class AccessibilityQsShortcutsRepositoryImplForDeviceTest : SysuiTestCase() {
+    @Rule @JvmField val mockitoRule: MockitoRule = MockitoJUnit.rule()
+
+    // mocks
+    @Mock private lateinit var a11yManager: AccessibilityManager
+    private val testDispatcher = StandardTestDispatcher()
+    private val testScope = TestScope(testDispatcher)
+    private val secureSettings = FakeSettings()
+
+    private val userA11yQsShortcutsRepositoryFactory =
+        object : UserA11yQsShortcutsRepository.Factory {
+            override fun create(userId: Int): UserA11yQsShortcutsRepository {
+                return UserA11yQsShortcutsRepository(
+                    userId,
+                    secureSettings,
+                    testScope.backgroundScope,
+                    testDispatcher,
+                )
+            }
+        }
+
+    private lateinit var underTest: AccessibilityQsShortcutsRepositoryImpl
+
+    @Before
+    fun setUp() {
+        underTest =
+            AccessibilityQsShortcutsRepositoryImpl(
+                a11yManager,
+                userA11yQsShortcutsRepositoryFactory,
+                testDispatcher
+            )
+    }
+
+    @Test
+    fun testTileSpecToComponentMappingContent() {
+        val mapping = AccessibilityQsShortcutsRepositoryImpl.TILE_SPEC_TO_COMPONENT_MAPPING
+
+        assertThat(mapping.size).isEqualTo(5)
+        assertThat(mapping[ColorCorrectionTile.TILE_SPEC])
+            .isEqualTo(AccessibilityShortcutController.DALTONIZER_TILE_COMPONENT_NAME)
+        assertThat(mapping[ColorInversionTile.TILE_SPEC])
+            .isEqualTo(AccessibilityShortcutController.COLOR_INVERSION_TILE_COMPONENT_NAME)
+        assertThat(mapping[OneHandedModeTile.TILE_SPEC])
+            .isEqualTo(AccessibilityShortcutController.ONE_HANDED_TILE_COMPONENT_NAME)
+        assertThat(mapping[ReduceBrightColorsTile.TILE_SPEC])
+            .isEqualTo(
+                AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME
+            )
+        assertThat(mapping[FontScalingTile.TILE_SPEC])
+            .isEqualTo(AccessibilityShortcutController.FONT_SIZE_TILE_COMPONENT_NAME)
+    }
+
+    @Test
+    fun notifyAccessibilityManagerTilesChanged_customTiles_onlyNotifyA11yTileServices() =
+        testScope.runTest {
+            val a11yServiceTileService = ComponentName("a11yPackageName", "TileServiceClassName")
+            setupInstalledAccessibilityServices(a11yServiceTileService)
+            // TileService should match accessibility_shortcut_test_activity.xml,
+            // because this test uses the real installed activity list
+            val a11yShortcutTileService =
+                ComponentName(
+                    mContext.packageName,
+                    "com.android.systemui.accessibility.TileService"
+                )
+            setupInstalledAccessibilityShortcutTargets()
+            // Other custom tile service that isn't linked to an accessibility feature
+            val nonA11yTileService = ComponentName("C", "c")
+
+            val changedTiles =
+                listOf(
+                    TileSpec.create(a11yServiceTileService),
+                    TileSpec.create(a11yShortcutTileService),
+                    TileSpec.create(nonA11yTileService)
+                )
+
+            underTest.notifyAccessibilityManagerTilesChanged(context, changedTiles)
+            runCurrent()
+
+            Mockito.verify(a11yManager, Mockito.times(1))
+                .notifyQuickSettingsTilesChanged(
+                    context.userId,
+                    listOf(a11yServiceTileService, a11yShortcutTileService)
+                )
+        }
+
+    @Test
+    fun notifyAccessibilityManagerTilesChanged_noMatchingA11yFrameworkTiles() =
+        testScope.runTest {
+            val changedTiles = listOf(TileSpec.create("a"))
+
+            underTest.notifyAccessibilityManagerTilesChanged(context, changedTiles)
+            runCurrent()
+
+            Mockito.verify(a11yManager, Mockito.times(1))
+                .notifyQuickSettingsTilesChanged(context.userId, emptyList())
+        }
+
+    @Test
+    fun notifyAccessibilityManagerTilesChanged_convertA11yTilesSpecToComponentName() =
+        testScope.runTest {
+            val changedTiles =
+                listOf(
+                    TileSpec.create(ColorCorrectionTile.TILE_SPEC),
+                    TileSpec.create(ColorInversionTile.TILE_SPEC),
+                    TileSpec.create(OneHandedModeTile.TILE_SPEC),
+                    TileSpec.create(ReduceBrightColorsTile.TILE_SPEC),
+                    TileSpec.create(FontScalingTile.TILE_SPEC)
+                )
+
+            underTest.notifyAccessibilityManagerTilesChanged(context, changedTiles)
+            runCurrent()
+
+            Mockito.verify(a11yManager, Mockito.times(1))
+                .notifyQuickSettingsTilesChanged(
+                    context.userId,
+                    listOf(
+                        AccessibilityShortcutController.DALTONIZER_TILE_COMPONENT_NAME,
+                        AccessibilityShortcutController.COLOR_INVERSION_TILE_COMPONENT_NAME,
+                        AccessibilityShortcutController.ONE_HANDED_TILE_COMPONENT_NAME,
+                        AccessibilityShortcutController
+                            .REDUCE_BRIGHT_COLORS_TILE_SERVICE_COMPONENT_NAME,
+                        AccessibilityShortcutController.FONT_SIZE_TILE_COMPONENT_NAME
+                    )
+                )
+        }
+
+    private fun setupInstalledAccessibilityShortcutTargets() {
+        // Can't create a mock AccessibilityShortcutInfo because it's final.
+        // Use the real AccessibilityManager to get the AccessibilityShortcutInfo
+        val realA11yManager = context.getSystemService(AccessibilityManager::class.java)!!
+        val installedA11yActivities =
+            realA11yManager.getInstalledAccessibilityShortcutListAsUser(context, context.userId)
+
+        whenever(a11yManager.getInstalledAccessibilityShortcutListAsUser(context, context.userId))
+            .thenReturn(installedA11yActivities)
+    }
+
+    private fun setupInstalledAccessibilityServices(tileService: ComponentName) {
+        whenever(a11yManager.installedAccessibilityServiceList)
+            .thenReturn(
+                listOf(
+                    createFakeAccessibilityServiceInfo(
+                        tileService.packageName,
+                        tileService.className
+                    )
+                )
+            )
+    }
+
+    private fun createFakeAccessibilityServiceInfo(
+        packageName: String,
+        tileServiceClass: String
+    ): AccessibilityServiceInfo {
+        val serviceInfo = ServiceInfo().also { it.packageName = packageName }
+        val resolveInfo = ResolveInfo().also { it.serviceInfo = serviceInfo }
+
+        val a11yServiceInfo = AccessibilityServiceInfo().also { it.resolveInfo = resolveInfo }
+
+        // Somehow unable to mock the a11yServiceInfo.tileServiceName
+        // Use reflection instead.
+        FieldSetter.setField(
+            a11yServiceInfo,
+            AccessibilityServiceInfo::class.java.getDeclaredField("mTileServiceName"),
+            tileServiceClass
+        )
+
+        return a11yServiceInfo
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
index 9087816..abc95bc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/DragToInteractAnimationControllerTest.java
@@ -82,18 +82,21 @@
 
         mDragToInteractAnimationController.setMagnetListener(new MagnetizedObject.MagnetListener() {
             @Override
-            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onStuckToTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
 
             }
 
             @Override
             public void onUnstuckFromTarget(@NonNull MagnetizedObject.MagneticTarget target,
-                    float velX, float velY, boolean wasFlungOut) {
+                    @NonNull MagnetizedObject<?> draggedObject, float velX, float velY,
+                    boolean wasFlungOut) {
 
             }
 
             @Override
-            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target) {
+            public void onReleasedInTarget(@NonNull MagnetizedObject.MagneticTarget target,
+                    @NonNull MagnetizedObject<?> draggedObject) {
 
             }
         });
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
index 4a1bdbc..ce4db8f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/MenuViewLayerTest.java
@@ -31,10 +31,12 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -69,6 +71,7 @@
 import androidx.dynamicanimation.animation.SpringAnimation;
 import androidx.test.filters.SmallTest;
 
+import com.android.internal.accessibility.dialog.AccessibilityTarget;
 import com.android.internal.messages.nano.SystemMessageProto;
 import com.android.systemui.Flags;
 import com.android.systemui.SysuiTestCase;
@@ -116,6 +119,7 @@
     private String mLastAccessibilityButtonTargets;
     private String mLastEnabledAccessibilityServices;
     private WindowMetrics mWindowMetrics;
+    private MenuViewModel mMenuViewModel;
     private MenuView mMenuView;
     private MenuAnimationController mMenuAnimationController;
 
@@ -148,15 +152,17 @@
                 new WindowMetrics(mDisplayBounds, fakeDisplayInsets(), /* density = */ 0.0f));
         doReturn(mWindowMetrics).when(mStubWindowManager).getCurrentWindowMetrics();
 
-        MenuViewModel menuViewModel = new MenuViewModel(
+        mMenuViewModel = new MenuViewModel(
                 mSpyContext, mStubAccessibilityManager, mSecureSettings);
         MenuViewAppearance menuViewAppearance = new MenuViewAppearance(
                 mSpyContext, mStubWindowManager);
         mMenuView = spy(
-                new MenuView(mSpyContext, menuViewModel, menuViewAppearance, mSecureSettings));
+                new MenuView(mSpyContext, mMenuViewModel, menuViewAppearance, mSecureSettings));
+        // Ensure tests don't actually update metrics.
+        doNothing().when(mMenuView).incrementTexMetric(any(), anyInt());
 
         mMenuViewLayer = spy(new MenuViewLayer(mSpyContext, mStubWindowManager,
-                mStubAccessibilityManager, menuViewModel, menuViewAppearance, mMenuView,
+                mStubAccessibilityManager, mMenuViewModel, menuViewAppearance, mMenuView,
                 mFloatingMenu, mSecureSettings));
         mMenuView = (MenuView) mMenuViewLayer.getChildAt(LayerIndex.MENU_VIEW);
         mMenuAnimationController = mMenuView.getMenuAnimationController();
@@ -382,6 +388,47 @@
         verify(mFloatingMenu).hide();
     }
 
+    @Test
+    @EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
+    public void onDismissAction_incrementsTexMetricDismiss() {
+        int uid1 = 1234, uid2 = 5678;
+        mMenuViewModel.onTargetFeaturesChanged(
+                List.of(new TestAccessibilityTarget(mSpyContext, uid1),
+                        new TestAccessibilityTarget(mSpyContext, uid2)));
+
+        mMenuViewLayer.dispatchAccessibilityAction(R.id.action_remove_menu);
+
+        ArgumentCaptor<Integer> uidCaptor = ArgumentCaptor.forClass(Integer.class);
+        verify(mMenuView, times(2)).incrementTexMetric(eq(MenuViewLayer.TEX_METRIC_DISMISS),
+                uidCaptor.capture());
+        assertThat(uidCaptor.getAllValues()).containsExactly(uid1, uid2);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_FLOATING_MENU_DRAG_TO_EDIT)
+    public void onEditAction_incrementsTexMetricEdit() {
+        int uid1 = 1234, uid2 = 5678;
+        mMenuViewModel.onTargetFeaturesChanged(
+                List.of(new TestAccessibilityTarget(mSpyContext, uid1),
+                        new TestAccessibilityTarget(mSpyContext, uid2)));
+
+        mMenuViewLayer.dispatchAccessibilityAction(R.id.action_edit);
+
+        ArgumentCaptor<Integer> uidCaptor = ArgumentCaptor.forClass(Integer.class);
+        verify(mMenuView, times(2)).incrementTexMetric(eq(MenuViewLayer.TEX_METRIC_EDIT),
+                uidCaptor.capture());
+        assertThat(uidCaptor.getAllValues()).containsExactly(uid1, uid2);
+    }
+
+    /** Simplified AccessibilityTarget for testing MenuViewLayer. */
+    private static class TestAccessibilityTarget extends AccessibilityTarget {
+        TestAccessibilityTarget(Context context, int uid) {
+            // Set fields unused by tests to defaults that allow test compilation.
+            super(context, AccessibilityManager.ACCESSIBILITY_BUTTON, 0, false,
+                    TEST_SELECT_TO_SPEAK_COMPONENT_NAME.flattenToString(), uid, null, null, null);
+        }
+    }
+
     private void setupEnabledAccessibilityServiceList() {
         Settings.Secure.putString(mSpyContext.getContentResolver(),
                 Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
@@ -455,6 +502,6 @@
         View view = mock(View.class);
         when(view.getId()).thenReturn(id);
         magnetListener.onReleasedInTarget(
-                new MagnetizedObject.MagneticTarget(view, 200));
+                new MagnetizedObject.MagneticTarget(view, 200), mock(MagnetizedObject.class));
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
index e3be3822..f07932c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/animation/AnimatorTestRuleOrderTest.kt
@@ -19,7 +19,6 @@
 import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import androidx.core.animation.doOnEnd
-import androidx.test.filters.FlakyTest
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.util.doOnEnd
@@ -31,7 +30,6 @@
 @RunWith(AndroidTestingRunner::class)
 @SmallTest
 @RunWithLooper
-@FlakyTest(bugId = 302149604)
 class AnimatorTestRuleOrderTest : SysuiTestCase() {
 
     @get:Rule val animatorTestRule = AnimatorTestRule(this)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
index 43f7c60..2c1a87d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt
@@ -20,6 +20,8 @@
 import android.hardware.biometrics.BiometricAuthenticator
 import android.hardware.biometrics.BiometricConstants
 import android.hardware.biometrics.BiometricManager
+import android.hardware.biometrics.Flags.FLAG_CUSTOM_BIOMETRIC_PROMPT
+import android.hardware.biometrics.Flags.customBiometricPrompt
 import android.hardware.biometrics.PromptInfo
 import android.hardware.face.FaceSensorPropertiesInternal
 import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
@@ -38,11 +40,11 @@
 import androidx.test.filters.SmallTest
 import com.android.internal.jank.InteractionJankMonitor
 import com.android.internal.widget.LockPatternUtils
-import com.android.systemui.res.R
+import com.android.systemui.Flags.FLAG_CONSTRAINT_BP
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
 import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
 import com.android.systemui.biometrics.data.repository.FakePromptRepository
-import com.android.systemui.biometrics.data.repository.FakeDisplayStateRepository
 import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractor
 import com.android.systemui.biometrics.domain.interactor.DisplayStateInteractorImpl
 import com.android.systemui.biometrics.domain.interactor.FakeCredentialInteractor
@@ -53,6 +55,7 @@
 import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel
 import com.android.systemui.display.data.repository.FakeDisplayRepository
 import com.android.systemui.keyguard.WakefulnessLifecycle
+import com.android.systemui.res.R
 import com.android.systemui.statusbar.VibratorHelper
 import com.android.systemui.statusbar.events.ANIMATING_OUT
 import com.android.systemui.user.domain.interactor.SelectedUserInteractor
@@ -145,6 +148,8 @@
 
     @Before
     fun setup() {
+        mSetFlagsRule.disableFlags(FLAG_CUSTOM_BIOMETRIC_PROMPT)
+        mSetFlagsRule.disableFlags(FLAG_CONSTRAINT_BP)
         displayRepository = FakeDisplayRepository()
 
         displayStateInteractor =
@@ -394,6 +399,19 @@
     }
 
     @Test
+    fun testShowBiometricUIWhenCustomBpEnabledAndNoSensors() {
+        mSetFlagsRule.enableFlags(FLAG_CUSTOM_BIOMETRIC_PROMPT)
+        val container = initializeFingerprintContainer(
+                authenticators = BiometricManager.Authenticators.DEVICE_CREDENTIAL
+        )
+        waitForIdleSync()
+
+        assertThat(customBiometricPrompt()).isTrue()
+        assertThat(container.hasBiometricPrompt()).isTrue()
+        assertThat(container.hasCredentialView()).isFalse()
+    }
+
+    @Test
     fun testCredentialViewUsesEffectiveUserId() {
         whenever(userManager.getCredentialOwnerProfile(anyInt())).thenReturn(200)
         whenever(lockPatternUtils.getKeyguardStoredPasswordQuality(eq(200))).thenReturn(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
new file mode 100644
index 0000000..a53f8d4
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt
@@ -0,0 +1,352 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.deviceentry.domain.interactor
+
+import android.content.res.mainResources
+import android.hardware.face.FaceManager
+import android.hardware.fingerprint.FingerprintManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
+import com.android.systemui.biometrics.shared.model.FingerprintSensorType
+import com.android.systemui.biometrics.shared.model.SensorStrength
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.deviceentry.shared.model.ErrorFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FaceTimeoutMessage
+import com.android.systemui.deviceentry.shared.model.FailedFaceAuthenticationStatus
+import com.android.systemui.deviceentry.shared.model.FingerprintLockoutMessage
+import com.android.systemui.deviceentry.shared.model.HelpFaceAuthenticationStatus
+import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
+import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFaceAuthRepository
+import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class BiometricMessageInteractorTest : SysuiTestCase() {
+    private val kosmos = testKosmos()
+    private val testScope = kosmos.testScope
+    private val underTest = kosmos.biometricMessageInteractor
+
+    private val fingerprintPropertyRepository = kosmos.fingerprintPropertyRepository
+    private val fingerprintAuthRepository = kosmos.deviceEntryFingerprintAuthRepository
+    private val faceAuthRepository = kosmos.fakeDeviceEntryFaceAuthRepository
+    private val biometricSettingsRepository = kosmos.biometricSettingsRepository
+
+    @Test
+    fun fingerprintErrorMessage() =
+        testScope.runTest {
+            val fingerprintErrorMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN fingerprint is allowed
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // WHEN authentication status error is FINGERPRINT_ERROR_HW_UNAVAILABLE
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    msgId = FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE,
+                    msg = "test"
+                )
+            )
+
+            // THEN fingerprintErrorMessage is updated
+            assertThat(fingerprintErrorMessage?.message).isEqualTo("test")
+        }
+
+    @Test
+    fun fingerprintLockoutErrorMessage() =
+        testScope.runTest {
+            val fingerprintErrorMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN fingerprint is allowed
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // WHEN authentication status error is FINGERPRINT_ERROR_HW_UNAVAILABLE
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    msgId = FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
+                    msg = "lockout"
+                )
+            )
+
+            // THEN fingerprintError is updated
+            assertThat(fingerprintErrorMessage).isInstanceOf(FingerprintLockoutMessage::class.java)
+            assertThat(fingerprintErrorMessage?.message).isEqualTo("lockout")
+        }
+
+    @Test
+    fun fingerprintErrorMessage_suppressedError() =
+        testScope.runTest {
+            val fingerprintErrorMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // WHEN authentication status error is FINGERPRINT_ERROR_HW_UNAVAILABLE
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    msgId = FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE,
+                    msg = "test"
+                )
+            )
+
+            // THEN fingerprintErrorMessage isn't update - it's still null
+            assertThat(fingerprintErrorMessage).isNull()
+        }
+
+    @Test
+    fun fingerprintHelpMessage() =
+        testScope.runTest {
+            val fingerprintHelpMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN fingerprint is allowed
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // WHEN authentication status help is FINGERPRINT_ACQUIRED_IMAGER_DIRTY
+            fingerprintAuthRepository.setAuthenticationStatus(
+                HelpFingerprintAuthenticationStatus(
+                    msgId = FingerprintManager.FINGERPRINT_ACQUIRED_IMAGER_DIRTY,
+                    msg = "test"
+                )
+            )
+
+            // THEN fingerprintHelpMessage is updated
+            assertThat(fingerprintHelpMessage?.message).isEqualTo("test")
+        }
+
+    @Test
+    fun fingerprintHelpMessage_primaryAuthRequired() =
+        testScope.runTest {
+            val fingerprintHelpMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN fingerprint cannot currently be used
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(false)
+
+            // WHEN authentication status help is FINGERPRINT_ACQUIRED_IMAGER_DIRTY
+            fingerprintAuthRepository.setAuthenticationStatus(
+                HelpFingerprintAuthenticationStatus(
+                    msgId = FingerprintManager.FINGERPRINT_ACQUIRED_IMAGER_DIRTY,
+                    msg = "test"
+                )
+            )
+
+            // THEN fingerprintHelpMessage isn't update - it's still null
+            assertThat(fingerprintHelpMessage).isNull()
+        }
+
+    @Test
+    fun fingerprintFailMessage_nonUdfps() =
+        testScope.runTest {
+            val fingerprintFailMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN rear fingerprint (not UDFPS)
+            fingerprintPropertyRepository.setProperties(
+                0,
+                SensorStrength.STRONG,
+                FingerprintSensorType.REAR,
+                mapOf()
+            )
+
+            // GIVEN fingerprint is allowed
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // WHEN authentication status fail
+            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
+
+            // THEN fingerprintFailMessage is updated
+            assertThat(fingerprintFailMessage?.message)
+                .isEqualTo(
+                    kosmos.mainResources.getString(
+                        com.android.internal.R.string.fingerprint_error_not_match
+                    )
+                )
+        }
+
+    @Test
+    fun fingerprintFailMessage_udfps() =
+        testScope.runTest {
+            val fingerprintFailMessage by collectLastValue(underTest.fingerprintMessage)
+
+            // GIVEN UDFPS
+            fingerprintPropertyRepository.setProperties(
+                0,
+                SensorStrength.STRONG,
+                FingerprintSensorType.UDFPS_OPTICAL,
+                mapOf()
+            )
+
+            // GIVEN fingerprint is allowed
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // WHEN authentication status fail
+            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
+
+            // THEN fingerprintFailMessage is updated to udfps message
+            assertThat(fingerprintFailMessage?.message)
+                .isEqualTo(
+                    kosmos.mainResources.getString(
+                        com.android.internal.R.string.fingerprint_udfps_error_not_match
+                    )
+                )
+        }
+
+    @Test
+    fun faceFailedMessage_primaryAuthRequired() =
+        testScope.runTest {
+            val faceFailedMessage by collectLastValue(underTest.faceMessage)
+
+            // GIVEN face is not allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(false)
+
+            // WHEN authentication status fail
+            faceAuthRepository.setAuthenticationStatus(FailedFaceAuthenticationStatus())
+
+            // THEN fingerprintFailedMessage doesn't update - it's still null
+            assertThat(faceFailedMessage).isNull()
+        }
+
+    @Test
+    fun faceFailedMessage_faceOnly() =
+        testScope.runTest {
+            val faceFailedMessage by collectLastValue(underTest.faceMessage)
+
+            // GIVEN face is allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(true)
+
+            // GIVEN face only enrolled
+            biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+            biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+
+            // WHEN authentication status fail
+            faceAuthRepository.setAuthenticationStatus(FailedFaceAuthenticationStatus())
+
+            // THEN fingerprintFailedMessage is updated
+            assertThat(faceFailedMessage).isNotNull()
+        }
+
+    @Test
+    fun faceHelpMessage_faceOnly() =
+        testScope.runTest {
+            val faceHelpMessage by collectLastValue(underTest.faceMessage)
+
+            // GIVEN face is allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(true)
+
+            // GIVEN face only enrolled
+            biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+            biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(false)
+
+            // WHEN authentication status help
+            faceAuthRepository.setAuthenticationStatus(
+                HelpFaceAuthenticationStatus(
+                    msg = "Move left",
+                    msgId = FaceManager.FACE_ACQUIRED_TOO_RIGHT,
+                )
+            )
+
+            // THEN fingerprintFailedMessage is updated
+            assertThat(faceHelpMessage).isNotNull()
+        }
+
+    @Test
+    fun faceHelpMessage_coEx() =
+        testScope.runTest {
+            val faceHelpMessage by collectLastValue(underTest.faceMessage)
+
+            // GIVEN face and fingerprint are allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(true)
+            biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true)
+
+            // GIVEN face only enrolled
+            biometricSettingsRepository.setIsFaceAuthEnrolledAndEnabled(true)
+            biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
+
+            // WHEN authentication status help
+            faceAuthRepository.setAuthenticationStatus(
+                HelpFaceAuthenticationStatus(
+                    msg = "Move left",
+                    msgId = FaceManager.FACE_ACQUIRED_TOO_RIGHT,
+                )
+            )
+
+            // THEN fingerprintFailedMessage is NOT updated
+            assertThat(faceHelpMessage).isNull()
+        }
+
+    @Test
+    fun faceErrorMessage_suppressedError() =
+        testScope.runTest {
+            val faceErrorMessage by collectLastValue(underTest.faceMessage)
+
+            // WHEN authentication status error is FACE_ERROR_HW_UNAVAILABLE
+            faceAuthRepository.setAuthenticationStatus(
+                ErrorFaceAuthenticationStatus(
+                    msgId = FaceManager.FACE_ERROR_HW_UNAVAILABLE,
+                    msg = "test"
+                )
+            )
+
+            // THEN faceErrorMessage isn't updated - it's still null since it was suppressed
+            assertThat(faceErrorMessage).isNull()
+        }
+
+    @Test
+    fun faceErrorMessage() =
+        testScope.runTest {
+            val faceErrorMessage by collectLastValue(underTest.faceMessage)
+
+            // WHEN authentication status error is FACE_ERROR_HW_UNAVAILABLE
+            faceAuthRepository.setAuthenticationStatus(
+                ErrorFaceAuthenticationStatus(
+                    msgId = FaceManager.FACE_ERROR_HW_UNAVAILABLE,
+                    msg = "test"
+                )
+            )
+
+            // GIVEN face is allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(true)
+
+            // THEN faceErrorMessage is updated
+            assertThat(faceErrorMessage?.message).isEqualTo("test")
+        }
+
+    @Test
+    fun faceTimeoutErrorMessage() =
+        testScope.runTest {
+            val faceErrorMessage by collectLastValue(underTest.faceMessage)
+
+            // WHEN authentication status error is FACE_ERROR_HW_UNAVAILABLE
+            faceAuthRepository.setAuthenticationStatus(
+                ErrorFaceAuthenticationStatus(msgId = FaceManager.FACE_ERROR_TIMEOUT, msg = "test")
+            )
+
+            // GIVEN face is allowed
+            biometricSettingsRepository.setIsFaceAuthCurrentlyAllowed(true)
+
+            // THEN faceErrorMessage is updated
+            assertThat(faceErrorMessage).isInstanceOf(FaceTimeoutMessage::class.java)
+            assertThat(faceErrorMessage?.message).isEqualTo("test")
+        }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
index bdf0e06..43c860c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryHapticsInteractorTest.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 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.
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
new file mode 100644
index 0000000..f36f032
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
@@ -0,0 +1,259 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.deviceentry.domain.interactor
+
+import android.content.Intent
+import android.content.mockedContext
+import android.hardware.fingerprint.FingerprintManager
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.bouncer.data.repository.keyguardBouncerRepository
+import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
+import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
+import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
+import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.plugins.ActivityStarter.OnDismissAction
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.power.data.repository.fakePowerRepository
+import com.android.systemui.testKosmos
+import com.android.systemui.util.mockito.any
+import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.test.runCurrent
+import kotlinx.coroutines.test.runTest
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentCaptor
+import org.mockito.ArgumentMatchers.eq
+import org.mockito.ArgumentMatchers.isNull
+import org.mockito.Mockito.never
+import org.mockito.Mockito.verify
+
+@OptIn(ExperimentalCoroutinesApi::class)
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() {
+
+    private val kosmos = testKosmos()
+    private val testScope = kosmos.testScope
+    private val underTest = kosmos.occludingAppDeviceEntryInteractor
+
+    private val fingerprintAuthRepository = kosmos.deviceEntryFingerprintAuthRepository
+    private val keyguardRepository = kosmos.fakeKeyguardRepository
+    private val bouncerRepository = kosmos.keyguardBouncerRepository
+    private val powerRepository = kosmos.fakePowerRepository
+    private val biometricSettingsRepository = kosmos.biometricSettingsRepository
+    private val mockedContext = kosmos.mockedContext
+    private val mockedActivityStarter = kosmos.activityStarter
+
+    @Test
+    fun fingerprintSuccess_goToHomeScreen() =
+        testScope.runTest {
+            givenOnOccludingApp(true)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+            runCurrent()
+            verifyGoToHomeScreen()
+        }
+
+    @Test
+    fun fingerprintSuccess_notInteractive_doesNotGoToHomeScreen() =
+        testScope.runTest {
+            givenOnOccludingApp(true)
+            powerRepository.setInteractive(false)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+            runCurrent()
+            verifyNeverGoToHomeScreen()
+        }
+
+    @Test
+    fun fingerprintSuccess_dreaming_doesNotGoToHomeScreen() =
+        testScope.runTest {
+            givenOnOccludingApp(true)
+            keyguardRepository.setDreaming(true)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+            runCurrent()
+            verifyNeverGoToHomeScreen()
+        }
+
+    @Test
+    fun fingerprintSuccess_notOnOccludingApp_doesNotGoToHomeScreen() =
+        testScope.runTest {
+            givenOnOccludingApp(false)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                SuccessFingerprintAuthenticationStatus(0, true)
+            )
+            runCurrent()
+            verifyNeverGoToHomeScreen()
+        }
+
+    @Test
+    fun lockout_goToHomeScreenOnDismissAction() =
+        testScope.runTest {
+            givenOnOccludingApp(true)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
+                    "lockoutTest"
+                )
+            )
+            runCurrent()
+            verifyGoToHomeScreenOnDismiss()
+        }
+
+    @Test
+    fun lockout_notOnOccludingApp_neverGoToHomeScreen() =
+        testScope.runTest {
+            givenOnOccludingApp(false)
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
+                    "lockoutTest"
+                )
+            )
+            runCurrent()
+            verifyNeverGoToHomeScreen()
+        }
+
+    @Test
+    fun message_fpFailOnOccludingApp_thenNotOnOccludingApp() =
+        testScope.runTest {
+            val message by collectLastValue(underTest.message)
+
+            givenOnOccludingApp(true)
+            givenFingerprintAllowed(true)
+            runCurrent()
+            // WHEN a fp failure come in
+            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
+
+            // GIVEN fingerprint shouldn't run
+            givenOnOccludingApp(false)
+            runCurrent()
+            // WHEN another fp failure arrives
+            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
+
+            // THEN message set to null
+            assertThat(message).isNull()
+        }
+
+    @Test
+    fun message_fpErrorHelpFailOnOccludingApp() =
+        testScope.runTest {
+            val message by collectLastValue(underTest.message)
+
+            givenOnOccludingApp(true)
+            givenFingerprintAllowed(true)
+            runCurrent()
+
+            // ERROR message
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE,
+                    "testError",
+                )
+            )
+            assertThat(message?.message).isEqualTo("testError")
+
+            // HELP message
+            fingerprintAuthRepository.setAuthenticationStatus(
+                HelpFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ACQUIRED_PARTIAL,
+                    "testHelp",
+                )
+            )
+            assertThat(message?.message).isEqualTo("testHelp")
+
+            // FAIL message
+            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
+            assertThat(message?.message).isNotEqualTo("testHelp")
+        }
+
+    @Test
+    fun message_fpError_lockoutFilteredOut() =
+        testScope.runTest {
+            val message by collectLastValue(underTest.message)
+
+            givenOnOccludingApp(true)
+            givenFingerprintAllowed(true)
+            runCurrent()
+
+            // permanent lockout error message
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT,
+                    "testPermanentLockoutMessageFiltered",
+                )
+            )
+            assertThat(message).isNull()
+
+            // temporary lockout error message
+            fingerprintAuthRepository.setAuthenticationStatus(
+                ErrorFingerprintAuthenticationStatus(
+                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
+                    "testLockoutMessageFiltered",
+                )
+            )
+            assertThat(message).isNull()
+        }
+
+    private fun givenOnOccludingApp(isOnOccludingApp: Boolean) {
+        powerRepository.setInteractive(true)
+        keyguardRepository.setKeyguardOccluded(isOnOccludingApp)
+        keyguardRepository.setKeyguardShowing(isOnOccludingApp)
+        keyguardRepository.setDreaming(false)
+        bouncerRepository.setPrimaryShow(!isOnOccludingApp)
+        bouncerRepository.setAlternateVisible(!isOnOccludingApp)
+    }
+
+    private fun givenFingerprintAllowed(allowed: Boolean) {
+        biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(allowed)
+    }
+
+    private fun verifyGoToHomeScreen() {
+        val intentCaptor = ArgumentCaptor.forClass(Intent::class.java)
+        verify(mockedContext).startActivity(intentCaptor.capture())
+
+        assertThat(intentCaptor.value.hasCategory(Intent.CATEGORY_HOME)).isTrue()
+        assertThat(intentCaptor.value.action).isEqualTo(Intent.ACTION_MAIN)
+    }
+
+    private fun verifyNeverGoToHomeScreen() {
+        verify(mockedContext, never()).startActivity(any())
+        verify(mockedActivityStarter, never())
+            .dismissKeyguardThenExecute(any(OnDismissAction::class.java), isNull(), eq(false))
+    }
+
+    private fun verifyGoToHomeScreenOnDismiss() {
+        val onDimissActionCaptor = ArgumentCaptor.forClass(OnDismissAction::class.java)
+        verify(mockedActivityStarter)
+            .dismissKeyguardThenExecute(onDimissActionCaptor.capture(), isNull(), eq(false))
+        onDimissActionCaptor.value.onDismiss()
+
+        verifyGoToHomeScreen()
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
index e158e47..e97edcb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/deviceentry/domain/ui/viewmodel/UdfpsAccessibilityOverlayViewModelTest.kt
@@ -27,6 +27,7 @@
 import com.android.systemui.flags.Flags.FULL_SCREEN_USER_SWITCHER
 import com.android.systemui.flags.fakeFeatureFlagsClassic
 import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
 import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
 import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.keyguard.shared.model.TransitionState
@@ -51,6 +52,7 @@
         }
     private val deviceEntryIconTransition = kosmos.fakeDeviceEntryIconViewModelTransition
     private val testScope = kosmos.testScope
+    private val keyguardRepository = kosmos.fakeKeyguardRepository
     private val accessibilityRepository = kosmos.fakeAccessibilityRepository
     private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
     private val fingerprintPropertyRepository = kosmos.fingerprintPropertyRepository
@@ -101,13 +103,11 @@
             )
             assertThat(visible).isFalse()
         }
-
-    @Test
-    fun deviceUnlocked_overlayNotVisible() =
+    fun fpNotRunning_overlayNotVisible() =
         testScope.runTest {
             val visible by collectLastValue(underTest.visible)
             setupVisibleStateOnLockscreen()
-            deviceEntryRepository.setUnlocked(true)
+            deviceEntryFingerprintAuthRepository.setIsRunning(false)
             assertThat(visible).isFalse()
         }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
index 2732047..0957748 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java
@@ -21,6 +21,7 @@
 import static android.view.WindowManagerPolicyConstants.OFF_BECAUSE_OF_TIMEOUT;
 import static android.view.WindowManagerPolicyConstants.OFF_BECAUSE_OF_USER;
 
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN;
@@ -650,6 +651,25 @@
     }
 
     @Test
+    public void testBouncerPrompt_deviceLockedByAdaptiveAuth() {
+        // GIVEN no trust agents enabled and biometrics aren't enrolled
+        when(mUpdateMonitor.isTrustUsuallyManaged(anyInt())).thenReturn(false);
+        when(mUpdateMonitor.isUnlockingWithBiometricsPossible(anyInt())).thenReturn(false);
+
+        // WHEN the strong auth reason is SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST
+        KeyguardUpdateMonitor.StrongAuthTracker strongAuthTracker =
+                mock(KeyguardUpdateMonitor.StrongAuthTracker.class);
+        when(mUpdateMonitor.getStrongAuthTracker()).thenReturn(strongAuthTracker);
+        when(strongAuthTracker.hasUserAuthenticatedSinceBoot()).thenReturn(true);
+        when(strongAuthTracker.getStrongAuthForUser(anyInt())).thenReturn(
+                SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST);
+
+        // THEN the bouncer prompt reason should return PROMPT_REASON_ADAPTIVE_AUTH_REQUEST
+        assertEquals(KeyguardSecurityView.PROMPT_REASON_ADAPTIVE_AUTH_REQUEST,
+                mViewMediator.mViewMediatorCallback.getBouncerPromptReason());
+    }
+
+    @Test
     public void testBouncerPrompt_deviceRestartedDueToMainlineUpdate() {
         // GIVEN biometrics enrolled
         when(mUpdateMonitor.isUnlockingWithBiometricsPossible(anyInt())).thenReturn(true);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
index f2bd817..37836a5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryTest.kt
@@ -19,12 +19,18 @@
 
 package com.android.systemui.keyguard.data.repository
 
+import android.os.fakeExecutorHandler
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.common.ui.data.repository.ConfigurationRepository
+import com.android.systemui.concurrency.fakeExecutor
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.testKosmos
+import com.android.systemui.util.ThreadAssert
 import com.android.systemui.util.mockito.whenever
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -45,17 +51,23 @@
     private lateinit var underTest: KeyguardBlueprintRepository
     @Mock lateinit var configurationRepository: ConfigurationRepository
     @Mock lateinit var defaultLockscreenBlueprint: DefaultKeyguardBlueprint
+    @Mock lateinit var threadAssert: ThreadAssert
     private val testScope = TestScope(StandardTestDispatcher())
+    private val kosmos: Kosmos = testKosmos()
 
     @Before
     fun setup() {
         MockitoAnnotations.initMocks(this)
-        whenever(defaultLockscreenBlueprint.id).thenReturn(DEFAULT)
-        underTest =
-            KeyguardBlueprintRepository(
-                configurationRepository,
-                setOf(defaultLockscreenBlueprint),
-            )
+        with(kosmos) {
+            whenever(defaultLockscreenBlueprint.id).thenReturn(DEFAULT)
+            underTest =
+                KeyguardBlueprintRepository(
+                    configurationRepository,
+                    setOf(defaultLockscreenBlueprint),
+                    fakeExecutorHandler,
+                    threadAssert,
+                )
+        }
     }
 
     @Test
@@ -88,13 +100,17 @@
 
     @Test
     fun testTransitionToSameBlueprint_refreshesBlueprint() =
-        testScope.runTest {
-            val refreshBlueprint by collectLastValue(underTest.refreshBluePrint)
-            runCurrent()
+        with(kosmos) {
+            testScope.runTest {
+                val transition by collectLastValue(underTest.refreshTransition)
+                fakeExecutor.runAllReady()
+                runCurrent()
 
-            underTest.applyBlueprint(defaultLockscreenBlueprint)
-            runCurrent()
+                underTest.applyBlueprint(defaultLockscreenBlueprint)
+                fakeExecutor.runAllReady()
+                runCurrent()
 
-            assertThat(refreshBlueprint).isNotNull()
+                assertThat(transition).isNotNull()
+            }
         }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractorTest.kt
deleted file mode 100644
index 3389fa9..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/BiometricMessageInteractorTest.kt
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- *  Copyright (C) 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 com.android.systemui.keyguard.domain.interactor
-
-import android.hardware.biometrics.BiometricSourceType.FINGERPRINT
-import android.hardware.fingerprint.FingerprintManager
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.keyguard.KeyguardUpdateMonitor
-import com.android.keyguard.KeyguardUpdateMonitor.BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
-import com.android.systemui.biometrics.shared.model.FingerprintSensorType
-import com.android.systemui.biometrics.shared.model.SensorStrength
-import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
-import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.util.IndicationHelper
-import com.android.systemui.util.mockito.whenever
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runTest
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers.anyBoolean
-import org.mockito.Mock
-import org.mockito.MockitoAnnotations
-
-@OptIn(ExperimentalCoroutinesApi::class)
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class BiometricMessageInteractorTest : SysuiTestCase() {
-
-    private lateinit var underTest: BiometricMessageInteractor
-    private lateinit var testScope: TestScope
-    private lateinit var fingerprintPropertyRepository: FakeFingerprintPropertyRepository
-    private lateinit var fingerprintAuthRepository: FakeDeviceEntryFingerprintAuthRepository
-
-    @Mock private lateinit var indicationHelper: IndicationHelper
-    @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
-
-    @Before
-    fun setup() {
-        MockitoAnnotations.initMocks(this)
-        testScope = TestScope()
-        fingerprintPropertyRepository = FakeFingerprintPropertyRepository()
-        fingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
-        underTest =
-            BiometricMessageInteractor(
-                mContext.resources,
-                fingerprintAuthRepository,
-                fingerprintPropertyRepository,
-                indicationHelper,
-                keyguardUpdateMonitor,
-            )
-    }
-
-    @Test
-    fun fingerprintErrorMessage() =
-        testScope.runTest {
-            val fingerprintErrorMessage by collectLastValue(underTest.fingerprintErrorMessage)
-
-            // GIVEN FINGERPRINT_ERROR_HW_UNAVAILABLE should NOT be suppressed
-            whenever(
-                    indicationHelper.shouldSuppressErrorMsg(
-                        FINGERPRINT,
-                        FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE
-                    )
-                )
-                .thenReturn(false)
-
-            // WHEN authentication status error is FINGERPRINT_ERROR_HW_UNAVAILABLE
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    msgId = FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE,
-                    msg = "test"
-                )
-            )
-
-            // THEN fingerprintErrorMessage is updated
-            assertThat(fingerprintErrorMessage?.source).isEqualTo(FINGERPRINT)
-            assertThat(fingerprintErrorMessage?.type).isEqualTo(BiometricMessageType.ERROR)
-            assertThat(fingerprintErrorMessage?.id)
-                .isEqualTo(FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE)
-            assertThat(fingerprintErrorMessage?.message).isEqualTo("test")
-        }
-
-    @Test
-    fun fingerprintErrorMessage_suppressedError() =
-        testScope.runTest {
-            val fingerprintErrorMessage by collectLastValue(underTest.fingerprintErrorMessage)
-
-            // GIVEN FINGERPRINT_ERROR_HW_UNAVAILABLE should be suppressed
-            whenever(
-                    indicationHelper.shouldSuppressErrorMsg(
-                        FINGERPRINT,
-                        FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE
-                    )
-                )
-                .thenReturn(true)
-
-            // WHEN authentication status error is FINGERPRINT_ERROR_HW_UNAVAILABLE
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    msgId = FingerprintManager.FINGERPRINT_ERROR_HW_UNAVAILABLE,
-                    msg = "test"
-                )
-            )
-
-            // THEN fingerprintErrorMessage isn't update - it's still null
-            assertThat(fingerprintErrorMessage).isNull()
-        }
-
-    @Test
-    fun fingerprintHelpMessage() =
-        testScope.runTest {
-            val fingerprintHelpMessage by collectLastValue(underTest.fingerprintHelpMessage)
-
-            // GIVEN primary auth is NOT required
-            whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-                .thenReturn(true)
-
-            // WHEN authentication status help is FINGERPRINT_ACQUIRED_IMAGER_DIRTY
-            fingerprintAuthRepository.setAuthenticationStatus(
-                HelpFingerprintAuthenticationStatus(
-                    msgId = FingerprintManager.FINGERPRINT_ACQUIRED_IMAGER_DIRTY,
-                    msg = "test"
-                )
-            )
-
-            // THEN fingerprintHelpMessage is updated
-            assertThat(fingerprintHelpMessage?.source).isEqualTo(FINGERPRINT)
-            assertThat(fingerprintHelpMessage?.type).isEqualTo(BiometricMessageType.HELP)
-            assertThat(fingerprintHelpMessage?.id)
-                .isEqualTo(FingerprintManager.FINGERPRINT_ACQUIRED_IMAGER_DIRTY)
-            assertThat(fingerprintHelpMessage?.message).isEqualTo("test")
-        }
-
-    @Test
-    fun fingerprintHelpMessage_primaryAuthRequired() =
-        testScope.runTest {
-            val fingerprintHelpMessage by collectLastValue(underTest.fingerprintHelpMessage)
-
-            // GIVEN primary auth is required
-            whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-                .thenReturn(false)
-
-            // WHEN authentication status help is FINGERPRINT_ACQUIRED_IMAGER_DIRTY
-            fingerprintAuthRepository.setAuthenticationStatus(
-                HelpFingerprintAuthenticationStatus(
-                    msgId = FingerprintManager.FINGERPRINT_ACQUIRED_IMAGER_DIRTY,
-                    msg = "test"
-                )
-            )
-
-            // THEN fingerprintHelpMessage isn't update - it's still null
-            assertThat(fingerprintHelpMessage).isNull()
-        }
-
-    @Test
-    fun fingerprintFailMessage_nonUdfps() =
-        testScope.runTest {
-            val fingerprintFailMessage by collectLastValue(underTest.fingerprintFailMessage)
-
-            // GIVEN primary auth is NOT required
-            whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-                .thenReturn(true)
-
-            // GIVEN rear fingerprint (not UDFPS)
-            fingerprintPropertyRepository.setProperties(
-                0,
-                SensorStrength.STRONG,
-                FingerprintSensorType.REAR,
-                mapOf()
-            )
-
-            // WHEN authentication status fail
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-
-            // THEN fingerprintFailMessage is updated
-            assertThat(fingerprintFailMessage?.source).isEqualTo(FINGERPRINT)
-            assertThat(fingerprintFailMessage?.type).isEqualTo(BiometricMessageType.FAIL)
-            assertThat(fingerprintFailMessage?.id)
-                .isEqualTo(BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED)
-            assertThat(fingerprintFailMessage?.message)
-                .isEqualTo(
-                    mContext.resources.getString(
-                        com.android.internal.R.string.fingerprint_error_not_match
-                    )
-                )
-        }
-
-    @Test
-    fun fingerprintFailMessage_udfps() =
-        testScope.runTest {
-            val fingerprintFailMessage by collectLastValue(underTest.fingerprintFailMessage)
-
-            // GIVEN primary auth is NOT required
-            whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-                .thenReturn(true)
-
-            // GIVEN UDFPS
-            fingerprintPropertyRepository.setProperties(
-                0,
-                SensorStrength.STRONG,
-                FingerprintSensorType.UDFPS_OPTICAL,
-                mapOf()
-            )
-
-            // WHEN authentication status fail
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-
-            // THEN fingerprintFailMessage is updated to udfps message
-            assertThat(fingerprintFailMessage?.source).isEqualTo(FINGERPRINT)
-            assertThat(fingerprintFailMessage?.type).isEqualTo(BiometricMessageType.FAIL)
-            assertThat(fingerprintFailMessage?.id)
-                .isEqualTo(BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED)
-            assertThat(fingerprintFailMessage?.message)
-                .isEqualTo(
-                    mContext.resources.getString(
-                        com.android.internal.R.string.fingerprint_udfps_error_not_match
-                    )
-                )
-        }
-
-    @Test
-    fun fingerprintFailedMessage_primaryAuthRequired() =
-        testScope.runTest {
-            val fingerprintFailedMessage by collectLastValue(underTest.fingerprintFailMessage)
-
-            // GIVEN primary auth is required
-            whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-                .thenReturn(false)
-
-            // WHEN authentication status fail
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-
-            // THEN fingerprintFailedMessage isn't update - it's still null
-            assertThat(fingerprintFailedMessage).isNull()
-        }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
index 8b16da2..9df00d3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardBlueprintInteractorTest.kt
@@ -23,7 +23,9 @@
 import com.android.systemui.keyguard.data.repository.KeyguardBlueprintRepository
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint
 import com.android.systemui.keyguard.ui.view.layout.blueprints.SplitShadeKeyguardBlueprint
-import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransitionType
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Config
+import com.android.systemui.keyguard.ui.view.layout.blueprints.transitions.IntraBlueprintTransition.Type
 import com.android.systemui.statusbar.policy.SplitShadeStateController
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.whenever
@@ -47,8 +49,7 @@
     private lateinit var underTest: KeyguardBlueprintInteractor
     private lateinit var testScope: TestScope
 
-    val refreshBluePrint: MutableSharedFlow<Unit> = MutableSharedFlow(extraBufferCapacity = 1)
-    val refreshBlueprintTransition: MutableSharedFlow<IntraBlueprintTransitionType> =
+    val refreshTransition: MutableSharedFlow<IntraBlueprintTransition.Config> =
         MutableSharedFlow(extraBufferCapacity = 1)
 
     @Mock private lateinit var splitShadeStateController: SplitShadeStateController
@@ -59,9 +60,7 @@
         MockitoAnnotations.initMocks(this)
         testScope = TestScope(StandardTestDispatcher())
         whenever(keyguardBlueprintRepository.configurationChange).thenReturn(configurationFlow)
-        whenever(keyguardBlueprintRepository.refreshBluePrint).thenReturn(refreshBluePrint)
-        whenever(keyguardBlueprintRepository.refreshBlueprintTransition)
-            .thenReturn(refreshBlueprintTransition)
+        whenever(keyguardBlueprintRepository.refreshTransition).thenReturn(refreshTransition)
 
         underTest =
             KeyguardBlueprintInteractor(
@@ -116,8 +115,8 @@
 
     @Test
     fun testRefreshBlueprintWithTransition() {
-        underTest.refreshBlueprintWithTransition(IntraBlueprintTransitionType.DefaultTransition)
+        underTest.refreshBlueprint(Type.DefaultTransition)
         verify(keyguardBlueprintRepository)
-            .refreshBlueprintWithTransition(IntraBlueprintTransitionType.DefaultTransition)
+            .refreshBlueprint(Config(Type.DefaultTransition, true, true))
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
deleted file mode 100644
index 7358b9d..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/OccludingAppDeviceEntryInteractorTest.kt
+++ /dev/null
@@ -1,371 +0,0 @@
-/*
- *  Copyright (C) 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 com.android.systemui.keyguard.domain.interactor
-
-import android.content.Context
-import android.content.Intent
-import android.hardware.biometrics.BiometricSourceType
-import android.hardware.fingerprint.FingerprintManager
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.android.keyguard.KeyguardUpdateMonitor
-import com.android.systemui.SysuiTestCase
-import com.android.systemui.biometrics.data.repository.FakeFingerprintPropertyRepository
-import com.android.systemui.bouncer.data.repository.FakeKeyguardBouncerRepository
-import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor
-import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
-import com.android.systemui.common.ui.data.repository.FakeConfigurationRepository
-import com.android.systemui.coroutines.collectLastValue
-import com.android.systemui.flags.FakeFeatureFlags
-import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
-import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository
-import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
-import com.android.systemui.keyguard.data.repository.FakeTrustRepository
-import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.shared.model.SuccessFingerprintAuthenticationStatus
-import com.android.systemui.keyguard.util.IndicationHelper
-import com.android.systemui.plugins.ActivityStarter
-import com.android.systemui.plugins.ActivityStarter.OnDismissAction
-import com.android.systemui.power.data.repository.FakePowerRepository
-import com.android.systemui.power.domain.interactor.PowerInteractor
-import com.android.systemui.user.domain.interactor.SelectedUserInteractor
-import com.android.systemui.util.mockito.any
-import com.android.systemui.util.mockito.mock
-import com.android.systemui.util.mockito.whenever
-import com.android.systemui.util.time.FakeSystemClock
-import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.ExperimentalCoroutinesApi
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.test.runCurrent
-import kotlinx.coroutines.test.runTest
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.mockito.ArgumentCaptor
-import org.mockito.ArgumentMatchers.anyBoolean
-import org.mockito.ArgumentMatchers.eq
-import org.mockito.ArgumentMatchers.isNull
-import org.mockito.Mock
-import org.mockito.Mockito.never
-import org.mockito.Mockito.verify
-import org.mockito.MockitoAnnotations
-
-@OptIn(ExperimentalCoroutinesApi::class)
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class OccludingAppDeviceEntryInteractorTest : SysuiTestCase() {
-
-    private lateinit var underTest: OccludingAppDeviceEntryInteractor
-    private lateinit var testScope: TestScope
-    private lateinit var fingerprintPropertyRepository: FakeFingerprintPropertyRepository
-    private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
-    private lateinit var fingerprintAuthRepository: FakeDeviceEntryFingerprintAuthRepository
-    private lateinit var keyguardRepository: FakeKeyguardRepository
-    private lateinit var bouncerRepository: FakeKeyguardBouncerRepository
-    private lateinit var configurationRepository: FakeConfigurationRepository
-    private lateinit var featureFlags: FakeFeatureFlags
-    private lateinit var trustRepository: FakeTrustRepository
-    private lateinit var powerRepository: FakePowerRepository
-    private lateinit var powerInteractor: PowerInteractor
-
-    @Mock private lateinit var indicationHelper: IndicationHelper
-    @Mock private lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
-    @Mock private lateinit var mockedContext: Context
-    @Mock private lateinit var activityStarter: ActivityStarter
-    @Mock private lateinit var mSelectedUserInteractor: SelectedUserInteractor
-
-    @Before
-    fun setup() {
-        MockitoAnnotations.initMocks(this)
-        testScope = TestScope()
-        biometricSettingsRepository = FakeBiometricSettingsRepository()
-        fingerprintPropertyRepository = FakeFingerprintPropertyRepository()
-        fingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository()
-        keyguardRepository = FakeKeyguardRepository()
-        bouncerRepository = FakeKeyguardBouncerRepository()
-        configurationRepository = FakeConfigurationRepository()
-        featureFlags = FakeFeatureFlags()
-        trustRepository = FakeTrustRepository()
-        powerRepository = FakePowerRepository()
-        powerInteractor =
-            PowerInteractor(
-                powerRepository,
-                falsingCollector = mock(),
-                screenOffAnimationController = mock(),
-                statusBarStateController = mock(),
-            )
-
-        underTest =
-            OccludingAppDeviceEntryInteractor(
-                BiometricMessageInteractor(
-                    mContext.resources,
-                    fingerprintAuthRepository,
-                    fingerprintPropertyRepository,
-                    indicationHelper,
-                    keyguardUpdateMonitor,
-                ),
-                fingerprintAuthRepository,
-                KeyguardInteractorFactory.create(
-                        featureFlags = featureFlags,
-                        repository = keyguardRepository,
-                        bouncerRepository = bouncerRepository,
-                        configurationRepository = configurationRepository,
-                        sceneInteractor =
-                            mock { whenever(transitioningTo).thenReturn(MutableStateFlow(null)) },
-                        powerInteractor = powerInteractor,
-                    )
-                    .keyguardInteractor,
-                PrimaryBouncerInteractor(
-                    bouncerRepository,
-                    primaryBouncerView = mock(),
-                    mainHandler = mock(),
-                    keyguardStateController = mock(),
-                    keyguardSecurityModel = mock(),
-                    primaryBouncerCallbackInteractor = mock(),
-                    falsingCollector = mock(),
-                    dismissCallbackRegistry = mock(),
-                    context,
-                    keyguardUpdateMonitor,
-                    trustRepository,
-                    testScope.backgroundScope,
-                    mSelectedUserInteractor,
-                    deviceEntryFaceAuthInteractor = mock(),
-                ),
-                AlternateBouncerInteractor(
-                    statusBarStateController = mock(),
-                    keyguardStateController = mock(),
-                    bouncerRepository,
-                    FakeFingerprintPropertyRepository(),
-                    biometricSettingsRepository,
-                    FakeSystemClock(),
-                    keyguardUpdateMonitor,
-                    scope = testScope.backgroundScope,
-                ),
-                testScope.backgroundScope,
-                mockedContext,
-                activityStarter,
-                powerInteractor,
-            )
-    }
-
-    @Test
-    fun fingerprintSuccess_goToHomeScreen() =
-        testScope.runTest {
-            givenOnOccludingApp(true)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                SuccessFingerprintAuthenticationStatus(0, true)
-            )
-            runCurrent()
-            verifyGoToHomeScreen()
-        }
-
-    @Test
-    fun fingerprintSuccess_notInteractive_doesNotGoToHomeScreen() =
-        testScope.runTest {
-            givenOnOccludingApp(true)
-            powerRepository.setInteractive(false)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                SuccessFingerprintAuthenticationStatus(0, true)
-            )
-            runCurrent()
-            verifyNeverGoToHomeScreen()
-        }
-
-    @Test
-    fun fingerprintSuccess_dreaming_doesNotGoToHomeScreen() =
-        testScope.runTest {
-            givenOnOccludingApp(true)
-            keyguardRepository.setDreaming(true)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                SuccessFingerprintAuthenticationStatus(0, true)
-            )
-            runCurrent()
-            verifyNeverGoToHomeScreen()
-        }
-
-    @Test
-    fun fingerprintSuccess_notOnOccludingApp_doesNotGoToHomeScreen() =
-        testScope.runTest {
-            givenOnOccludingApp(false)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                SuccessFingerprintAuthenticationStatus(0, true)
-            )
-            runCurrent()
-            verifyNeverGoToHomeScreen()
-        }
-
-    @Test
-    fun lockout_goToHomeScreenOnDismissAction() =
-        testScope.runTest {
-            givenOnOccludingApp(true)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
-                    "lockoutTest"
-                )
-            )
-            runCurrent()
-            verifyGoToHomeScreenOnDismiss()
-        }
-
-    @Test
-    fun lockout_notOnOccludingApp_neverGoToHomeScreen() =
-        testScope.runTest {
-            givenOnOccludingApp(false)
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
-                    "lockoutTest"
-                )
-            )
-            runCurrent()
-            verifyNeverGoToHomeScreen()
-        }
-
-    @Test
-    fun message_fpFailOnOccludingApp_thenNotOnOccludingApp() =
-        testScope.runTest {
-            val message by collectLastValue(underTest.message)
-
-            givenOnOccludingApp(true)
-            givenPrimaryAuthRequired(false)
-            runCurrent()
-            // WHEN a fp failure come in
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-            // THEN message set to failure
-            assertThat(message?.type).isEqualTo(BiometricMessageType.FAIL)
-
-            // GIVEN fingerprint shouldn't run
-            givenOnOccludingApp(false)
-            runCurrent()
-            // WHEN another fp failure arrives
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-
-            // THEN message set to null
-            assertThat(message).isNull()
-        }
-
-    @Test
-    fun message_fpErrorHelpFailOnOccludingApp() =
-        testScope.runTest {
-            val message by collectLastValue(underTest.message)
-
-            givenOnOccludingApp(true)
-            givenPrimaryAuthRequired(false)
-            runCurrent()
-
-            // ERROR message
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ERROR_CANCELED,
-                    "testError",
-                )
-            )
-            assertThat(message?.source).isEqualTo(BiometricSourceType.FINGERPRINT)
-            assertThat(message?.id).isEqualTo(FingerprintManager.FINGERPRINT_ERROR_CANCELED)
-            assertThat(message?.message).isEqualTo("testError")
-            assertThat(message?.type).isEqualTo(BiometricMessageType.ERROR)
-
-            // HELP message
-            fingerprintAuthRepository.setAuthenticationStatus(
-                HelpFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ACQUIRED_PARTIAL,
-                    "testHelp",
-                )
-            )
-            assertThat(message?.source).isEqualTo(BiometricSourceType.FINGERPRINT)
-            assertThat(message?.id).isEqualTo(FingerprintManager.FINGERPRINT_ACQUIRED_PARTIAL)
-            assertThat(message?.message).isEqualTo("testHelp")
-            assertThat(message?.type).isEqualTo(BiometricMessageType.HELP)
-
-            // FAIL message
-            fingerprintAuthRepository.setAuthenticationStatus(FailFingerprintAuthenticationStatus)
-            assertThat(message?.source).isEqualTo(BiometricSourceType.FINGERPRINT)
-            assertThat(message?.id)
-                .isEqualTo(KeyguardUpdateMonitor.BIOMETRIC_HELP_FINGERPRINT_NOT_RECOGNIZED)
-            assertThat(message?.type).isEqualTo(BiometricMessageType.FAIL)
-        }
-
-    @Test
-    fun message_fpError_lockoutFilteredOut() =
-        testScope.runTest {
-            val message by collectLastValue(underTest.message)
-
-            givenOnOccludingApp(true)
-            givenPrimaryAuthRequired(false)
-            runCurrent()
-
-            // permanent lockout error message
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT,
-                    "testPermanentLockoutMessageFiltered",
-                )
-            )
-            assertThat(message).isNull()
-
-            // temporary lockout error message
-            fingerprintAuthRepository.setAuthenticationStatus(
-                ErrorFingerprintAuthenticationStatus(
-                    FingerprintManager.FINGERPRINT_ERROR_LOCKOUT,
-                    "testLockoutMessageFiltered",
-                )
-            )
-            assertThat(message).isNull()
-        }
-
-    private fun givenOnOccludingApp(isOnOccludingApp: Boolean) {
-        powerRepository.setInteractive(true)
-        keyguardRepository.setKeyguardOccluded(isOnOccludingApp)
-        keyguardRepository.setKeyguardShowing(isOnOccludingApp)
-        keyguardRepository.setDreaming(false)
-        bouncerRepository.setPrimaryShow(!isOnOccludingApp)
-        bouncerRepository.setAlternateVisible(!isOnOccludingApp)
-    }
-
-    private fun givenPrimaryAuthRequired(required: Boolean) {
-        whenever(keyguardUpdateMonitor.isUnlockingWithBiometricAllowed(anyBoolean()))
-            .thenReturn(!required)
-    }
-
-    private fun verifyGoToHomeScreen() {
-        val intentCaptor = ArgumentCaptor.forClass(Intent::class.java)
-        verify(mockedContext).startActivity(intentCaptor.capture())
-
-        assertThat(intentCaptor.value.hasCategory(Intent.CATEGORY_HOME)).isTrue()
-        assertThat(intentCaptor.value.action).isEqualTo(Intent.ACTION_MAIN)
-    }
-
-    private fun verifyNeverGoToHomeScreen() {
-        verify(mockedContext, never()).startActivity(any())
-        verify(activityStarter, never())
-            .dismissKeyguardThenExecute(any(OnDismissAction::class.java), isNull(), eq(false))
-    }
-
-    private fun verifyGoToHomeScreenOnDismiss() {
-        val onDimissActionCaptor = ArgumentCaptor.forClass(OnDismissAction::class.java)
-        verify(activityStarter)
-            .dismissKeyguardThenExecute(onDimissActionCaptor.capture(), isNull(), eq(false))
-        onDimissActionCaptor.value.onDismiss()
-
-        verifyGoToHomeScreen()
-    }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
index ad86ee9..9c7f254 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/blueprints/DefaultKeyguardBlueprintTest.kt
@@ -38,6 +38,7 @@
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusBarSection
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultStatusViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.DefaultUdfpsAccessibilityOverlaySection
+import com.android.systemui.keyguard.ui.view.layout.sections.KeyguardSliceViewSection
 import com.android.systemui.keyguard.ui.view.layout.sections.SmartspaceSection
 import com.android.systemui.keyguard.ui.view.layout.sections.SplitShadeGuidelines
 import com.android.systemui.util.mockito.whenever
@@ -71,6 +72,7 @@
     @Mock private lateinit var communalTutorialIndicatorSection: CommunalTutorialIndicatorSection
     @Mock private lateinit var clockSection: ClockSection
     @Mock private lateinit var smartspaceSection: SmartspaceSection
+    @Mock private lateinit var keyguardSliceViewSection: KeyguardSliceViewSection
     @Mock
     private lateinit var udfpsAccessibilityOverlaySection: DefaultUdfpsAccessibilityOverlaySection
     @Before
@@ -92,6 +94,7 @@
                 communalTutorialIndicatorSection,
                 clockSection,
                 smartspaceSection,
+                keyguardSliceViewSection,
                 udfpsAccessibilityOverlaySection,
             )
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
index 2da74b0..08d44c1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/ClockSectionTest.kt
@@ -138,10 +138,10 @@
         underTest.applyDefaultConstraints(cs)
 
         val expectedLargeClockTopMargin = LARGE_CLOCK_TOP
-        assetLargeClockTop(cs, expectedLargeClockTopMargin)
+        assertLargeClockTop(cs, expectedLargeClockTopMargin)
 
-        val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_SPLIT_SHADE - CLOCK_FADE_TRANSLATION_Y
-        assetSmallClockTop(cs, expectedSmallClockTopMargin)
+        val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_SPLIT_SHADE
+        assertSmallClockTop(cs, expectedSmallClockTopMargin)
     }
 
     @Test
@@ -152,10 +152,10 @@
         underTest.applyDefaultConstraints(cs)
 
         val expectedLargeClockTopMargin = LARGE_CLOCK_TOP
-        assetLargeClockTop(cs, expectedLargeClockTopMargin)
+        assertLargeClockTop(cs, expectedLargeClockTopMargin)
 
-        val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_NON_SPLIT_SHADE - CLOCK_FADE_TRANSLATION_Y
-        assetSmallClockTop(cs, expectedSmallClockTopMargin)
+        val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_NON_SPLIT_SHADE
+        assertSmallClockTop(cs, expectedSmallClockTopMargin)
     }
 
     @Test
@@ -166,10 +166,10 @@
         underTest.applyDefaultConstraints(cs)
 
         val expectedLargeClockTopMargin = LARGE_CLOCK_TOP
-        assetLargeClockTop(cs, expectedLargeClockTopMargin)
+        assertLargeClockTop(cs, expectedLargeClockTopMargin)
 
         val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_SPLIT_SHADE
-        assetSmallClockTop(cs, expectedSmallClockTopMargin)
+        assertSmallClockTop(cs, expectedSmallClockTopMargin)
     }
 
     @Test
@@ -179,10 +179,10 @@
         val cs = ConstraintSet()
         underTest.applyDefaultConstraints(cs)
         val expectedLargeClockTopMargin = LARGE_CLOCK_TOP
-        assetLargeClockTop(cs, expectedLargeClockTopMargin)
+        assertLargeClockTop(cs, expectedLargeClockTopMargin)
 
         val expectedSmallClockTopMargin = SMALL_CLOCK_TOP_NON_SPLIT_SHADE
-        assetSmallClockTop(cs, expectedSmallClockTopMargin)
+        assertSmallClockTop(cs, expectedSmallClockTopMargin)
     }
 
     @Test
@@ -228,16 +228,22 @@
             .thenReturn(isInSplitShade)
     }
 
-    private fun assetLargeClockTop(cs: ConstraintSet, expectedLargeClockTopMargin: Int) {
+    private fun assertLargeClockTop(cs: ConstraintSet, expectedLargeClockTopMargin: Int) {
         val largeClockConstraint = cs.getConstraint(R.id.lockscreen_clock_view_large)
         assertThat(largeClockConstraint.layout.topToTop).isEqualTo(ConstraintSet.PARENT_ID)
         assertThat(largeClockConstraint.layout.topMargin).isEqualTo(expectedLargeClockTopMargin)
     }
 
-    private fun assetSmallClockTop(cs: ConstraintSet, expectedSmallClockTopMargin: Int) {
+    private fun assertSmallClockTop(cs: ConstraintSet, expectedSmallClockTopMargin: Int) {
+        val smallClockGuidelineConstraint = cs.getConstraint(R.id.small_clock_guideline_top)
+        assertThat(smallClockGuidelineConstraint.layout.topToTop).isEqualTo(-1)
+        assertThat(smallClockGuidelineConstraint.layout.guideBegin)
+            .isEqualTo(expectedSmallClockTopMargin)
+
         val smallClockConstraint = cs.getConstraint(R.id.lockscreen_clock_view)
-        assertThat(smallClockConstraint.layout.topToTop).isEqualTo(ConstraintSet.PARENT_ID)
-        assertThat(smallClockConstraint.layout.topMargin).isEqualTo(expectedSmallClockTopMargin)
+        assertThat(smallClockConstraint.layout.topToBottom)
+            .isEqualTo(R.id.small_clock_guideline_top)
+        assertThat(smallClockConstraint.layout.topMargin).isEqualTo(0)
     }
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
index deb3a83..8eccde7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/view/layout/sections/SmartspaceSectionTest.kt
@@ -88,6 +88,8 @@
         whenever(keyguardClockViewModel.hasCustomWeatherDataDisplay)
             .thenReturn(hasCustomWeatherDataDisplay)
         whenever(keyguardClockViewModel.clockShouldBeCentered).thenReturn(clockShouldBeCentered)
+        whenever(keyguardSmartspaceViewModel.isSmartspaceEnabled).thenReturn(true)
+
         constraintSet = ConstraintSet()
     }
 
@@ -103,7 +105,6 @@
 
     @Test
     fun testAddViews_smartspaceEnabled_dateWeatherDecoupled() {
-        whenever(keyguardSmartspaceViewModel.isSmartspaceEnabled).thenReturn(true)
         whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true)
         underTest.addViews(constraintLayout)
         assert(smartspaceView.parent == constraintLayout)
@@ -113,7 +114,6 @@
 
     @Test
     fun testAddViews_smartspaceEnabled_notDateWeatherDecoupled() {
-        whenever(keyguardSmartspaceViewModel.isSmartspaceEnabled).thenReturn(true)
         whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(false)
         underTest.addViews(constraintLayout)
         assert(smartspaceView.parent == constraintLayout)
@@ -123,7 +123,6 @@
 
     @Test
     fun testConstraintsWhenNotHasCustomWeatherDataDisplay() {
-        whenever(keyguardSmartspaceViewModel.isSmartspaceEnabled).thenReturn(true)
         whenever(keyguardSmartspaceViewModel.isDateWeatherDecoupled).thenReturn(true)
         hasCustomWeatherDataDisplay.value = false
         underTest.addViews(constraintLayout)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
index 795e68d..c381749 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/AodToLockscreenTransitionViewModelTest.kt
@@ -59,6 +59,24 @@
         }
 
     @Test
+    fun lockscreenAlphaStartsFromViewStateAccessorAlpha() =
+        testScope.runTest {
+            val viewState = ViewStateAccessor(alpha = { 0.5f })
+            val alpha by collectLastValue(underTest.lockscreenAlpha(viewState))
+
+            repository.sendTransitionStep(step(0f, TransitionState.STARTED))
+
+            repository.sendTransitionStep(step(0f))
+            assertThat(alpha).isEqualTo(0.5f)
+
+            repository.sendTransitionStep(step(0.5f))
+            assertThat(alpha).isEqualTo(0.75f)
+
+            repository.sendTransitionStep(step(1f))
+            assertThat(alpha).isEqualTo(1f)
+        }
+
+    @Test
     fun deviceEntryBackgroundView_udfps_alphaFadeIn() =
         testScope.runTest {
             fingerprintPropertyRepository.supportsUdfps()
@@ -83,25 +101,6 @@
             assertThat(deviceEntryBackgroundViewAlpha).isEqualTo(1f)
         }
 
-    @Test
-    fun deviceEntryBackgroundView_rearFp_noUpdates() =
-        testScope.runTest {
-            fingerprintPropertyRepository.supportsRearFps()
-            val deviceEntryBackgroundViewAlpha by
-                collectLastValue(underTest.deviceEntryBackgroundViewAlpha)
-            // no updates
-            repository.sendTransitionStep(step(0f, TransitionState.STARTED))
-            assertThat(deviceEntryBackgroundViewAlpha).isNull()
-            repository.sendTransitionStep(step(0.1f))
-            assertThat(deviceEntryBackgroundViewAlpha).isNull()
-            repository.sendTransitionStep(step(0.3f))
-            assertThat(deviceEntryBackgroundViewAlpha).isNull()
-            repository.sendTransitionStep(step(0.6f))
-            assertThat(deviceEntryBackgroundViewAlpha).isNull()
-            repository.sendTransitionStep(step(1f))
-            assertThat(deviceEntryBackgroundViewAlpha).isNull()
-        }
-
     private fun step(
         value: Float,
         state: TransitionState = TransitionState.RUNNING
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
index 5996502..c896486 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/MediaControlPanelTest.kt
@@ -40,6 +40,7 @@
 import android.media.session.MediaSession
 import android.media.session.PlaybackState
 import android.os.Bundle
+import android.platform.test.annotations.EnableFlags
 import android.provider.Settings
 import android.provider.Settings.ACTION_MEDIA_CONTROLS_SETTINGS
 import android.testing.AndroidTestingRunner
@@ -61,6 +62,7 @@
 import com.android.internal.logging.InstanceId
 import com.android.internal.widget.CachingIconView
 import com.android.systemui.ActivityIntentHelper
+import com.android.systemui.Flags
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.bluetooth.BroadcastDialogController
 import com.android.systemui.broadcast.BroadcastSender
@@ -88,6 +90,7 @@
 import com.android.systemui.res.R
 import com.android.systemui.statusbar.NotificationLockscreenUserManager
 import com.android.systemui.statusbar.policy.KeyguardStateController
+import com.android.systemui.surfaceeffects.loadingeffect.LoadingEffectView
 import com.android.systemui.surfaceeffects.ripple.MultiRippleView
 import com.android.systemui.surfaceeffects.turbulencenoise.TurbulenceNoiseAnimationConfig
 import com.android.systemui.surfaceeffects.turbulencenoise.TurbulenceNoiseView
@@ -190,6 +193,7 @@
     private lateinit var dismissText: TextView
     private lateinit var multiRippleView: MultiRippleView
     private lateinit var turbulenceNoiseView: TurbulenceNoiseView
+    private lateinit var loadingEffectView: LoadingEffectView
 
     private lateinit var session: MediaSession
     private lateinit var device: MediaDeviceData
@@ -402,6 +406,7 @@
 
         multiRippleView = MultiRippleView(context, null)
         turbulenceNoiseView = TurbulenceNoiseView(context, null)
+        loadingEffectView = LoadingEffectView(context, null)
 
         whenever(viewHolder.player).thenReturn(view)
         whenever(viewHolder.appIcon).thenReturn(appIcon)
@@ -447,6 +452,7 @@
 
         whenever(viewHolder.multiRippleView).thenReturn(multiRippleView)
         whenever(viewHolder.turbulenceNoiseView).thenReturn(turbulenceNoiseView)
+        whenever(viewHolder.loadingEffectView).thenReturn(loadingEffectView)
     }
 
     /** Initialize elements for the recommendation view holder */
@@ -2429,6 +2435,7 @@
 
         mainExecutor.execute {
             assertThat(turbulenceNoiseView.visibility).isEqualTo(View.VISIBLE)
+            assertThat(loadingEffectView.visibility).isEqualTo(View.INVISIBLE)
 
             clock.advanceTime(
                 MediaControlPanel.TURBULENCE_NOISE_PLAY_DURATION +
@@ -2436,6 +2443,40 @@
             )
 
             assertThat(turbulenceNoiseView.visibility).isEqualTo(View.INVISIBLE)
+            assertThat(loadingEffectView.visibility).isEqualTo(View.INVISIBLE)
+        }
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_SHADERLIB_LOADING_EFFECT_REFACTOR)
+    fun playTurbulenceNoise_newLoadingEffect_finishesAfterDuration() {
+        val semanticActions =
+            MediaButton(
+                playOrPause =
+                    MediaAction(
+                        icon = null,
+                        action = {},
+                        contentDescription = "play",
+                        background = null
+                    )
+            )
+        val data = mediaData.copy(semanticActions = semanticActions)
+        player.attachPlayer(viewHolder)
+        player.bindPlayer(data, KEY)
+
+        viewHolder.actionPlayPause.callOnClick()
+
+        mainExecutor.execute {
+            assertThat(loadingEffectView.visibility).isEqualTo(View.VISIBLE)
+            assertThat(turbulenceNoiseView.visibility).isEqualTo(View.INVISIBLE)
+
+            clock.advanceTime(
+                MediaControlPanel.TURBULENCE_NOISE_PLAY_DURATION +
+                    TurbulenceNoiseAnimationConfig.DEFAULT_EASING_DURATION_IN_MILLIS.toLong()
+            )
+
+            assertThat(loadingEffectView.visibility).isEqualTo(View.INVISIBLE)
+            assertThat(turbulenceNoiseView.visibility).isEqualTo(View.INVISIBLE)
         }
     }
 
@@ -2458,6 +2499,30 @@
         viewHolder.action0.callOnClick()
 
         assertThat(turbulenceNoiseView.visibility).isEqualTo(View.INVISIBLE)
+        assertThat(loadingEffectView.visibility).isEqualTo(View.INVISIBLE)
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_SHADERLIB_LOADING_EFFECT_REFACTOR)
+    fun playTurbulenceNoise_newLoadingEffect_whenPlaybackStateIsNotPlaying_doesNotPlayTurbulence() {
+        val semanticActions =
+            MediaButton(
+                custom0 =
+                    MediaAction(
+                        icon = null,
+                        action = {},
+                        contentDescription = "custom0",
+                        background = null
+                    ),
+            )
+        val data = mediaData.copy(semanticActions = semanticActions)
+        player.attachPlayer(viewHolder)
+        player.bindPlayer(data, KEY)
+
+        viewHolder.action0.callOnClick()
+
+        assertThat(loadingEffectView.visibility).isEqualTo(View.INVISIBLE)
+        assertThat(turbulenceNoiseView.visibility).isEqualTo(View.INVISIBLE)
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
index 8a531fd..52859cd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java
@@ -20,7 +20,12 @@
 import static android.view.Display.INVALID_DISPLAY;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeFalse;
+import static org.junit.Assume.assumeTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -47,7 +52,6 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.dump.DumpManager;
-import com.android.systemui.flags.FeatureFlags;
 import com.android.systemui.model.SysUiState;
 import com.android.systemui.recents.OverviewProxyService;
 import com.android.systemui.settings.FakeDisplayTracker;
@@ -140,6 +144,8 @@
 
     @Test
     public void testCreateNavigationBarsIncludeDefaultTrue() {
+        assumeFalse(enableTaskbarNavbarUnification());
+
         // Large screens may be using taskbar and the logic is different
         mNavigationBarController.mIsLargeScreen = false;
         doNothing().when(mNavigationBarController).createNavigationBar(any(), any(), any());
@@ -285,11 +291,10 @@
         verify(mCommandQueue, never()).addCallback(any(TaskbarDelegate.class));
     }
 
-
     @Test
     public void testConfigurationChange_taskbarNotInitialized() {
         Configuration configuration = mContext.getResources().getConfiguration();
-        when(Utilities.isLargeScreen(any())).thenReturn(true);
+        mNavigationBarController.mIsLargeScreen = true;
         mNavigationBarController.onConfigChanged(configuration);
         verify(mTaskbarDelegate, never()).onConfigurationChanged(configuration);
     }
@@ -297,9 +302,32 @@
     @Test
     public void testConfigurationChange_taskbarInitialized() {
         Configuration configuration = mContext.getResources().getConfiguration();
-        when(Utilities.isLargeScreen(any())).thenReturn(true);
+        mNavigationBarController.mIsLargeScreen = true;
         when(mTaskbarDelegate.isInitialized()).thenReturn(true);
         mNavigationBarController.onConfigChanged(configuration);
         verify(mTaskbarDelegate, times(1)).onConfigurationChanged(configuration);
     }
+
+    @Test
+    public void testShouldRenderTaskbar_taskbarNotRenderedOnPhone() {
+        mNavigationBarController.mIsLargeScreen = false;
+        mNavigationBarController.mIsPhone = true;
+        assertFalse(mNavigationBarController.supportsTaskbar());
+    }
+
+    @Test
+    public void testShouldRenderTaskbar_taskbarRenderedOnTabletOrUnfolded() {
+        mNavigationBarController.mIsLargeScreen = true;
+        mNavigationBarController.mIsPhone = false;
+        assertTrue(mNavigationBarController.supportsTaskbar());
+    }
+
+    @Test
+    public void testShouldRenderTaskbar_taskbarRenderedInFoldedState() {
+        assumeTrue(enableTaskbarNavbarUnification());
+
+        mNavigationBarController.mIsLargeScreen = false;
+        mNavigationBarController.mIsPhone = false;
+        assertTrue(mNavigationBarController.supportsTaskbar());
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index cc27cbd..44b8974 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -103,7 +103,6 @@
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractorFactory;
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
 import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel;
 import com.android.systemui.keyguard.ui.viewmodel.GoneToDreamingLockscreenHostedTransitionViewModel;
 import com.android.systemui.keyguard.ui.viewmodel.GoneToDreamingTransitionViewModel;
@@ -388,7 +387,6 @@
         mFeatureFlags.set(Flags.LOCKSCREEN_ENABLE_LANDSCAPE, false);
         mFeatureFlags.set(Flags.QS_USER_DETAIL_SHORTCUT, false);
 
-        mSetFlagsRule.disableFlags(KeyguardShadeMigrationNssl.FLAG_NAME);
         mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR);
         mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
index 2e8d46a..059053c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java
@@ -57,7 +57,6 @@
 
 import com.android.systemui.DejankUtils;
 import com.android.systemui.flags.Flags;
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.power.domain.interactor.PowerInteractor;
 import com.android.systemui.res.R;
@@ -363,7 +362,7 @@
 
     @Test
     public void onInterceptTouchEvent_nsslMigrationOff_userActivity() {
-        mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL);
+        mSetFlagsRule.disableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
 
         mTouchHandler.onInterceptTouchEvent(MotionEvent.obtain(0L /* downTime */,
                 0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
@@ -374,7 +373,7 @@
 
     @Test
     public void onInterceptTouchEvent_nsslMigrationOn_userActivity_not_called() {
-        mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL);
+        mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
 
         mTouchHandler.onInterceptTouchEvent(MotionEvent.obtain(0L /* downTime */,
                 0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
@@ -1125,7 +1124,7 @@
 
     @Test
     public void nsslFlagEnabled_allowOnlyExternalTouches() {
-        mSetFlagsRule.enableFlags(KeyguardShadeMigrationNssl.FLAG_NAME);
+        mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT);
 
         // This sets the dozing state that is read when onMiddleClicked is eventually invoked.
         mTouchHandler.onTouch(mock(View.class), mDownMotionEvent);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
index 8a22f4c..61fee16 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowControllerImplTest.java
@@ -178,13 +178,16 @@
                 mTestScope.getBackgroundScope(),
                 new SceneContainerRepository(
                         mTestScope.getBackgroundScope(),
-                        mKosmos.getFakeSceneContainerConfig()),
+                        mKosmos.getFakeSceneContainerConfig(),
+                        mKosmos.getSceneDataSource()),
                 powerInteractor,
                 mock(SceneLogger.class),
                 mKosmos.getDeviceUnlockedInteractor());
 
         FakeConfigurationRepository configurationRepository = new FakeConfigurationRepository();
         FakeSceneContainerFlags sceneContainerFlags = new FakeSceneContainerFlags();
+        KeyguardTransitionInteractor keyguardTransitionInteractor =
+                mKosmos.getKeyguardTransitionInteractor();
         KeyguardInteractor keyguardInteractor = new KeyguardInteractor(
                 keyguardRepository,
                 new FakeCommandQueue(),
@@ -193,12 +196,10 @@
                 new FakeKeyguardBouncerRepository(),
                 new ConfigurationInteractor(configurationRepository),
                 shadeRepository,
+                keyguardTransitionInteractor,
                 () -> sceneInteractor);
         CommunalInteractor communalInteractor = mKosmos.getCommunalInteractor();
 
-        KeyguardTransitionInteractor keyguardTransitionInteractor =
-                mKosmos.getKeyguardTransitionInteractor();
-
         mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor();
         mFromPrimaryBouncerTransitionInteractor =
                 mKosmos.getFromPrimaryBouncerTransitionInteractor();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
index 248ed24..c226790 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt
@@ -44,7 +44,6 @@
 import com.android.systemui.keyevent.domain.interactor.SysUIKeyEventHandler
 import com.android.systemui.keyguard.KeyguardUnlockAnimationController
 import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.keyguard.shared.model.TransitionStep
 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerDependencies
 import com.android.systemui.res.R
@@ -378,7 +377,7 @@
 
     @Test
     fun handleDispatchTouchEvent_nsslMigrationOff_userActivity_not_called() {
-        mSetFlagsRule.disableFlags(Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL)
+        mSetFlagsRule.disableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
         underTest.setStatusBarViewController(phoneStatusBarViewController)
 
         interactionEventHandler.handleDispatchTouchEvent(DOWN_EVENT)
@@ -388,7 +387,7 @@
 
     @Test
     fun handleDispatchTouchEvent_nsslMigrationOn_userActivity() {
-        mSetFlagsRule.enableFlags(Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL)
+        mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
         underTest.setStatusBarViewController(phoneStatusBarViewController)
 
         interactionEventHandler.handleDispatchTouchEvent(DOWN_EVENT)
@@ -430,7 +429,7 @@
         // AND the lock icon wants the touch
         whenever(lockIconViewController.willHandleTouchWhileDozing(DOWN_EVENT)).thenReturn(true)
 
-        mSetFlagsRule.enableFlags(KeyguardShadeMigrationNssl.FLAG_NAME)
+        mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
 
         // THEN touch should NOT be intercepted by NotificationShade
         assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isFalse()
@@ -449,7 +448,7 @@
         whenever(quickSettingsController.shouldQuickSettingsIntercept(any(), any(), any()))
             .thenReturn(false)
 
-        mSetFlagsRule.enableFlags(KeyguardShadeMigrationNssl.FLAG_NAME)
+        mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
 
         // THEN touch should NOT be intercepted by NotificationShade
         assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isTrue()
@@ -468,7 +467,7 @@
         whenever(quickSettingsController.shouldQuickSettingsIntercept(any(), any(), any()))
             .thenReturn(true)
 
-        mSetFlagsRule.enableFlags(KeyguardShadeMigrationNssl.FLAG_NAME)
+        mSetFlagsRule.enableFlags(Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
 
         // THEN touch should NOT be intercepted by NotificationShade
         assertThat(interactionEventHandler.shouldInterceptTouchEvent(DOWN_EVENT)).isTrue()
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt
index c326350..d7eada8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationsQSContainerControllerTest.kt
@@ -30,7 +30,6 @@
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.fragments.FragmentHostManager
 import com.android.systemui.fragments.FragmentService
-import com.android.systemui.keyguard.shared.KeyguardShadeMigrationNssl
 import com.android.systemui.navigationbar.NavigationModeController
 import com.android.systemui.navigationbar.NavigationModeController.ModeChangedListener
 import com.android.systemui.plugins.qs.QS
@@ -100,7 +99,7 @@
         MockitoAnnotations.initMocks(this)
         fakeSystemClock = FakeSystemClock()
         delayableExecutor = FakeExecutor(fakeSystemClock)
-        mSetFlagsRule.enableFlags(KeyguardShadeMigrationNssl.FLAG_NAME)
+        mSetFlagsRule.enableFlags(com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT)
         mContext.ensureTestableResources()
         whenever(view.context).thenReturn(mContext)
         whenever(view.resources).thenReturn(mContext.resources)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
index f582402..061f88e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerBaseTest.java
@@ -206,12 +206,15 @@
                 mTestScope.getBackgroundScope(),
                 new SceneContainerRepository(
                         mTestScope.getBackgroundScope(),
-                        mKosmos.getFakeSceneContainerConfig()),
+                        mKosmos.getFakeSceneContainerConfig(),
+                        mKosmos.getSceneDataSource()),
                 powerInteractor,
                 mock(SceneLogger.class),
                 mKosmos.getDeviceUnlockedInteractor());
 
         FakeSceneContainerFlags sceneContainerFlags = new FakeSceneContainerFlags();
+        KeyguardTransitionInteractor keyguardTransitionInteractor =
+                mKosmos.getKeyguardTransitionInteractor();
         KeyguardInteractor keyguardInteractor = new KeyguardInteractor(
                 mKeyguardRepository,
                 new FakeCommandQueue(),
@@ -220,11 +223,9 @@
                 new FakeKeyguardBouncerRepository(),
                 new ConfigurationInteractor(configurationRepository),
                 mShadeRepository,
+                keyguardTransitionInteractor,
                 () -> sceneInteractor);
 
-        KeyguardTransitionInteractor keyguardTransitionInteractor =
-                mKosmos.getKeyguardTransitionInteractor();
-
         mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor();
         mFromPrimaryBouncerTransitionInteractor =
                 mKosmos.getFromPrimaryBouncerTransitionInteractor();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt
index 64fd80d..74d0173 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt
@@ -35,6 +35,7 @@
 import com.android.systemui.plugins.PluginManager
 import com.android.systemui.util.mockito.argumentCaptor
 import com.android.systemui.util.mockito.eq
+import com.android.systemui.util.ThreadAssert
 import java.util.function.BiConsumer
 import junit.framework.Assert.assertEquals
 import junit.framework.Assert.fail
@@ -69,6 +70,7 @@
     @Mock private lateinit var mockDefaultClock: ClockController
     @Mock private lateinit var mockThumbnail: Drawable
     @Mock private lateinit var mockContentResolver: ContentResolver
+    @Mock private lateinit var mockThreadAssert: ThreadAssert
     private lateinit var fakeDefaultProvider: FakeClockPlugin
     private lateinit var pluginListener: PluginListener<ClockProviderPlugin>
     private lateinit var registry: ClockRegistry
@@ -163,14 +165,12 @@
             defaultClockProvider = fakeDefaultProvider,
             keepAllLoaded = false,
             subTag = "Test",
+            assert = mockThreadAssert,
         ) {
             override fun querySettings() { }
             override fun applySettings(value: ClockSettings?) {
                 settings = value
             }
-            // Unit Test does not validate threading
-            override fun assertMainThread() {}
-            override fun assertNotMainThread() {}
         }
         registry.registerListeners()
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java
index 459040a..2bd0d79 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerBaseTest.java
@@ -58,6 +58,7 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.biometrics.AuthController;
 import com.android.systemui.biometrics.FaceHelpMessageDeferral;
+import com.android.systemui.biometrics.FaceHelpMessageDeferralFactory;
 import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
 import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
 import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -136,6 +137,8 @@
     @Mock
     protected AccessibilityManager mAccessibilityManager;
     @Mock
+    protected FaceHelpMessageDeferralFactory mFaceHelpMessageDeferralFactory;
+    @Mock
     protected FaceHelpMessageDeferral mFaceHelpMessageDeferral;
     @Mock
     protected AlternateBouncerInteractor mAlternateBouncerInteractor;
@@ -224,6 +227,8 @@
                 .thenReturn(mDisclosureWithOrganization);
         when(mUserTracker.getUserId()).thenReturn(mCurrentUserId);
 
+        when(mFaceHelpMessageDeferralFactory.create()).thenReturn(mFaceHelpMessageDeferral);
+
         mIndicationHelper = new IndicationHelper(mKeyguardUpdateMonitor);
 
         mWakeLock = new WakeLockFake();
@@ -257,7 +262,7 @@
                 mUserManager, mExecutor, mExecutor, mFalsingManager,
                 mAuthController, mLockPatternUtils, mScreenLifecycle,
                 mKeyguardBypassController, mAccessibilityManager,
-                mFaceHelpMessageDeferral, mock(KeyguardLogger.class),
+                mFaceHelpMessageDeferralFactory, mock(KeyguardLogger.class),
                 mAlternateBouncerInteractor,
                 mAlarmManager,
                 mUserTracker,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
index fb105e2..1396a43 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/StatusBarStateControllerImplTest.kt
@@ -122,6 +122,10 @@
         val shadeRepository = FakeShadeRepository()
         val sceneContainerFlags = FakeSceneContainerFlags()
         val configurationRepository = FakeConfigurationRepository()
+        val keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor
+        fromLockscreenTransitionInteractor = kosmos.fromLockscreenTransitionInteractor
+        fromPrimaryBouncerTransitionInteractor = kosmos.fromPrimaryBouncerTransitionInteractor
+
         val keyguardInteractor =
             KeyguardInteractor(
                 keyguardRepository,
@@ -131,11 +135,9 @@
                 FakeKeyguardBouncerRepository(),
                 ConfigurationInteractor(configurationRepository),
                 shadeRepository,
+                keyguardTransitionInteractor,
                 { kosmos.sceneInteractor },
             )
-        val keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor
-        fromLockscreenTransitionInteractor = kosmos.fromLockscreenTransitionInteractor
-        fromPrimaryBouncerTransitionInteractor = kosmos.fromPrimaryBouncerTransitionInteractor
 
         whenever(deviceEntryUdfpsInteractor.isUdfpsSupported).thenReturn(emptyFlow())
         shadeInteractor =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
index ccc9dc0..8a48fe1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryTest.java
@@ -50,8 +50,8 @@
 
 import androidx.test.filters.SmallTest;
 
-import com.android.systemui.res.R;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.res.R;
 import com.android.systemui.statusbar.RankingBuilder;
 import com.android.systemui.statusbar.SbnBuilder;
 import com.android.systemui.util.time.FakeSystemClock;
@@ -280,6 +280,66 @@
     }
 
     @Test
+    public void testIsNotificationVisibilityPrivate_true() {
+        assertTrue(mEntry.isNotificationVisibilityPrivate());
+    }
+
+    @Test
+    public void testIsNotificationVisibilityPrivate_visibilityPublic_false() {
+        Notification.Builder notification = new Notification.Builder(mContext, "")
+                .setVisibility(Notification.VISIBILITY_PUBLIC)
+                .setSmallIcon(R.drawable.ic_person)
+                .setContentTitle("Title")
+                .setContentText("Text");
+
+        NotificationEntry entry = new NotificationEntryBuilder()
+                .setPkg(TEST_PACKAGE_NAME)
+                .setOpPkg(TEST_PACKAGE_NAME)
+                .setUid(TEST_UID)
+                .setChannel(mChannel)
+                .setId(mId++)
+                .setNotification(notification.build())
+                .setUser(new UserHandle(ActivityManager.getCurrentUser()))
+                .build();
+
+        assertFalse(entry.isNotificationVisibilityPrivate());
+    }
+
+    @Test
+    public void testIsChannelVisibilityPrivate_true() {
+        assertTrue(mEntry.isChannelVisibilityPrivate());
+    }
+
+    @Test
+    public void testIsChannelVisibilityPrivate_visibilityPublic_false() {
+        NotificationChannel channel =
+                new NotificationChannel("id", "name", NotificationChannel.USER_LOCKED_IMPORTANCE);
+        channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
+        StatusBarNotification sbn = new SbnBuilder().build();
+        Ranking ranking = new RankingBuilder()
+                .setChannel(channel)
+                .setKey(sbn.getKey())
+                .build();
+        NotificationEntry entry =
+                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
+
+        assertFalse(entry.isChannelVisibilityPrivate());
+    }
+
+    @Test
+    public void testIsChannelVisibilityPrivate_entryHasNoChannel_false() {
+        StatusBarNotification sbn = new SbnBuilder().build();
+        Ranking ranking = new RankingBuilder()
+                .setChannel(null)
+                .setKey(sbn.getKey())
+                .build();
+        NotificationEntry entry =
+                new NotificationEntry(sbn, ranking, mClock.uptimeMillis());
+
+        assertFalse(entry.isChannelVisibilityPrivate());
+    }
+
+    @Test
     public void notificationDataEntry_testIsLastMessageFromReply() {
         Person.Builder person = new Person.Builder()
                 .setName("name")
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
index 446b9d0..dbf7b6c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerWithScenesTest.kt
@@ -57,7 +57,6 @@
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
 import com.android.systemui.scene.shared.model.ObservableTransitionState
 import com.android.systemui.scene.shared.model.SceneKey
-import com.android.systemui.scene.shared.model.SceneModel
 import com.android.systemui.settings.UserContextProvider
 import com.android.systemui.shade.shadeControllerSceneImpl
 import com.android.systemui.statusbar.NotificationEntryHelper
@@ -607,7 +606,7 @@
             } else {
                 SceneKey.Bouncer
             }
-        sceneInteractor.changeScene(SceneModel(key), "test")
+        sceneInteractor.changeScene(key, "test")
         sceneInteractor.setTransitionState(
             MutableStateFlow<ObservableTransitionState>(ObservableTransitionState.Idle(key))
         )
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
index d4300f0..b938029 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationShelfTest.kt
@@ -226,7 +226,7 @@
 
         whenever(expandableView.minHeight).thenReturn(25)
         whenever(expandableView.shelfTransformationTarget).thenReturn(null) // use translationY
-        whenever(expandableView.isInShelf).thenReturn(true)
+        whenever(expandableView.isInShelf).thenReturn(false)
 
         whenever(ambientState.isOnKeyguard).thenReturn(true)
         whenever(ambientState.isExpansionChanging).thenReturn(false)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
index f266f03..91a9da3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithmTest.kt
@@ -85,6 +85,7 @@
 
     private val bigGap = px(R.dimen.notification_section_divider_height)
     private val smallGap = px(R.dimen.notification_section_divider_height_lockscreen)
+    private val scrimPadding = px(R.dimen.notification_side_paddings)
 
     @Before
     fun setUp() {
@@ -119,6 +120,18 @@
     }
 
     @Test
+    fun resetViewStates_defaultHunWhenShadeIsOpening_yTranslationIsInset() {
+        whenever(notificationRow.isPinned).thenReturn(true)
+        whenever(notificationRow.isHeadsUp).thenReturn(true)
+
+        // scroll the panel over the HUN inset
+        ambientState.stackY = stackScrollAlgorithm.mHeadsUpInset + bigGap
+
+        // the HUN translation should be the panel scroll position + the scrim padding
+        resetViewStates_hunYTranslationIs(ambientState.stackY + scrimPadding)
+    }
+
+    @Test
     @DisableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
     fun resetViewStates_hunAnimatingAway_yTranslationIsInset() {
         whenever(notificationRow.isHeadsUpAnimatingAway).thenReturn(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
index 414d318..4f0f91a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/StackStateAnimatorTest.kt
@@ -18,8 +18,10 @@
 
 import android.platform.test.annotations.EnableFlags
 import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper.RunWithLooper
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.animation.AnimatorTestRule
 import com.android.systemui.res.R
 import com.android.systemui.statusbar.notification.row.ExpandableView
 import com.android.systemui.statusbar.notification.shared.NotificationsImprovedHunAnimation
@@ -31,10 +33,12 @@
 import com.android.systemui.util.mockito.whenever
 import com.google.common.truth.Truth.assertThat
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
 import org.mockito.Mockito.any
+import org.mockito.Mockito.clearInvocations
 import org.mockito.Mockito.description
 import org.mockito.Mockito.eq
 import org.mockito.Mockito.verify
@@ -45,8 +49,11 @@
 
 @SmallTest
 @RunWith(AndroidTestingRunner::class)
+@RunWithLooper
 class StackStateAnimatorTest : SysuiTestCase() {
 
+    @get:Rule val animatorTestRule = AnimatorTestRule(this)
+
     private lateinit var stackStateAnimator: StackStateAnimator
     private val stackScroller: NotificationStackScrollLayout = mock()
     private val view: ExpandableView = mock()
@@ -112,13 +119,16 @@
     }
 
     @Test
+    @EnableFlags(NotificationsImprovedHunAnimation.FLAG_NAME)
     fun startAnimationForEvents_startsHeadsUpDisappearAnim() {
+        val disappearDuration = ANIMATION_DURATION_HEADS_UP_DISAPPEAR.toLong()
         val event = AnimationEvent(view, AnimationEvent.ANIMATION_TYPE_HEADS_UP_DISAPPEAR)
+        clearInvocations(view)
         stackStateAnimator.startAnimationForEvents(arrayListOf(event), 0)
 
         verify(view)
             .performRemoveAnimation(
-                /* duration= */ eq(ANIMATION_DURATION_HEADS_UP_DISAPPEAR.toLong()),
+                /* duration= */ eq(disappearDuration),
                 /* delay= */ eq(0L),
                 /* translationDirection= */ eq(0f),
                 /* isHeadsUpAnimation= */ eq(true),
@@ -127,9 +137,12 @@
                 /* animationListener= */ any()
             )
 
+        animatorTestRule.advanceTimeBy(disappearDuration) // move to the end of SSA animations
         runnableCaptor.value.run() // execute the end runnable
 
-        verify(view, description("should be called at the end of the animation"))
+        verify(view, description("should be translated to the heads up appear start"))
+            .translationY = -stackStateAnimator.mHeadsUpAppearStartAboveScreen
+        verify(view, description("should be called at the end of the disappear animation"))
             .removeFromTransientContainer()
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
index 9055ba4..2da88e9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelTest.kt
@@ -47,6 +47,8 @@
 import com.android.systemui.shade.data.repository.shadeRepository
 import com.android.systemui.shade.mockLargeScreenHeaderHelper
 import com.android.systemui.statusbar.notification.stack.domain.interactor.sharedNotificationContainerInteractor
+import com.android.systemui.statusbar.policy.SplitShadeStateController
+import com.android.systemui.statusbar.policy.splitShadeStateController
 import com.android.systemui.testKosmos
 import com.android.systemui.util.mockito.any
 import com.android.systemui.util.mockito.whenever
@@ -65,6 +67,7 @@
 @RunWith(AndroidJUnit4::class)
 class SharedNotificationContainerViewModelTest : SysuiTestCase() {
     val aodBurnInViewModel = mock(AodBurnInViewModel::class.java)
+    val splitShadeStateController = mock(SplitShadeStateController::class.java)
     lateinit var translationYFlow: MutableStateFlow<Float>
 
     val kosmos =
@@ -77,6 +80,7 @@
 
     init {
         kosmos.aodBurnInViewModel = aodBurnInViewModel
+        kosmos.splitShadeStateController = splitShadeStateController
     }
     val testScope = kosmos.testScope
     val configurationRepository = kosmos.fakeConfigurationRepository
@@ -93,7 +97,7 @@
 
     @Before
     fun setUp() {
-        overrideResource(R.bool.config_use_split_notification_shade, false)
+        whenever(splitShadeStateController.shouldUseSplitNotificationShade(any())).thenReturn(false)
         translationYFlow = MutableStateFlow(0f)
         whenever(aodBurnInViewModel.translationY(any())).thenReturn(translationYFlow)
         underTest = kosmos.sharedNotificationContainerViewModel
@@ -102,7 +106,8 @@
     @Test
     fun validateMarginStartInSplitShade() =
         testScope.runTest {
-            overrideResource(R.bool.config_use_split_notification_shade, true)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(true)
             overrideResource(R.dimen.notification_panel_margin_horizontal, 20)
 
             val dimens by collectLastValue(underTest.configurationBasedDimensions)
@@ -115,7 +120,8 @@
     @Test
     fun validateMarginStart() =
         testScope.runTest {
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             overrideResource(R.dimen.notification_panel_margin_horizontal, 20)
 
             val dimens by collectLastValue(underTest.configurationBasedDimensions)
@@ -130,7 +136,9 @@
         testScope.runTest {
             mSetFlagsRule.disableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR)
             whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5)
-            overrideResource(R.bool.config_use_split_notification_shade, true)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(true)
+            overrideResource(R.bool.config_use_large_screen_shade_header, true)
             overrideResource(R.dimen.large_screen_shade_header_height, 10)
             overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
 
@@ -147,12 +155,13 @@
         testScope.runTest {
             mSetFlagsRule.enableFlags(FLAG_CENTRALIZED_STATUS_BAR_DIMENS_REFACTOR)
             whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5)
-            overrideResource(R.bool.config_use_split_notification_shade, true)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(true)
+            overrideResource(R.bool.config_use_large_screen_shade_header, true)
             overrideResource(R.dimen.large_screen_shade_header_height, 10)
             overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
 
             val dimens by collectLastValue(underTest.configurationBasedDimensions)
-
             configurationRepository.onAnyConfigurationChange()
 
             // Should directly use the header height (flagged on value)
@@ -162,7 +171,8 @@
     @Test
     fun validatePaddingTop() =
         testScope.runTest {
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             overrideResource(R.dimen.large_screen_shade_header_height, 10)
             overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
 
@@ -421,7 +431,8 @@
             val bounds by collectLastValue(underTest.bounds)
 
             // When not in split shade
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             configurationRepository.onAnyConfigurationChange()
             runCurrent()
 
@@ -443,7 +454,9 @@
 
             // When in split shade
             whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5)
-            overrideResource(R.bool.config_use_split_notification_shade, true)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(true)
+            overrideResource(R.bool.config_use_large_screen_shade_header, true)
             overrideResource(R.dimen.large_screen_shade_header_height, 10)
             overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
 
@@ -470,7 +483,9 @@
 
             // When in split shade
             whenever(largeScreenHeaderHelper.getLargeScreenHeaderHeight()).thenReturn(5)
-            overrideResource(R.bool.config_use_split_notification_shade, true)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(true)
+            overrideResource(R.bool.config_use_large_screen_shade_header, true)
             overrideResource(R.dimen.large_screen_shade_header_height, 10)
             overrideResource(R.dimen.keyguard_split_shade_top_margin, 50)
 
@@ -528,7 +543,8 @@
 
             showLockscreen()
 
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             configurationRepository.onAnyConfigurationChange()
             keyguardInteractor.setNotificationContainerBounds(
                 NotificationContainerBounds(top = 1f, bottom = 2f)
@@ -551,7 +567,8 @@
 
             showLockscreen()
 
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             configurationRepository.onAnyConfigurationChange()
             keyguardInteractor.setNotificationContainerBounds(
                 NotificationContainerBounds(top = 1f, bottom = 2f)
@@ -587,7 +604,8 @@
             // Show lockscreen with shade expanded
             showLockscreenWithShadeExpanded()
 
-            overrideResource(R.bool.config_use_split_notification_shade, false)
+            whenever(splitShadeStateController.shouldUseSplitNotificationShade(any()))
+                .thenReturn(false)
             configurationRepository.onAnyConfigurationChange()
             keyguardInteractor.setNotificationContainerBounds(
                 NotificationContainerBounds(top = 1f, bottom = 2f)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
index 2d120cd..56fc7b9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/KeyguardStatusBarViewControllerTest.java
@@ -60,6 +60,7 @@
 import com.android.systemui.flags.Flags;
 import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository;
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor;
+import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
 import com.android.systemui.kosmos.KosmosJavaAdapter;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.power.domain.interactor.PowerInteractorFactory;
@@ -147,6 +148,7 @@
     private KeyguardStatusBarView mKeyguardStatusBarView;
     private KeyguardStatusBarViewController mController;
     private FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
+    private final FakeExecutor mBackgroundExecutor = new FakeExecutor(new FakeSystemClock());
     private final TestScope mTestScope = TestScopeProvider.getTestScope();
     private final FakeKeyguardRepository mKeyguardRepository = new FakeKeyguardRepository();
     private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this);
@@ -161,7 +163,8 @@
         MockitoAnnotations.initMocks(this);
 
         when(mIconManagerFactory.create(any(), any())).thenReturn(mIconManager);
-
+        KeyguardTransitionInteractor keyguardTransitionInteractor =
+                mKosmos.getKeyguardTransitionInteractor();
         mKeyguardInteractor = new KeyguardInteractor(
                 mKeyguardRepository,
                 mCommandQueue,
@@ -170,6 +173,7 @@
                 new FakeKeyguardBouncerRepository(),
                 new ConfigurationInteractor(new FakeConfigurationRepository()),
                 new FakeShadeRepository(),
+                keyguardTransitionInteractor,
                 () -> mKosmos.getSceneInteractor());
         mViewModel =
                 new KeyguardStatusBarViewModel(
@@ -214,6 +218,7 @@
                 mSecureSettings,
                 mCommandQueue,
                 mFakeExecutor,
+                mBackgroundExecutor,
                 mLogger,
                 mNotificationMediaManager,
                 mStatusOverlayHoverListenerFactory
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java
index bde2243..f91064b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/LegacyLightsOutNotifControllerTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import android.platform.test.annotations.DisableFlags;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper.RunWithLooper;
 import android.view.Display;
@@ -40,6 +41,7 @@
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.notification.collection.NotifLiveData;
 import com.android.systemui.statusbar.notification.collection.NotifLiveDataStore;
+import com.android.systemui.statusbar.notification.shared.NotificationsLiveDataStoreRefactor;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -54,6 +56,7 @@
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
 @RunWithLooper
+@DisableFlags(NotificationsLiveDataStoreRefactor.FLAG_NAME)
 public class LegacyLightsOutNotifControllerTest extends SysuiTestCase {
     private static final int LIGHTS_ON = 0;
     private static final int LIGHTS_OUT = APPEARANCE_LOW_PROFILE_BARS;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt
index b7560ad..1687ccb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewControllerTest.kt
@@ -22,15 +22,16 @@
 import android.app.StatusBarManager.WINDOW_STATUS_BAR
 import android.view.LayoutInflater
 import android.view.MotionEvent
+import android.view.View
 import android.view.ViewTreeObserver
 import android.view.ViewTreeObserver.OnPreDrawListener
 import android.widget.FrameLayout
 import androidx.test.filters.SmallTest
 import androidx.test.platform.app.InstrumentationRegistry
-import com.android.systemui.res.R
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.flags.FeatureFlags
 import com.android.systemui.flags.Flags
+import com.android.systemui.res.R
 import com.android.systemui.scene.shared.flag.FakeSceneContainerFlags
 import com.android.systemui.scene.ui.view.WindowRootView
 import com.android.systemui.shade.ShadeControllerImpl
@@ -48,8 +49,6 @@
 import com.android.systemui.util.mockito.whenever
 import com.android.systemui.util.view.ViewUtil
 import com.google.common.truth.Truth.assertThat
-import java.util.Optional
-import javax.inject.Provider
 import org.junit.Before
 import org.junit.Test
 import org.mockito.ArgumentCaptor
@@ -60,6 +59,8 @@
 import org.mockito.Mockito.verify
 import org.mockito.Mockito.`when`
 import org.mockito.MockitoAnnotations
+import java.util.Optional
+import javax.inject.Provider
 
 @SmallTest
 class PhoneStatusBarViewControllerTest : SysuiTestCase() {
@@ -98,7 +99,7 @@
             val parent = FrameLayout(mContext) // add parent to keep layout params
             view =
                 LayoutInflater.from(mContext).inflate(R.layout.status_bar, parent, false)
-                    as PhoneStatusBarView
+                        as PhoneStatusBarView
             controller = createAndInitController(view)
         }
     }
@@ -231,6 +232,27 @@
         verify(centralSurfacesImpl).setInteracting(any(), any())
     }
 
+    @Test
+    fun shadeIsExpandedOnStatusIconClick() {
+        val view = createViewMock()
+        InstrumentationRegistry.getInstrumentation().runOnMainSync {
+            controller = createAndInitController(view)
+        }
+        val statusContainer = view.requireViewById<View>(R.id.system_icons)
+        statusContainer.performClick()
+        verify(shadeViewController).expand(any())
+    }
+
+    @Test
+    fun shadeIsNotExpandedOnStatusBarGeneralClick() {
+        val view = createViewMock()
+        InstrumentationRegistry.getInstrumentation().runOnMainSync {
+            controller = createAndInitController(view)
+        }
+        view.performClick()
+        verify(shadeViewController, never()).expand(any())
+    }
+
     private fun getCommandQueueCallback(): CommandQueue.Callbacks {
         val captor = argumentCaptor<CommandQueue.Callbacks>()
         verify(commandQueue).addCallback(captor.capture())
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt
index 4293a27..5e8b62e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/PhoneStatusBarViewTest.kt
@@ -207,6 +207,72 @@
     }
 
     @Test
+    fun onConfigurationChanged_noRelevantChange_doesNotUpdateInsets() {
+        val previousInsets =
+            Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10)
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+            .thenReturn(previousInsets)
+        context.orCreateTestableResources.overrideConfiguration(Configuration())
+        view.onAttachedToWindow()
+
+        val newInsets = Insets.NONE
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+                .thenReturn(newInsets)
+        view.onConfigurationChanged(Configuration())
+
+        assertThat(view.paddingLeft).isEqualTo(previousInsets.left)
+        assertThat(view.paddingTop).isEqualTo(previousInsets.top)
+        assertThat(view.paddingRight).isEqualTo(previousInsets.right)
+        assertThat(view.paddingBottom).isEqualTo(0)
+    }
+
+    @Test
+    fun onConfigurationChanged_densityChanged_updatesInsets() {
+        val previousInsets =
+            Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10)
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+            .thenReturn(previousInsets)
+        val configuration = Configuration()
+        configuration.densityDpi = 123
+        context.orCreateTestableResources.overrideConfiguration(configuration)
+        view.onAttachedToWindow()
+
+        val newInsets = Insets.NONE
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+                .thenReturn(newInsets)
+        configuration.densityDpi = 456
+        view.onConfigurationChanged(configuration)
+
+        assertThat(view.paddingLeft).isEqualTo(newInsets.left)
+        assertThat(view.paddingTop).isEqualTo(newInsets.top)
+        assertThat(view.paddingRight).isEqualTo(newInsets.right)
+        assertThat(view.paddingBottom).isEqualTo(0)
+    }
+
+    @Test
+    fun onConfigurationChanged_fontScaleChanged_updatesInsets() {
+        val previousInsets =
+            Insets.of(/* left = */ 40, /* top = */ 30, /* right = */ 20, /* bottom = */ 10)
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+            .thenReturn(previousInsets)
+        val configuration = Configuration()
+        configuration.fontScale = 1f
+        context.orCreateTestableResources.overrideConfiguration(configuration)
+        view.onAttachedToWindow()
+
+        val newInsets = Insets.NONE
+        whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
+                .thenReturn(newInsets)
+        configuration.fontScale = 2f
+        view.onConfigurationChanged(configuration)
+
+        assertThat(view.paddingLeft).isEqualTo(newInsets.left)
+        assertThat(view.paddingTop).isEqualTo(newInsets.top)
+        assertThat(view.paddingRight).isEqualTo(newInsets.right)
+        assertThat(view.paddingBottom).isEqualTo(0)
+    }
+
+    @Test
     fun onApplyWindowInsets_updatesLeftTopRightPaddingsBasedOnInsets() {
         val insets = Insets.of(/* left = */ 90, /* top = */ 10, /* right = */ 45, /* bottom = */ 50)
         whenever(contentInsetsProvider.getStatusBarContentInsetsForCurrentRotation())
@@ -257,6 +323,10 @@
             /* privacyIndicatorBounds = */ PrivacyIndicatorBounds(),
             /* displayShape = */ DisplayShape.NONE,
             /* compatInsetsTypes = */ 0,
-            /* compatIgnoreVisibility = */ false
+            /* compatIgnoreVisibility = */ false,
+            /* typeBoundingRectsMap = */ arrayOf(),
+            /* typeMaxBoundingRectsMap = */ arrayOf(),
+            /* frameWidth = */ 0,
+            /* frameHeight = */ 0
         )
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
index 1dac642..a2af38f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SensitiveNotificationProtectionControllerTest.kt
@@ -19,17 +19,24 @@
 import android.app.ActivityOptions
 import android.app.IActivityManager
 import android.app.Notification
+import android.app.Notification.FLAG_FOREGROUND_SERVICE
+import android.app.Notification.VISIBILITY_PRIVATE
+import android.app.Notification.VISIBILITY_PUBLIC
+import android.app.NotificationChannel
+import android.app.NotificationManager.IMPORTANCE_HIGH
+import android.app.NotificationManager.VISIBILITY_NO_OVERRIDE
 import android.media.projection.MediaProjectionInfo
 import android.media.projection.MediaProjectionManager
 import android.platform.test.annotations.EnableFlags
 import android.provider.Settings.Global.DISABLE_SCREEN_SHARE_PROTECTIONS_FOR_APPS_AND_NOTIFICATIONS
-import android.service.notification.StatusBarNotification
 import android.testing.AndroidTestingRunner
 import android.testing.TestableLooper.RunWithLooper
 import androidx.test.filters.SmallTest
 import com.android.server.notification.Flags
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.statusbar.RankingBuilder
 import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder
 import com.android.systemui.util.concurrency.FakeExecutor
 import com.android.systemui.util.concurrency.mockExecutorHandler
 import com.android.systemui.util.mockito.whenever
@@ -316,6 +323,25 @@
 
         assertFalse(controller.shouldProtectNotification(notificationEntry))
     }
+    @Test
+    fun shouldProtectNotification_projectionActive_publicNotification_false() {
+        mediaProjectionCallback.onStart(mediaProjectionInfo)
+
+        // App marked notification visibility as public
+        val notificationEntry = setupPublicNotificationEntry(TEST_PROJECTION_PACKAGE_NAME)
+
+        assertFalse(controller.shouldProtectNotification(notificationEntry))
+    }
+
+    @Test
+    fun shouldProtectNotification_projectionActive_publicNotificationUserChannelOverride_true() {
+        mediaProjectionCallback.onStart(mediaProjectionInfo)
+
+        val notificationEntry =
+            setupPublicNotificationEntryWithUserOverriddenChannel(TEST_PROJECTION_PACKAGE_NAME)
+
+        assertTrue(controller.shouldProtectNotification(notificationEntry))
+    }
 
     private fun setDisabledViaDeveloperOption() {
         globalSettings.putInt(DISABLE_SCREEN_SHARE_PROTECTIONS_FOR_APPS_AND_NOTIFICATIONS, 1)
@@ -336,21 +362,50 @@
 
     private fun setupNotificationEntry(
         packageName: String,
-        isFgs: Boolean = false
+        isFgs: Boolean = false,
+        overrideVisibility: Boolean = false,
+        overrideChannelVisibility: Boolean = false,
     ): NotificationEntry {
-        val notificationEntry = mock(NotificationEntry::class.java)
-        val sbn = mock(StatusBarNotification::class.java)
-        val notification = mock(Notification::class.java)
-        whenever(notificationEntry.sbn).thenReturn(sbn)
-        whenever(sbn.packageName).thenReturn(packageName)
-        whenever(sbn.notification).thenReturn(notification)
-        whenever(notification.isFgsOrUij).thenReturn(isFgs)
-
+        val notification = Notification()
+        if (isFgs) {
+            notification.flags = notification.flags or FLAG_FOREGROUND_SERVICE
+        }
+        if (overrideVisibility) {
+            // Developer has marked notification as public
+            notification.visibility = VISIBILITY_PUBLIC
+        }
+        val notificationEntry =
+            NotificationEntryBuilder().setNotification(notification).setPkg(packageName).build()
+        val channel = NotificationChannel("1", "1", IMPORTANCE_HIGH)
+        if (overrideChannelVisibility) {
+            // User doesn't allow private notifications at the channel level
+            channel.lockscreenVisibility = VISIBILITY_PRIVATE
+        }
+        notificationEntry.setRanking(
+            RankingBuilder(notificationEntry.ranking)
+                .setChannel(channel)
+                .setVisibilityOverride(VISIBILITY_NO_OVERRIDE)
+                .build()
+        )
         return notificationEntry
     }
 
     private fun setupFgsNotificationEntry(packageName: String): NotificationEntry {
-        return setupNotificationEntry(packageName, /* isFgs= */ true)
+        return setupNotificationEntry(packageName, isFgs = true)
+    }
+
+    private fun setupPublicNotificationEntry(packageName: String): NotificationEntry {
+        return setupNotificationEntry(packageName, overrideVisibility = true)
+    }
+
+    private fun setupPublicNotificationEntryWithUserOverriddenChannel(
+        packageName: String
+    ): NotificationEntry {
+        return setupNotificationEntry(
+            packageName,
+            overrideVisibility = true,
+            overrideChannelVisibility = true
+        )
     }
 
     companion object {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
index ca0e526..76913e8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ui/viewmodel/KeyguardStatusBarViewModelTest.kt
@@ -24,6 +24,7 @@
 import com.android.systemui.coroutines.collectLastValue
 import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
 import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
+import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
 import com.android.systemui.keyguard.shared.model.StatusBarState
 import com.android.systemui.kosmos.testScope
 import com.android.systemui.power.domain.interactor.PowerInteractorFactory
@@ -61,6 +62,7 @@
             FakeKeyguardBouncerRepository(),
             ConfigurationInteractor(FakeConfigurationRepository()),
             FakeShadeRepository(),
+            kosmos.keyguardTransitionInteractor,
         ) {
             kosmos.sceneInteractor
         }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
index af1d788..8c5df6e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/controller/WalletContextualLocationsServiceTest.kt
@@ -12,12 +12,10 @@
 import com.android.systemui.flags.Flags
 import com.android.systemui.util.mockito.whenever
 import com.google.common.truth.Truth.assertThat
-import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.test.TestCoroutineScope
-import kotlinx.coroutines.test.TestScope
-import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.update
+import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.runCurrent
 import kotlinx.coroutines.test.runTest
 import org.junit.Before
@@ -41,11 +39,12 @@
     private lateinit var underTest: WalletContextualLocationsService
     private lateinit var testScope: TestScope
     private var listenerRegisteredCount: Int = 0
-    private val listener: IWalletCardsUpdatedListener.Stub = object : IWalletCardsUpdatedListener.Stub() {
-        override fun registerNewWalletCards(cards: List<WalletCard?>) {
-            listenerRegisteredCount++
+    private val listener: IWalletCardsUpdatedListener.Stub =
+        object : IWalletCardsUpdatedListener.Stub() {
+            override fun registerNewWalletCards(cards: List<WalletCard?>) {
+                listenerRegisteredCount++
+            }
         }
-    }
 
     @Before
     @kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -55,55 +54,65 @@
         doNothing().whenever(controller).setSuggestionCardIds(anySet())
 
         if (Looper.myLooper() == null) Looper.prepare()
-
+        val testDispatcher = StandardTestDispatcher()
         testScope = TestScope()
         featureFlags.set(Flags.ENABLE_WALLET_CONTEXTUAL_LOYALTY_CARDS, true)
         listenerRegisteredCount = 0
-
-        underTest = WalletContextualLocationsService(controller, featureFlags, testScope.backgroundScope)
+        underTest =
+            WalletContextualLocationsService(
+                testDispatcher,
+                controller,
+                featureFlags,
+                testScope.backgroundScope
+            )
     }
 
     @Test
     @kotlinx.coroutines.ExperimentalCoroutinesApi
-    fun addListener() = testScope.runTest {
-        underTest.addWalletCardsUpdatedListenerInternal(listener)
-        assertThat(listenerRegisteredCount).isEqualTo(1)
-  }
+    fun addListener() =
+        testScope.runTest {
+            underTest.addWalletCardsUpdatedListenerInternal(listener)
+            assertThat(listenerRegisteredCount).isEqualTo(1)
+        }
 
     @Test
     @kotlinx.coroutines.ExperimentalCoroutinesApi
-    fun addStoreLocations() = testScope.runTest {
-        underTest.onWalletContextualLocationsStateUpdatedInternal(ArrayList<String>())
-        verify(controller, times(1)).setSuggestionCardIds(anySet())
-    }
+    fun addStoreLocations() =
+        testScope.runTest {
+            underTest.onWalletContextualLocationsStateUpdatedInternal(ArrayList<String>())
+            verify(controller, times(1)).setSuggestionCardIds(anySet())
+        }
 
     @Test
     @kotlinx.coroutines.ExperimentalCoroutinesApi
-    fun updateListenerAndLocationsState() = testScope.runTest {
-        // binds to the service and adds a listener
-        val underTestStub = getInterface
-        underTestStub.addWalletCardsUpdatedListener(listener)
-        assertThat(listenerRegisteredCount).isEqualTo(1)
+    fun updateListenerAndLocationsState() =
+        testScope.runTest {
+            // binds to the service and adds a listener
+            val underTestStub = getInterface
+            underTestStub.addWalletCardsUpdatedListener(listener)
+            assertThat(listenerRegisteredCount).isEqualTo(1)
 
-        // sends a list of card IDs to the controller
-        underTestStub.onWalletContextualLocationsStateUpdated(ArrayList<String>())
-        verify(controller, times(1)).setSuggestionCardIds(anySet())
+            // sends a list of card IDs to the controller
+            underTestStub.onWalletContextualLocationsStateUpdated(ArrayList<String>())
+            verify(controller, times(1)).setSuggestionCardIds(anySet())
 
-        // adds another listener
-        fakeWalletCards.update{ updatedFakeWalletCards }
-        runCurrent()
-        assertThat(listenerRegisteredCount).isEqualTo(2)
+            // adds another listener
+            fakeWalletCards.update { updatedFakeWalletCards }
+            runCurrent()
+            assertThat(listenerRegisteredCount).isEqualTo(2)
 
-        // sends another list of card IDs to the controller
-        underTestStub.onWalletContextualLocationsStateUpdated(ArrayList<String>())
-        verify(controller, times(2)).setSuggestionCardIds(anySet())
-    }
+            // sends another list of card IDs to the controller
+            underTestStub.onWalletContextualLocationsStateUpdated(ArrayList<String>())
+            verify(controller, times(2)).setSuggestionCardIds(anySet())
+        }
 
     private val fakeWalletCards: MutableStateFlow<List<WalletCard>>
         get() {
             val intent = Intent(getContext(), WalletContextualLocationsService::class.java)
-            val pi: PendingIntent = PendingIntent.getActivity(getContext(), 0, intent, PendingIntent.FLAG_IMMUTABLE)
-            val icon: Icon = Icon.createWithBitmap(Bitmap.createBitmap(70, 50, Bitmap.Config.ARGB_8888))
+            val pi: PendingIntent =
+                PendingIntent.getActivity(getContext(), 0, intent, PendingIntent.FLAG_IMMUTABLE)
+            val icon: Icon =
+                Icon.createWithBitmap(Bitmap.createBitmap(70, 50, Bitmap.Config.ARGB_8888))
             val walletCards: ArrayList<WalletCard> = ArrayList<WalletCard>()
             walletCards.add(WalletCard.Builder("card1", icon, "card", pi).build())
             walletCards.add(WalletCard.Builder("card2", icon, "card", pi).build())
@@ -113,8 +122,10 @@
     private val updatedFakeWalletCards: List<WalletCard>
         get() {
             val intent = Intent(getContext(), WalletContextualLocationsService::class.java)
-            val pi: PendingIntent = PendingIntent.getActivity(getContext(), 0, intent, PendingIntent.FLAG_IMMUTABLE)
-            val icon: Icon = Icon.createWithBitmap(Bitmap.createBitmap(70, 50, Bitmap.Config.ARGB_8888))
+            val pi: PendingIntent =
+                PendingIntent.getActivity(getContext(), 0, intent, PendingIntent.FLAG_IMMUTABLE)
+            val icon: Icon =
+                Icon.createWithBitmap(Bitmap.createBitmap(70, 50, Bitmap.Config.ARGB_8888))
             val walletCards: ArrayList<WalletCard> = ArrayList<WalletCard>()
             walletCards.add(WalletCard.Builder("card3", icon, "card", pi).build())
             return walletCards
@@ -125,4 +136,4 @@
             val intent = Intent()
             return IWalletContextualLocationsService.Stub.asInterface(underTest.onBind(intent))
         }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
index 8d933dc..d87df0a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java
@@ -413,12 +413,15 @@
                 mTestScope.getBackgroundScope(),
                 new SceneContainerRepository(
                         mTestScope.getBackgroundScope(),
-                        mKosmos.getFakeSceneContainerConfig()),
+                        mKosmos.getFakeSceneContainerConfig(),
+                        mKosmos.getSceneDataSource()),
                 powerInteractor,
                 mock(SceneLogger.class),
                 mKosmos.getDeviceUnlockedInteractor());
 
         FakeSceneContainerFlags sceneContainerFlags = new FakeSceneContainerFlags();
+        KeyguardTransitionInteractor keyguardTransitionInteractor =
+                mKosmos.getKeyguardTransitionInteractor();
         KeyguardInteractor keyguardInteractor = new KeyguardInteractor(
                 keyguardRepository,
                 new FakeCommandQueue(),
@@ -427,11 +430,9 @@
                 new FakeKeyguardBouncerRepository(),
                 new ConfigurationInteractor(configurationRepository),
                 shadeRepository,
+                keyguardTransitionInteractor,
                 () -> sceneInteractor);
 
-        KeyguardTransitionInteractor keyguardTransitionInteractor =
-                mKosmos.getKeyguardTransitionInteractor();
-
         mFromLockscreenTransitionInteractor = mKosmos.getFromLockscreenTransitionInteractor();
         mFromPrimaryBouncerTransitionInteractor =
                 mKosmos.getFromPrimaryBouncerTransitionInteractor();
diff --git a/packages/SystemUI/tests/utils/src/android/content/ContextKosmos.kt b/packages/SystemUI/tests/utils/src/android/content/ContextKosmos.kt
index 5e254bf..f6ddfcc 100644
--- a/packages/SystemUI/tests/utils/src/android/content/ContextKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/android/content/ContextKosmos.kt
@@ -18,5 +18,7 @@
 
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.testCase
+import com.android.systemui.util.mockito.mock
 
 var Kosmos.applicationContext: Context by Kosmos.Fixture { testCase.context }
+val Kosmos.mockedContext: Context by Kosmos.Fixture { mock<Context>() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/FakeSystemUiModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/FakeSystemUiModule.kt
index dc5fd95..6dd8d07 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/FakeSystemUiModule.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/FakeSystemUiModule.kt
@@ -19,7 +19,6 @@
 import com.android.systemui.data.FakeSystemUiDataLayerModule
 import com.android.systemui.flags.FakeFeatureFlagsClassicModule
 import com.android.systemui.log.FakeUiEventLoggerModule
-import com.android.systemui.scene.FakeSceneModule
 import com.android.systemui.settings.FakeSettingsModule
 import com.android.systemui.statusbar.policy.FakeConfigurationControllerModule
 import com.android.systemui.statusbar.policy.FakeSplitShadeStateControllerModule
@@ -34,7 +33,6 @@
             FakeConfigurationControllerModule::class,
             FakeExecutorModule::class,
             FakeFeatureFlagsClassicModule::class,
-            FakeSceneModule::class,
             FakeSettingsModule::class,
             FakeSplitShadeStateControllerModule::class,
             FakeSystemClockModule::class,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/SysUITestModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/SysUITestModule.kt
index 3724291..69b769e 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/SysUITestModule.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/SysUITestModule.kt
@@ -27,7 +27,10 @@
 import com.android.systemui.dagger.SysUISingleton
 import com.android.systemui.dagger.qualifiers.Application
 import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.scene.SceneContainerFrameworkModule
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
+import com.android.systemui.scene.shared.model.SceneDataSource
+import com.android.systemui.scene.shared.model.SceneDataSourceDelegator
 import com.android.systemui.shade.domain.interactor.BaseShadeInteractor
 import com.android.systemui.shade.domain.interactor.ShadeInteractor
 import com.android.systemui.shade.domain.interactor.ShadeInteractorImpl
@@ -52,6 +55,7 @@
             TestMocksModule::class,
             CoroutineTestScopeModule::class,
             FakeSystemUiModule::class,
+            SceneContainerFrameworkModule::class,
         ]
 )
 interface SysUITestModule {
@@ -63,6 +67,7 @@
     @Binds @Main fun bindMainResources(resources: Resources): Resources
     @Binds fun bindBroadcastDispatcher(fake: FakeBroadcastDispatcher): BroadcastDispatcher
     @Binds @SysUISingleton fun bindsShadeInteractor(sii: ShadeInteractorImpl): ShadeInteractor
+    @Binds fun bindSceneDataSource(delegator: SceneDataSourceDelegator): SceneDataSource
 
     companion object {
         @Provides
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
index 3f55f42..b8c880b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/TestMocksModule.kt
@@ -42,6 +42,7 @@
 import com.android.systemui.plugins.ActivityStarter
 import com.android.systemui.plugins.DarkIconDispatcher
 import com.android.systemui.plugins.statusbar.StatusBarStateController
+import com.android.systemui.scene.shared.logger.SceneLogger
 import com.android.systemui.shared.system.ActivityManagerWrapper
 import com.android.systemui.statusbar.LockscreenShadeTransitionController
 import com.android.systemui.statusbar.NotificationListener
@@ -121,12 +122,13 @@
     @get:Provides val systemUIDialogManager: SystemUIDialogManager = mock(),
     @get:Provides val deviceEntryIconTransitions: Set<DeviceEntryIconTransition> = emptySet(),
     @get:Provides val communalInteractor: CommunalInteractor = mock(),
+    @get:Provides val sceneLogger: SceneLogger = mock(),
 
     // log buffers
     @get:[Provides BroadcastDispatcherLog]
     val broadcastDispatcherLogger: LogBuffer = mock(),
     @get:[Provides SceneFrameworkLog]
-    val sceneLogger: LogBuffer = mock(),
+    val sceneLogBuffer: LogBuffer = mock(),
     @get:[Provides BiometricLog]
     val biometricLogger: LogBuffer = mock(),
     @get:Provides val lsShadeTransitionLogger: LSShadeTransitionLogger = mock(),
diff --git a/location/java/android/location/IGeocodeListener.aidl b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/EmptyAccessibilityShortcutTargetActivity.kt
similarity index 66%
copy from location/java/android/location/IGeocodeListener.aidl
copy to packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/EmptyAccessibilityShortcutTargetActivity.kt
index 8e10411..dd07046 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/EmptyAccessibilityShortcutTargetActivity.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,9 @@
  * limitations under the License.
  */
 
-package android.location;
+package com.android.systemui.accessibility
 
-import android.location.Address;
+import android.app.Activity
 
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
-}
+/** This is an empty activity that is used as an accessibility shortcut target activity. */
+class EmptyAccessibilityShortcutTargetActivity : Activity()
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityQsShortcutsRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityQsShortcutsRepository.kt
index e547da1..e33a6f0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityQsShortcutsRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/accessibility/data/repository/FakeAccessibilityQsShortcutsRepository.kt
@@ -16,11 +16,17 @@
 
 package com.android.systemui.accessibility.data.repository
 
+import android.content.Context
+import com.android.systemui.qs.pipeline.shared.TileSpec
 import kotlinx.coroutines.flow.MutableSharedFlow
 import kotlinx.coroutines.flow.SharedFlow
 import kotlinx.coroutines.flow.asSharedFlow
 
 class FakeAccessibilityQsShortcutsRepository : AccessibilityQsShortcutsRepository {
+    private val mutableNotifyA11yManagerTilesChangedRequests =
+        mutableListOf<NotifyA11yManagerTilesChangedRequest>()
+    val notifyA11yManagerTilesChangedRequests: List<NotifyA11yManagerTilesChangedRequest> =
+        mutableNotifyA11yManagerTilesChangedRequests
 
     private val targetsPerUser = mutableMapOf<Int, MutableSharedFlow<Set<String>>>()
 
@@ -28,6 +34,15 @@
         return getFlow(userId).asSharedFlow()
     }
 
+    override suspend fun notifyAccessibilityManagerTilesChanged(
+        userContext: Context,
+        tiles: List<TileSpec>
+    ) {
+        mutableNotifyA11yManagerTilesChangedRequests.add(
+            NotifyA11yManagerTilesChangedRequest(userContext, tiles)
+        )
+    }
+
     /**
      * Set the a11y qs shortcut targets. In real world, the A11y QS Shortcut targets are set by the
      * Settings app not in SysUi
@@ -38,4 +53,9 @@
 
     private fun getFlow(userId: Int): MutableSharedFlow<Set<String>> =
         targetsPerUser.getOrPut(userId) { MutableSharedFlow(replay = 1) }
+
+    data class NotifyA11yManagerTilesChangedRequest(
+        val userContext: Context,
+        val tiles: List<TileSpec>
+    )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorKosmos.kt
index 244ef8d..3c61353 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bouncer/domain/interactor/PrimaryBouncerInteractorKosmos.kt
@@ -34,7 +34,8 @@
 import com.android.systemui.util.mockito.mock
 
 var Kosmos.mockPrimaryBouncerInteractor by Kosmos.Fixture { mock<PrimaryBouncerInteractor>() }
-var Kosmos.primaryBouncerInteractor by
+
+val Kosmos.primaryBouncerInteractor by
     Kosmos.Fixture {
         PrimaryBouncerInteractor(
             repository = keyguardBouncerRepository,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorKosmos.kt
new file mode 100644
index 0000000..77f48db
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorKosmos.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.deviceentry.domain.interactor
+
+import android.content.res.mainResources
+import com.android.systemui.biometrics.domain.interactor.fingerprintPropertyInteractor
+import com.android.systemui.kosmos.Kosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@ExperimentalCoroutinesApi
+val Kosmos.biometricMessageInteractor by
+    Kosmos.Fixture {
+        BiometricMessageInteractor(
+            resources = mainResources,
+            fingerprintAuthInteractor = deviceEntryFingerprintAuthInteractor,
+            fingerprintPropertyInteractor = fingerprintPropertyInteractor,
+            faceAuthInteractor = deviceEntryFaceAuthInteractor,
+            biometricSettingsInteractor = deviceEntryBiometricSettingsInteractor,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorKosmos.kt
new file mode 100644
index 0000000..4fcf43a
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryBiometricSettingsInteractorKosmos.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 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 com.android.systemui.deviceentry.domain.interactor
+
+import com.android.systemui.keyguard.data.repository.biometricSettingsRepository
+import com.android.systemui.kosmos.Kosmos
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@ExperimentalCoroutinesApi
+val Kosmos.deviceEntryBiometricSettingsInteractor by
+    Kosmos.Fixture {
+        DeviceEntryBiometricSettingsInteractor(
+            repository = biometricSettingsRepository,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorKosmos.kt
new file mode 100644
index 0000000..c3f677e
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/OccludingAppDeviceEntryInteractorKosmos.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.deviceentry.domain.interactor
+
+import android.content.mockedContext
+import com.android.systemui.bouncer.domain.interactor.alternateBouncerInteractor
+import com.android.systemui.bouncer.domain.interactor.primaryBouncerInteractor
+import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
+import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.power.domain.interactor.powerInteractor
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+@ExperimentalCoroutinesApi
+val Kosmos.occludingAppDeviceEntryInteractor by
+    Kosmos.Fixture {
+        OccludingAppDeviceEntryInteractor(
+            biometricMessageInteractor = biometricMessageInteractor,
+            fingerprintAuthRepository = deviceEntryFingerprintAuthRepository,
+            keyguardInteractor = keyguardInteractor,
+            primaryBouncerInteractor = primaryBouncerInteractor,
+            alternateBouncerInteractor = alternateBouncerInteractor,
+            scope = applicationCoroutineScope,
+            context = mockedContext,
+            activityStarter = activityStarter,
+            powerInteractor = powerInteractor,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/EnableSceneContainer.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/EnableSceneContainer.kt
index 97f84c6..43897c9 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/EnableSceneContainer.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/EnableSceneContainer.kt
@@ -18,7 +18,7 @@
 
 import android.platform.test.annotations.EnableFlags
 import com.android.systemui.Flags.FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR
-import com.android.systemui.Flags.FLAG_KEYGUARD_SHADE_MIGRATION_NSSL
+import com.android.systemui.Flags.FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT
 import com.android.systemui.Flags.FLAG_MEDIA_IN_SCENE_CONTAINER
 import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
 
@@ -29,7 +29,7 @@
 @EnableFlags(
     FLAG_SCENE_CONTAINER,
     FLAG_KEYGUARD_BOTTOM_AREA_REFACTOR,
-    FLAG_KEYGUARD_SHADE_MIGRATION_NSSL,
+    FLAG_MIGRATE_CLOCKS_TO_BLUEPRINT,
     FLAG_MEDIA_IN_SCENE_CONTAINER,
 )
 @Retention(AnnotationRetention.RUNTIME)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
index 19cd950..8452963 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/KeyguardBlueprintRepositoryKosmos.kt
@@ -16,17 +16,22 @@
 
 package com.android.systemui.keyguard.data.repository
 
+import android.os.fakeExecutorHandler
 import com.android.systemui.common.ui.data.repository.configurationRepository
 import com.android.systemui.keyguard.shared.model.KeyguardBlueprint
 import com.android.systemui.keyguard.shared.model.KeyguardSection
 import com.android.systemui.keyguard.ui.view.layout.blueprints.DefaultKeyguardBlueprint.Companion.DEFAULT
 import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.util.ThreadAssert
+import com.android.systemui.util.mockito.mock
 
 val Kosmos.keyguardBlueprintRepository by
     Kosmos.Fixture {
         KeyguardBlueprintRepository(
             configurationRepository = configurationRepository,
             blueprints = setOf(defaultBlueprint),
+            handler = fakeExecutorHandler,
+            assert = mock<ThreadAssert>(),
         )
     }
 
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
index 0bba36b..3893a9b7 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorFactory.kt
@@ -23,6 +23,7 @@
 import com.android.systemui.flags.FakeFeatureFlags
 import com.android.systemui.keyguard.data.repository.FakeCommandQueue
 import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
+import com.android.systemui.keyguard.shared.model.KeyguardState
 import com.android.systemui.power.domain.interactor.PowerInteractor
 import com.android.systemui.power.domain.interactor.PowerInteractorFactory
 import com.android.systemui.scene.domain.interactor.SceneInteractor
@@ -30,6 +31,8 @@
 import com.android.systemui.scene.shared.flag.SceneContainerFlags
 import com.android.systemui.shade.data.repository.FakeShadeRepository
 import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import kotlinx.coroutines.flow.MutableSharedFlow
 
 /**
  * Simply put, I got tired of adding a constructor argument and then having to tweak dozens of
@@ -50,6 +53,11 @@
         sceneInteractor: SceneInteractor = mock(),
         powerInteractor: PowerInteractor = PowerInteractorFactory.create().powerInteractor,
     ): WithDependencies {
+        // Mock this until the class is replaced by kosmos
+        val keyguardTransitionInteractor: KeyguardTransitionInteractor = mock()
+        val currentKeyguardStateFlow = MutableSharedFlow<KeyguardState>()
+        whenever(keyguardTransitionInteractor.currentKeyguardState)
+            .thenReturn(currentKeyguardStateFlow)
         return WithDependencies(
             repository = repository,
             commandQueue = commandQueue,
@@ -67,6 +75,7 @@
                 configurationInteractor = ConfigurationInteractor(configurationRepository),
                 shadeRepository = shadeRepository,
                 sceneInteractorProvider = { sceneInteractor },
+                keyguardTransitionInteractor = keyguardTransitionInteractor,
                 powerInteractor = powerInteractor,
             ),
         )
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
index 58d99b5..5140a9f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorKosmos.kt
@@ -36,6 +36,7 @@
             bouncerRepository = keyguardBouncerRepository,
             configurationInteractor = configurationInteractor,
             shadeRepository = shadeRepository,
+            keyguardTransitionInteractor = keyguardTransitionInteractor,
             sceneInteractorProvider = { sceneInteractor },
         )
     }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
index 0c38fd9..6df7493 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
@@ -26,7 +26,6 @@
         KeyguardTransitionInteractor(
             scope = applicationCoroutineScope,
             repository = keyguardTransitionRepository,
-            keyguardInteractor = Lazy { keyguardInteractor },
             fromLockscreenTransitionInteractor = Lazy { fromLockscreenTransitionInteractor },
             fromPrimaryBouncerTransitionInteractor =
                 Lazy { fromPrimaryBouncerTransitionInteractor },
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt
index 6b89e0f..9fb3284 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/AodAlphaViewModelKosmos.kt
@@ -18,7 +18,6 @@
 
 package com.android.systemui.keyguard.ui.viewmodel
 
-import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
 import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.Kosmos.Fixture
@@ -26,8 +25,8 @@
 
 val Kosmos.aodAlphaViewModel by Fixture {
     AodAlphaViewModel(
-        keyguardInteractor = keyguardInteractor,
         keyguardTransitionInteractor = keyguardTransitionInteractor,
-        occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel,
+        goneToAodTransitionViewModel = goneToAodTransitionViewModel,
+        goneToDozingTransitionViewModel = goneToDozingTransitionViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelKosmos.kt
new file mode 100644
index 0000000..4daf460
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDozingTransitionViewModelKosmos.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+@file:OptIn(ExperimentalCoroutinesApi::class)
+
+package com.android.systemui.keyguard.ui.viewmodel
+
+import com.android.systemui.keyguard.ui.keyguardTransitionAnimationFlow
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+
+val Kosmos.goneToDozingTransitionViewModel by Fixture {
+    GoneToDozingTransitionViewModel(
+        animationFlow = keyguardTransitionAnimationFlow,
+    )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
index 24bb9c5..4939237b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardRootViewModelKosmos.kt
@@ -37,14 +37,24 @@
         communalInteractor = communalInteractor,
         keyguardTransitionInteractor = keyguardTransitionInteractor,
         notificationsKeyguardInteractor = notificationsKeyguardInteractor,
-        aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
-        lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel,
         alternateBouncerToGoneTransitionViewModel = alternateBouncerToGoneTransitionViewModel,
+        aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
+        dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel,
+        glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel,
+        lockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel,
+        lockscreenToGlanceableHubTransitionViewModel = lockscreenToGlanceableHubTransitionViewModel,
+        lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel,
+        lockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel,
+        lockscreenToPrimaryBouncerTransitionViewModel =
+            lockscreenToPrimaryBouncerTransitionViewModel,
+        occludedToAodTransitionViewModel = occludedToAodTransitionViewModel,
+        occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel,
+        primaryBouncerToAodTransitionViewModel = primaryBouncerToAodTransitionViewModel,
         primaryBouncerToGoneTransitionViewModel = primaryBouncerToGoneTransitionViewModel,
+        primaryBouncerToLockscreenTransitionViewModel =
+            primaryBouncerToLockscreenTransitionViewModel,
         screenOffAnimationController = screenOffAnimationController,
         aodBurnInViewModel = aodBurnInViewModel,
         aodAlphaViewModel = aodAlphaViewModel,
-        lockscreenToGlanceableHubTransitionViewModel = lockscreenToGlanceableHubTransitionViewModel,
-        glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
index 10305f7..f6b3280 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/kosmos/KosmosJavaAdapter.kt
@@ -43,6 +43,7 @@
 import com.android.systemui.scene.domain.interactor.sceneInteractor
 import com.android.systemui.scene.sceneContainerConfig
 import com.android.systemui.scene.shared.flag.fakeSceneContainerFlags
+import com.android.systemui.scene.shared.model.sceneDataSource
 import com.android.systemui.statusbar.phone.screenOffAnimationController
 import com.android.systemui.statusbar.pipeline.mobile.data.repository.fakeMobileConnectionsRepository
 import com.android.systemui.statusbar.policy.data.repository.fakeDeviceProvisioningRepository
@@ -90,6 +91,7 @@
     val fromPrimaryBouncerTransitionInteractor by lazy {
         kosmos.fromPrimaryBouncerTransitionInteractor
     }
+    val sceneDataSource by lazy { kosmos.sceneDataSource }
 
     init {
         kosmos.applicationContext = testCase.context
diff --git a/location/java/android/location/IGeocodeListener.aidl b/packages/SystemUI/tests/utils/src/com/android/systemui/media/MediaKosmos.kt
similarity index 62%
copy from location/java/android/location/IGeocodeListener.aidl
copy to packages/SystemUI/tests/utils/src/com/android/systemui/media/MediaKosmos.kt
index 8e10411..e1b1966 100644
--- a/location/java/android/location/IGeocodeListener.aidl
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/media/MediaKosmos.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 The Android Open Source Project
+ * Copyright (C) 2024 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.
@@ -14,16 +14,10 @@
  * limitations under the License.
  */
 
-package android.location;
+package com.android.systemui.media
 
-import android.location.Address;
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.media.dialog.MediaOutputDialogFactory
+import com.android.systemui.util.mockito.mock
 
-/**
- * An interface for returning geocode results.
- *
- * {@hide}
- */
-interface IGeocodeListener {
-
-    oneway void onResults(String error, in List<Address> results);
-}
+var Kosmos.mediaOutputDialogFactory: MediaOutputDialogFactory by Kosmos.Fixture { mock {} }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/FakeSceneModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/FakeSceneModule.kt
deleted file mode 100644
index 5d22a6e..0000000
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/FakeSceneModule.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 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 com.android.systemui.scene
-
-import com.android.systemui.scene.shared.flag.FakeSceneContainerFlagsModule
-import com.android.systemui.scene.shared.model.FakeSceneContainerConfigModule
-import dagger.Module
-
-@Module(includes = [FakeSceneContainerConfigModule::class, FakeSceneContainerFlagsModule::class])
-object FakeSceneModule
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryKosmos.kt
index e19941c..8734609 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/data/repository/SceneContainerRepositoryKosmos.kt
@@ -17,8 +17,15 @@
 package com.android.systemui.scene.data.repository
 
 import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
 import com.android.systemui.kosmos.applicationCoroutineScope
 import com.android.systemui.scene.sceneContainerConfig
+import com.android.systemui.scene.shared.model.sceneDataSource
 
-val Kosmos.sceneContainerRepository by
-    Kosmos.Fixture { SceneContainerRepository(applicationCoroutineScope, sceneContainerConfig) }
+val Kosmos.sceneContainerRepository by Fixture {
+    SceneContainerRepository(
+        applicationScope = applicationCoroutineScope,
+        config = sceneContainerConfig,
+        dataSource = sceneDataSource,
+    )
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneContainerConfigModule.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneContainerConfigModule.kt
deleted file mode 100644
index 8811b8d..0000000
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneContainerConfigModule.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 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 com.android.systemui.scene.shared.model
-
-import dagger.Module
-import dagger.Provides
-
-@Module
-data class FakeSceneContainerConfigModule(
-    @get:Provides
-    val sceneContainerConfig: SceneContainerConfig =
-        SceneContainerConfig(
-            sceneKeys =
-                listOf(
-                    SceneKey.QuickSettings,
-                    SceneKey.Shade,
-                    SceneKey.Lockscreen,
-                    SceneKey.Bouncer,
-                    SceneKey.Gone,
-                    SceneKey.Communal,
-                ),
-            initialSceneKey = SceneKey.Lockscreen,
-        ),
-)
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt
new file mode 100644
index 0000000..c208aad
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/FakeSceneDataSource.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+class FakeSceneDataSource(
+    initialSceneKey: SceneKey,
+) : SceneDataSource {
+
+    private val _currentScene = MutableStateFlow(initialSceneKey)
+    override val currentScene: StateFlow<SceneKey> = _currentScene.asStateFlow()
+
+    var isPaused = false
+        private set
+    var pendingScene: SceneKey? = null
+        private set
+
+    override fun changeScene(toScene: SceneKey, transitionKey: TransitionKey?) {
+        if (isPaused) {
+            pendingScene = toScene
+        } else {
+            _currentScene.value = toScene
+        }
+    }
+
+    /**
+     * Pauses scene changes.
+     *
+     * Any following calls to [changeScene] will be conflated and the last one will be remembered.
+     */
+    fun pause() {
+        check(!isPaused) { "Can't pause what's already paused!" }
+
+        isPaused = true
+    }
+
+    /**
+     * Unpauses scene changes.
+     *
+     * If there were any calls to [changeScene] since [pause] was called, the latest of the bunch
+     * will be replayed.
+     *
+     * If [force] is `true`, there will be no check that [isPaused] is true.
+     *
+     * If [expectedScene] is provided, will assert that it's indeed the latest called.
+     */
+    fun unpause(
+        force: Boolean = false,
+        expectedScene: SceneKey? = null,
+    ) {
+        check(force || isPaused) { "Can't unpause what's already not paused!" }
+
+        isPaused = false
+        pendingScene?.let { _currentScene.value = it }
+        pendingScene = null
+
+        check(expectedScene == null || currentScene.value == expectedScene) {
+            """
+                Unexpected scene while unpausing.
+                Expected $expectedScene but was $currentScene.
+            """
+                .trimIndent()
+        }
+    }
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/SceneDataSourceKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/SceneDataSourceKosmos.kt
new file mode 100644
index 0000000..f519686
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/shared/model/SceneDataSourceKosmos.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.scene.shared.model
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.Kosmos.Fixture
+import com.android.systemui.kosmos.applicationCoroutineScope
+import com.android.systemui.scene.initialSceneKey
+import com.android.systemui.scene.sceneContainerConfig
+
+val Kosmos.fakeSceneDataSource by Fixture {
+    FakeSceneDataSource(
+        initialSceneKey = initialSceneKey,
+    )
+}
+
+val Kosmos.sceneDataSourceDelegator by Fixture {
+    SceneDataSourceDelegator(
+            applicationScope = applicationCoroutineScope,
+            config = sceneContainerConfig,
+        )
+        .apply { setDelegate(fakeSceneDataSource) }
+}
+
+val Kosmos.sceneDataSource by Fixture { sceneDataSourceDelegator }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/NotificationsDataKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/NotificationsDataKosmos.kt
new file mode 100644
index 0000000..a61f7ec
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/data/NotificationsDataKosmos.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.statusbar.notification.data
+
+import com.android.settingslib.statusbar.notification.data.repository.FakeNotificationsSoundPolicyRepository
+import com.android.systemui.kosmos.Kosmos
+
+val Kosmos.notificationsSoundPolicyRepository by
+    Kosmos.Fixture { FakeNotificationsSoundPolicyRepository() }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
index 30d4105..8882de0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModelKosmos.kt
@@ -21,14 +21,21 @@
 import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
 import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.aodBurnInViewModel
+import com.android.systemui.keyguard.ui.viewmodel.aodToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.dozingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.dreamingToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.glanceableHubToLockscreenTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.goneToDozingTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.goneToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.lockscreenToDreamingTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGlanceableHubTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.lockscreenToGoneTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.lockscreenToOccludedTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.lockscreenToPrimaryBouncerTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.occludedToAodTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.occludedToLockscreenTransitionViewModel
 import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToGoneTransitionViewModel
+import com.android.systemui.keyguard.ui.viewmodel.primaryBouncerToLockscreenTransitionViewModel
 import com.android.systemui.kosmos.Kosmos
 import com.android.systemui.kosmos.Kosmos.Fixture
 import com.android.systemui.kosmos.applicationCoroutineScope
@@ -43,15 +50,24 @@
         keyguardTransitionInteractor = keyguardTransitionInteractor,
         shadeInteractor = shadeInteractor,
         communalInteractor = communalInteractor,
-        occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel,
-        lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel,
         alternateBouncerToGoneTransitionViewModel = alternateBouncerToGoneTransitionViewModel,
-        primaryBouncerToGoneTransitionViewModel = primaryBouncerToGoneTransitionViewModel,
-        lockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel,
+        aodToLockscreenTransitionViewModel = aodToLockscreenTransitionViewModel,
+        dozingToLockscreenTransitionViewModel = dozingToLockscreenTransitionViewModel,
         dreamingToLockscreenTransitionViewModel = dreamingToLockscreenTransitionViewModel,
-        lockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel,
+        goneToDozingTransitionViewModel = goneToDozingTransitionViewModel,
+        goneToDreamingTransitionViewModel = goneToDreamingTransitionViewModel,
         glanceableHubToLockscreenTransitionViewModel = glanceableHubToLockscreenTransitionViewModel,
+        lockscreenToDreamingTransitionViewModel = lockscreenToDreamingTransitionViewModel,
         lockscreenToGlanceableHubTransitionViewModel = lockscreenToGlanceableHubTransitionViewModel,
+        lockscreenToGoneTransitionViewModel = lockscreenToGoneTransitionViewModel,
+        lockscreenToOccludedTransitionViewModel = lockscreenToOccludedTransitionViewModel,
+        lockscreenToPrimaryBouncerTransitionViewModel =
+            lockscreenToPrimaryBouncerTransitionViewModel,
+        occludedToAodTransitionViewModel = occludedToAodTransitionViewModel,
+        occludedToLockscreenTransitionViewModel = occludedToLockscreenTransitionViewModel,
+        primaryBouncerToGoneTransitionViewModel = primaryBouncerToGoneTransitionViewModel,
+        primaryBouncerToLockscreenTransitionViewModel =
+            primaryBouncerToLockscreenTransitionViewModel,
         aodBurnInViewModel = aodBurnInViewModel,
     )
 }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/MediaOutputKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/MediaOutputKosmos.kt
new file mode 100644
index 0000000..3f20df3
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/MediaOutputKosmos.kt
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume
+
+import android.content.packageManager
+import android.content.pm.ApplicationInfo
+import android.media.session.MediaController
+import android.os.Handler
+import android.testing.TestableLooper
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.kosmos.testCase
+import com.android.systemui.kosmos.testScope
+import com.android.systemui.media.mediaOutputDialogFactory
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.util.mockito.any
+import com.android.systemui.util.mockito.mock
+import com.android.systemui.util.mockito.whenever
+import com.android.systemui.volume.data.repository.FakeLocalMediaRepository
+import com.android.systemui.volume.data.repository.FakeMediaControllerRepository
+import com.android.systemui.volume.panel.component.mediaoutput.data.repository.FakeLocalMediaRepositoryFactory
+import com.android.systemui.volume.panel.component.mediaoutput.data.repository.LocalMediaRepositoryFactory
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputActionsInteractor
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor
+
+var Kosmos.mediaController: MediaController by Kosmos.Fixture { mock {} }
+
+val Kosmos.localMediaRepository by Kosmos.Fixture { FakeLocalMediaRepository() }
+val Kosmos.localMediaRepositoryFactory: LocalMediaRepositoryFactory by
+    Kosmos.Fixture { FakeLocalMediaRepositoryFactory { localMediaRepository } }
+
+val Kosmos.mediaOutputActionsInteractor by
+    Kosmos.Fixture { MediaOutputActionsInteractor(mediaOutputDialogFactory, activityStarter) }
+val Kosmos.mediaControllerRepository by Kosmos.Fixture { FakeMediaControllerRepository() }
+val Kosmos.mediaOutputInteractor by
+    Kosmos.Fixture {
+        MediaOutputInteractor(
+            localMediaRepositoryFactory,
+            packageManager.apply {
+                val appInfo: ApplicationInfo = mock {
+                    whenever(loadLabel(any())).thenReturn("test_label")
+                }
+                whenever(getApplicationInfo(any(), any<Int>())).thenReturn(appInfo)
+            },
+            testScope.backgroundScope,
+            testScope.testScheduler,
+            Handler(TestableLooper.get(testCase).looper),
+            mediaControllerRepository,
+        )
+    }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/VolumeKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/VolumeKosmos.kt
new file mode 100644
index 0000000..5e1f85c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/VolumeKosmos.kt
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume
+
+import com.android.settingslib.volume.domain.interactor.AudioModeInteractor
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.volume.data.repository.FakeAudioRepository
+
+val Kosmos.audioRepository by Kosmos.Fixture { FakeAudioRepository() }
+val Kosmos.audioModeInteractor by Kosmos.Fixture { AudioModeInteractor(audioRepository) }
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeAudioRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt
similarity index 96%
rename from packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeAudioRepository.kt
rename to packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt
index dddf8e82..fed3e17 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeAudioRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioRepository.kt
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
-package com.android.settingslib.volume.data.repository
+package com.android.systemui.volume.data.repository
 
 import android.media.AudioDeviceInfo
+import com.android.settingslib.volume.data.repository.AudioRepository
 import com.android.settingslib.volume.shared.model.AudioStream
 import com.android.settingslib.volume.shared.model.AudioStreamModel
 import com.android.settingslib.volume.shared.model.RingerMode
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeLocalMediaRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeLocalMediaRepository.kt
similarity index 71%
rename from packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeLocalMediaRepository.kt
rename to packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeLocalMediaRepository.kt
index 642b72c..7835fc8 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/FakeLocalMediaRepository.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeLocalMediaRepository.kt
@@ -1,23 +1,24 @@
 /*
  * Copyright (C) 2024 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
+ * 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
+ *      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.
+ * 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 com.android.settingslib.volume.data.repository
+package com.android.systemui.volume.data.repository
 
 import com.android.settingslib.media.MediaDevice
 import com.android.settingslib.volume.data.model.RoutingSession
+import com.android.settingslib.volume.data.repository.LocalMediaRepository
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.asStateFlow
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeMediaControllerRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeMediaControllerRepository.kt
new file mode 100644
index 0000000..6d52e52
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeMediaControllerRepository.kt
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.data.repository
+
+import android.media.session.MediaController
+import com.android.settingslib.volume.data.repository.MediaControllerRepository
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+class FakeMediaControllerRepository : MediaControllerRepository {
+
+    private val mutableActiveLocalMediaController = MutableStateFlow<MediaController?>(null)
+    override val activeLocalMediaController: StateFlow<MediaController?> =
+        mutableActiveLocalMediaController.asStateFlow()
+
+    fun setActiveLocalMediaController(controller: MediaController?) {
+        mutableActiveLocalMediaController.value = controller
+    }
+}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/MediaOutputComponentKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/MediaOutputComponentKosmos.kt
new file mode 100644
index 0000000..ad8ccb0
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/MediaOutputComponentKosmos.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel
+
+import com.android.systemui.kosmos.Kosmos
+import com.android.systemui.media.mediaOutputDialogFactory
+import com.android.systemui.plugins.activityStarter
+import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputActionsInteractor
+
+val Kosmos.mediaOutputActionsInteractor by
+    Kosmos.Fixture { MediaOutputActionsInteractor(mediaOutputDialogFactory, activityStarter) }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/FakeLocalMediaRepositoryFactory.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/FakeLocalMediaRepositoryFactory.kt
new file mode 100644
index 0000000..1b3480c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/mediaoutput/data/repository/FakeLocalMediaRepositoryFactory.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2024 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 com.android.systemui.volume.panel.component.mediaoutput.data.repository
+
+import com.android.settingslib.volume.data.repository.LocalMediaRepository
+
+class FakeLocalMediaRepositoryFactory(
+    val provider: (packageName: String?) -> LocalMediaRepository
+) : LocalMediaRepositoryFactory {
+
+    override fun create(packageName: String?): LocalMediaRepository = provider(packageName)
+}
diff --git a/ravenwood/Android.bp b/ravenwood/Android.bp
index 1ac69f6..132804f 100644
--- a/ravenwood/Android.bp
+++ b/ravenwood/Android.bp
@@ -24,6 +24,46 @@
     visibility: ["//visibility:public"],
 }
 
+java_library_host {
+    name: "ravenwood-helper-libcore-runtime.host",
+    srcs: [
+        "runtime-helper-src/libcore-fake/**/*.java",
+    ],
+    visibility: ["//visibility:private"],
+}
+
+java_host_for_device {
+    name: "ravenwood-helper-libcore-runtime",
+    libs: [
+        "ravenwood-helper-libcore-runtime.host",
+    ],
+    visibility: ["//visibility:private"],
+}
+
+java_library {
+    name: "ravenwood-helper-framework-runtime",
+    srcs: [
+        "runtime-helper-src/framework/**/*.java",
+    ],
+    libs: [
+        "framework-minus-apex.ravenwood",
+    ],
+    visibility: ["//visibility:private"],
+}
+
+// Combine ravenwood-helper-*-runtime and create a single library, which we include
+// in the ravenwood runtime.
+// We do it this way rather than including the individual jars in the runtime, because
+// for some reason we couldn't include a java_host_for_device module in the ravenwood runtime.
+java_library {
+    name: "ravenwood-helper-runtime",
+    defaults: ["ravenwood-internal-only-visibility-java"],
+    static_libs: [
+        "ravenwood-helper-framework-runtime",
+        "ravenwood-helper-libcore-runtime",
+    ],
+}
+
 java_library {
     name: "ravenwood-junit-impl",
     srcs: [
@@ -59,13 +99,6 @@
 }
 
 java_host_for_device {
-    name: "core-xml-for-device",
-    libs: [
-        "core-xml-for-host",
-    ],
-}
-
-java_host_for_device {
     name: "androidx.test.monitor-for-device",
     libs: [
         "androidx.test.monitor-for-host",
diff --git a/ravenwood/TEST_MAPPING b/ravenwood/TEST_MAPPING
index 0319848..a5b28ad 100644
--- a/ravenwood/TEST_MAPPING
+++ b/ravenwood/TEST_MAPPING
@@ -2,6 +2,9 @@
   "presubmit": [
     {
       "name": "RavenwoodMockitoTest_device"
+    },
+    {
+      "name": "RavenwoodBivalentTest_device"
     }
   ],
   "ravenwood-presubmit": [
@@ -16,6 +19,14 @@
     {
       "name": "CtsUtilTestCasesRavenwood",
       "host": true
+    },
+    {
+      "name": "RavenwoodCoreTest",
+      "host": true
+    },
+    {
+      "name": "RavenwoodBivalentTest",
+      "host": true
     }
   ]
 }
diff --git a/ravenwood/api-maintainers.md b/ravenwood/api-maintainers.md
index d84cb67..4b2f968 100644
--- a/ravenwood/api-maintainers.md
+++ b/ravenwood/api-maintainers.md
@@ -82,7 +82,7 @@
 
 ```
 @RavenwoodKeepWholeClass
-@RavenwoodNativeSubstitutionClass("com.android.hoststubgen.nativesubstitution.MyComplexClass_host")
+@RavenwoodNativeSubstitutionClass("com.android.platform.test.ravenwood.nativesubstitution.MyComplexClass_host")
 public class MyComplexClass {
     private static native void nativeDoThing(long nativePtr);
 ...
diff --git a/ravenwood/bivalenttest/Android.bp b/ravenwood/bivalenttest/Android.bp
new file mode 100644
index 0000000..a6b6ed9
--- /dev/null
+++ b/ravenwood/bivalenttest/Android.bp
@@ -0,0 +1,77 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "frameworks_base_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: ["frameworks_base_license"],
+}
+
+cc_library_shared {
+    name: "libravenwoodbivalenttest_jni",
+    host_supported: true,
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-unused-parameter",
+        "-Wthread-safety",
+    ],
+
+    srcs: [
+        "jni/*.cpp",
+    ],
+
+    shared_libs: [
+        "libbase",
+        "liblog",
+        "libnativehelper",
+        "libutils",
+        "libcutils",
+    ],
+}
+
+android_ravenwood_test {
+    name: "RavenwoodBivalentTest",
+
+    static_libs: [
+        "androidx.annotation_annotation",
+        "androidx.test.ext.junit",
+        "androidx.test.rules",
+    ],
+    srcs: [
+        "test/**/*.java",
+    ],
+    jni_libs: [
+        "libravenwoodbivalenttest_jni",
+    ],
+    sdk_version: "test_current",
+    auto_gen_config: true,
+}
+
+android_test {
+    name: "RavenwoodBivalentTest_device",
+
+    srcs: [
+        "test/**/*.java",
+    ],
+    static_libs: [
+        "junit",
+        "truth",
+
+        "androidx.annotation_annotation",
+        "androidx.test.ext.junit",
+        "androidx.test.rules",
+
+        "ravenwood-junit",
+    ],
+    jni_libs: [
+        "libravenwoodbivalenttest_jni",
+    ],
+    test_suites: [
+        "device-tests",
+    ],
+    optimize: {
+        enabled: false,
+    },
+}
diff --git a/ravenwood/bivalenttest/AndroidManifest.xml b/ravenwood/bivalenttest/AndroidManifest.xml
new file mode 100644
index 0000000..474c03f
--- /dev/null
+++ b/ravenwood/bivalenttest/AndroidManifest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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"
+        package="com.android.ravenwood.bivalenttest">
+
+    <application android:debuggable="true" >
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.ravenwood.bivalenttest"
+        />
+</manifest>
diff --git a/ravenwood/bivalenttest/AndroidTest.xml b/ravenwood/bivalenttest/AndroidTest.xml
new file mode 100644
index 0000000..ac4695b
--- /dev/null
+++ b/ravenwood/bivalenttest/AndroidTest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2024 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.
+-->
+<configuration description="Runs Frameworks Services Tests.">
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="apct-instrumentation" />
+
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="RavenwoodBivalentTest_device.apk" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.ravenwood.bivalenttest" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+    </test>
+</configuration>
diff --git a/ravenwood/bivalenttest/README.md b/ravenwood/bivalenttest/README.md
new file mode 100644
index 0000000..7153555
--- /dev/null
+++ b/ravenwood/bivalenttest/README.md
@@ -0,0 +1,3 @@
+# Ravenwood bivalent test
+
+This test contains bivalent tests for Ravenwood itself.
\ No newline at end of file
diff --git a/ravenwood/bivalenttest/jni/ravenwood_core_test_jni.cpp b/ravenwood/bivalenttest/jni/ravenwood_core_test_jni.cpp
new file mode 100644
index 0000000..5e66b29
--- /dev/null
+++ b/ravenwood/bivalenttest/jni/ravenwood_core_test_jni.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+#include <nativehelper/JNIHelp.h>
+#include "jni.h"
+#include "utils/Log.h"
+#include "utils/misc.h"
+
+static jint add(JNIEnv* env, jclass clazz, jint a, jint b) {
+    return a + b;
+}
+
+static const JNINativeMethod sMethods[] =
+{
+    { "add", "(II)I", (void*)add },
+};
+
+extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
+{
+    JNIEnv* env = NULL;
+    jint result = -1;
+
+    if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) {
+        ALOGE("GetEnv failed!");
+        return result;
+    }
+    ALOG_ASSERT(env, "Could not retrieve the env!");
+
+    ALOGI("%s: JNI_OnLoad", __FILE__);
+
+    int res = jniRegisterNativeMethods(env,
+            "com/android/platform/test/ravenwood/bivalenttest/RavenwoodJniTest",
+            sMethods, NELEM(sMethods));
+    if (res < 0) {
+        return res;
+    }
+
+    return JNI_VERSION_1_4;
+}
diff --git a/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodJniTest.java b/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodJniTest.java
new file mode 100644
index 0000000..3b106da
--- /dev/null
+++ b/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodJniTest.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2024 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 com.android.platform.test.ravenwood.bivalenttest;
+
+import static junit.framework.Assert.assertEquals;
+
+import android.platform.test.ravenwood.RavenwoodRule;
+import android.platform.test.ravenwood.RavenwoodUtils;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public final class RavenwoodJniTest {
+    static {
+        RavenwoodUtils.loadJniLibrary("ravenwoodbivalenttest_jni");
+    }
+
+    @Rule
+    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder().build();
+
+    private static native int add(int a, int b);
+
+    @Test
+    public void testNativeMethod() {
+        assertEquals(5, add(2, 3));
+    }
+}
diff --git a/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodRuleTest.java b/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodRuleTest.java
new file mode 100644
index 0000000..4b650b4
--- /dev/null
+++ b/ravenwood/bivalenttest/test/com/android/platform/test/ravenwood/bivalenttest/RavenwoodRuleTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2024 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 com.android.platform.test.ravenwood.bivalenttest;
+
+import android.platform.test.annotations.DisabledOnNonRavenwood;
+import android.platform.test.annotations.DisabledOnRavenwood;
+import android.platform.test.ravenwood.RavenwoodRule;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class RavenwoodRuleTest {
+    @Rule
+    public final RavenwoodRule mRavenwood = new RavenwoodRule();
+
+    @Test
+    @DisabledOnRavenwood
+    public void testDeviceOnly() {
+        Assert.assertFalse(RavenwoodRule.isOnRavenwood());
+    }
+
+    @Test
+    @DisabledOnNonRavenwood
+    public void testRavenwoodOnly() {
+        Assert.assertTrue(RavenwoodRule.isOnRavenwood());
+    }
+
+    // TODO: Add more tests
+}
diff --git a/ravenwood/coretest/Android.bp b/ravenwood/coretest/Android.bp
index 9b7f8f7..a78c5c1 100644
--- a/ravenwood/coretest/Android.bp
+++ b/ravenwood/coretest/Android.bp
@@ -12,9 +12,9 @@
 
     static_libs: [
         "androidx.annotation_annotation",
+        "androidx.test.ext.junit",
         "androidx.test.rules",
     ],
-
     srcs: [
         "test/**/*.java",
     ],
diff --git a/ravenwood/coretest/README.md b/ravenwood/coretest/README.md
new file mode 100644
index 0000000..b60bfbf
--- /dev/null
+++ b/ravenwood/coretest/README.md
@@ -0,0 +1,3 @@
+# Ravenwood core test
+
+This test contains (non-bivalent) tests for Ravenwood itself -- e.g. tests for the ravenwood rules.
\ No newline at end of file
diff --git a/ravenwood/coretest/test/com/android/platform/test/ravenwood/coretest/RavenwoodTestRunnerValidationTest.java b/ravenwood/coretest/test/com/android/platform/test/ravenwood/coretest/RavenwoodTestRunnerValidationTest.java
index e58c282..2cd585f 100644
--- a/ravenwood/coretest/test/com/android/platform/test/ravenwood/coretest/RavenwoodTestRunnerValidationTest.java
+++ b/ravenwood/coretest/test/com/android/platform/test/ravenwood/coretest/RavenwoodTestRunnerValidationTest.java
@@ -17,7 +17,7 @@
 
 import android.platform.test.ravenwood.RavenwoodRule;
 
-import androidx.test.runner.AndroidJUnit4;
+import androidx.test.runner.AndroidJUnit4; // Intentionally use the deprecated one.
 
 import org.junit.Assume;
 import org.junit.Rule;
diff --git a/ravenwood/framework-minus-apex-ravenwood-policies.txt b/ravenwood/framework-minus-apex-ravenwood-policies.txt
index 0229611..49cef07 100644
--- a/ravenwood/framework-minus-apex-ravenwood-policies.txt
+++ b/ravenwood/framework-minus-apex-ravenwood-policies.txt
@@ -9,123 +9,29 @@
 # Keep all sysprops generated code implementations
 class :sysprops stubclass
 
-# Collections
-class android.util.ArrayMap stubclass
-class android.util.ArraySet stubclass
-class android.util.LongSparseArray stubclass
-class android.util.SparseArrayMap stubclass
-class android.util.SparseArray stubclass
-class android.util.SparseBooleanArray stubclass
-class android.util.SparseIntArray stubclass
-class android.util.SparseLongArray stubclass
-class android.util.ContainerHelpers stubclass
-class android.util.EmptyArray stubclass
-class android.util.MapCollections stubclass
-
-# Logging
-class android.util.Log stubclass
-class android.util.Log !com.android.hoststubgen.nativesubstitution.Log_host
-class android.util.LogPrinter stubclass
-class android.util.LocalLog stubclass
-
-# String Manipulation
-class android.util.Printer stubclass
-class android.util.PrintStreamPrinter stubclass
-class android.util.PrintWriterPrinter stubclass
-class android.util.StringBuilderPrinter stubclass
-class android.util.IndentingPrintWriter stubclass
-
-# Properties
-class android.util.Property stubclass
-class android.util.FloatProperty stubclass
-class android.util.IntProperty stubclass
-class android.util.NoSuchPropertyException stubclass
-class android.util.ReflectiveProperty stubclass
-
-# Exceptions
-class android.util.AndroidException stubclass
-class android.util.AndroidRuntimeException stubclass
-
-# JSON
-class android.util.JsonReader stubclass
-class android.util.JsonWriter stubclass
-class android.util.MalformedJsonException stubclass
-
-# Base64
-class android.util.Base64 stubclass
-class android.util.Base64DataException stubclass
-class android.util.Base64InputStream stubclass
-class android.util.Base64OutputStream stubclass
-
-# Data Holders
-class android.util.MutableFloat stubclass
-class android.util.MutableShort stubclass
-class android.util.MutableBoolean stubclass
-class android.util.MutableByte stubclass
-class android.util.MutableChar stubclass
-class android.util.MutableDouble stubclass
-class android.util.Pair stubclass
-class android.util.Range stubclass
-class android.util.Rational stubclass
-class android.util.Size stubclass
-class android.util.SizeF stubclass
-
-# Proto
-class android.util.proto.EncodedBuffer stubclass
-class android.util.proto.ProtoInputStream stubclass
-class android.util.proto.ProtoOutputStream stubclass
-class android.util.proto.ProtoParseException stubclass
-class android.util.proto.ProtoStream stubclass
-class android.util.proto.ProtoUtils stubclass
-class android.util.proto.WireTypeMismatchException stubclass
-
-# Misc
-class android.util.BackupUtils stubclass
-class android.util.Dumpable stubclass
-class android.util.DebugUtils stubclass
-class android.util.MathUtils stubclass
-class android.util.Patterns stubclass
-class android.util.UtilConfig stubclass
-
-# Internals
+# Exported to Mainline modules; cannot use annotations
+class com.android.internal.util.FastXmlSerializer stubclass
 class com.android.internal.util.FileRotator stubclass
 class com.android.internal.util.HexDump stubclass
+class com.android.internal.util.IndentingPrintWriter stubclass
+class com.android.internal.util.LocalLog stubclass
 class com.android.internal.util.MessageUtils stubclass
-class com.android.internal.util.Preconditions stubclass
 class com.android.internal.util.TokenBucket stubclass
-
-# Parcel
-class android.os.ParcelFormatException stubclass
-class android.os.BadParcelableException stubclass
-class android.os.BadTypeParcelableException stubclass
-
-# Binder
-class android.os.DeadObjectException stubclass
-class android.os.DeadSystemException stubclass
-class android.os.RemoteException stubclass
-class android.os.TransactionTooLargeException stubclass
-
-# Containers
-class android.os.BaseBundle stubclass
-class android.os.Bundle stubclass
-class android.os.PersistableBundle stubclass
-
-# Misc
 class android.os.HandlerExecutor stubclass
-class android.os.PatternMatcher stubclass
-class android.os.ParcelUuid stubclass
+class android.util.BackupUtils stubclass
+class android.util.IndentingPrintWriter stubclass
+class android.util.LocalLog stubclass
+class android.util.Pair stubclass
+class android.util.Rational stubclass
 
-# Logging related interfaces from modules-utils
+# From modules-utils; cannot use annotations
+class com.android.internal.util.Preconditions stubclass
 class com.android.internal.logging.InstanceId stubclass
 class com.android.internal.logging.InstanceIdSequence stubclass
 class com.android.internal.logging.UiEvent stubclass
 class com.android.internal.logging.UiEventLogger stubclass
 
-# XML
-class com.android.internal.util.XmlPullParserWrapper stubclass
-class com.android.internal.util.XmlSerializerWrapper stubclass
-class com.android.internal.util.XmlUtils stubclass
-
+# From modules-utils; cannot use annotations
 class com.android.modules.utils.BinaryXmlPullParser stubclass
 class com.android.modules.utils.BinaryXmlSerializer stubclass
 class com.android.modules.utils.FastDataInput stubclass
diff --git a/ravenwood/junit-src/android/platform/test/annotations/DisabledOnNonRavenwood.java b/ravenwood/junit-src/android/platform/test/annotations/DisabledOnNonRavenwood.java
new file mode 100644
index 0000000..8ca34ba
--- /dev/null
+++ b/ravenwood/junit-src/android/platform/test/annotations/DisabledOnNonRavenwood.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2024 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 android.platform.test.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Tests marked with this annotation are only executed when running on Ravenwood, but not
+ * on a device.
+ *
+ * This is basically equivalent to the opposite of {@link DisabledOnRavenwood}, but in order to
+ * avoid complex structure, and there's no equivalent to the opposite {@link EnabledOnRavenwood},
+ * which means if a test class has this annotation, you can't negate it in subclasses or
+ * on a per-method basis.
+ *
+ * The {@code RAVENWOOD_RUN_DISABLED_TESTS} environmental variable won't work because it won't be
+ * propagated to the device. (We may support it in the future, possibly using a debug. sysprop.)
+ *
+ * @hide
+ */
+@Inherited
+@Target({ElementType.METHOD, ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface DisabledOnNonRavenwood {
+    /**
+     * General free-form description of why this test is being ignored.
+     */
+    String reason() default "";
+}
diff --git a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodClassRule.java b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodClassRule.java
index 8d76970..9a4d488 100644
--- a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodClassRule.java
+++ b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodClassRule.java
@@ -18,6 +18,7 @@
 
 import static android.platform.test.ravenwood.RavenwoodRule.ENABLE_PROBE_IGNORED;
 import static android.platform.test.ravenwood.RavenwoodRule.IS_ON_RAVENWOOD;
+import static android.platform.test.ravenwood.RavenwoodRule.shouldEnableOnDevice;
 import static android.platform.test.ravenwood.RavenwoodRule.shouldEnableOnRavenwood;
 import static android.platform.test.ravenwood.RavenwoodRule.shouldStillIgnoreInProbeIgnoreMode;
 
@@ -42,6 +43,7 @@
     public Statement apply(Statement base, Description description) {
         // No special treatment when running outside Ravenwood; run tests as-is
         if (!IS_ON_RAVENWOOD) {
+            Assume.assumeTrue(shouldEnableOnDevice(description));
             return base;
         }
 
diff --git a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
index 764573d..b90f112 100644
--- a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
+++ b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodRule.java
@@ -22,6 +22,7 @@
 
 import static org.junit.Assert.fail;
 
+import android.platform.test.annotations.DisabledOnNonRavenwood;
 import android.platform.test.annotations.DisabledOnRavenwood;
 import android.platform.test.annotations.EnabledOnRavenwood;
 import android.platform.test.annotations.IgnoreUnderRavenwood;
@@ -211,6 +212,15 @@
         return IS_ON_RAVENWOOD;
     }
 
+    static boolean shouldEnableOnDevice(Description description) {
+        if (description.isTest()) {
+            if (description.getAnnotation(DisabledOnNonRavenwood.class) != null) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     /**
      * Determine if the given {@link Description} should be enabled when running on the
      * Ravenwood test environment.
@@ -271,6 +281,7 @@
     public Statement apply(Statement base, Description description) {
         // No special treatment when running outside Ravenwood; run tests as-is
         if (!IS_ON_RAVENWOOD) {
+            Assume.assumeTrue(shouldEnableOnDevice(description));
             return base;
         }
 
diff --git a/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodUtils.java b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodUtils.java
new file mode 100644
index 0000000..b736a76
--- /dev/null
+++ b/ravenwood/junit-src/android/platform/test/ravenwood/RavenwoodUtils.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 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 android.platform.test.ravenwood;
+
+import java.io.File;
+import java.io.PrintStream;
+import java.util.Arrays;
+
+/**
+ * Utilities for writing (bivalent) ravenwood tests.
+ */
+public class RavenwoodUtils {
+    private RavenwoodUtils() {
+    }
+
+    /**
+     * Load a JNI library respecting {@code java.library.path}
+     * (which reflects {@code LD_LIBRARY_PATH}).
+     *
+     * <p>{@code libname} must be the library filename without:
+     * - directory
+     * - "lib" prefix
+     * - and the ".so" extension
+     *
+     * <p>For example, in order to load "libmyjni.so", then pass "myjni".
+     *
+     * <p>This is basically the same thing as Java's {@link System#loadLibrary(String)},
+     * but this API works slightly different on ART and on the desktop Java, namely
+     * the desktop Java version uses a different entry point method name
+     * {@code JNI_OnLoad_libname()} (note the included "libname")
+     * while ART always seems to use {@code JNI_OnLoad()}.
+     *
+     * <p>This method provides the same behavior on both the device side and on Ravenwood --
+     * it uses {@code JNI_OnLoad()} as the entry point name on both.
+     */
+    public static void loadJniLibrary(String libname) {
+        if (RavenwoodRule.isOnRavenwood()) {
+            loadLibraryOnRavenwood(libname);
+        } else {
+            // Just delegate to the loadLibrary().
+            System.loadLibrary(libname);
+        }
+    }
+
+    private static void loadLibraryOnRavenwood(String libname) {
+        var path = System.getProperty("java.library.path");
+        var filename = "lib" + libname + ".so";
+
+        System.out.println("Looking for library " + libname + ".so in java.library.path:" + path);
+
+        try {
+            if (path == null) {
+                throw new UnsatisfiedLinkError("Cannot load library " + libname + "."
+                        + " Property java.library.path not set!");
+            }
+            for (var dir : path.split(":")) {
+                var file = new File(dir + "/" + filename);
+                if (file.exists()) {
+                    System.load(file.getAbsolutePath());
+                    return;
+                }
+            }
+            throw new UnsatisfiedLinkError("Library " + libname + " no found in "
+                    + "java.library.path: " + path);
+        } catch (Exception e) {
+            dumpFiles(System.out);
+            throw e;
+        }
+    }
+
+    private static void dumpFiles(PrintStream out) {
+        try {
+            var path = System.getProperty("java.library.path");
+            out.println("# java.library.path=" + path);
+
+            for (var dir : path.split(":")) {
+                listFiles(out, new File(dir), "");
+
+                var gparent = new File((new File(dir)).getAbsolutePath() + "../../..")
+                        .getCanonicalFile();
+                if (gparent.getName().contains("testcases")) {
+                    // Special case: if we found this directory, dump its contents too.
+                    listFiles(out, gparent, "");
+                }
+            }
+        } catch (Throwable th) {
+            out.println("Error: " + th.toString());
+            th.printStackTrace(out);
+        }
+    }
+
+    private static void listFiles(PrintStream out, File dir, String prefix) {
+        if (!dir.isDirectory()) {
+            out.println(prefix + dir.getAbsolutePath() + " is not a directory!");
+            return;
+        }
+        out.println(prefix + ":" + dir.getAbsolutePath() + "/");
+        // First, list the files.
+        for (var file : Arrays.stream(dir.listFiles()).sorted().toList()) {
+            out.println(prefix + "  " + file.getName() + "" + (file.isDirectory() ? "/" : ""));
+        }
+
+        // Then recurse.
+        if (dir.getAbsolutePath().startsWith("/usr") || dir.getAbsolutePath().startsWith("/lib")) {
+            // There would be too many files, so don't recurse.
+            return;
+        }
+        for (var file : Arrays.stream(dir.listFiles()).sorted().toList()) {
+            if (file.isDirectory()) {
+                listFiles(out, file, prefix + "  ");
+            }
+        }
+    }
+}
diff --git a/ravenwood/minimum-test/README.md b/ravenwood/minimum-test/README.md
new file mode 100644
index 0000000..6b0abe9
--- /dev/null
+++ b/ravenwood/minimum-test/README.md
@@ -0,0 +1,3 @@
+# Ravenwood minimum test
+
+This directory contains a minimum possible ravenwood test -- no extra dependencies, etc.
\ No newline at end of file
diff --git a/ravenwood/minimum-test/test/com/android/ravenwood/RavenwoodMinimumTest.java b/ravenwood/minimum-test/test/com/android/ravenwood/RavenwoodMinimumTest.java
index 03cfad5..b477117 100644
--- a/ravenwood/minimum-test/test/com/android/ravenwood/RavenwoodMinimumTest.java
+++ b/ravenwood/minimum-test/test/com/android/ravenwood/RavenwoodMinimumTest.java
@@ -28,7 +28,7 @@
 @RunWith(AndroidJUnit4.class)
 public class RavenwoodMinimumTest {
     @Rule
-    public RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
+    public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder()
             .setProcessApp()
             .build();
 
diff --git a/ravenwood/mockito/AndroidTest.xml b/ravenwood/mockito/AndroidTest.xml
index 96bc275..5ba9b1f 100644
--- a/ravenwood/mockito/AndroidTest.xml
+++ b/ravenwood/mockito/AndroidTest.xml
@@ -22,8 +22,6 @@
         <option name="test-file-name" value="RavenwoodMockitoTest_device.apk" />
     </target_preparer>
 
-    <option name="test-tag" value="FrameworksMockingServicesTests" />
-
     <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
         <option name="package" value="com.android.ravenwood.mockitotest" />
         <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
diff --git a/ravenwood/mockito/README.md b/ravenwood/mockito/README.md
new file mode 100644
index 0000000..4ceb795
--- /dev/null
+++ b/ravenwood/mockito/README.md
@@ -0,0 +1,3 @@
+# Ravenwood mockito test
+
+This directory contains a sample bivalent test using Mockito.
\ No newline at end of file
diff --git a/ravenwood/ravenwood-annotation-allowed-classes.txt b/ravenwood/ravenwood-annotation-allowed-classes.txt
index 927ddd7..b5baef6 100644
--- a/ravenwood/ravenwood-annotation-allowed-classes.txt
+++ b/ravenwood/ravenwood-annotation-allowed-classes.txt
@@ -22,29 +22,98 @@
 com.android.internal.power.EnergyConsumerStats
 com.android.internal.power.ModemPowerProfile
 
+android.util.AndroidException
+android.util.AndroidRuntimeException
+android.util.ArrayMap
+android.util.ArraySet
 android.util.AtomicFile
+android.util.BackupUtils
+android.util.Base64
+android.util.Base64DataException
+android.util.Base64InputStream
+android.util.Base64OutputStream
 android.util.CloseGuard
+android.util.ContainerHelpers
 android.util.DataUnit
 android.util.DayOfMonthCursor
+android.util.DebugUtils
+android.util.Dumpable
 android.util.DumpableContainer
+android.util.EmptyArray
 android.util.EventLog
+android.util.FloatProperty
+android.util.FloatMath
+android.util.IndentingPrintWriter
 android.util.IntArray
+android.util.IntProperty
+android.util.JsonReader
+android.util.JsonWriter
 android.util.KeyValueListParser
+android.util.LocalLog
+android.util.Log
+android.util.LogPrinter
+android.util.LogWriter
 android.util.LongArray
 android.util.LongArrayQueue
+android.util.LongSparseArray
 android.util.LongSparseLongArray
 android.util.LruCache
+android.util.MalformedJsonException
+android.util.MapCollections
+android.util.MathUtils
 android.util.MonthDisplayHelper
+android.util.MutableBoolean
+android.util.MutableByte
+android.util.MutableChar
+android.util.MutableDouble
+android.util.MutableFloat
+android.util.MutableInt
+android.util.MutableLong
+android.util.MutableShort
+android.util.NoSuchPropertyException
+android.util.Pair
+android.util.Patterns
+android.util.Pools
+android.util.PrefixPrinter
+android.util.PrefixPrintWriter
+android.util.Printer
+android.util.PrintStreamPrinter
+android.util.PrintWriterPrinter
+android.util.Property
+android.util.Range
+android.util.Rational
 android.util.RecurrenceRule
+android.util.ReflectiveProperty
 android.util.RotationUtils
 android.util.Singleton
+android.util.Size
+android.util.SizeF
 android.util.Slog
+android.util.SparseArray
+android.util.SparseArrayMap
+android.util.SparseBooleanArray
 android.util.SparseDoubleArray
+android.util.SparseIntArray
+android.util.SparseLongArray
 android.util.SparseSetArray
+android.util.StringBuilderPrinter
+android.util.TeeWriter
 android.util.TimeUtils
+android.util.UtilConfig
 android.util.Xml
 
+android.util.proto.EncodedBuffer
+android.util.proto.ProtoInputStream
+android.util.proto.ProtoOutputStream
+android.util.proto.ProtoParseException
+android.util.proto.ProtoStream
+android.util.proto.ProtoUtils
+android.util.proto.WireTypeMismatchException
+
 android.os.AggregateBatteryConsumer
+android.os.BadParcelableException
+android.os.BadTypeParcelableException
+android.os.BaseBundle
 android.os.BatteryConsumer
 android.os.BatteryStats
 android.os.BatteryStats$HistoryItem
@@ -59,8 +128,12 @@
 android.os.BluetoothBatteryStats
 android.os.Broadcaster
 android.os.Build
+android.os.Bundle
 android.os.BundleMerger
+android.os.CancellationSignal
 android.os.ConditionVariable
+android.os.DeadObjectException
+android.os.DeadSystemException
 android.os.FileUtils
 android.os.FileUtils$MemoryPipe
 android.os.Handler
@@ -75,9 +148,17 @@
 android.os.ParcelFileDescriptor
 android.os.ParcelFileDescriptor$AutoCloseInputStream
 android.os.ParcelFileDescriptor$AutoCloseOutputStream
+android.os.ParcelFormatException
+android.os.ParcelUuid
 android.os.Parcelable
+android.os.PatternMatcher
+android.os.PersistableBundle
 android.os.PowerComponents
 android.os.Process
+android.os.RemoteCallback
+android.os.RemoteCallbackList
+android.os.RemoteException
+android.os.ResultReceiver
 android.os.ServiceSpecificException
 android.os.StrictMode
 android.os.SystemClock
@@ -86,6 +167,7 @@
 android.os.ThreadLocalWorkSource
 android.os.TimestampedValue
 android.os.Trace
+android.os.TransactionTooLargeException
 android.os.UserBatteryConsumer
 android.os.UserBatteryConsumer$Builder
 android.os.UidBatteryConsumer
@@ -181,6 +263,7 @@
 com.android.internal.util.BitwiseInputStream
 com.android.internal.util.BitwiseOutputStream
 com.android.internal.util.CallbackRegistry
+com.android.internal.util.CollectionUtils
 com.android.internal.util.DumpableContainer
 com.android.internal.util.dump.DumpableContainerImpl
 com.android.internal.util.DumpUtils
@@ -189,14 +272,22 @@
 com.android.internal.util.FileRotator
 com.android.internal.util.GrowingArrayUtils
 com.android.internal.util.HeavyHitterSketch
+com.android.internal.util.HexDump
+com.android.internal.util.IntPair
 com.android.internal.util.LineBreakBufferedWriter
+com.android.internal.util.MessageUtils
 com.android.internal.util.ObjectUtils
 com.android.internal.util.Parcelling
 com.android.internal.util.ParseUtils
 com.android.internal.util.ProcFileReader
 com.android.internal.util.QuickSelect
 com.android.internal.util.RingBuffer
+com.android.internal.util.SizedInputStream
 com.android.internal.util.StringPool
+com.android.internal.util.TokenBucket
+com.android.internal.util.XmlPullParserWrapper
+com.android.internal.util.XmlSerializerWrapper
+com.android.internal.util.XmlUtils
 
 com.android.internal.os.BackgroundThread
 com.android.internal.os.BinderCallHeavyHitterWatcher
diff --git a/ravenwood/run-ravenwood-tests.sh b/ravenwood/run-ravenwood-tests.sh
index 3f4b8a7..259aa70 100755
--- a/ravenwood/run-ravenwood-tests.sh
+++ b/ravenwood/run-ravenwood-tests.sh
@@ -13,10 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Run all the ravenwood tests.
+# Run all the ravenwood tests + hoststubgen unit tests.
+
+all_tests="hoststubgentest tiny-framework-dump-test hoststubgen-invoke-test"
 
 # "echo" is to remove the newlines
-all_tests=$(echo $(${0%/*}/list-ravenwood-tests.sh) )
+all_tests="$all_tests $(echo $(${0%/*}/list-ravenwood-tests.sh) )"
 
 echo "Running tests: $all_tests"
 atest $all_tests
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/CursorWindow_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/CursorWindow_host.java
similarity index 98%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/CursorWindow_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/CursorWindow_host.java
index eba9910..f38d565 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/CursorWindow_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/CursorWindow_host.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/EventLog_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/EventLog_host.java
similarity index 97%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/EventLog_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/EventLog_host.java
index 6480cfc..55d4ffb 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/EventLog_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/EventLog_host.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import com.android.internal.os.RuntimeInit;
 
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Log_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Log_host.java
similarity index 97%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Log_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Log_host.java
index cdfa302..5930a14 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Log_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Log_host.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import android.util.Log;
 import android.util.Log.Level;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongArrayMultiStateCounter_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongArrayMultiStateCounter_host.java
similarity index 99%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongArrayMultiStateCounter_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongArrayMultiStateCounter_host.java
index 4d39d88..7414110 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongArrayMultiStateCounter_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongArrayMultiStateCounter_host.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import android.os.BadParcelableException;
 import android.os.Parcel;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongMultiStateCounter_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongMultiStateCounter_host.java
similarity index 98%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongMultiStateCounter_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongMultiStateCounter_host.java
index a5d0fc6..9486651 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/LongMultiStateCounter_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/LongMultiStateCounter_host.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import android.os.BadParcelableException;
 import android.os.Parcel;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/MessageQueue_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/MessageQueue_host.java
similarity index 97%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/MessageQueue_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/MessageQueue_host.java
index 65da4a1..5e81124 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/MessageQueue_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/MessageQueue_host.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/ParcelFileDescriptor_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/ParcelFileDescriptor_host.java
similarity index 98%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/ParcelFileDescriptor_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/ParcelFileDescriptor_host.java
index 0ebaac60..2d79914 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/ParcelFileDescriptor_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/ParcelFileDescriptor_host.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import static android.os.ParcelFileDescriptor.MODE_APPEND;
 import static android.os.ParcelFileDescriptor.MODE_CREATE;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Parcel_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
similarity index 99%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Parcel_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
index d63bff6..81ad31e 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/Parcel_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/Parcel_host.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import java.nio.ByteBuffer;
 import java.nio.charset.StandardCharsets;
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/SystemProperties_host.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/SystemProperties_host.java
similarity index 98%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/SystemProperties_host.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/SystemProperties_host.java
index 2f6a361..eba6c8b 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/nativesubstitution/SystemProperties_host.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/nativesubstitution/SystemProperties_host.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.nativesubstitution;
+package com.android.platform.test.ravenwood.nativesubstitution;
 
 import android.util.SparseArray;
 
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/runtimehelper/ClassLoadHook.java b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/runtimehelper/ClassLoadHook.java
similarity index 96%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/runtimehelper/ClassLoadHook.java
rename to ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/runtimehelper/ClassLoadHook.java
index fbcc648..1e12030 100644
--- a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/framework/com/android/hoststubgen/runtimehelper/ClassLoadHook.java
+++ b/ravenwood/runtime-helper-src/framework/com/android/platform/test/ravenwood/runtimehelper/ClassLoadHook.java
@@ -13,9 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.hoststubgen.runtimehelper;
-
-import com.android.hoststubgen.hosthelper.HostTestException;
+package com.android.platform.test.ravenwood.runtimehelper;
 
 import java.io.File;
 import java.io.PrintStream;
@@ -79,7 +77,7 @@
 
     private static void ensurePropertyNotSet(String key) {
         if (System.getProperty(key) != null) {
-            throw new HostTestException("System property \"" + key + "\" is set unexpectedly");
+            throw new RuntimeException("System property \"" + key + "\" is set unexpectedly");
         }
     }
 
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/android/system/ErrnoException.java b/ravenwood/runtime-helper-src/libcore-fake/android/system/ErrnoException.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/android/system/ErrnoException.java
rename to ravenwood/runtime-helper-src/libcore-fake/android/system/ErrnoException.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/com/android/okhttp/internalandroidapi/Dns.java b/ravenwood/runtime-helper-src/libcore-fake/com/android/okhttp/internalandroidapi/Dns.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/com/android/okhttp/internalandroidapi/Dns.java
rename to ravenwood/runtime-helper-src/libcore-fake/com/android/okhttp/internalandroidapi/Dns.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/dalvik/system/VMRuntime.java b/ravenwood/runtime-helper-src/libcore-fake/dalvik/system/VMRuntime.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/dalvik/system/VMRuntime.java
rename to ravenwood/runtime-helper-src/libcore-fake/dalvik/system/VMRuntime.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/io/IoUtils.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/io/IoUtils.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/io/IoUtils.java
rename to ravenwood/runtime-helper-src/libcore-fake/libcore/io/IoUtils.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/EmptyArray.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/EmptyArray.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/EmptyArray.java
rename to ravenwood/runtime-helper-src/libcore-fake/libcore/util/EmptyArray.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/HexEncoding.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/HexEncoding.java
rename to ravenwood/runtime-helper-src/libcore-fake/libcore/util/HexEncoding.java
diff --git a/tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/SneakyThrow.java b/ravenwood/runtime-helper-src/libcore-fake/libcore/util/SneakyThrow.java
similarity index 100%
rename from tools/hoststubgen/hoststubgen/helper-framework-runtime-src/libcore-fake/libcore/util/SneakyThrow.java
rename to ravenwood/runtime-helper-src/libcore-fake/libcore/util/SneakyThrow.java
diff --git a/services/Android.bp b/services/Android.bp
index 7e8333c..8709692 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -150,17 +150,49 @@
     srcs: ["core/java/com/android/server/utils/Slogf.java"],
 }
 
+soong_config_module_type {
+    name: "art_profile_java_defaults",
+    module_type: "java_defaults",
+    config_namespace: "art_profile",
+    variables: ["services_profile_path"],
+    properties: ["dex_preopt"],
+}
+
+soong_config_string_variable {
+    name: "services_profile_path",
+    values: ["art_wear_profile"],
+}
+
+art_profile_java_defaults {
+    name: "art_profile_java_defaults",
+    soong_config_variables: {
+        services_profile_path: {
+            art_wear_profile: {
+                dex_preopt: {
+                    app_image: true,
+                    profile: "art-wear-profile",
+                },
+            },
+            conditions_default: {
+                dex_preopt: {
+                    app_image: true,
+                    profile: "art-profile",
+                },
+            },
+        },
+    },
+}
+
 // merge all required services into one jar
 // ============================================================
 java_library {
     name: "services",
-    defaults: ["services_java_defaults"],
+    defaults: [
+        "services_java_defaults",
+        "art_profile_java_defaults",
+    ],
     installable: true,
 
-    dex_preopt: {
-        app_image: true,
-        profile: "art-profile",
-    },
     exclude_kotlinc_generated_files: true,
 
     srcs: [":services-main-sources"],
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 87b57b0..3442a6a 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -1746,6 +1746,23 @@
         }
     }
 
+    @Override
+    @RequiresPermission(Manifest.permission.STATUS_BAR_SERVICE)
+    public void notifyQuickSettingsTilesChanged(
+            @UserIdInt int userId, List<ComponentName> tileComponentNames) {
+        mSecurityPolicy.enforceCallingPermission(
+                Manifest.permission.STATUS_BAR_SERVICE,
+                /* function= */ "notifyQuickSettingsTilesChanged");
+
+        Slog.d(LOG_TAG, TextUtils.formatSimple(
+                "notifyQuickSettingsTilesChanged userId: %d, tileComponentNames: %s",
+                        userId, tileComponentNames));
+        // TODO (b/314843909): in the follow up cl
+        // update in-memory copy of QS_TILES in AccessibilityManager
+        // update Settings.Secure.ACCESSIBILITY_QS_TARGETS and its in-memory copy
+        // show full device control warning if needed (b/314850435)
+    }
+
     /**
      * Called when a gesture is detected on a display by the framework.
      *
diff --git a/services/art-wear-profile b/services/art-wear-profile
new file mode 100644
index 0000000..47bdb13
--- /dev/null
+++ b/services/art-wear-profile
@@ -0,0 +1,30150 @@
+Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
+Landroid/content/pm/PackageManagerInternal;
+Landroid/content/pm/TestUtilityService;
+Landroid/hardware/light/HwLight$1;
+Landroid/hardware/light/HwLight;
+Landroid/hardware/light/ILights$Stub$Proxy;
+Landroid/hardware/light/ILights$Stub;
+Landroid/hardware/light/ILights;
+Landroid/hardware/power/stats/Channel$1;
+Landroid/hardware/power/stats/Channel;
+Landroid/hardware/power/stats/EnergyConsumer;
+Landroid/hardware/power/stats/EnergyMeasurement$1;
+Landroid/hardware/power/stats/EnergyMeasurement;
+Landroid/hardware/power/stats/IPowerStats;
+Landroid/hardware/power/stats/PowerEntity$1;
+Landroid/hardware/power/stats/PowerEntity;
+Landroid/hardware/power/stats/State$1;
+Landroid/hardware/power/stats/State;
+Landroid/hardware/power/stats/StateResidency$1;
+Landroid/hardware/power/stats/StateResidency;
+Landroid/hardware/power/stats/StateResidencyResult$1;
+Landroid/hardware/power/stats/StateResidencyResult;
+Landroid/hidl/base/V1_0/IBase;
+Landroid/hidl/manager/V1_0/IServiceManager$Proxy;
+Landroid/hidl/manager/V1_0/IServiceManager;
+Landroid/hidl/manager/V1_0/IServiceNotification$Stub;
+Landroid/hidl/manager/V1_0/IServiceNotification;
+Landroid/net/ConnectivityModuleConnector$Dependencies;
+Landroid/net/ConnectivityModuleConnector$DependenciesImpl;
+Landroid/net/ConnectivityModuleConnector;
+Landroid/os/BatteryStatsInternal;
+Landroid/power/PowerStatsInternal;
+Landroid/sysprop/SurfaceFlingerProperties;
+Lcom/android/modules/utils/build/SdkLevel;
+Lcom/android/modules/utils/build/UnboundedSdkLevel;
+Lcom/android/server/AnimationThread;
+Lcom/android/server/AppFuseMountException;
+Lcom/android/server/BundleUtils;
+Lcom/android/server/ConsumerIrService;
+Lcom/android/server/DisplayThread;
+Lcom/android/server/EventLogTags;
+Lcom/android/server/ExplicitHealthCheckController;
+Lcom/android/server/FgThread;
+Lcom/android/server/HardwarePropertiesManagerService;
+Lcom/android/server/IntentResolver$1;
+Lcom/android/server/IntentResolver;
+Lcom/android/server/IoThread;
+Lcom/android/server/LocalManagerRegistry$ManagerNotFoundException;
+Lcom/android/server/LocalManagerRegistry;
+Lcom/android/server/LockGuard$LockInfo-IA;
+Lcom/android/server/LockGuard$LockInfo;
+Lcom/android/server/LockGuard;
+Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;
+Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;
+Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda7;
+Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;
+Lcom/android/server/PackageWatchdog$$ExternalSyntheticLambda9;
+Lcom/android/server/PackageWatchdog$BootThreshold;
+Lcom/android/server/PackageWatchdog$ObserverInternal;
+Lcom/android/server/PackageWatchdog$PackageHealthObserver;
+Lcom/android/server/PackageWatchdog$SystemClock;
+Lcom/android/server/PackageWatchdog;
+Lcom/android/server/RescueParty$RescuePartyObserver;
+Lcom/android/server/RescueParty;
+Lcom/android/server/SerialService;
+Lcom/android/server/ServiceThread;
+Lcom/android/server/SystemClockTime;
+Lcom/android/server/SystemConfig$PermissionEntry;
+Lcom/android/server/SystemConfig$SharedLibraryEntry;
+Lcom/android/server/SystemConfig;
+Lcom/android/server/SystemServer$$ExternalSyntheticLambda0;
+Lcom/android/server/SystemServer$$ExternalSyntheticLambda1;
+Lcom/android/server/SystemServer$$ExternalSyntheticLambda2;
+Lcom/android/server/SystemServer$SystemServerDumper;
+Lcom/android/server/SystemServer;
+Lcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;
+Lcom/android/server/SystemServerInitThreadPool;
+Lcom/android/server/SystemService;
+Lcom/android/server/SystemServiceManager;
+Lcom/android/server/SystemTimeZone;
+Lcom/android/server/ThreadPriorityBooster$1;
+Lcom/android/server/ThreadPriorityBooster$PriorityState;
+Lcom/android/server/ThreadPriorityBooster;
+Lcom/android/server/UiThread;
+Lcom/android/server/Watchdog$$ExternalSyntheticLambda0;
+Lcom/android/server/Watchdog$1;
+Lcom/android/server/Watchdog$BinderThreadMonitor;
+Lcom/android/server/Watchdog$HandlerChecker;
+Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
+Lcom/android/server/Watchdog$Monitor;
+Lcom/android/server/Watchdog$RebootRequestReceiver;
+Lcom/android/server/Watchdog$SettingsObserver;
+Lcom/android/server/Watchdog;
+Lcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;
+Lcom/android/server/accessibility/BrailleDisplayConnection;
+Lcom/android/server/adb/AdbDebuggingManager$PairingThread;
+Lcom/android/server/am/ActiveServices$1;
+Lcom/android/server/am/ActiveServices$5;
+Lcom/android/server/am/ActiveServices$MediaProjectionFgsTypeCustomPermission;
+Lcom/android/server/am/ActiveServices$ProcessAnrTimer;
+Lcom/android/server/am/ActiveServices$ServiceAnrTimer;
+Lcom/android/server/am/ActiveServices$ServiceMap;
+Lcom/android/server/am/ActiveServices$ServiceRestarter;
+Lcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;
+Lcom/android/server/am/ActiveServices;
+Lcom/android/server/am/ActiveUids;
+Lcom/android/server/am/ActivityManagerConstants$1;
+Lcom/android/server/am/ActivityManagerConstants$2;
+Lcom/android/server/am/ActivityManagerConstants;
+Lcom/android/server/am/ActivityManagerGlobalLock;
+Lcom/android/server/am/ActivityManagerLocal;
+Lcom/android/server/am/ActivityManagerProcLock;
+Lcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;
+Lcom/android/server/am/ActivityManagerService$12;
+Lcom/android/server/am/ActivityManagerService$13;
+Lcom/android/server/am/ActivityManagerService$16;
+Lcom/android/server/am/ActivityManagerService$1;
+Lcom/android/server/am/ActivityManagerService$2;
+Lcom/android/server/am/ActivityManagerService$3;
+Lcom/android/server/am/ActivityManagerService$6;
+Lcom/android/server/am/ActivityManagerService$8;
+Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;
+Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;
+Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;
+Lcom/android/server/am/ActivityManagerService$Injector;
+Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface;
+Lcom/android/server/am/ActivityManagerService$Lifecycle;
+Lcom/android/server/am/ActivityManagerService$LocalService;
+Lcom/android/server/am/ActivityManagerService$MainHandler$1;
+Lcom/android/server/am/ActivityManagerService$MainHandler;
+Lcom/android/server/am/ActivityManagerService$PidMap;
+Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
+Lcom/android/server/am/ActivityManagerService$UiHandler;
+Lcom/android/server/am/ActivityManagerService;
+Lcom/android/server/am/ActivityManagerShellCommand;
+Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;
+Lcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;
+Lcom/android/server/am/AnrHelper$AnrConsumerThread;
+Lcom/android/server/am/AnrHelper;
+Lcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;
+Lcom/android/server/am/AppBatteryExemptionTracker$UidBatteryStates;
+Lcom/android/server/am/AppBatteryExemptionTracker;
+Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;
+Lcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda1;
+Lcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;
+Lcom/android/server/am/AppBatteryTracker$BatteryUsage;
+Lcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;
+Lcom/android/server/am/AppBatteryTracker;
+Lcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;
+Lcom/android/server/am/AppBindServiceEventsTracker;
+Lcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;
+Lcom/android/server/am/AppBroadcastEventsTracker;
+Lcom/android/server/am/AppErrors;
+Lcom/android/server/am/AppExitInfoTracker$1;
+Lcom/android/server/am/AppExitInfoTracker$2;
+Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;
+Lcom/android/server/am/AppExitInfoTracker$AppTraceRetriever;
+Lcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;
+Lcom/android/server/am/AppExitInfoTracker$KillHandler;
+Lcom/android/server/am/AppExitInfoTracker;
+Lcom/android/server/am/AppFGSTracker$1;
+Lcom/android/server/am/AppFGSTracker$AppFGSPolicy;
+Lcom/android/server/am/AppFGSTracker$MyHandler;
+Lcom/android/server/am/AppFGSTracker$NotificationListener;
+Lcom/android/server/am/AppFGSTracker$PackageDurations;
+Lcom/android/server/am/AppFGSTracker;
+Lcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;
+Lcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;
+Lcom/android/server/am/AppMediaSessionTracker;
+Lcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;
+Lcom/android/server/am/AppPermissionTracker$MyHandler;
+Lcom/android/server/am/AppPermissionTracker;
+Lcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;
+Lcom/android/server/am/AppProfiler$1;
+Lcom/android/server/am/AppProfiler$BgHandler;
+Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;
+Lcom/android/server/am/AppProfiler$ProcessCpuThread;
+Lcom/android/server/am/AppProfiler$ProfileData;
+Lcom/android/server/am/AppProfiler;
+Lcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;
+Lcom/android/server/am/AppRestrictionController$1;
+Lcom/android/server/am/AppRestrictionController$2;
+Lcom/android/server/am/AppRestrictionController$3;
+Lcom/android/server/am/AppRestrictionController$4;
+Lcom/android/server/am/AppRestrictionController$5;
+Lcom/android/server/am/AppRestrictionController$BgHandler;
+Lcom/android/server/am/AppRestrictionController$ConstantsObserver;
+Lcom/android/server/am/AppRestrictionController$Injector;
+Lcom/android/server/am/AppRestrictionController$NotificationHelper$1;
+Lcom/android/server/am/AppRestrictionController$NotificationHelper;
+Lcom/android/server/am/AppRestrictionController$RestrictionSettings;
+Lcom/android/server/am/AppRestrictionController$TrackerInfo;
+Lcom/android/server/am/AppRestrictionController$UidBatteryUsageProvider;
+Lcom/android/server/am/AppRestrictionController;
+Lcom/android/server/am/AppStartInfoTracker$1;
+Lcom/android/server/am/AppStartInfoTracker$2;
+Lcom/android/server/am/AppStartInfoTracker;
+Lcom/android/server/am/BaseAppStateDurations;
+Lcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;
+Lcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;
+Lcom/android/server/am/BaseAppStateDurationsTracker;
+Lcom/android/server/am/BaseAppStateEvents$Factory;
+Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;
+Lcom/android/server/am/BaseAppStateEvents;
+Lcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;
+Lcom/android/server/am/BaseAppStateEventsTracker;
+Lcom/android/server/am/BaseAppStatePolicy;
+Lcom/android/server/am/BaseAppStateTimeEvents;
+Lcom/android/server/am/BaseAppStateTimeSlotEvents;
+Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;
+Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;
+Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;
+Lcom/android/server/am/BaseAppStateTracker$Injector;
+Lcom/android/server/am/BaseAppStateTracker$StateListener;
+Lcom/android/server/am/BaseAppStateTracker;
+Lcom/android/server/am/BaseErrorDialog;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;
+Lcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;
+Lcom/android/server/am/BatteryStatsService$1;
+Lcom/android/server/am/BatteryStatsService$2;
+Lcom/android/server/am/BatteryStatsService$3;
+Lcom/android/server/am/BatteryStatsService$LocalService;
+Lcom/android/server/am/BatteryStatsService$WakeupReasonThread;
+Lcom/android/server/am/BatteryStatsService;
+Lcom/android/server/am/BroadcastConstants$SettingsObserver;
+Lcom/android/server/am/BroadcastConstants;
+Lcom/android/server/am/BroadcastDeliveryFailedException;
+Lcom/android/server/am/BroadcastFilter;
+Lcom/android/server/am/BroadcastHistory;
+Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;
+Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;
+Lcom/android/server/am/BroadcastProcessQueue;
+Lcom/android/server/am/BroadcastQueue;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;
+Lcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;
+Lcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;
+Lcom/android/server/am/BroadcastQueueModernImpl;
+Lcom/android/server/am/BroadcastRecord;
+Lcom/android/server/am/BroadcastRetryException;
+Lcom/android/server/am/BroadcastSkipPolicy;
+Lcom/android/server/am/CacheOomRanker$1;
+Lcom/android/server/am/CacheOomRanker$CacheUseComparator;
+Lcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;
+Lcom/android/server/am/CacheOomRanker$LastRssComparator;
+Lcom/android/server/am/CacheOomRanker$ProcessDependencies;
+Lcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;
+Lcom/android/server/am/CacheOomRanker$RssComparator;
+Lcom/android/server/am/CacheOomRanker$ScoreComparator;
+Lcom/android/server/am/CacheOomRanker;
+Lcom/android/server/am/CachedAppOptimizer$1;
+Lcom/android/server/am/CachedAppOptimizer$2;
+Lcom/android/server/am/CachedAppOptimizer$3;
+Lcom/android/server/am/CachedAppOptimizer$4;
+Lcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;
+Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
+Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
+Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
+Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+Lcom/android/server/am/CachedAppOptimizer$CompactSource;
+Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;
+Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;
+Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;
+Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;
+Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;
+Lcom/android/server/am/CachedAppOptimizer$SettingsContentObserver;
+Lcom/android/server/am/CachedAppOptimizer;
+Lcom/android/server/am/ComponentAliasResolver$1;
+Lcom/android/server/am/ComponentAliasResolver;
+Lcom/android/server/am/ContentProviderConnection;
+Lcom/android/server/am/ContentProviderHelper;
+Lcom/android/server/am/DropboxRateLimiter$Clock;
+Lcom/android/server/am/DropboxRateLimiter$DefaultClock;
+Lcom/android/server/am/DropboxRateLimiter;
+Lcom/android/server/am/FgsTempAllowList;
+Lcom/android/server/am/ForegroundServiceTypeLoggerModule;
+Lcom/android/server/am/HostingRecord;
+Lcom/android/server/am/InstrumentationReporter$MyThread;
+Lcom/android/server/am/InstrumentationReporter;
+Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;
+Lcom/android/server/am/LmkdConnection;
+Lcom/android/server/am/LowMemDetector$LowMemThread;
+Lcom/android/server/am/LowMemDetector;
+Lcom/android/server/am/NativeCrashListener;
+Lcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;
+Lcom/android/server/am/OomAdjProfiler$CpuTimes;
+Lcom/android/server/am/OomAdjProfiler;
+Lcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;
+Lcom/android/server/am/OomAdjuster$1;
+Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
+Lcom/android/server/am/OomAdjuster;
+Lcom/android/server/am/OomAdjusterModernImpl;
+Lcom/android/server/am/OomConnection$OomConnectionListener;
+Lcom/android/server/am/OomConnection$OomConnectionThread;
+Lcom/android/server/am/OomConnection;
+Lcom/android/server/am/PendingIntentController;
+Lcom/android/server/am/PendingIntentRecord;
+Lcom/android/server/am/PendingStartActivityUids;
+Lcom/android/server/am/PendingTempAllowlists;
+Lcom/android/server/am/PhantomProcessList$Injector;
+Lcom/android/server/am/PhantomProcessList;
+Lcom/android/server/am/PreBootBroadcaster;
+Lcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;
+Lcom/android/server/am/ProcessList$1;
+Lcom/android/server/am/ProcessList$2;
+Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$H;
+Lcom/android/server/am/ProcessList$ImperceptibleKillRunner$IdlenessReceiver;
+Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;
+Lcom/android/server/am/ProcessList$IsolatedUidRange;
+Lcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;
+Lcom/android/server/am/ProcessList$KillHandler;
+Lcom/android/server/am/ProcessList$MyProcessMap;
+Lcom/android/server/am/ProcessList$ProcStartHandler;
+Lcom/android/server/am/ProcessList;
+Lcom/android/server/am/ProcessRecord;
+Lcom/android/server/am/ProcessStatsService$1;
+Lcom/android/server/am/ProcessStatsService$3;
+Lcom/android/server/am/ProcessStatsService$4;
+Lcom/android/server/am/ProcessStatsService$LocalService;
+Lcom/android/server/am/ProcessStatsService;
+Lcom/android/server/am/ProviderMap;
+Lcom/android/server/am/ReceiverList;
+Lcom/android/server/am/ServiceRecord;
+Lcom/android/server/am/TraceErrorLogger;
+Lcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;
+Lcom/android/server/am/UidObserverController$ChangeRecord;
+Lcom/android/server/am/UidObserverController;
+Lcom/android/server/am/UidProcessMap;
+Lcom/android/server/am/UserController$1;
+Lcom/android/server/am/UserController$Injector$1;
+Lcom/android/server/am/UserController$Injector;
+Lcom/android/server/am/UserController$UserProgressListener;
+Lcom/android/server/am/UserController;
+Lcom/android/server/am/UserState;
+Lcom/android/server/app/GameManagerService;
+Lcom/android/server/appop/AppOpMigrationHelper;
+Lcom/android/server/appop/AppOpMigrationHelperImpl;
+Lcom/android/server/appop/AppOpsCheckingServiceImpl;
+Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;
+Lcom/android/server/appop/AppOpsCheckingServiceInterface;
+Lcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;
+Lcom/android/server/appop/AppOpsManagerLocal;
+Lcom/android/server/appop/AppOpsRestrictions$AppOpsRestrictionRemovedListener;
+Lcom/android/server/appop/AppOpsRestrictions;
+Lcom/android/server/appop/AppOpsRestrictionsImpl;
+Lcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda4;
+Lcom/android/server/appop/AppOpsService$1$1;
+Lcom/android/server/appop/AppOpsService$1;
+Lcom/android/server/appop/AppOpsService$2;
+Lcom/android/server/appop/AppOpsService$3;
+Lcom/android/server/appop/AppOpsService$4;
+Lcom/android/server/appop/AppOpsService$8;
+Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl-IA;
+Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;
+Lcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;
+Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;
+Lcom/android/server/appop/AppOpsService$Constants;
+Lcom/android/server/appop/AppOpsService$ModeCallback;
+Lcom/android/server/appop/AppOpsService$Op;
+Lcom/android/server/appop/AppOpsService$Ops;
+Lcom/android/server/appop/AppOpsService$Shell;
+Lcom/android/server/appop/AppOpsService$UidState;
+Lcom/android/server/appop/AppOpsService;
+Lcom/android/server/appop/AppOpsUidStateTracker;
+Lcom/android/server/appop/AppOpsUidStateTrackerImpl;
+Lcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;
+Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;
+Lcom/android/server/appop/AttributedOp;
+Lcom/android/server/appop/AudioRestrictionManager;
+Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
+Lcom/android/server/appop/DiscreteRegistry;
+Lcom/android/server/appop/HistoricalRegistry$1;
+Lcom/android/server/appop/HistoricalRegistry;
+Lcom/android/server/appop/OnOpModeChangedListener;
+Lcom/android/server/biometrics/sensors/face/FaceService;
+Lcom/android/server/broadcastradio/hal1/BroadcastRadioService;
+Lcom/android/server/broadcastradio/hal1/Convert;
+Lcom/android/server/broadcastradio/hal1/Tuner;
+Lcom/android/server/broadcastradio/hal1/TunerCallback;
+Lcom/android/server/companion/virtual/InputController;
+Lcom/android/server/compat/CompatChange$ChangeListener;
+Lcom/android/server/compat/CompatChange;
+Lcom/android/server/compat/CompatConfig;
+Lcom/android/server/compat/OverrideValidatorImpl$SettingsObserver;
+Lcom/android/server/compat/OverrideValidatorImpl;
+Lcom/android/server/compat/PlatformCompat$1;
+Lcom/android/server/compat/PlatformCompat;
+Lcom/android/server/compat/PlatformCompatNative;
+Lcom/android/server/compat/config/Change;
+Lcom/android/server/compat/config/Config;
+Lcom/android/server/compat/config/XmlParser;
+Lcom/android/server/connectivity/Vpn;
+Lcom/android/server/coverage/CoverageService;
+Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;
+Lcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;
+Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;
+Lcom/android/server/criticalevents/CriticalEventLog$LogLoader;
+Lcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;
+Lcom/android/server/criticalevents/CriticalEventLog;
+Lcom/android/server/devicepolicy/CryptoTestHelper;
+Lcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;
+Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
+Lcom/android/server/display/BrightnessMappingStrategy;
+Lcom/android/server/display/DeviceStateToLayoutMap;
+Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;
+Lcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;
+Lcom/android/server/display/DisplayAdapter$Listener;
+Lcom/android/server/display/DisplayAdapter;
+Lcom/android/server/display/DisplayBlanker;
+Lcom/android/server/display/DisplayControl;
+Lcom/android/server/display/DisplayDevice;
+Lcom/android/server/display/DisplayDeviceConfig;
+Lcom/android/server/display/DisplayDeviceInfo;
+Lcom/android/server/display/DisplayDeviceRepository$Listener;
+Lcom/android/server/display/DisplayDeviceRepository;
+Lcom/android/server/display/DisplayGroup;
+Lcom/android/server/display/DisplayInfoProxy;
+Lcom/android/server/display/DisplayManagerService$1;
+Lcom/android/server/display/DisplayManagerService$2;
+Lcom/android/server/display/DisplayManagerService$BinderService;
+Lcom/android/server/display/DisplayManagerService$BrightnessPair;
+Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
+Lcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;
+Lcom/android/server/display/DisplayManagerService$Injector;
+Lcom/android/server/display/DisplayManagerService$LocalService;
+Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener;
+Lcom/android/server/display/DisplayManagerService$SyncRoot;
+Lcom/android/server/display/DisplayManagerService$UidImportanceListener;
+Lcom/android/server/display/DisplayManagerService;
+Lcom/android/server/display/DisplayManagerShellCommand;
+Lcom/android/server/display/ExternalDisplayPolicy$Injector;
+Lcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;
+Lcom/android/server/display/ExternalDisplayPolicy;
+Lcom/android/server/display/HighBrightnessModeMetadataMapper;
+Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;
+Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;
+Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
+Lcom/android/server/display/LocalDisplayAdapter$Injector;
+Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;
+Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;
+Lcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;
+Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
+Lcom/android/server/display/LocalDisplayAdapter;
+Lcom/android/server/display/LogicalDisplay;
+Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda0;
+Lcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;
+Lcom/android/server/display/LogicalDisplayMapper$Listener;
+Lcom/android/server/display/LogicalDisplayMapper$LogicalDisplayMapperHandler;
+Lcom/android/server/display/LogicalDisplayMapper;
+Lcom/android/server/display/OverlayDisplayAdapter;
+Lcom/android/server/display/PersistentDataStore$BrightnessConfigurations;
+Lcom/android/server/display/PersistentDataStore$DisplayState;
+Lcom/android/server/display/PersistentDataStore$Injector;
+Lcom/android/server/display/PersistentDataStore$StableDeviceValues;
+Lcom/android/server/display/PersistentDataStore;
+Lcom/android/server/display/SmallAreaDetectionController;
+Lcom/android/server/display/VirtualDisplayAdapter$1;
+Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;
+Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;
+Lcom/android/server/display/VirtualDisplayAdapter;
+Lcom/android/server/display/WifiDisplayAdapter;
+Lcom/android/server/display/config/AutoBrightnessModeName;
+Lcom/android/server/display/config/AutoBrightnessSettingName;
+Lcom/android/server/display/config/DisplayBrightnessMappingConfig;
+Lcom/android/server/display/config/SensorData;
+Lcom/android/server/display/config/ThermalStatus;
+Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda16;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda5;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda6;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda7;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;
+Lcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;
+Lcom/android/server/display/feature/DisplayManagerFlags$FlagState-IA;
+Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;
+Lcom/android/server/display/feature/DisplayManagerFlags;
+Lcom/android/server/display/layout/DisplayIdProducer;
+Lcom/android/server/display/layout/Layout$Display;
+Lcom/android/server/display/layout/Layout;
+Lcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;
+Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$1;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;
+Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
+Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;
+Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;
+Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;
+Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;
+Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;
+Lcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;
+Lcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$HbmObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$Injector;
+Lcom/android/server/display/mode/DisplayModeDirector$RealInjector;
+Lcom/android/server/display/mode/DisplayModeDirector$SensorObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;
+Lcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;
+Lcom/android/server/display/mode/DisplayModeDirector;
+Lcom/android/server/display/mode/RefreshRateVote$PhysicalVote;
+Lcom/android/server/display/mode/RefreshRateVote$RenderVote;
+Lcom/android/server/display/mode/RefreshRateVote;
+Lcom/android/server/display/mode/SkinThermalStatusObserver;
+Lcom/android/server/display/mode/SupportedModesVote;
+Lcom/android/server/display/mode/Vote;
+Lcom/android/server/display/mode/VotesStatsReporter;
+Lcom/android/server/display/mode/VotesStorage$Listener;
+Lcom/android/server/display/mode/VotesStorage;
+Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Listener;
+Lcom/android/server/display/notifications/DisplayNotificationManager$1;
+Lcom/android/server/display/notifications/DisplayNotificationManager$Injector;
+Lcom/android/server/display/notifications/DisplayNotificationManager;
+Lcom/android/server/display/utils/AmbientFilter;
+Lcom/android/server/display/utils/DebugUtils;
+Lcom/android/server/display/utils/DeviceConfigParsingUtils;
+Lcom/android/server/display/utils/Plog$SystemPlog;
+Lcom/android/server/display/utils/Plog;
+Lcom/android/server/firewall/AndFilter$1;
+Lcom/android/server/firewall/AndFilter;
+Lcom/android/server/firewall/CategoryFilter$1;
+Lcom/android/server/firewall/CategoryFilter;
+Lcom/android/server/firewall/Filter;
+Lcom/android/server/firewall/FilterFactory;
+Lcom/android/server/firewall/FilterList;
+Lcom/android/server/firewall/IntentFirewall$AMSInterface;
+Lcom/android/server/firewall/IntentFirewall$FirewallHandler;
+Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;
+Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
+Lcom/android/server/firewall/IntentFirewall$Rule;
+Lcom/android/server/firewall/IntentFirewall$RuleObserver;
+Lcom/android/server/firewall/IntentFirewall;
+Lcom/android/server/firewall/NotFilter$1;
+Lcom/android/server/firewall/NotFilter;
+Lcom/android/server/firewall/OrFilter$1;
+Lcom/android/server/firewall/OrFilter;
+Lcom/android/server/firewall/PortFilter$1;
+Lcom/android/server/firewall/PortFilter;
+Lcom/android/server/firewall/SenderFilter$1;
+Lcom/android/server/firewall/SenderFilter$2;
+Lcom/android/server/firewall/SenderFilter$3;
+Lcom/android/server/firewall/SenderFilter$4;
+Lcom/android/server/firewall/SenderFilter$5;
+Lcom/android/server/firewall/SenderFilter;
+Lcom/android/server/firewall/SenderPackageFilter$1;
+Lcom/android/server/firewall/SenderPackageFilter;
+Lcom/android/server/firewall/SenderPermissionFilter$1;
+Lcom/android/server/firewall/SenderPermissionFilter;
+Lcom/android/server/firewall/StringFilter$10;
+Lcom/android/server/firewall/StringFilter$1;
+Lcom/android/server/firewall/StringFilter$2;
+Lcom/android/server/firewall/StringFilter$3;
+Lcom/android/server/firewall/StringFilter$4;
+Lcom/android/server/firewall/StringFilter$5;
+Lcom/android/server/firewall/StringFilter$6;
+Lcom/android/server/firewall/StringFilter$7;
+Lcom/android/server/firewall/StringFilter$8;
+Lcom/android/server/firewall/StringFilter$9;
+Lcom/android/server/firewall/StringFilter$ContainsFilter;
+Lcom/android/server/firewall/StringFilter$EqualsFilter;
+Lcom/android/server/firewall/StringFilter$IsNullFilter;
+Lcom/android/server/firewall/StringFilter$PatternStringFilter;
+Lcom/android/server/firewall/StringFilter$RegexFilter;
+Lcom/android/server/firewall/StringFilter$StartsWithFilter;
+Lcom/android/server/firewall/StringFilter$ValueProvider;
+Lcom/android/server/firewall/StringFilter;
+Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;
+Lcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda1;
+Lcom/android/server/flags/DynamicFlagBinderDelegate$1;
+Lcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;
+Lcom/android/server/flags/DynamicFlagBinderDelegate;
+Lcom/android/server/flags/FeatureFlagsBinder;
+Lcom/android/server/flags/FeatureFlagsService$PermissionsChecker;
+Lcom/android/server/flags/FeatureFlagsService;
+Lcom/android/server/flags/FlagCache$$ExternalSyntheticLambda0;
+Lcom/android/server/flags/FlagCache;
+Lcom/android/server/flags/FlagOverrideStore$FlagChangeCallback;
+Lcom/android/server/flags/FlagOverrideStore;
+Lcom/android/server/flags/FlagsShellCommand;
+Lcom/android/server/flags/GlobalSettingsProxy;
+Lcom/android/server/flags/SettingsProxy;
+Lcom/android/server/gpu/GpuService;
+Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;
+Lcom/android/server/input/InputManagerInternal;
+Lcom/android/server/input/InputManagerService$4;
+Lcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;
+Lcom/android/server/input/InputManagerService$InputFilterHost;
+Lcom/android/server/input/InputManagerService$InputManagerHandler;
+Lcom/android/server/input/InputManagerService$LocalService;
+Lcom/android/server/input/InputManagerService;
+Lcom/android/server/input/InputShellCommand;
+Lcom/android/server/input/NativeInputManagerService$NativeImpl;
+Lcom/android/server/input/NativeInputManagerService;
+Lcom/android/server/input/debug/FocusEventDebugView;
+Lcom/android/server/lights/LightsManager;
+Lcom/android/server/lights/LightsService$1;
+Lcom/android/server/lights/LightsService$LightImpl;
+Lcom/android/server/lights/LightsService$LightsManagerBinderService;
+Lcom/android/server/lights/LightsService$VintfHalCache;
+Lcom/android/server/lights/LightsService;
+Lcom/android/server/lights/LogicalLight;
+Lcom/android/server/location/gnss/GnssConfiguration;
+Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;
+Lcom/android/server/location/gnss/GnssVisibilityControl;
+Lcom/android/server/location/gnss/hal/GnssNative;
+Lcom/android/server/locksettings/SyntheticPasswordManager;
+Lcom/android/server/om/OverlayManagerService;
+Lcom/android/server/om/OverlayReferenceMapper$1;
+Lcom/android/server/om/OverlayReferenceMapper$Provider;
+Lcom/android/server/om/OverlayReferenceMapper;
+Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;
+Lcom/android/server/os/DeviceIdentifiersPolicyService;
+Lcom/android/server/pdb/PersistentDataBlockService;
+Lcom/android/server/permission/access/AccessCheckingService;
+Lcom/android/server/permission/access/AccessPersistence$Companion;
+Lcom/android/server/permission/access/AccessPersistence$WriteHandler;
+Lcom/android/server/permission/access/AccessPersistence;
+Lcom/android/server/permission/access/AccessPolicy$Companion;
+Lcom/android/server/permission/access/AccessPolicy;
+Lcom/android/server/permission/access/AccessState;
+Lcom/android/server/permission/access/ExternalState;
+Lcom/android/server/permission/access/GetStateScope;
+Lcom/android/server/permission/access/MutableAccessState;
+Lcom/android/server/permission/access/MutableExternalState;
+Lcom/android/server/permission/access/MutableSystemState;
+Lcom/android/server/permission/access/MutableUserState;
+Lcom/android/server/permission/access/MutateStateScope;
+Lcom/android/server/permission/access/SchemePolicy;
+Lcom/android/server/permission/access/SystemState;
+Lcom/android/server/permission/access/UserState;
+Lcom/android/server/permission/access/WritableState;
+Lcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;
+Lcom/android/server/permission/access/appop/AppIdAppOpMigration;
+Lcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;
+Lcom/android/server/permission/access/appop/AppIdAppOpPersistence;
+Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;
+Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;
+Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;
+Lcom/android/server/permission/access/appop/AppIdAppOpUpgrade;
+Lcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;
+Lcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;
+Lcom/android/server/permission/access/appop/AppOpService;
+Lcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;
+Lcom/android/server/permission/access/appop/BaseAppOpPersistence;
+Lcom/android/server/permission/access/appop/BaseAppOpPolicy;
+Lcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;
+Lcom/android/server/permission/access/appop/PackageAppOpMigration;
+Lcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;
+Lcom/android/server/permission/access/appop/PackageAppOpPersistence;
+Lcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;
+Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;
+Lcom/android/server/permission/access/appop/PackageAppOpPolicy;
+Lcom/android/server/permission/access/appop/PackageAppOpUpgrade;
+Lcom/android/server/permission/access/collection/ArraySetExtensionsKt;
+Lcom/android/server/permission/access/immutable/Immutable;
+Lcom/android/server/permission/access/immutable/IndexedList;
+Lcom/android/server/permission/access/immutable/IndexedListSet;
+Lcom/android/server/permission/access/immutable/IndexedMap;
+Lcom/android/server/permission/access/immutable/IndexedReferenceMap;
+Lcom/android/server/permission/access/immutable/IndexedSet;
+Lcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;
+Lcom/android/server/permission/access/immutable/IntMap;
+Lcom/android/server/permission/access/immutable/IntMapExtensionsKt;
+Lcom/android/server/permission/access/immutable/IntMapKt;
+Lcom/android/server/permission/access/immutable/IntReferenceMap;
+Lcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;
+Lcom/android/server/permission/access/immutable/IntSet;
+Lcom/android/server/permission/access/immutable/IntSetExtensionsKt;
+Lcom/android/server/permission/access/immutable/MutableIndexedList;
+Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
+Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
+Lcom/android/server/permission/access/immutable/MutableIndexedSet;
+Lcom/android/server/permission/access/immutable/MutableIntMap;
+Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+Lcom/android/server/permission/access/immutable/MutableIntSet;
+Lcom/android/server/permission/access/immutable/MutableReference;
+Lcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;
+Lcom/android/server/permission/access/permission/AppIdPermissionMigration;
+Lcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;
+Lcom/android/server/permission/access/permission/AppIdPermissionPersistence;
+Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;
+Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;
+Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;
+Lcom/android/server/permission/access/permission/AppIdPermissionUpgrade;
+Lcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;
+Lcom/android/server/permission/access/permission/DevicePermissionPersistence;
+Lcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;
+Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
+Lcom/android/server/permission/access/permission/Permission$Companion;
+Lcom/android/server/permission/access/permission/Permission;
+Lcom/android/server/permission/access/permission/PermissionService$Companion;
+Lcom/android/server/permission/access/permission/PermissionService;
+Lcom/android/server/permission/access/util/PermissionApex;
+Lcom/android/server/permission/jarjar/kotlin/Pair;
+Lcom/android/server/permission/jarjar/kotlin/TuplesKt;
+Lcom/android/server/permission/jarjar/kotlin/UninitializedPropertyAccessException;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysJVMKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt__ArraysKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysJvmKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/ArraysUtilJVM;
+Lcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;
+Lcom/android/server/permission/jarjar/kotlin/collections/EmptySet;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapWithDefaultKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsJVMKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt___MapsJvmKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/MapsKt___MapsKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsJVMKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsKt;
+Lcom/android/server/permission/jarjar/kotlin/collections/SetsKt___SetsKt;
+Lcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;
+Lcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;
+Lcom/android/server/pm/AbstractStatsBase$1;
+Lcom/android/server/pm/AbstractStatsBase;
+Lcom/android/server/pm/ApexManager$1;
+Lcom/android/server/pm/ApexManager$ActiveApexInfo;
+Lcom/android/server/pm/ApexManager$ApexManagerImpl;
+Lcom/android/server/pm/ApexManager;
+Lcom/android/server/pm/AppDataHelper;
+Lcom/android/server/pm/AppIdSettingMap;
+Lcom/android/server/pm/AppsFilterBase;
+Lcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/AppsFilterImpl$1;
+Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;
+Lcom/android/server/pm/AppsFilterImpl;
+Lcom/android/server/pm/AppsFilterLocked;
+Lcom/android/server/pm/AppsFilterSnapshot;
+Lcom/android/server/pm/AppsFilterSnapshotImpl;
+Lcom/android/server/pm/BackgroundDexOptService;
+Lcom/android/server/pm/BroadcastHelper;
+Lcom/android/server/pm/ChangedPackagesTracker;
+Lcom/android/server/pm/CompilerStats;
+Lcom/android/server/pm/Computer;
+Lcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;
+Lcom/android/server/pm/ComputerEngine$Settings;
+Lcom/android/server/pm/ComputerEngine;
+Lcom/android/server/pm/ComputerLocked;
+Lcom/android/server/pm/CrossProfileIntentFilter;
+Lcom/android/server/pm/CrossProfileIntentFilterHelper;
+Lcom/android/server/pm/CrossProfileIntentResolver;
+Lcom/android/server/pm/CrossProfileIntentResolverEngine;
+Lcom/android/server/pm/CrossProfileResolver;
+Lcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;
+Lcom/android/server/pm/DataLoaderManagerService;
+Lcom/android/server/pm/DefaultAppProvider;
+Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
+Lcom/android/server/pm/DefaultCrossProfileIntentFilter-IA;
+Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
+Lcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;
+Lcom/android/server/pm/DefaultCrossProfileResolver;
+Lcom/android/server/pm/DeletePackageHelper;
+Lcom/android/server/pm/DexOptHelper$1;
+Lcom/android/server/pm/DexOptHelper$DexoptDoneHandler;
+Lcom/android/server/pm/DexOptHelper;
+Lcom/android/server/pm/DistractingPackageHelper;
+Lcom/android/server/pm/DomainVerificationConnection;
+Lcom/android/server/pm/FeatureConfig;
+Lcom/android/server/pm/FreeStorageHelper;
+Lcom/android/server/pm/InitAppsHelper;
+Lcom/android/server/pm/InstallPackageHelper;
+Lcom/android/server/pm/InstallSource;
+Lcom/android/server/pm/Installer$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/Installer$InstallerException;
+Lcom/android/server/pm/Installer$LegacyDexoptDisabledException;
+Lcom/android/server/pm/Installer;
+Lcom/android/server/pm/InstantAppRegistry$1;
+Lcom/android/server/pm/InstantAppRegistry$2;
+Lcom/android/server/pm/InstantAppRegistry$CookiePersistence;
+Lcom/android/server/pm/InstantAppRegistry;
+Lcom/android/server/pm/InstantAppResolverConnection;
+Lcom/android/server/pm/InstructionSets;
+Lcom/android/server/pm/KeySetHandle;
+Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle-IA;
+Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;
+Lcom/android/server/pm/KeySetManagerService;
+Lcom/android/server/pm/KnownPackages;
+Lcom/android/server/pm/ModuleInfoProvider;
+Lcom/android/server/pm/MovePackageHelper$MoveCallbacks;
+Lcom/android/server/pm/NoFilteringResolver;
+Lcom/android/server/pm/PackageAbiHelper;
+Lcom/android/server/pm/PackageAbiHelperImpl;
+Lcom/android/server/pm/PackageArchiver;
+Lcom/android/server/pm/PackageDexOptimizer$1;
+Lcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;
+Lcom/android/server/pm/PackageDexOptimizer$Injector;
+Lcom/android/server/pm/PackageDexOptimizer;
+Lcom/android/server/pm/PackageHandler;
+Lcom/android/server/pm/PackageInstallerService;
+Lcom/android/server/pm/PackageKeySetData;
+Lcom/android/server/pm/PackageManagerException;
+Lcom/android/server/pm/PackageManagerInternalBase;
+Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;
+Lcom/android/server/pm/PackageManagerLocal;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda13;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda14;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda25;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda27;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda3;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda51;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;
+Lcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;
+Lcom/android/server/pm/PackageManagerService$1;
+Lcom/android/server/pm/PackageManagerService$2;
+Lcom/android/server/pm/PackageManagerService$3;
+Lcom/android/server/pm/PackageManagerService$4;
+Lcom/android/server/pm/PackageManagerService$5;
+Lcom/android/server/pm/PackageManagerService$6;
+Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;
+Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;
+Lcom/android/server/pm/PackageManagerService$Snapshot;
+Lcom/android/server/pm/PackageManagerService;
+Lcom/android/server/pm/PackageManagerServiceCompilerMapping;
+Lcom/android/server/pm/PackageManagerServiceInjector$Producer;
+Lcom/android/server/pm/PackageManagerServiceInjector$ProducerWithArgument;
+Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;
+Lcom/android/server/pm/PackageManagerServiceInjector$Singleton;
+Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;
+Lcom/android/server/pm/PackageManagerServiceInjector;
+Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda1;
+Lcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;
+Lcom/android/server/pm/PackageManagerServiceUtils;
+Lcom/android/server/pm/PackageManagerShellCommandDataLoader;
+Lcom/android/server/pm/PackageManagerTracedLock;
+Lcom/android/server/pm/PackageMonitorCallbackHelper;
+Lcom/android/server/pm/PackageObserverHelper;
+Lcom/android/server/pm/PackageProperty;
+Lcom/android/server/pm/PackageSender;
+Lcom/android/server/pm/PackageSessionProvider;
+Lcom/android/server/pm/PackageSetting$1;
+Lcom/android/server/pm/PackageSetting;
+Lcom/android/server/pm/PackageSignatures;
+Lcom/android/server/pm/PackageUsage;
+Lcom/android/server/pm/PendingPackageBroadcasts;
+Lcom/android/server/pm/PersistentPreferredActivity;
+Lcom/android/server/pm/PersistentPreferredIntentResolver;
+Lcom/android/server/pm/Policy$PolicyBuilder;
+Lcom/android/server/pm/Policy;
+Lcom/android/server/pm/PolicyComparator;
+Lcom/android/server/pm/PreferredActivity$1;
+Lcom/android/server/pm/PreferredActivity;
+Lcom/android/server/pm/PreferredActivityHelper;
+Lcom/android/server/pm/PreferredComponent$Callbacks;
+Lcom/android/server/pm/PreferredComponent;
+Lcom/android/server/pm/PreferredIntentResolver$1;
+Lcom/android/server/pm/PreferredIntentResolver;
+Lcom/android/server/pm/PrepareFailure;
+Lcom/android/server/pm/ProcessLoggingHandler;
+Lcom/android/server/pm/ProtectedPackages;
+Lcom/android/server/pm/ReconcileFailure;
+Lcom/android/server/pm/RemovePackageHelper;
+Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;
+Lcom/android/server/pm/ResilientAtomicFile;
+Lcom/android/server/pm/ResolveIntentHelper;
+Lcom/android/server/pm/RestrictionsSet;
+Lcom/android/server/pm/SELinuxMMAC;
+Lcom/android/server/pm/ScanPackageUtils;
+Lcom/android/server/pm/ScanPartition;
+Lcom/android/server/pm/SettingBase;
+Lcom/android/server/pm/Settings$1;
+Lcom/android/server/pm/Settings$2;
+Lcom/android/server/pm/Settings$3;
+Lcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;
+Lcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;
+Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
+Lcom/android/server/pm/Settings$VersionInfo;
+Lcom/android/server/pm/Settings;
+Lcom/android/server/pm/SettingsXml$ChildSection;
+Lcom/android/server/pm/SettingsXml$ReadSection;
+Lcom/android/server/pm/SettingsXml$ReadSectionImpl;
+Lcom/android/server/pm/SettingsXml;
+Lcom/android/server/pm/SharedLibrariesImpl$1;
+Lcom/android/server/pm/SharedLibrariesImpl$2;
+Lcom/android/server/pm/SharedLibrariesImpl;
+Lcom/android/server/pm/SharedLibrariesRead;
+Lcom/android/server/pm/SharedUserSetting$1;
+Lcom/android/server/pm/SharedUserSetting$2;
+Lcom/android/server/pm/SharedUserSetting;
+Lcom/android/server/pm/SnapshotStatistics$1;
+Lcom/android/server/pm/SnapshotStatistics$BinMap;
+Lcom/android/server/pm/SnapshotStatistics$Stats;
+Lcom/android/server/pm/SnapshotStatistics;
+Lcom/android/server/pm/StorageEventHelper;
+Lcom/android/server/pm/SuspendPackageHelper;
+Lcom/android/server/pm/SystemDeleteException;
+Lcom/android/server/pm/UpdateOwnershipHelper;
+Lcom/android/server/pm/UserDataPreparer;
+Lcom/android/server/pm/UserJourneyLogger;
+Lcom/android/server/pm/UserManagerInternal$UserLifecycleListener;
+Lcom/android/server/pm/UserManagerInternal;
+Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;
+Lcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda4;
+Lcom/android/server/pm/UserManagerService$1;
+Lcom/android/server/pm/UserManagerService$2;
+Lcom/android/server/pm/UserManagerService$3;
+Lcom/android/server/pm/UserManagerService$LocalService;
+Lcom/android/server/pm/UserManagerService$MainHandler;
+Lcom/android/server/pm/UserManagerService$SettingsObserver;
+Lcom/android/server/pm/UserManagerService$UserData;
+Lcom/android/server/pm/UserManagerService$WatchedUserStates;
+Lcom/android/server/pm/UserManagerService;
+Lcom/android/server/pm/UserManagerServiceShellCommand;
+Lcom/android/server/pm/UserNeedsBadgingCache;
+Lcom/android/server/pm/UserRestrictionsUtils;
+Lcom/android/server/pm/UserSystemPackageInstaller;
+Lcom/android/server/pm/UserTypeDetails$Builder;
+Lcom/android/server/pm/UserTypeDetails-IA;
+Lcom/android/server/pm/UserTypeDetails;
+Lcom/android/server/pm/UserTypeFactory;
+Lcom/android/server/pm/UserVisibilityMediator;
+Lcom/android/server/pm/WatchedIntentFilter;
+Lcom/android/server/pm/WatchedIntentResolver$1;
+Lcom/android/server/pm/WatchedIntentResolver$2;
+Lcom/android/server/pm/WatchedIntentResolver;
+Lcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;
+Lcom/android/server/pm/dex/ArtManagerService;
+Lcom/android/server/pm/dex/ArtStatsLogUtils$ArtStatsLogger;
+Lcom/android/server/pm/dex/DexManager;
+Lcom/android/server/pm/dex/DynamicCodeLogger;
+Lcom/android/server/pm/dex/PackageDexUsage;
+Lcom/android/server/pm/dex/PackageDynamicCodeLoading;
+Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;
+Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
+Lcom/android/server/pm/local/PackageManagerLocalImpl;
+Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
+Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;
+Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DelayingPackageManagerCache;
+Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;
+Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
+Lcom/android/server/pm/permission/LegacyPermission;
+Lcom/android/server/pm/permission/LegacyPermissionDataProvider;
+Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;
+Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;
+Lcom/android/server/pm/permission/LegacyPermissionManagerService;
+Lcom/android/server/pm/permission/LegacyPermissionSettings;
+Lcom/android/server/pm/permission/LegacyPermissionState;
+Lcom/android/server/pm/permission/PermissionAllowlist;
+Lcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;
+Lcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;
+Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
+Lcom/android/server/pm/permission/PermissionManagerService;
+Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+Lcom/android/server/pm/permission/PermissionMigrationHelper;
+Lcom/android/server/pm/permission/PermissionMigrationHelperImpl;
+Lcom/android/server/pm/pkg/ArchiveState;
+Lcom/android/server/pm/pkg/PackageState;
+Lcom/android/server/pm/pkg/PackageStateInternal;
+Lcom/android/server/pm/pkg/PackageStateUnserialized;
+Lcom/android/server/pm/pkg/PackageUserState;
+Lcom/android/server/pm/pkg/PackageUserStateImpl$1;
+Lcom/android/server/pm/pkg/PackageUserStateImpl;
+Lcom/android/server/pm/pkg/PackageUserStateInternal;
+Lcom/android/server/pm/pkg/SharedUserApi;
+Lcom/android/server/pm/pkg/SuspendParams;
+Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
+Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
+Lcom/android/server/pm/pkg/mutate/PackageStateMutator;
+Lcom/android/server/pm/pkg/mutate/PackageStateWrite;
+Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+Lcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/resolution/ComponentResolver$1;
+Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;
+Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;
+Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;
+Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;
+Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;
+Lcom/android/server/pm/resolution/ComponentResolver;
+Lcom/android/server/pm/resolution/ComponentResolverApi;
+Lcom/android/server/pm/resolution/ComponentResolverBase;
+Lcom/android/server/pm/resolution/ComponentResolverLocked;
+Lcom/android/server/pm/resolution/ComponentResolverSnapshot;
+Lcom/android/server/pm/snapshot/PackageDataSnapshot;
+Lcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;
+Lcom/android/server/pm/verify/domain/DomainVerificationCollector;
+Lcom/android/server/pm/verify/domain/DomainVerificationDebug;
+Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer$Callback;
+Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer;
+Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
+Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;
+Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal$Connection;
+Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
+Lcom/android/server/pm/verify/domain/DomainVerificationManagerStub;
+Lcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;
+Lcom/android/server/pm/verify/domain/DomainVerificationPersistence;
+Lcom/android/server/pm/verify/domain/DomainVerificationService;
+Lcom/android/server/pm/verify/domain/DomainVerificationSettings;
+Lcom/android/server/pm/verify/domain/DomainVerificationShell$Callback;
+Lcom/android/server/pm/verify/domain/DomainVerificationShell;
+Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
+Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;
+Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy$BaseConnection;
+Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
+Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable;
+Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;
+Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2$Connection;
+Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;
+Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
+Lcom/android/server/policy/WindowManagerPolicy$WindowState;
+Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;
+Lcom/android/server/power/AmbientDisplaySuppressionController;
+Lcom/android/server/power/AttentionDetector$1;
+Lcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;
+Lcom/android/server/power/AttentionDetector;
+Lcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;
+Lcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;
+Lcom/android/server/power/FaceDownDetector$ScreenStateReceiver;
+Lcom/android/server/power/FaceDownDetector;
+Lcom/android/server/power/InattentiveSleepWarningController;
+Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda1;
+Lcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda2;
+Lcom/android/server/power/LowPowerStandbyController$1;
+Lcom/android/server/power/LowPowerStandbyController$2;
+Lcom/android/server/power/LowPowerStandbyController$3;
+Lcom/android/server/power/LowPowerStandbyController$Clock;
+Lcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;
+Lcom/android/server/power/LowPowerStandbyController$LocalService;
+Lcom/android/server/power/LowPowerStandbyController$LowPowerStandbyHandler;
+Lcom/android/server/power/LowPowerStandbyController$PhoneCallServiceTracker;
+Lcom/android/server/power/LowPowerStandbyController$RealClock;
+Lcom/android/server/power/LowPowerStandbyController$SettingsObserver;
+Lcom/android/server/power/LowPowerStandbyController$TempAllowlistChangeListener;
+Lcom/android/server/power/LowPowerStandbyController;
+Lcom/android/server/power/LowPowerStandbyControllerInternal;
+Lcom/android/server/power/PowerGroup$PowerGroupListener;
+Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;
+Lcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;
+Lcom/android/server/power/PowerManagerService$1;
+Lcom/android/server/power/PowerManagerService$3;
+Lcom/android/server/power/PowerManagerService$4;
+Lcom/android/server/power/PowerManagerService$BatteryReceiver;
+Lcom/android/server/power/PowerManagerService$BinderService;
+Lcom/android/server/power/PowerManagerService$Clock;
+Lcom/android/server/power/PowerManagerService$Constants;
+Lcom/android/server/power/PowerManagerService$DockReceiver;
+Lcom/android/server/power/PowerManagerService$DreamReceiver;
+Lcom/android/server/power/PowerManagerService$Injector$$ExternalSyntheticLambda0;
+Lcom/android/server/power/PowerManagerService$Injector$1;
+Lcom/android/server/power/PowerManagerService$Injector$2;
+Lcom/android/server/power/PowerManagerService$Injector$3;
+Lcom/android/server/power/PowerManagerService$Injector;
+Lcom/android/server/power/PowerManagerService$LocalService;
+Lcom/android/server/power/PowerManagerService$NativeWrapper;
+Lcom/android/server/power/PowerManagerService$PermissionCheckerWrapper;
+Lcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;
+Lcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;
+Lcom/android/server/power/PowerManagerService$PowerPropertiesWrapper;
+Lcom/android/server/power/PowerManagerService$SettingsObserver;
+Lcom/android/server/power/PowerManagerService$SuspendBlockerImpl;
+Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;
+Lcom/android/server/power/PowerManagerService;
+Lcom/android/server/power/PowerManagerShellCommand;
+Lcom/android/server/power/ScreenUndimDetector$InternalClock;
+Lcom/android/server/power/ScreenUndimDetector;
+Lcom/android/server/power/SuspendBlocker;
+Lcom/android/server/power/SystemPropertiesWrapper;
+Lcom/android/server/power/ThermalManagerService$1;
+Lcom/android/server/power/ThermalManagerService$TemperatureWatcher;
+Lcom/android/server/power/ThermalManagerService$ThermalHal10Wrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHal11Wrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalShellCommand;
+Lcom/android/server/power/ThermalManagerService;
+Lcom/android/server/power/batterysaver/BatterySaverStateMachine;
+Lcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;
+Lcom/android/server/power/feature/PowerManagerFlags$FlagState;
+Lcom/android/server/power/feature/PowerManagerFlags;
+Lcom/android/server/power/hint/HintManagerService$BinderService;
+Lcom/android/server/power/hint/HintManagerService$Injector;
+Lcom/android/server/power/hint/HintManagerService$MyUidObserver;
+Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
+Lcom/android/server/power/hint/HintManagerService;
+Lcom/android/server/power/optimization/FeatureFlags;
+Lcom/android/server/power/optimization/FeatureFlagsImpl;
+Lcom/android/server/power/optimization/Flags;
+Lcom/android/server/power/stats/AggregatedPowerStatsConfig$1;
+Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
+Lcom/android/server/power/stats/AggregatedPowerStatsConfig;
+Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
+Lcom/android/server/power/stats/AggregatedPowerStatsSection;
+Lcom/android/server/power/stats/BatteryChargeCalculator;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker$1;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker$2;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;
+Lcom/android/server/power/stats/BatteryExternalStatsWorker;
+Lcom/android/server/power/stats/BatteryStatsDumpHelperImpl;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda6;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;
+Lcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;
+Lcom/android/server/power/stats/BatteryStatsImpl$1;
+Lcom/android/server/power/stats/BatteryStatsImpl$2;
+Lcom/android/server/power/stats/BatteryStatsImpl$3;
+Lcom/android/server/power/stats/BatteryStatsImpl$4;
+Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;
+Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;
+Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
+Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;
+Lcom/android/server/power/stats/BatteryStatsImpl$BinderCallStats;
+Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;
+Lcom/android/server/power/stats/BatteryStatsImpl$Constants;
+Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
+Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
+Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
+Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
+Lcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;
+Lcom/android/server/power/stats/BatteryStatsImpl$EnergyStatsRetriever;
+Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;
+Lcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;
+Lcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;
+Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
+Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;
+Lcom/android/server/power/stats/BatteryStatsImpl$MyHandler;
+Lcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;
+Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;
+Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;
+Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
+Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;
+Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;
+Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+Lcom/android/server/power/stats/BatteryStatsImpl$Timer;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$1;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$2;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$3;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Proc;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;
+Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;
+Lcom/android/server/power/stats/BatteryStatsImpl;
+Lcom/android/server/power/stats/BatteryUsageStatsProvider;
+Lcom/android/server/power/stats/BatteryUsageStatsSection;
+Lcom/android/server/power/stats/BluetoothPowerCalculator;
+Lcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;
+Lcom/android/server/power/stats/CpuPowerCalculator;
+Lcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;
+Lcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;
+Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;
+Lcom/android/server/power/stats/CpuPowerStatsCollector;
+Lcom/android/server/power/stats/EnergyConsumerSnapshot;
+Lcom/android/server/power/stats/KernelWakelockReader;
+Lcom/android/server/power/stats/KernelWakelockStats$Entry;
+Lcom/android/server/power/stats/KernelWakelockStats;
+Lcom/android/server/power/stats/MobileRadioPowerCalculator;
+Lcom/android/server/power/stats/PowerCalculator;
+Lcom/android/server/power/stats/PowerStatsAggregator;
+Lcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;
+Lcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;
+Lcom/android/server/power/stats/PowerStatsCollector;
+Lcom/android/server/power/stats/PowerStatsExporter;
+Lcom/android/server/power/stats/PowerStatsScheduler$AlarmScheduler;
+Lcom/android/server/power/stats/PowerStatsScheduler;
+Lcom/android/server/power/stats/PowerStatsSpan$Section;
+Lcom/android/server/power/stats/PowerStatsSpan$SectionReader;
+Lcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;
+Lcom/android/server/power/stats/PowerStatsStore$DefaultSectionReader;
+Lcom/android/server/power/stats/PowerStatsStore;
+Lcom/android/server/power/stats/PowerStatsUidResolver$Listener;
+Lcom/android/server/power/stats/PowerStatsUidResolver;
+Lcom/android/server/power/stats/WakelockPowerCalculator;
+Lcom/android/server/power/stats/WifiPowerCalculator;
+Lcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;
+Lcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;
+Lcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;
+Lcom/android/server/power/stats/wakeups/CpuWakeupStats;
+Lcom/android/server/power/stats/wakeups/IrqDeviceMap;
+Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
+Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;
+Lcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;
+Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;
+Lcom/android/server/powerstats/PowerStatsHALWrapper;
+Lcom/android/server/powerstats/PowerStatsService$1;
+Lcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;
+Lcom/android/server/powerstats/PowerStatsService$Injector;
+Lcom/android/server/powerstats/PowerStatsService$LocalService;
+Lcom/android/server/powerstats/PowerStatsService;
+Lcom/android/server/recoverysystem/RecoverySystemService$Injector;
+Lcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;
+Lcom/android/server/recoverysystem/RecoverySystemService$PreferencesManager;
+Lcom/android/server/recoverysystem/RecoverySystemService;
+Lcom/android/server/recoverysystem/RecoverySystemShellCommand;
+Lcom/android/server/resources/ResourcesManagerService;
+Lcom/android/server/security/FileIntegrityService$1;
+Lcom/android/server/security/FileIntegrityService$FileIntegrityServiceShellCommand;
+Lcom/android/server/security/FileIntegrityService;
+Lcom/android/server/sensorprivacy/SensorPrivacyService;
+Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;
+Lcom/android/server/sensors/SensorManagerInternal$RuntimeSensorCallback;
+Lcom/android/server/sensors/SensorService;
+Lcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;
+Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;
+Lcom/android/server/soundtrigger_middleware/ICaptureStateNotifier;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
+Lcom/android/server/stats/pull/StatsPullAtomService;
+Lcom/android/server/storage/AppFuseBridge;
+Lcom/android/server/tv/TvInputHal;
+Lcom/android/server/tv/UinputBridge;
+Lcom/android/server/uri/UriGrantsManagerInternal;
+Lcom/android/server/uri/UriGrantsManagerService$1;
+Lcom/android/server/uri/UriGrantsManagerService$H;
+Lcom/android/server/uri/UriGrantsManagerService$Lifecycle;
+Lcom/android/server/uri/UriGrantsManagerService$LocalService;
+Lcom/android/server/uri/UriGrantsManagerService;
+Lcom/android/server/uri/UriMetricsHelper$PersistentUriGrantsProvider;
+Lcom/android/server/uri/UriMetricsHelper;
+Lcom/android/server/usb/UsbAlsaJackDetector;
+Lcom/android/server/usb/UsbAlsaMidiDevice$2;
+Lcom/android/server/usb/UsbAlsaMidiDevice$3;
+Lcom/android/server/usb/UsbAlsaMidiDevice$InputReceiverProxy;
+Lcom/android/server/usb/UsbAlsaMidiDevice;
+Lcom/android/server/usb/UsbDeviceManager;
+Lcom/android/server/usb/UsbHostManager;
+Lcom/android/server/usb/descriptors/UsbDescriptor;
+Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;
+Lcom/android/server/utils/AnrTimer$Error;
+Lcom/android/server/utils/AnrTimer$FeatureDisabled;
+Lcom/android/server/utils/AnrTimer$FeatureEnabled;
+Lcom/android/server/utils/AnrTimer$FeatureSwitch;
+Lcom/android/server/utils/AnrTimer$Injector;
+Lcom/android/server/utils/AnrTimer;
+Lcom/android/server/utils/FeatureFlags;
+Lcom/android/server/utils/FeatureFlagsImpl;
+Lcom/android/server/utils/Flags;
+Lcom/android/server/utils/FoldSettingProvider;
+Lcom/android/server/utils/PriorityDump$PriorityDumper;
+Lcom/android/server/utils/Slogf;
+Lcom/android/server/utils/Snappable;
+Lcom/android/server/utils/SnapshotCache$Auto;
+Lcom/android/server/utils/SnapshotCache$Sealed;
+Lcom/android/server/utils/SnapshotCache$Statistics;
+Lcom/android/server/utils/SnapshotCache;
+Lcom/android/server/utils/Snapshots;
+Lcom/android/server/utils/TimingsTraceAndSlog;
+Lcom/android/server/utils/Watchable;
+Lcom/android/server/utils/WatchableImpl;
+Lcom/android/server/utils/Watched;
+Lcom/android/server/utils/WatchedArrayList$1;
+Lcom/android/server/utils/WatchedArrayList;
+Lcom/android/server/utils/WatchedArrayMap$1;
+Lcom/android/server/utils/WatchedArrayMap;
+Lcom/android/server/utils/WatchedArraySet$1;
+Lcom/android/server/utils/WatchedArraySet;
+Lcom/android/server/utils/WatchedLongSparseArray$1;
+Lcom/android/server/utils/WatchedLongSparseArray;
+Lcom/android/server/utils/WatchedSparseArray$1;
+Lcom/android/server/utils/WatchedSparseArray;
+Lcom/android/server/utils/WatchedSparseBooleanArray;
+Lcom/android/server/utils/WatchedSparseBooleanMatrix;
+Lcom/android/server/utils/WatchedSparseIntArray;
+Lcom/android/server/utils/WatchedSparseSetArray;
+Lcom/android/server/utils/Watcher;
+Lcom/android/server/vibrator/VibratorController$NativeWrapper;
+Lcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;
+Lcom/android/server/vibrator/VibratorManagerService$OnSyncedVibrationCompleteListener;
+Lcom/android/server/vibrator/VibratorManagerService;
+Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;
+Lcom/android/server/vr/VrManagerService;
+Lcom/android/server/wm/AbsAppSnapshotController;
+Lcom/android/server/wm/ActivityClientController;
+Lcom/android/server/wm/ActivityMetricsLaunchObserver;
+Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
+Lcom/android/server/wm/ActivityMetricsLogger;
+Lcom/android/server/wm/ActivityRecord;
+Lcom/android/server/wm/ActivityStartController;
+Lcom/android/server/wm/ActivityStartInterceptor;
+Lcom/android/server/wm/ActivityStarter$DefaultFactory;
+Lcom/android/server/wm/ActivityStarter$Factory;
+Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;
+Lcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;
+Lcom/android/server/wm/ActivityTaskManagerInternal;
+Lcom/android/server/wm/ActivityTaskManagerService$1;
+Lcom/android/server/wm/ActivityTaskManagerService$H;
+Lcom/android/server/wm/ActivityTaskManagerService$Lifecycle;
+Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+Lcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;
+Lcom/android/server/wm/ActivityTaskManagerService$UiHandler;
+Lcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;
+Lcom/android/server/wm/ActivityTaskManagerService;
+Lcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;
+Lcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;
+Lcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;
+Lcom/android/server/wm/ActivityTaskSupervisor;
+Lcom/android/server/wm/AppTaskImpl;
+Lcom/android/server/wm/AppWarnings$BaseDialog;
+Lcom/android/server/wm/AppWarnings$UiHandler;
+Lcom/android/server/wm/AppWarnings$WriteConfigTask;
+Lcom/android/server/wm/AppWarnings;
+Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;
+Lcom/android/server/wm/BackNavigationController$NavigationMonitor;
+Lcom/android/server/wm/BackNavigationController;
+Lcom/android/server/wm/BackgroundActivityStartController$FinishedActivityEntry;
+Lcom/android/server/wm/BackgroundActivityStartController;
+Lcom/android/server/wm/ClientLifecycleManager;
+Lcom/android/server/wm/CompatModePackages$CompatHandler;
+Lcom/android/server/wm/CompatModePackages;
+Lcom/android/server/wm/ConfigurationContainer;
+Lcom/android/server/wm/ConfigurationContainerListener;
+Lcom/android/server/wm/DeprecatedAbiDialog;
+Lcom/android/server/wm/DeprecatedTargetSdkVersionDialog;
+Lcom/android/server/wm/DesktopModeLaunchParamsModifier;
+Lcom/android/server/wm/DisplayArea$Dimmable;
+Lcom/android/server/wm/DisplayArea;
+Lcom/android/server/wm/DisplayAreaOrganizerController;
+Lcom/android/server/wm/DisplayContent;
+Lcom/android/server/wm/FactoryErrorDialog;
+Lcom/android/server/wm/InputTarget;
+Lcom/android/server/wm/InsetsControlTarget;
+Lcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/KeyguardController;
+Lcom/android/server/wm/LaunchObserverRegistryImpl;
+Lcom/android/server/wm/LaunchParamsController$LaunchParams;
+Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;
+Lcom/android/server/wm/LaunchParamsController;
+Lcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;
+Lcom/android/server/wm/LaunchParamsPersister;
+Lcom/android/server/wm/LockTaskController$LockTaskToken;
+Lcom/android/server/wm/LockTaskController;
+Lcom/android/server/wm/MirrorActiveUids;
+Lcom/android/server/wm/PackageConfigPersister;
+Lcom/android/server/wm/PendingRemoteAnimationRegistry;
+Lcom/android/server/wm/PersisterQueue$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;
+Lcom/android/server/wm/PersisterQueue$Listener;
+Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
+Lcom/android/server/wm/PersisterQueue;
+Lcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda1;
+Lcom/android/server/wm/RecentTasks$1;
+Lcom/android/server/wm/RecentTasks$Callbacks;
+Lcom/android/server/wm/RecentTasks;
+Lcom/android/server/wm/RootDisplayArea;
+Lcom/android/server/wm/RootWindowContainer;
+Lcom/android/server/wm/RunningTasks;
+Lcom/android/server/wm/SurfaceAnimationThread;
+Lcom/android/server/wm/SurfaceAnimator$Animatable;
+Lcom/android/server/wm/SurfaceFreezer$Freezable;
+Lcom/android/server/wm/Task;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda10;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda13;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda14;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda15;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda16;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda17;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda1;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda20;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda21;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda22;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda23;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda24;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda2;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda3;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda4;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda5;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda6;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda7;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;
+Lcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;
+Lcom/android/server/wm/TaskChangeNotificationController$MainHandler;
+Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+Lcom/android/server/wm/TaskChangeNotificationController;
+Lcom/android/server/wm/TaskDisplayArea;
+Lcom/android/server/wm/TaskFpsCallbackController;
+Lcom/android/server/wm/TaskFragment;
+Lcom/android/server/wm/TaskFragmentOrganizerController;
+Lcom/android/server/wm/TaskLaunchParamsModifier;
+Lcom/android/server/wm/TaskOrganizerController;
+Lcom/android/server/wm/TaskPersister;
+Lcom/android/server/wm/TaskSnapshotController;
+Lcom/android/server/wm/Transition$ReadyCondition;
+Lcom/android/server/wm/Transition;
+Lcom/android/server/wm/TransitionController$$ExternalSyntheticLambda4;
+Lcom/android/server/wm/TransitionController$Lock;
+Lcom/android/server/wm/TransitionController$RemotePlayer;
+Lcom/android/server/wm/TransitionController$TransitionMetricsReporter;
+Lcom/android/server/wm/TransitionController;
+Lcom/android/server/wm/UnsupportedCompileSdkDialog;
+Lcom/android/server/wm/UnsupportedDisplaySizeDialog;
+Lcom/android/server/wm/VisibleActivityProcessTracker;
+Lcom/android/server/wm/VrController$1;
+Lcom/android/server/wm/VrController;
+Lcom/android/server/wm/WindowContainer;
+Lcom/android/server/wm/WindowList;
+Lcom/android/server/wm/WindowManagerGlobalLock;
+Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;
+Lcom/android/server/wm/WindowManagerService$2;
+Lcom/android/server/wm/WindowManagerService$4;
+Lcom/android/server/wm/WindowManagerService$8;
+Lcom/android/server/wm/WindowManagerService$AppFreezeListener;
+Lcom/android/server/wm/WindowManagerService$H;
+Lcom/android/server/wm/WindowManagerService;
+Lcom/android/server/wm/WindowManagerShellCommand;
+Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
+Lcom/android/server/wm/WindowOrganizerController;
+Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;
+Lcom/android/server/wm/WindowProcessController;
+Lcom/android/server/wm/WindowProcessControllerMap;
+Lcom/android/server/wm/WindowProcessListener;
+Lcom/android/server/wm/WindowState;
+Lcom/android/server/wm/WindowToken;
+Lcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;
+Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;
+Lcom/android/server/wm/utils/DisplayInfoOverrides;
+Lcom/android/wm/shell/FeatureFlags;
+Lcom/android/wm/shell/FeatureFlagsImpl;
+Lcom/android/wm/shell/Flags;
+[Landroid/hardware/light/HwLight;
+[Landroid/hardware/power/stats/Channel;
+[Landroid/hardware/power/stats/EnergyConsumer;
+[Landroid/hardware/power/stats/State;
+[Landroid/hardware/power/stats/StateResidency;
+[Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
+[Lcom/android/server/am/BroadcastProcessQueue;
+[Lcom/android/server/am/BroadcastQueue;
+[Lcom/android/server/am/BroadcastRecord;
+[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
+[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
+[Lcom/android/server/am/OomAdjProfiler$CpuTimes;
+[Lcom/android/server/am/UidObserverController$ChangeRecord;
+[Lcom/android/server/display/config/AutoBrightnessModeName;
+[Lcom/android/server/display/config/AutoBrightnessSettingName;
+[Lcom/android/server/firewall/FilterFactory;
+[Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;
+[Lcom/android/server/lights/LightsService$LightImpl;
+[Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
+[Lcom/android/server/pm/PreferredActivity;
+[Lcom/android/server/pm/SnapshotStatistics$Stats;
+[Lcom/android/server/power/stats/BatteryStatsImpl$Counter;
+[Lcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;
+[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
+[Lcom/android/server/power/stats/BatteryStatsImpl$RadioAccessTechnologyBatteryStats;
+[Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+[Lcom/android/server/utils/AnrTimer$Error;
+[Lcom/android/server/wm/ActivityRecord;
+[[Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
+PLandroid/app/usage/UsageStatsManagerInternal;-><init>()V
+HSPLandroid/content/pm/PackageManagerInternal;-><init>()V
+HPLandroid/content/pm/PackageManagerInternal;->filterAppAccess(Ljava/lang/String;II)Z
+PLandroid/content/pm/PackageManagerInternal;->getPackageList()Lcom/android/server/pm/PackageList;
+PLandroid/frameworks/vibrator/IVibratorControlService$Stub;-><init>()V
+PLandroid/frameworks/vibrator/IVibratorControlService;-><clinit>()V
+PLandroid/hardware/authsecret/IAuthSecret$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/authsecret/IAuthSecret;
+PLandroid/hardware/authsecret/IAuthSecret;-><clinit>()V
+PLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService(Ljava/lang/String;Z)Landroid/hardware/authsecret/V1_0/IAuthSecret;
+PLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService(Z)Landroid/hardware/authsecret/V1_0/IAuthSecret;
+PLandroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;
+PLandroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;->getService(Ljava/lang/String;)Landroid/hardware/configstore/V1_1/ISurfaceFlingerConfigs;
+PLandroid/hardware/health/HealthInfo$1;-><init>()V
+PLandroid/hardware/health/HealthInfo;-><clinit>()V
+HPLandroid/hardware/health/HealthInfo;-><init>()V
+PLandroid/hardware/health/IHealth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/health/IHealth;
+PLandroid/hardware/health/IHealth;-><clinit>()V
+PLandroid/hardware/health/IHealthInfoCallback$Stub;-><init>()V
+PLandroid/hardware/health/IHealthInfoCallback;-><clinit>()V
+HPLandroid/hardware/health/Translate;->h2aTranslate(Landroid/hardware/health/V2_1/HealthInfo;)Landroid/hardware/health/HealthInfo;
+HPLandroid/hardware/health/Translate;->h2aTranslateInternal(Landroid/hardware/health/HealthInfo;Landroid/hardware/health/V1_0/HealthInfo;)V
+HPLandroid/hardware/health/V1_0/HealthInfo;-><init>()V
+HPLandroid/hardware/health/V1_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/health/V2_0/HealthInfo;-><init>()V
+HPLandroid/hardware/health/V2_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/health/V2_0/IHealth$Proxy;-><init>(Landroid/os/IHwBinder;)V
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->asBinder()Landroid/os/IHwBinder;
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->equals(Ljava/lang/Object;)Z
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->getCapacity(Landroid/hardware/health/V2_0/IHealth$getCapacityCallback;)V
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->registerCallback(Landroid/hardware/health/V2_0/IHealthInfoCallback;)I
+PLandroid/hardware/health/V2_0/IHealth$Proxy;->update()I
+PLandroid/hardware/health/V2_0/IHealth;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/health/V2_0/IHealth;
+PLandroid/hardware/health/V2_0/IHealth;->getService(Ljava/lang/String;Z)Landroid/hardware/health/V2_0/IHealth;
+PLandroid/hardware/health/V2_1/HealthInfo;-><init>()V
+PLandroid/hardware/health/V2_1/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/health/V2_1/HealthInfo;->readFromParcel(Landroid/os/HwParcel;)V
+PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;-><init>()V
+PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/health/V2_1/IHealthInfoCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/light/HwLight$1;-><init>()V
+HSPLandroid/hardware/light/HwLight$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/light/HwLight;
+HSPLandroid/hardware/light/HwLight$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/hardware/light/HwLight$1;->newArray(I)[Landroid/hardware/light/HwLight;
+HSPLandroid/hardware/light/HwLight$1;->newArray(I)[Ljava/lang/Object;
+HSPLandroid/hardware/light/HwLight;-><clinit>()V
+HSPLandroid/hardware/light/HwLight;-><init>()V
+HSPLandroid/hardware/light/HwLight;->readFromParcel(Landroid/os/Parcel;)V
+PLandroid/hardware/light/HwLightState$1;-><init>()V
+PLandroid/hardware/light/HwLightState;-><clinit>()V
+PLandroid/hardware/light/HwLightState;-><init>()V
+PLandroid/hardware/light/HwLightState;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/hardware/light/ILights$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/hardware/light/ILights$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/hardware/light/ILights$Stub$Proxy;->getLights()[Landroid/hardware/light/HwLight;
+PLandroid/hardware/light/ILights$Stub$Proxy;->setLightState(ILandroid/hardware/light/HwLightState;)V
+HSPLandroid/hardware/light/ILights$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/light/ILights;
+HSPLandroid/hardware/light/ILights;-><clinit>()V
+PLandroid/hardware/oemlock/IOemLock$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/oemlock/IOemLock;
+PLandroid/hardware/oemlock/IOemLock;-><clinit>()V
+PLandroid/hardware/oemlock/V1_0/IOemLock;->getService(Ljava/lang/String;Z)Landroid/hardware/oemlock/V1_0/IOemLock;
+PLandroid/hardware/oemlock/V1_0/IOemLock;->getService(Z)Landroid/hardware/oemlock/V1_0/IOemLock;
+HSPLandroid/hardware/power/stats/Channel$1;-><init>()V
+HSPLandroid/hardware/power/stats/Channel;-><clinit>()V
+HSPLandroid/hardware/power/stats/EnergyMeasurement$1;-><init>()V
+HSPLandroid/hardware/power/stats/EnergyMeasurement;-><clinit>()V
+HSPLandroid/hardware/power/stats/PowerEntity$1;-><init>()V
+HSPLandroid/hardware/power/stats/PowerEntity;-><clinit>()V
+PLandroid/hardware/power/stats/PowerEntity;-><init>()V
+HSPLandroid/hardware/power/stats/State$1;-><init>()V
+HSPLandroid/hardware/power/stats/State;-><clinit>()V
+PLandroid/hardware/power/stats/State;-><init>()V
+HSPLandroid/hardware/power/stats/StateResidency$1;-><init>()V
+HSPLandroid/hardware/power/stats/StateResidency;-><clinit>()V
+PLandroid/hardware/power/stats/StateResidency;-><init>()V
+HSPLandroid/hardware/power/stats/StateResidencyResult$1;-><init>()V
+HSPLandroid/hardware/power/stats/StateResidencyResult;-><clinit>()V
+PLandroid/hardware/power/stats/StateResidencyResult;-><init>()V
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Ljava/lang/String;Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+PLandroid/hardware/usb/V1_0/IUsb;->getService(Ljava/lang/String;Z)Landroid/hardware/usb/V1_0/IUsb;
+PLandroid/hardware/usb/V1_0/IUsb;->getService(Z)Landroid/hardware/usb/V1_0/IUsb;
+HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;-><init>()V
+HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;-><init>(Landroid/os/IHwBinder;)V
+PLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->debugDump()Ljava/util/ArrayList;
+HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->getTransport(Ljava/lang/String;Ljava/lang/String;)B
+HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
+HSPLandroid/hidl/manager/V1_0/IServiceManager$Proxy;->registerForNotifications(Ljava/lang/String;Ljava/lang/String;Landroid/hidl/manager/V1_0/IServiceNotification;)Z
+HSPLandroid/hidl/manager/V1_0/IServiceManager;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/manager/V1_0/IServiceManager;
+HSPLandroid/hidl/manager/V1_0/IServiceManager;->getService()Landroid/hidl/manager/V1_0/IServiceManager;
+HSPLandroid/hidl/manager/V1_0/IServiceManager;->getService(Ljava/lang/String;)Landroid/hidl/manager/V1_0/IServiceManager;
+HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;-><init>()V
+HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->asBinder()Landroid/os/IHwBinder;
+HSPLandroid/hidl/manager/V1_0/IServiceNotification$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>()V
+HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>(Landroid/net/ConnectivityModuleConnector$DependenciesImpl-IA;)V
+PLandroid/net/ConnectivityModuleConnector$DependenciesImpl;->getModuleServiceIntent(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/lang/String;Z)Landroid/content/Intent;
+PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
+PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;Landroid/net/ConnectivityModuleConnector$ModuleServiceConnection-IA;)V
+PLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLandroid/net/ConnectivityModuleConnector;->-$$Nest$mlogi(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;)V
+PLandroid/net/ConnectivityModuleConnector;->-$$Nest$smcheckModuleServicePermission(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;-><clinit>()V
+HSPLandroid/net/ConnectivityModuleConnector;-><init>()V
+HSPLandroid/net/ConnectivityModuleConnector;-><init>(Landroid/net/ConnectivityModuleConnector$Dependencies;)V
+PLandroid/net/ConnectivityModuleConnector;->checkModuleServicePermission(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;->getInstance()Landroid/net/ConnectivityModuleConnector;
+PLandroid/net/ConnectivityModuleConnector;->init(Landroid/content/Context;)V
+PLandroid/net/ConnectivityModuleConnector;->log(Ljava/lang/String;)V
+PLandroid/net/ConnectivityModuleConnector;->logi(Ljava/lang/String;)V
+PLandroid/net/ConnectivityModuleConnector;->registerHealthListener(Landroid/net/ConnectivityModuleConnector$ConnectivityModuleHealthListener;)V
+PLandroid/net/ConnectivityModuleConnector;->startModuleService(Ljava/lang/String;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
+PLandroid/net/INetd$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+PLandroid/net/INetd$Stub$Proxy;->firewallSetFirewallType(I)V
+PLandroid/net/INetd$Stub$Proxy;->registerUnsolicitedEventListener(Landroid/net/INetdUnsolicitedEventListener;)V
+PLandroid/net/INetd$Stub;-><clinit>()V
+PLandroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd;
+PLandroid/net/INetdUnsolicitedEventListener$Stub;-><init>()V
+PLandroid/net/INetdUnsolicitedEventListener$Stub;->asBinder()Landroid/os/IBinder;
+PLandroid/net/INetdUnsolicitedEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/net/INetdUnsolicitedEventListener;-><clinit>()V
+PLandroid/net/INetworkStackConnector$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+PLandroid/net/INetworkStackConnector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStackConnector;
+PLandroid/net/INetworkStackConnector;-><clinit>()V
+PLandroid/net/NetworkFactory;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
+PLandroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;)Z
+HPLandroid/net/NetworkFactory;->log(Ljava/lang/String;)V
+PLandroid/net/NetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactory;->register()V
+PLandroid/net/NetworkFactory;->registerIgnoringScore()V
+PLandroid/net/NetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactory;->startNetwork()V
+PLandroid/net/NetworkFactoryImpl$$ExternalSyntheticLambda0;-><init>(Landroid/net/NetworkFactoryImpl;)V
+HPLandroid/net/NetworkFactoryImpl$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
+PLandroid/net/NetworkFactoryImpl$1;-><init>(Landroid/net/NetworkFactoryImpl;)V
+PLandroid/net/NetworkFactoryImpl$1;->onNetworkNeeded(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl$1;->onNetworkUnneeded(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl$2;-><init>(Landroid/net/NetworkFactoryImpl;Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;)V
+HPLandroid/net/NetworkFactoryImpl$NetworkRequestInfo;-><init>(Landroid/net/NetworkRequest;)V
+HPLandroid/net/NetworkFactoryImpl;->$r8$lambda$gco469I383HoexMSXOHYvcsWJ0M(Landroid/net/NetworkFactoryImpl;Ljava/lang/Runnable;)V
+PLandroid/net/NetworkFactoryImpl;->-$$Nest$mhandleAddRequest(Landroid/net/NetworkFactoryImpl;Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl;->-$$Nest$mhandleRemoveRequest(Landroid/net/NetworkFactoryImpl;Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl;-><clinit>()V
+PLandroid/net/NetworkFactoryImpl;-><init>(Landroid/net/NetworkFactory;Landroid/os/Looper;Landroid/content/Context;Landroid/net/NetworkCapabilities;)V
+HPLandroid/net/NetworkFactoryImpl;->handleAddRequest(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl;->handleMessage(Landroid/os/Message;)V
+PLandroid/net/NetworkFactoryImpl;->handleOfferNetwork(Landroid/net/NetworkScore;)V
+PLandroid/net/NetworkFactoryImpl;->handleRemoveRequest(Landroid/net/NetworkRequest;)V
+PLandroid/net/NetworkFactoryImpl;->lambda$new$0(Ljava/lang/Runnable;)V
+PLandroid/net/NetworkFactoryImpl;->register(Ljava/lang/String;)V
+PLandroid/net/NetworkFactoryImpl;->register(Ljava/lang/String;Z)V
+PLandroid/net/NetworkFactoryImpl;->registerIgnoringScore(Ljava/lang/String;)V
+PLandroid/net/NetworkFactoryLegacyImpl;-><init>(Landroid/net/NetworkFactory;Landroid/os/Looper;Landroid/content/Context;Landroid/net/NetworkCapabilities;)V
+PLandroid/net/NetworkStackClient$DependenciesImpl;-><init>()V
+PLandroid/net/NetworkStackClient$DependenciesImpl;-><init>(Landroid/net/NetworkStackClient$DependenciesImpl-IA;)V
+PLandroid/net/NetworkStackClient$DependenciesImpl;->addToServiceManager(Landroid/os/IBinder;)V
+PLandroid/net/NetworkStackClient$DependenciesImpl;->getConnectivityModuleConnector()Landroid/net/ConnectivityModuleConnector;
+PLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;)V
+PLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;Landroid/net/NetworkStackClient$NetworkStackConnection-IA;)V
+PLandroid/net/NetworkStackClient$NetworkStackConnection;->onModuleServiceConnected(Landroid/os/IBinder;)V
+PLandroid/net/NetworkStackClient;->-$$Nest$mlogi(Landroid/net/NetworkStackClient;Ljava/lang/String;)V
+PLandroid/net/NetworkStackClient;->-$$Nest$mregisterNetworkStackService(Landroid/net/NetworkStackClient;Landroid/os/IBinder;)V
+PLandroid/net/NetworkStackClient;-><clinit>()V
+PLandroid/net/NetworkStackClient;-><init>()V
+PLandroid/net/NetworkStackClient;-><init>(Landroid/net/NetworkStackClient$Dependencies;)V
+PLandroid/net/NetworkStackClient;->getInstance()Landroid/net/NetworkStackClient;
+PLandroid/net/NetworkStackClient;->init()V
+PLandroid/net/NetworkStackClient;->log(Ljava/lang/String;)V
+PLandroid/net/NetworkStackClient;->logi(Ljava/lang/String;)V
+PLandroid/net/NetworkStackClient;->registerNetworkStackService(Landroid/os/IBinder;)V
+PLandroid/net/NetworkStackClient;->start()V
+PLandroid/net/metrics/INetdEventListener$Stub;-><init>()V
+HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/net/metrics/INetdEventListener;-><clinit>()V
+PLandroid/net/util/NetdService;-><clinit>()V
+PLandroid/net/util/NetdService;->get()Landroid/net/INetd;
+PLandroid/net/util/NetdService;->get(J)Landroid/net/INetd;
+PLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd;
+HSPLandroid/os/BatteryStatsInternal;-><init>()V
+HSPLandroid/power/PowerStatsInternal;-><init>()V
+PLandroid/security/keystore/IKeyAttestationApplicationIdProvider$Stub;-><init>()V
+PLandroid/security/keystore/IKeyAttestationApplicationIdProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/security/keystore/KeyAttestationApplicationId$1;-><init>()V
+PLandroid/security/keystore/KeyAttestationApplicationId;-><clinit>()V
+PLandroid/security/keystore/KeyAttestationApplicationId;-><init>()V
+PLandroid/security/keystore/KeyAttestationApplicationId;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/security/keystore/KeyAttestationPackageInfo$1;-><init>()V
+PLandroid/security/keystore/KeyAttestationPackageInfo;-><clinit>()V
+PLandroid/security/keystore/KeyAttestationPackageInfo;-><init>()V
+PLandroid/security/keystore/KeyAttestationPackageInfo;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/security/keystore/Signature$1;-><init>()V
+PLandroid/security/keystore/Signature;-><clinit>()V
+PLandroid/security/keystore/Signature;-><init>()V
+PLandroid/security/keystore/Signature;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/sysprop/SurfaceFlingerProperties;->enable_frame_rate_override()Ljava/util/Optional;
+PLandroid/sysprop/SurfaceFlingerProperties;->has_HDR_display()Ljava/util/Optional;
+PLandroid/sysprop/SurfaceFlingerProperties;->has_wide_color_display()Ljava/util/Optional;
+HSPLandroid/sysprop/SurfaceFlingerProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
+PLcom/android/internal/art/ArtStatsLog;->write(II)V
+PLcom/android/internal/util/jobs/ArrayUtils;-><clinit>()V
+PLcom/android/internal/util/jobs/ArrayUtils;->appendInt([II)[I
+PLcom/android/internal/util/jobs/ArrayUtils;->appendInt([IIZ)[I
+HPLcom/android/internal/util/jobs/ArrayUtils;->contains([II)Z
+PLcom/android/internal/util/jobs/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/internal/util/jobs/ArrayUtils;->filter([Ljava/lang/Object;Ljava/util/function/IntFunction;Ljava/util/function/Predicate;)[Ljava/lang/Object;
+PLcom/android/internal/util/jobs/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/internal/util/jobs/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z
+PLcom/android/internal/util/jobs/ArrayUtils;->size([Ljava/lang/Object;)I
+PLcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor;-><init>()V
+PLcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor;-><init>(Lcom/android/internal/util/jobs/ConcurrentUtils$DirectExecutor-IA;)V
+PLcom/android/internal/util/jobs/ConcurrentUtils;-><clinit>()V
+PLcom/android/internal/util/jobs/ConcurrentUtils;->waitForCountDownNoInterrupt(Ljava/util/concurrent/CountDownLatch;JLjava/lang/String;)V
+PLcom/android/internal/util/jobs/RingBufferIndices;-><init>(I)V
+HPLcom/android/internal/util/jobs/RingBufferIndices;->add()I
+HPLcom/android/internal/util/jobs/StatLogger;-><init>(Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/internal/util/jobs/StatLogger;-><init>([Ljava/lang/String;)V
+HPLcom/android/internal/util/jobs/StatLogger;->getTime()J
+HPLcom/android/internal/util/jobs/StatLogger;->logDurationStat(IJ)J
+HPLcom/android/internal/util/jobs/XmlUtils;->nextElementWithin(Lorg/xmlpull/v1/XmlPullParser;I)Z
+PLcom/android/media/audio/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/media/audio/FeatureFlagsImpl;-><init>()V
+PLcom/android/media/audio/FeatureFlagsImpl;->alarmMinVolumeZero()Z
+HPLcom/android/media/audio/FeatureFlagsImpl;->disablePrescaleAbsoluteVolume()Z
+PLcom/android/media/audio/FeatureFlagsImpl;->load_overrides_media_audio()V
+PLcom/android/media/audio/FeatureFlagsImpl;->ringerModeAffectsAlarm()Z
+PLcom/android/media/audio/Flags;-><clinit>()V
+PLcom/android/media/audio/Flags;->alarmMinVolumeZero()Z
+HPLcom/android/media/audio/Flags;->disablePrescaleAbsoluteVolume()Z
+PLcom/android/media/audio/Flags;->ringerModeAffectsAlarm()Z
+PLcom/android/modules/utils/build/SdkLevel;->isAtLeastPreReleaseCodename(Ljava/lang/String;)Z
+HSPLcom/android/modules/utils/build/SdkLevel;->isAtLeastR()Z
+PLcom/android/modules/utils/build/SdkLevel;->isAtLeastS()Z
+HSPLcom/android/modules/utils/build/SdkLevel;->isAtLeastT()Z
+PLcom/android/modules/utils/build/SdkLevel;->isAtLeastV()Z
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;-><clinit>()V
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;-><init>(ILjava/lang/String;Ljava/util/Set;)V
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->isAtLeast(Ljava/lang/String;)Z
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->isAtLeastInternal(Ljava/lang/String;)Z
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->isCodename(Ljava/lang/String;)Z
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->removeFingerprint(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/modules/utils/build/UnboundedSdkLevel;->setOf([Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/net/module/util/BaseNetdEventListener;-><init>()V
+PLcom/android/server/AccessibilityManagerInternal$1;-><init>()V
+PLcom/android/server/AccessibilityManagerInternal;-><clinit>()V
+PLcom/android/server/AccessibilityManagerInternal;-><init>()V
+PLcom/android/server/AccessibilityManagerInternal;->get()Lcom/android/server/AccessibilityManagerInternal;
+HSPLcom/android/server/AnimationThread;-><init>()V
+HSPLcom/android/server/AnimationThread;->ensureThreadLocked()V
+HSPLcom/android/server/AnimationThread;->get()Lcom/android/server/AnimationThread;
+HSPLcom/android/server/AnimationThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/AnyMotionDetector$1;-><init>(Lcom/android/server/AnyMotionDetector;)V
+PLcom/android/server/AnyMotionDetector$2;-><init>(Lcom/android/server/AnyMotionDetector;)V
+PLcom/android/server/AnyMotionDetector$3;-><init>(Lcom/android/server/AnyMotionDetector;)V
+PLcom/android/server/AnyMotionDetector$4;-><init>(Lcom/android/server/AnyMotionDetector;)V
+PLcom/android/server/AnyMotionDetector$RunningSignalStats;-><init>()V
+PLcom/android/server/AnyMotionDetector$RunningSignalStats;->reset()V
+PLcom/android/server/AnyMotionDetector$Vector3;-><init>(JFFF)V
+PLcom/android/server/AnyMotionDetector;-><init>(Landroid/os/PowerManager;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)V
+PLcom/android/server/AppSchedulingModuleThread;-><init>()V
+HPLcom/android/server/AppSchedulingModuleThread;->ensureThreadLocked()V
+PLcom/android/server/AppSchedulingModuleThread;->get()Lcom/android/server/AppSchedulingModuleThread;
+PLcom/android/server/AppSchedulingModuleThread;->getExecutor()Ljava/util/concurrent/Executor;
+HPLcom/android/server/AppSchedulingModuleThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/AppStateTrackerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$1;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTracker$BackgroundRestrictedAppListener;)V
+PLcom/android/server/AppStateTrackerImpl$2;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$3;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+HPLcom/android/server/AppStateTrackerImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/AppStateTrackerImpl$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl$AppOpsWatcher-IA;)V
+PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;->isForcedAppStandbyForSmallBatteryEnabled()Z
+PLcom/android/server/AppStateTrackerImpl$FeatureFlagsObserver;->register()V
+PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monExemptedBucketChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monTempPowerSaveExemptionListChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->-$$Nest$monUidActiveStateChanged(Lcom/android/server/AppStateTrackerImpl$Listener;Lcom/android/server/AppStateTrackerImpl;I)V
+PLcom/android/server/AppStateTrackerImpl$Listener;-><init>()V
+PLcom/android/server/AppStateTrackerImpl$Listener;->handleUidCachedChanged(IZ)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->onExemptedBucketChanged(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->onTempPowerSaveExemptionListChanged(Lcom/android/server/AppStateTrackerImpl;)V
+HPLcom/android/server/AppStateTrackerImpl$Listener;->onUidActiveStateChanged(Lcom/android/server/AppStateTrackerImpl;I)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->unblockAlarmsForUid(I)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->updateAlarmsForUid(I)V
+PLcom/android/server/AppStateTrackerImpl$Listener;->updateAllAlarms()V
+PLcom/android/server/AppStateTrackerImpl$Listener;->updateAllJobs()V
+PLcom/android/server/AppStateTrackerImpl$Listener;->updateJobsForUid(IZ)V
+PLcom/android/server/AppStateTrackerImpl$MyHandler;-><init>(Lcom/android/server/AppStateTrackerImpl;Landroid/os/Looper;)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidActive(I)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidCached(IZ)V
+PLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidGone(I)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->handleUidIdle(I)V
+PLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyAllExemptionListChanged()V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyExemptedBucketChanged()V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyTempExemptionListChanged()V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->notifyUidActiveStateChanged(I)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidActive(I)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidCachedChanged(IZ)V
+PLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidGone(IZ)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->onUidIdle(IZ)V
+HPLcom/android/server/AppStateTrackerImpl$MyHandler;->removeUid(IZ)V
+PLcom/android/server/AppStateTrackerImpl$StandbyTracker;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+HPLcom/android/server/AppStateTrackerImpl$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/AppStateTrackerImpl$UidObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl$UidObserver;-><init>(Lcom/android/server/AppStateTrackerImpl;Lcom/android/server/AppStateTrackerImpl$UidObserver-IA;)V
+HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidActive(I)V
+HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidCachedChanged(IZ)V
+HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidGone(IZ)V
+HPLcom/android/server/AppStateTrackerImpl$UidObserver;->onUidIdle(IZ)V
+PLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmContext(Lcom/android/server/AppStateTrackerImpl;)Landroid/content/Context;
+HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmHandler(Lcom/android/server/AppStateTrackerImpl;)Lcom/android/server/AppStateTrackerImpl$MyHandler;
+HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmLock(Lcom/android/server/AppStateTrackerImpl;)Ljava/lang/Object;
+HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$fgetmStatLogger(Lcom/android/server/AppStateTrackerImpl;)Lcom/android/internal/util/jobs/StatLogger;
+HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$mcloneListeners(Lcom/android/server/AppStateTrackerImpl;)[Lcom/android/server/AppStateTrackerImpl$Listener;
+PLcom/android/server/AppStateTrackerImpl;->-$$Nest$mupdateForceAllAppStandbyState(Lcom/android/server/AppStateTrackerImpl;)V
+PLcom/android/server/AppStateTrackerImpl;->-$$Nest$smaddUidToArray(Landroid/util/SparseBooleanArray;I)Z
+HPLcom/android/server/AppStateTrackerImpl;->-$$Nest$smremoveUidFromArray(Landroid/util/SparseBooleanArray;IZ)Z
+PLcom/android/server/AppStateTrackerImpl;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/AppStateTrackerImpl;->addBackgroundRestrictedAppListener(Lcom/android/server/AppStateTracker$BackgroundRestrictedAppListener;)V
+PLcom/android/server/AppStateTrackerImpl;->addListener(Lcom/android/server/AppStateTrackerImpl$Listener;)V
+HPLcom/android/server/AppStateTrackerImpl;->addUidToArray(Landroid/util/SparseBooleanArray;I)Z
+PLcom/android/server/AppStateTrackerImpl;->areAlarmsRestricted(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTrackerImpl;->areAlarmsRestrictedByBatterySaver(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTrackerImpl;->areJobsRestricted(ILjava/lang/String;Z)Z
+HPLcom/android/server/AppStateTrackerImpl;->cloneListeners()[Lcom/android/server/AppStateTrackerImpl$Listener;
+HPLcom/android/server/AppStateTrackerImpl;->findForcedAppStandbyUidPackageIndexLocked(ILjava/lang/String;)I
+PLcom/android/server/AppStateTrackerImpl;->injectActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/AppStateTrackerImpl;->injectAppOpsManager()Landroid/app/AppOpsManager;
+PLcom/android/server/AppStateTrackerImpl;->injectAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
+PLcom/android/server/AppStateTrackerImpl;->injectGetGlobalSettingInt(Ljava/lang/String;I)I
+PLcom/android/server/AppStateTrackerImpl;->injectIActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/AppStateTrackerImpl;->injectIAppOpsService()Lcom/android/internal/app/IAppOpsService;
+PLcom/android/server/AppStateTrackerImpl;->injectPowerManagerInternal()Landroid/os/PowerManagerInternal;
+PLcom/android/server/AppStateTrackerImpl;->isAnyAppIdUnexempt([I[I)Z
+HPLcom/android/server/AppStateTrackerImpl;->isAppBackgroundRestricted(ILjava/lang/String;)Z
+PLcom/android/server/AppStateTrackerImpl;->isForceAllAppsStandbyEnabled()Z
+HPLcom/android/server/AppStateTrackerImpl;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTrackerImpl;->isRunAnyRestrictedLocked(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTrackerImpl;->isUidActive(I)Z
+PLcom/android/server/AppStateTrackerImpl;->isUidActiveSynced(I)Z
+HPLcom/android/server/AppStateTrackerImpl;->isUidPowerSaveUserExempt(I)Z
+HPLcom/android/server/AppStateTrackerImpl;->onSystemServicesReady()V
+PLcom/android/server/AppStateTrackerImpl;->refreshForcedAppStandbyUidPackagesLocked()V
+HPLcom/android/server/AppStateTrackerImpl;->removeUidFromArray(Landroid/util/SparseBooleanArray;IZ)Z
+HPLcom/android/server/AppStateTrackerImpl;->setPowerSaveExemptionListAppIds([I[I[I)V
+PLcom/android/server/AppStateTrackerImpl;->toggleForceAllAppsStandbyLocked(Z)V
+PLcom/android/server/AppStateTrackerImpl;->updateForceAllAppStandbyState()V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda4;->update(Landroid/hardware/health/HealthInfo;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/BatteryService$2;-><init>(Lcom/android/server/BatteryService;Landroid/os/Handler;)V
+PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BatteryPropertiesRegistrar-IA;)V
+PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I
+PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$BinderService-IA;)V
+PLcom/android/server/BatteryService$Led;-><init>(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V
+PLcom/android/server/BatteryService$Led;->updateLightsLocked()V
+PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$LocalService-IA;)V
+PLcom/android/server/BatteryService$LocalService;->getBatteryFullCharge()I
+PLcom/android/server/BatteryService$LocalService;->getBatteryHealth()I
+PLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I
+PLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z
+PLcom/android/server/BatteryService$LocalService;->getChargingPolicy()I
+PLcom/android/server/BatteryService$LocalService;->getPlugType()I
+PLcom/android/server/BatteryService$LocalService;->isPowered(I)Z
+PLcom/android/server/BatteryService$LocalService;->registerChargingPolicyChangeListener(Landroid/os/BatteryManagerInternal$ChargingPolicyChangeListener;)V
+PLcom/android/server/BatteryService;->$r8$lambda$N8ClakoF19_iwV3c15yk39OjjgA(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService;->$r8$lambda$QITgs02JU2zUgONUrF7rVY3JmZw(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService;->$r8$lambda$kI548aEkD-5ubzJcKyoIH4vQF6M(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService;->$r8$lambda$rpwqZVDE4vm803PIdo4dJE92WYc(Lcom/android/server/BatteryService;Landroid/hardware/health/HealthInfo;)V
+PLcom/android/server/BatteryService;->-$$Nest$fgetmBatteryLevelLow(Lcom/android/server/BatteryService;)Z
+PLcom/android/server/BatteryService;->-$$Nest$fgetmChargingPolicyChangeListeners(Lcom/android/server/BatteryService;)Ljava/util/concurrent/CopyOnWriteArraySet;
+PLcom/android/server/BatteryService;->-$$Nest$fgetmHealthInfo(Lcom/android/server/BatteryService;)Landroid/hardware/health/HealthInfo;
+PLcom/android/server/BatteryService;->-$$Nest$fgetmHealthServiceWrapper(Lcom/android/server/BatteryService;)Lcom/android/server/health/HealthServiceWrapper;
+PLcom/android/server/BatteryService;->-$$Nest$fgetmLastChargingPolicy(Lcom/android/server/BatteryService;)I
+PLcom/android/server/BatteryService;->-$$Nest$fgetmLock(Lcom/android/server/BatteryService;)Ljava/lang/Object;
+PLcom/android/server/BatteryService;->-$$Nest$fgetmPlugType(Lcom/android/server/BatteryService;)I
+PLcom/android/server/BatteryService;->-$$Nest$fputmBatteryNearlyFullLevel(Lcom/android/server/BatteryService;I)V
+PLcom/android/server/BatteryService;->-$$Nest$misPoweredLocked(Lcom/android/server/BatteryService;I)Z
+PLcom/android/server/BatteryService;-><clinit>()V
+HPLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/BatteryService;->broadcastBatteryChangedIntent(Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/BatteryService;->getIconLocked(I)I
+PLcom/android/server/BatteryService;->isPoweredLocked(I)Z
+PLcom/android/server/BatteryService;->lambda$sendBatteryChangedIntentLocked$0(Landroid/content/Intent;)V
+PLcom/android/server/BatteryService;->notifyChargingPolicyChanged()V
+PLcom/android/server/BatteryService;->onBootPhase(I)V
+PLcom/android/server/BatteryService;->onStart()V
+PLcom/android/server/BatteryService;->plugType(Landroid/hardware/health/HealthInfo;)I
+HPLcom/android/server/BatteryService;->processValuesLocked(Z)V
+PLcom/android/server/BatteryService;->registerHealthCallback()V
+HPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked()V
+HPLcom/android/server/BatteryService;->sendBatteryLevelChangedIntentLocked()V
+PLcom/android/server/BatteryService;->sendEnqueuedBatteryLevelChangedEvents()V
+PLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
+PLcom/android/server/BatteryService;->shouldShutdownLocked()Z
+PLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V
+PLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V
+PLcom/android/server/BatteryService;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/BatteryService;->traceEnd()V
+HPLcom/android/server/BatteryService;->update(Landroid/hardware/health/HealthInfo;)V
+PLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/BinaryTransparencyService$3;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$BinaryTransparencyServiceImpl;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$BiometricLogger;-><clinit>()V
+PLcom/android/server/BinaryTransparencyService$BiometricLogger;-><init>()V
+PLcom/android/server/BinaryTransparencyService$BiometricLogger;->getInstance()Lcom/android/server/BinaryTransparencyService$BiometricLogger;
+PLcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver;-><init>(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver;-><init>(Lcom/android/server/BinaryTransparencyService;Lcom/android/server/BinaryTransparencyService$PackageUpdatedReceiver-IA;)V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;-><clinit>()V
+PLcom/android/server/BinaryTransparencyService$UpdateMeasurementsJobService;->scheduleBinaryMeasurements(Landroid/content/Context;Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService;->$r8$lambda$e2eFFQ4jadgx-pDFIBv7RiSb2IE(Lcom/android/server/BinaryTransparencyService;)V
+PLcom/android/server/BinaryTransparencyService;-><clinit>()V
+PLcom/android/server/BinaryTransparencyService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/BinaryTransparencyService;-><init>(Landroid/content/Context;Lcom/android/server/BinaryTransparencyService$BiometricLogger;)V
+PLcom/android/server/BinaryTransparencyService;->collectBiometricProperties()V
+PLcom/android/server/BinaryTransparencyService;->collectBootIntegrityInfo()V
+PLcom/android/server/BinaryTransparencyService;->lambda$collectBootIntegrityInfo$0()V
+PLcom/android/server/BinaryTransparencyService;->onBootPhase(I)V
+PLcom/android/server/BinaryTransparencyService;->onStart()V
+PLcom/android/server/BinaryTransparencyService;->registerAllPackageUpdateObservers()V
+PLcom/android/server/BinaryTransparencyService;->registerApkAndNonStagedApexUpdateListener()V
+PLcom/android/server/BinaryTransparencyService;->registerStagedApexUpdateObserver()V
+PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;-><init>()V
+PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->createAppidTrustlist(Landroid/content/Context;)Landroid/util/ArraySet;
+HPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I
+HPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I
+PLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/BinderCallsStatsService$Internal;-><init>(Lcom/android/internal/os/BinderCallsStats;)V
+PLcom/android/server/BinderCallsStatsService$LifeCycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/BinderCallsStatsService$LifeCycle;->onBootPhase(I)V
+PLcom/android/server/BinderCallsStatsService$LifeCycle;->onStart()V
+PLcom/android/server/BinderCallsStatsService$SettingsObserver;-><init>(Landroid/content/Context;Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
+HPLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange()V
+PLcom/android/server/BinderCallsStatsService;-><init>(Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
+PLcom/android/server/BinderCallsStatsService;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/BootReceiver$1;-><init>(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
+PLcom/android/server/BootReceiver$1;->run()V
+PLcom/android/server/BootReceiver;->-$$Nest$mlogBootEvents(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
+PLcom/android/server/BootReceiver;->-$$Nest$mremoveOldUpdatePackages(Lcom/android/server/BootReceiver;Landroid/content/Context;)V
+PLcom/android/server/BootReceiver;-><clinit>()V
+PLcom/android/server/BootReceiver;-><init>()V
+HPLcom/android/server/BootReceiver;->addAuditErrorsToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/BootReceiver;->addAugmentedProtoToDropbox(Ljava/io/File;Landroid/os/DropBoxManager;Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;)V
+PLcom/android/server/BootReceiver;->addFileToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/BootReceiver;->addFileWithFootersToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/BootReceiver;->addFsckErrorsToDropBoxAndLogFsStat(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/BootReceiver;->addLastkToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/BootReceiver;->addTextToDropBox(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/BootReceiver;->addTombstoneToDropBox(Landroid/content/Context;Ljava/io/File;ZLjava/lang/String;Ljava/util/concurrent/locks/ReentrantLock;)V
+PLcom/android/server/BootReceiver;->fixFsckFsStat(Ljava/lang/String;I[Ljava/lang/String;II)I
+PLcom/android/server/BootReceiver;->getBootHeadersToLogAndUpdate()Ljava/lang/String;
+HPLcom/android/server/BootReceiver;->getCurrentBootHeaders()Ljava/lang/String;
+PLcom/android/server/BootReceiver;->getPreviousBootHeaders()Ljava/lang/String;
+HPLcom/android/server/BootReceiver;->handleFsckFsStat(Ljava/util/regex/Matcher;[Ljava/lang/String;II)V
+PLcom/android/server/BootReceiver;->initDropboxRateLimiter()V
+PLcom/android/server/BootReceiver;->logBootEvents(Landroid/content/Context;)V
+PLcom/android/server/BootReceiver;->logFsMountTime()V
+PLcom/android/server/BootReceiver;->logFsShutdownTime()V
+PLcom/android/server/BootReceiver;->logSystemServerShutdownTimeMetrics()V
+PLcom/android/server/BootReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/BootReceiver;->readTimestamps()Ljava/util/HashMap;
+PLcom/android/server/BootReceiver;->recordFileTimestamp(Ljava/io/File;Ljava/util/HashMap;)Z
+PLcom/android/server/BootReceiver;->removeOldUpdatePackages(Landroid/content/Context;)V
+HPLcom/android/server/BootReceiver;->writeTimestamps(Ljava/util/HashMap;)V
+PLcom/android/server/BundleUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle;
+HSPLcom/android/server/BundleUtils;->isEmpty(Landroid/os/Bundle;)Z
+PLcom/android/server/CachedDeviceStateService$1;-><init>(Lcom/android/server/CachedDeviceStateService;)V
+PLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/CachedDeviceStateService;->-$$Nest$fgetmDeviceState(Lcom/android/server/CachedDeviceStateService;)Lcom/android/internal/os/CachedDeviceState;
+PLcom/android/server/CachedDeviceStateService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/CachedDeviceStateService;->onBootPhase(I)V
+PLcom/android/server/CachedDeviceStateService;->onStart()V
+PLcom/android/server/CachedDeviceStateService;->queryIsCharging()Z
+PLcom/android/server/CachedDeviceStateService;->queryScreenInteractive(Landroid/content/Context;)Z
+PLcom/android/server/CertBlacklister$BlacklistObserver;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentResolver;)V
+PLcom/android/server/CertBlacklister;-><clinit>()V
+PLcom/android/server/CertBlacklister;-><init>(Landroid/content/Context;)V
+PLcom/android/server/CertBlacklister;->buildPubkeyObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
+PLcom/android/server/CertBlacklister;->buildSerialObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
+PLcom/android/server/CertBlacklister;->registerObservers(Landroid/content/ContentResolver;)V
+PLcom/android/server/CommunalProfileInitializer;-><clinit>()V
+PLcom/android/server/CommunalProfileInitializer;->removeCommunalProfileIfPresent()V
+PLcom/android/server/ContextHubSystemService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/ContextHubSystemService;Landroid/content/Context;)V
+PLcom/android/server/ContextHubSystemService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/ContextHubSystemService;->$r8$lambda$rh2pjqKKW3BPmYQWkE44zlrrbEc(Lcom/android/server/ContextHubSystemService;Landroid/content/Context;)V
+PLcom/android/server/ContextHubSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/ContextHubSystemService;->lambda$new$0(Landroid/content/Context;)V
+PLcom/android/server/ContextHubSystemService;->onBootPhase(I)V
+PLcom/android/server/ContextHubSystemService;->onStart()V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/CountryDetectorService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/CountryDetectorService$Receiver;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V
+PLcom/android/server/CountryDetectorService$Receiver;->binderDied()V
+PLcom/android/server/CountryDetectorService;->$r8$lambda$HYkxybtKcKj3KOzS426QA588kgg(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService;->$r8$lambda$w1hnAvR_BRhLPQmveSOw4E6Hh5M(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/CountryDetectorService;->-$$Nest$mremoveListener(Lcom/android/server/CountryDetectorService;Landroid/os/IBinder;)V
+PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V
+PLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V
+PLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country;
+PLcom/android/server/CountryDetectorService;->initialize()V
+PLcom/android/server/CountryDetectorService;->lambda$setCountryListener$3(Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService;->lambda$systemRunning$0()V
+PLcom/android/server/CountryDetectorService;->loadCustomCountryDetectorIfAvailable(Ljava/lang/String;)Lcom/android/server/location/countrydetector/CountryDetectorBase;
+PLcom/android/server/CountryDetectorService;->removeListener(Landroid/os/IBinder;)V
+PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService;->systemRunning()V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda6;-><init>()V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/DeviceIdleController;II)V
+PLcom/android/server/DeviceIdleController$$ExternalSyntheticLambda7;->test(Ljava/lang/Object;)Z
+PLcom/android/server/DeviceIdleController$1;-><init>(Lcom/android/server/DeviceIdleController;)V
+HPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/DeviceIdleController$2;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$3;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$4;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$5;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$6;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$7;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$8;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$8;->onKeyguardStateChanged(Z)V
+PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$BinderService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$BinderService-IA;)V
+PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JIILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I
+PLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I
+PLcom/android/server/DeviceIdleController$BinderService;->getFullPowerWhitelistExceptIdle()[Ljava/lang/String;
+HPLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/DeviceIdleController$Constants;->getTimeout(JJ)J
+HPLcom/android/server/DeviceIdleController$Constants;->initDefault()V
+PLcom/android/server/DeviceIdleController$Constants;->updateConstantsLocked()V
+PLcom/android/server/DeviceIdleController$Constants;->updateSettingsConstantLocked()V
+PLcom/android/server/DeviceIdleController$EmergencyCallListener;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$EmergencyCallListener;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$EmergencyCallListener-IA;)V
+PLcom/android/server/DeviceIdleController$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/DeviceIdleController$Injector;->getAlarmManager()Landroid/app/AlarmManager;
+PLcom/android/server/DeviceIdleController$Injector;->getAnyMotionDetector(Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)Lcom/android/server/AnyMotionDetector;
+PLcom/android/server/DeviceIdleController$Injector;->getAppStateTracker(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/AppStateTrackerImpl;
+PLcom/android/server/DeviceIdleController$Injector;->getConnectivityManager()Landroid/net/ConnectivityManager;
+PLcom/android/server/DeviceIdleController$Injector;->getConstants(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)Lcom/android/server/DeviceIdleController$Constants;
+PLcom/android/server/DeviceIdleController$Injector;->getConstraintController(Landroid/os/Handler;Lcom/android/server/DeviceIdleInternal;)Lcom/android/server/deviceidle/ConstraintController;
+PLcom/android/server/DeviceIdleController$Injector;->getHandler(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$MyHandler;
+PLcom/android/server/DeviceIdleController$Injector;->getMotionSensor()Landroid/hardware/Sensor;
+PLcom/android/server/DeviceIdleController$Injector;->getPowerManager()Landroid/os/PowerManager;
+PLcom/android/server/DeviceIdleController$Injector;->getSensorManager()Landroid/hardware/SensorManager;
+PLcom/android/server/DeviceIdleController$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
+PLcom/android/server/DeviceIdleController$Injector;->isLocationPrefetchEnabled()Z
+PLcom/android/server/DeviceIdleController$Injector;->useMotionSensor()Z
+PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$LocalPowerAllowlistService-IA;)V
+PLcom/android/server/DeviceIdleController$LocalPowerAllowlistService;->registerTempAllowlistChangeListener(Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
+PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$LocalService;-><init>(Lcom/android/server/DeviceIdleController;Lcom/android/server/DeviceIdleController$LocalService-IA;)V
+HPLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJIZILjava/lang/String;I)V
+PLcom/android/server/DeviceIdleController$LocalService;->getFullPowerWhitelistExceptIdle()[Ljava/lang/String;
+PLcom/android/server/DeviceIdleController$LocalService;->getNotificationAllowlistDuration()J
+HPLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveTempWhitelistAppIds()[I
+PLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveWhitelistUserAppIds()[I
+HPLcom/android/server/DeviceIdleController$LocalService;->getTempAllowListType(II)I
+PLcom/android/server/DeviceIdleController$LocalService;->isAppOnWhitelist(I)Z
+PLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V
+PLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V
+PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->accept(Ljava/lang/Boolean;)V
+PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->accept(Ljava/lang/Object;)V
+PLcom/android/server/DeviceIdleController$ModeManagerOffBodyStateConsumer;->onModeManagerOffBodyChangedLocked()V
+PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;->accept(Ljava/lang/Boolean;)V
+PLcom/android/server/DeviceIdleController$ModeManagerQuickDozeRequestConsumer;->accept(Ljava/lang/Object;)V
+PLcom/android/server/DeviceIdleController$MotionListener;-><init>(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController$MyHandler;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Looper;)V
+HPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/DeviceIdleController;->$r8$lambda$aNkRWECW9WeDkUwaGny7VNmedfc(Lcom/android/server/DeviceIdleController;IILjava/lang/String;)Z
+PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmConstants(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$Constants;
+PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmForceModeManagerOffBodyState(Lcom/android/server/DeviceIdleController;)Z
+PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmForceModeManagerQuickDozeRequest(Lcom/android/server/DeviceIdleController;)Z
+PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmIsOffBody(Lcom/android/server/DeviceIdleController;)Z
+PLcom/android/server/DeviceIdleController;->-$$Nest$fgetmModeManagerRequestedQuickDoze(Lcom/android/server/DeviceIdleController;)Z
+HPLcom/android/server/DeviceIdleController;->-$$Nest$fgetmNetworkPolicyManagerInternal(Lcom/android/server/DeviceIdleController;)Lcom/android/server/net/NetworkPolicyManagerInternal;
+HPLcom/android/server/DeviceIdleController;->-$$Nest$fgetmTempAllowlistChangeListeners(Lcom/android/server/DeviceIdleController;)Landroid/util/ArraySet;
+PLcom/android/server/DeviceIdleController;->-$$Nest$fputmIsOffBody(Lcom/android/server/DeviceIdleController;Z)V
+PLcom/android/server/DeviceIdleController;->-$$Nest$mgetFullPowerWhitelistExceptIdleInternal(Lcom/android/server/DeviceIdleController;II)[Ljava/lang/String;
+PLcom/android/server/DeviceIdleController;->-$$Nest$mgetFullPowerWhitelistInternalUnchecked(Lcom/android/server/DeviceIdleController;)[Ljava/lang/String;
+HPLcom/android/server/DeviceIdleController;->-$$Nest$mgetTempAllowListType(Lcom/android/server/DeviceIdleController;II)I
+PLcom/android/server/DeviceIdleController;->-$$Nest$mmaybeBecomeActiveOnModeManagerEventsLocked(Lcom/android/server/DeviceIdleController;)V
+PLcom/android/server/DeviceIdleController;->-$$Nest$mregisterTempAllowlistChangeListener(Lcom/android/server/DeviceIdleController;Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
+PLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;Lcom/android/server/DeviceIdleController$Injector;)V
+HPLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppChecked(Ljava/lang/String;JIILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController;->addPowerSaveTempAllowlistAppInternal(ILjava/lang/String;JIIZILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJIZILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V
+PLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;IJZ)V
+PLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I
+HPLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V
+PLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V
+HPLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I
+PLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I
+PLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I
+PLcom/android/server/DeviceIdleController;->getFullPowerWhitelistExceptIdleInternal(II)[Ljava/lang/String;
+PLcom/android/server/DeviceIdleController;->getFullPowerWhitelistInternalUnchecked()[Ljava/lang/String;
+PLcom/android/server/DeviceIdleController;->getPowerSaveWhitelistUserAppIds()[I
+PLcom/android/server/DeviceIdleController;->getSystemDir()Ljava/io/File;
+PLcom/android/server/DeviceIdleController;->getTempAllowListType(II)I
+PLcom/android/server/DeviceIdleController;->isAppOnWhitelistInternal(I)Z
+PLcom/android/server/DeviceIdleController;->keyguardShowingLocked(Z)V
+PLcom/android/server/DeviceIdleController;->lambda$getFullPowerWhitelistExceptIdleInternal$13(IILjava/lang/String;)Z
+PLcom/android/server/DeviceIdleController;->maybeBecomeActiveOnModeManagerEventsLocked()V
+PLcom/android/server/DeviceIdleController;->moveToLightStateLocked(ILjava/lang/String;)V
+PLcom/android/server/DeviceIdleController;->moveToStateLocked(ILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->onAppRemovedFromTempWhitelistLocked(ILjava/lang/String;)V
+HPLcom/android/server/DeviceIdleController;->onBootPhase(I)V
+HPLcom/android/server/DeviceIdleController;->onStart()V
+HPLcom/android/server/DeviceIdleController;->passWhiteListsToForceAppStandbyTrackerLocked()V
+HPLcom/android/server/DeviceIdleController;->postTempActiveTimeoutMessage(IJ)V
+PLcom/android/server/DeviceIdleController;->readConfigFileLocked()V
+PLcom/android/server/DeviceIdleController;->registerTempAllowlistChangeListener(Lcom/android/server/PowerAllowlistInternal$TempAllowlistChangeListener;)V
+HPLcom/android/server/DeviceIdleController;->reportTempWhitelistChangedLocked(IZ)V
+PLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V
+PLcom/android/server/DeviceIdleController;->setJobsActive(Z)V
+PLcom/android/server/DeviceIdleController;->updateActiveConstraintsLocked()V
+PLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V
+PLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V
+PLcom/android/server/DeviceIdleController;->updateInteractivityLocked()V
+PLcom/android/server/DeviceIdleController;->updateQuickDozeFlagLocked()V
+PLcom/android/server/DeviceIdleController;->updateQuickDozeFlagLocked(Z)V
+HPLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZJIILjava/lang/String;I)V
+PLcom/android/server/DeviceIdleController;->updateWhitelistAppIdsLocked()V
+PLcom/android/server/DiskStatsService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/DisplayThread;-><init>()V
+HSPLcom/android/server/DisplayThread;->ensureThreadLocked()V
+HSPLcom/android/server/DisplayThread;->get()Lcom/android/server/DisplayThread;
+HSPLcom/android/server/DisplayThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/DockObserver$1;-><init>(Lcom/android/server/DockObserver;Z)V
+PLcom/android/server/DockObserver$2;-><init>(Lcom/android/server/DockObserver;)V
+PLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;)V
+PLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;Lcom/android/server/DockObserver$BinderService-IA;)V
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;-><init>(Lcom/android/server/DockObserver;Landroid/os/Handler;)V
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;->isDeviceProvisioned()Z
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;->onSystemReady()V
+PLcom/android/server/DockObserver$DeviceProvisionedObserver;->updateRegistration()V
+PLcom/android/server/DockObserver;-><init>(Landroid/content/Context;)V
+PLcom/android/server/DockObserver;->loadExtconStateConfigs(Landroid/content/Context;)Ljava/util/List;
+PLcom/android/server/DockObserver;->onBootPhase(I)V
+PLcom/android/server/DockObserver;->onStart()V
+PLcom/android/server/DockObserver;->updateIfDockedLocked()V
+PLcom/android/server/DropBoxManagerInternal;-><init>()V
+PLcom/android/server/DropBoxManagerService$1$1;-><init>(Lcom/android/server/DropBoxManagerService$1;)V
+PLcom/android/server/DropBoxManagerService$1$1;->run()V
+PLcom/android/server/DropBoxManagerService$1;-><init>(Lcom/android/server/DropBoxManagerService;)V
+PLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/DropBoxManagerService$2;-><init>(Lcom/android/server/DropBoxManagerService;)V
+HPLcom/android/server/DropBoxManagerService$2;->addData(Ljava/lang/String;[BI)V
+PLcom/android/server/DropBoxManagerService$2;->addFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
+HPLcom/android/server/DropBoxManagerService$2;->getNextEntryWithAttribution(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;
+HPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
+PLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V
+PLcom/android/server/DropBoxManagerService$3;->onChange(Z)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->createBroadcastOptions(Landroid/content/Intent;)Landroid/os/Bundle;
+HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->createIntent(Ljava/lang/String;J)Landroid/content/Intent;
+HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->maybeDeferBroadcast(Ljava/lang/String;J)V
+HPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->prepareAndSendBroadcast(Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->sendBroadcast(Ljava/lang/String;J)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl;-><init>(Lcom/android/server/DropBoxManagerService;)V
+PLcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl;-><init>(Lcom/android/server/DropBoxManagerService;Lcom/android/server/DropBoxManagerService$DropBoxManagerInternalImpl-IA;)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
+HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I
+HPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File;
+HPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
+PLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z
+PLcom/android/server/DropBoxManagerService$FileList;-><init>()V
+PLcom/android/server/DropBoxManagerService$FileList;-><init>(Lcom/android/server/DropBoxManagerService$FileList-IA;)V
+HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;-><init>(Ljava/io/InputStream;JZ)V
+HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;->close()V
+PLcom/android/server/DropBoxManagerService$SimpleEntrySource;->length()J
+HPLcom/android/server/DropBoxManagerService$SimpleEntrySource;->writeTo(Ljava/io/FileDescriptor;)V
+PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmBooted(Lcom/android/server/DropBoxManagerService;)Z
+PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmLowPriorityRateLimitPeriod(Lcom/android/server/DropBoxManagerService;)J
+PLcom/android/server/DropBoxManagerService;->-$$Nest$fgetmReceiver(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver;
+PLcom/android/server/DropBoxManagerService;->-$$Nest$fputmCachedQuotaUptimeMillis(Lcom/android/server/DropBoxManagerService;J)V
+PLcom/android/server/DropBoxManagerService;->-$$Nest$minit(Lcom/android/server/DropBoxManagerService;)V
+PLcom/android/server/DropBoxManagerService;->-$$Nest$mtrimToFit(Lcom/android/server/DropBoxManagerService;)J
+PLcom/android/server/DropBoxManagerService;-><clinit>()V
+PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
+HPLcom/android/server/DropBoxManagerService;->addData(Ljava/lang/String;[BI)V
+HPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Lcom/android/server/DropBoxManagerInternal$EntrySource;I)V
+HPLcom/android/server/DropBoxManagerService;->addEntry(Ljava/lang/String;Ljava/io/InputStream;JI)V
+PLcom/android/server/DropBoxManagerService;->addFile(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;I)V
+HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
+HPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
+PLcom/android/server/DropBoxManagerService;->getLowPriorityResourceConfigs()V
+HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;Ljava/lang/String;)Landroid/os/DropBoxManager$Entry;
+HPLcom/android/server/DropBoxManagerService;->init()V
+HPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z
+PLcom/android/server/DropBoxManagerService;->onBootPhase(I)V
+PLcom/android/server/DropBoxManagerService;->onStart()V
+HPLcom/android/server/DropBoxManagerService;->trimToFit()J
+PLcom/android/server/DynamicSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/EntropyMixer$1;-><init>(Lcom/android/server/EntropyMixer;Landroid/os/Looper;)V
+PLcom/android/server/EntropyMixer$2;-><init>(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer;-><clinit>()V
+PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V
+PLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/io/File;Ljava/io/File;)V
+PLcom/android/server/EntropyMixer;->getDeviceSpecificInformation()[B
+PLcom/android/server/EntropyMixer;->getSystemDir()Ljava/io/File;
+PLcom/android/server/EntropyMixer;->loadInitialEntropy()V
+PLcom/android/server/EntropyMixer;->longToBytes(J)[B
+PLcom/android/server/EntropyMixer;->readSeedFile()[B
+PLcom/android/server/EntropyMixer;->scheduleSeedUpdater()V
+PLcom/android/server/EntropyMixer;->updateSeedFile()V
+PLcom/android/server/EntropyMixer;->writeNewSeed([B)V
+PLcom/android/server/EventLogTags;->writeDeviceIdle(ILjava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeDeviceIdleLight(ILjava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V
+PLcom/android/server/EventLogTags;->writePmCriticalInfo(Ljava/lang/String;)V
+HSPLcom/android/server/EventLogTags;->writePmSnapshotRebuild(II)V
+HSPLcom/android/server/EventLogTags;->writeRescueNote(IIJ)V
+PLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V
+PLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V
+PLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/Set;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/List;Ljava/util/Set;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda2;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda2;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda5;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda5;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/ExplicitHealthCheckController$1;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/ExplicitHealthCheckController$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$IIsfdI4E19kYetXH_5L-g69gD5U(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/Set;Ljava/util/List;)V
+PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$aL6X4oZMCjln5Vk0sguqqu-vOzk(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$eUe0MojcRAKKWZDwi3yGDDE4Q6Y(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/List;Ljava/util/Set;Ljava/util/List;)V
+PLcom/android/server/ExplicitHealthCheckController;->$r8$lambda$mGwCwsEZmtVNkWk1gYFRO7gIRQk(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->-$$Nest$minitState(Lcom/android/server/ExplicitHealthCheckController;Landroid/os/IBinder;)V
+HSPLcom/android/server/ExplicitHealthCheckController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/ExplicitHealthCheckController;->actOnDifference(Ljava/util/Collection;Ljava/util/Collection;Ljava/util/function/Consumer;)V
+PLcom/android/server/ExplicitHealthCheckController;->bindService()V
+PLcom/android/server/ExplicitHealthCheckController;->getRequestedPackages(Ljava/util/function/Consumer;)V
+PLcom/android/server/ExplicitHealthCheckController;->getServiceComponentNameLocked()Landroid/content/ComponentName;
+PLcom/android/server/ExplicitHealthCheckController;->getServiceInfoLocked()Landroid/content/pm/ServiceInfo;
+PLcom/android/server/ExplicitHealthCheckController;->getSupportedPackages(Ljava/util/function/Consumer;)V
+PLcom/android/server/ExplicitHealthCheckController;->initState(Landroid/os/IBinder;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$getRequestedPackages$5(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$getSupportedPackages$4(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$2(Ljava/util/List;Ljava/util/Set;Ljava/util/List;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$3(Ljava/util/Set;Ljava/util/List;)V
+PLcom/android/server/ExplicitHealthCheckController;->prepareServiceLocked(Ljava/lang/String;)Z
+PLcom/android/server/ExplicitHealthCheckController;->setCallbacks(Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/lang/Runnable;)V
+PLcom/android/server/ExplicitHealthCheckController;->setEnabled(Z)V
+PLcom/android/server/ExplicitHealthCheckController;->syncRequests(Ljava/util/Set;)V
+PLcom/android/server/ExplicitHealthCheckController;->unbindService()V
+PLcom/android/server/ExtconUEventObserver$ExtconInfo;-><clinit>()V
+PLcom/android/server/ExtconUEventObserver$ExtconInfo;->getExtconInfoForTypes([Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/ExtconUEventObserver$ExtconInfo;->initExtconInfos()V
+PLcom/android/server/ExtconUEventObserver;-><init>()V
+HSPLcom/android/server/FgThread;-><init>()V
+HSPLcom/android/server/FgThread;->ensureThreadLocked()V
+HSPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread;
+PLcom/android/server/FgThread;->getExecutor()Ljava/util/concurrent/Executor;
+HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/GestureLauncherService$1;-><init>(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/GestureLauncherService$2;-><init>(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V
+PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener-IA;)V
+PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$GestureEventListener-IA;)V
+PLcom/android/server/GestureLauncherService;->-$$Nest$fgetmContext(Lcom/android/server/GestureLauncherService;)Landroid/content/Context;
+PLcom/android/server/GestureLauncherService;->-$$Nest$fgetmSettingObserver(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver;
+PLcom/android/server/GestureLauncherService;->-$$Nest$fputmUserId(Lcom/android/server/GestureLauncherService;I)V
+PLcom/android/server/GestureLauncherService;->-$$Nest$mregisterContentObservers(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService;->-$$Nest$mupdateCameraRegistered(Lcom/android/server/GestureLauncherService;)V
+PLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;Lcom/android/internal/logging/MetricsLogger;Lcom/android/internal/logging/UiEventLogger;)V
+PLcom/android/server/GestureLauncherService;->getEmergencyGesturePowerButtonCooldownPeriodMs(Landroid/content/Context;I)I
+PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerSettingEnabled(Landroid/content/Context;I)Z
+PLcom/android/server/GestureLauncherService;->isCameraLaunchEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isCameraLaunchSettingEnabled(Landroid/content/Context;I)Z
+PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isCameraLiftTriggerSettingEnabled(Landroid/content/Context;I)Z
+PLcom/android/server/GestureLauncherService;->isDefaultEmergencyGestureEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isEmergencyGestureEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->isEmergencyGestureSettingEnabled(Landroid/content/Context;I)Z
+PLcom/android/server/GestureLauncherService;->isGestureLauncherEnabled(Landroid/content/res/Resources;)Z
+PLcom/android/server/GestureLauncherService;->onBootPhase(I)V
+PLcom/android/server/GestureLauncherService;->onStart()V
+HPLcom/android/server/GestureLauncherService;->registerContentObservers()V
+PLcom/android/server/GestureLauncherService;->unregisterCameraLaunchGesture()V
+PLcom/android/server/GestureLauncherService;->unregisterCameraLiftTrigger()V
+PLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled()V
+PLcom/android/server/GestureLauncherService;->updateCameraRegistered()V
+PLcom/android/server/GestureLauncherService;->updateEmergencyGestureEnabled()V
+PLcom/android/server/GestureLauncherService;->updateEmergencyGesturePowerButtonCooldownPeriodMs()V
+PLcom/android/server/HardwarePropertiesManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/HsumBootUserInitializer;-><clinit>()V
+PLcom/android/server/HsumBootUserInitializer;->createInstance(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/pm/PackageManagerService;Landroid/content/ContentResolver;Z)Lcom/android/server/HsumBootUserInitializer;
+HSPLcom/android/server/IntentResolver$1;-><init>()V
+HPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/IntentResolver;-><clinit>()V
+HSPLcom/android/server/IntentResolver;-><init>()V
+HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/IntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->buildResolveList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;Ljava/util/List;IJ)V
+HSPLcom/android/server/IntentResolver;->collectFilters([Ljava/lang/Object;Landroid/content/IntentFilter;)Ljava/util/ArrayList;
+HSPLcom/android/server/IntentResolver;->copyFrom(Lcom/android/server/IntentResolver;)V
+HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/IntentResolver;->copyInto(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
+HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z
+PLcom/android/server/IntentResolver;->filterResults(Ljava/util/List;)V
+HSPLcom/android/server/IntentResolver;->filterSet()Ljava/util/Set;
+HSPLcom/android/server/IntentResolver;->findFilters(Landroid/content/IntentFilter;)Ljava/util/ArrayList;
+HPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;
+HPLcom/android/server/IntentResolver;->intentMatchesFilter(Landroid/content/IntentFilter;Landroid/content/Intent;Ljava/lang/String;)Z
+PLcom/android/server/IntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z
+PLcom/android/server/IntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+HPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
+HPLcom/android/server/IntentResolver;->queryIntent(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/content/Intent;Ljava/lang/String;ZIJ)Ljava/util/List;
+HPLcom/android/server/IntentResolver;->queryIntentFromList(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;IJ)Ljava/util/List;
+HSPLcom/android/server/IntentResolver;->register_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
+HSPLcom/android/server/IntentResolver;->register_mime_types(Ljava/lang/Object;Ljava/lang/String;)I
+HPLcom/android/server/IntentResolver;->removeFilter(Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->removeFilterInternal(Ljava/lang/Object;)V
+HPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/IntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/IntentResolver;->unregister_intent_filter(Ljava/lang/Object;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
+HPLcom/android/server/IntentResolver;->unregister_mime_types(Ljava/lang/Object;Ljava/lang/String;)I
+HSPLcom/android/server/IoThread;-><init>()V
+HSPLcom/android/server/IoThread;->ensureThreadLocked()V
+HSPLcom/android/server/IoThread;->get()Lcom/android/server/IoThread;
+PLcom/android/server/IoThread;->getExecutor()Ljava/util/concurrent/Executor;
+HSPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/LocalManagerRegistry;-><clinit>()V
+HSPLcom/android/server/LocalManagerRegistry;->addManager(Ljava/lang/Class;Ljava/lang/Object;)V
+HSPLcom/android/server/LocalManagerRegistry;->getManager(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/LocalManagerRegistry;->getManagerOrThrow(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard$LockInfo;-><init>()V
+HSPLcom/android/server/LockGuard$LockInfo;-><init>(Lcom/android/server/LockGuard$LockInfo-IA;)V
+HSPLcom/android/server/LockGuard;-><clinit>()V
+HSPLcom/android/server/LockGuard;->findOrCreateLockInfo(Ljava/lang/Object;)Lcom/android/server/LockGuard$LockInfo;
+HPLcom/android/server/LockGuard;->guard(I)V
+HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;I)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard;->installLock(Ljava/lang/Object;IZ)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard;->installNewLock(I)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard;->installNewLock(IZ)Ljava/lang/Object;
+HSPLcom/android/server/LockGuard;->lockToString(I)Ljava/lang/String;
+PLcom/android/server/LogMteState$1;-><init>()V
+PLcom/android/server/LogMteState;->register(Landroid/content/Context;)V
+PLcom/android/server/LooperStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/LooperStatsService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/LooperStatsService$Lifecycle;->onStart()V
+PLcom/android/server/LooperStatsService$SettingsObserver;-><init>(Lcom/android/server/LooperStatsService;)V
+PLcom/android/server/LooperStatsService;->-$$Nest$minitFromSettings(Lcom/android/server/LooperStatsService;)V
+PLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;)V
+PLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;Lcom/android/server/LooperStatsService-IA;)V
+PLcom/android/server/LooperStatsService;->initFromSettings()V
+PLcom/android/server/LooperStatsService;->setEnabled(Z)V
+PLcom/android/server/LooperStatsService;->setIgnoreBatteryStatus(Z)V
+PLcom/android/server/LooperStatsService;->setSamplingInterval(I)V
+PLcom/android/server/LooperStatsService;->setTrackScreenInteractive(Z)V
+PLcom/android/server/MmsServiceBroker$1;-><init>(Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/MmsServiceBroker$2;-><init>(Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/MmsServiceBroker$3;-><init>(Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;Lcom/android/server/MmsServiceBroker$BinderService-IA;)V
+PLcom/android/server/MmsServiceBroker;-><clinit>()V
+PLcom/android/server/MmsServiceBroker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/MmsServiceBroker;->onStart()V
+PLcom/android/server/MmsServiceBroker;->systemRunning()V
+PLcom/android/server/MountServiceIdler;-><clinit>()V
+PLcom/android/server/MountServiceIdler;->offsetFromTodayMidnight(II)Ljava/util/Calendar;
+PLcom/android/server/MountServiceIdler;->scheduleIdlePass(Landroid/content/Context;)V
+PLcom/android/server/NetworkScoreService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/NetworkScoreService$2;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Handler;)V
+PLcom/android/server/NetworkScoreService$4;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V
+PLcom/android/server/NetworkScoreService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/NetworkScoreService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/NetworkScoreService$Lifecycle;->onStart()V
+PLcom/android/server/NetworkScoreService$ServiceHandler;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V
+PLcom/android/server/NetworkScoreService;->-$$Nest$sfgetDBG()Z
+PLcom/android/server/NetworkScoreService;-><clinit>()V
+PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V
+PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V
+PLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V
+PLcom/android/server/NetworkScoreService;->clearInternal()V
+HPLcom/android/server/NetworkScoreService;->enforceSystemOrHasScoreNetworks()V
+HPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
+PLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection;
+PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V
+PLcom/android/server/NetworkScoreService;->refreshBinding()V
+PLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V
+PLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V
+PLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V
+PLcom/android/server/NetworkScoreService;->systemReady()V
+PLcom/android/server/NetworkScoreService;->systemRunning()V
+PLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V
+PLcom/android/server/NetworkScorerAppManager$SettingsFacade;-><init>()V
+HPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I
+HPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z
+PLcom/android/server/NetworkScorerAppManager;-><clinit>()V
+PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V
+HPLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
+PLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String;
+HPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I
+HPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String;
+HPLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;
+PLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V
+PLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V
+PLcom/android/server/NetworkScorerAppManager;->updateState()V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda0;->uptimeMillis()J
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda5;->run()V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda6;->run()V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda8;->run()V
+HSPLcom/android/server/PackageWatchdog$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/PackageWatchdog$BootThreshold;-><init>(Lcom/android/server/PackageWatchdog;IJ)V
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->getCount()I
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->getMitigationStart()J
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->getStart()J
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->incrementAndTest()Z
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->readMitigationCountFromMetadataIfNecessary()V
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->setCount(I)V
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;-><init>(Ljava/lang/String;Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;->getMonitoredPackages()Landroid/util/ArrayMap;
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;->read(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/PackageWatchdog;)Lcom/android/server/PackageWatchdog$ObserverInternal;
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;->updatePackagesLocked(Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;->writeLocked(Lcom/android/modules/utils/TypedXmlSerializer;)Z
+PLcom/android/server/PackageWatchdog;->$r8$lambda$4H7cBnuwvCSeT91m1YdCwvg43e8(Lcom/android/server/PackageWatchdog;Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog;->$r8$lambda$HDOKg5GmSwaFTU2vt9rf-KyK8Hk(Lcom/android/server/PackageWatchdog;)Z
+PLcom/android/server/PackageWatchdog;->$r8$lambda$gJ37k2zmlFG8nBixsI_xMYfaYp0(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/PackageWatchdog;->$r8$lambda$yDaKFi4XRxb3OsEfqTdgaQOn8Hg(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/PackageWatchdog;->-$$Nest$fgetmSystemClock(Lcom/android/server/PackageWatchdog;)Lcom/android/server/PackageWatchdog$SystemClock;
+HSPLcom/android/server/PackageWatchdog;-><clinit>()V
+HSPLcom/android/server/PackageWatchdog;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/PackageWatchdog;-><init>(Landroid/content/Context;Landroid/util/AtomicFile;Landroid/os/Handler;Landroid/os/Handler;Lcom/android/server/ExplicitHealthCheckController;Landroid/net/ConnectivityModuleConnector;Lcom/android/server/PackageWatchdog$SystemClock;)V
+HSPLcom/android/server/PackageWatchdog;->getInstance(Landroid/content/Context;)Lcom/android/server/PackageWatchdog;
+HSPLcom/android/server/PackageWatchdog;->getNextStateSyncMillisLocked()J
+PLcom/android/server/PackageWatchdog;->getPackagesPendingHealthChecksLocked()Ljava/util/Set;
+PLcom/android/server/PackageWatchdog;->lambda$onPackagesReady$1(Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog;->loadFromFile()V
+HSPLcom/android/server/PackageWatchdog;->noteBoot()V
+PLcom/android/server/PackageWatchdog;->onPackagesReady()V
+PLcom/android/server/PackageWatchdog;->onSupportedPackages(Ljava/util/List;)V
+PLcom/android/server/PackageWatchdog;->onSyncRequestNotified()V
+HSPLcom/android/server/PackageWatchdog;->pruneObserversLocked()V
+PLcom/android/server/PackageWatchdog;->registerConnectivityModuleHealthListener()V
+HSPLcom/android/server/PackageWatchdog;->registerHealthObserver(Lcom/android/server/PackageWatchdog$PackageHealthObserver;)V
+HSPLcom/android/server/PackageWatchdog;->saveToFile()Z
+HSPLcom/android/server/PackageWatchdog;->saveToFileAsync()V
+HSPLcom/android/server/PackageWatchdog;->scheduleNextSyncStateLocked()V
+PLcom/android/server/PackageWatchdog;->setExplicitHealthCheckEnabled(Z)V
+PLcom/android/server/PackageWatchdog;->setPropertyChangedListenerLocked()V
+PLcom/android/server/PackageWatchdog;->syncRequests()V
+HSPLcom/android/server/PackageWatchdog;->syncRequestsAsync()V
+HSPLcom/android/server/PackageWatchdog;->syncState(Ljava/lang/String;)V
+PLcom/android/server/PackageWatchdog;->updateConfigs()V
+PLcom/android/server/PermissionThread;-><clinit>()V
+PLcom/android/server/PermissionThread;-><init>()V
+PLcom/android/server/PermissionThread;->ensureThreadLocked()V
+PLcom/android/server/PermissionThread;->getHandler()Landroid/os/Handler;
+PLcom/android/server/PinnerService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/PinnerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/PinnerService$1;-><init>(Lcom/android/server/PinnerService;)V
+PLcom/android/server/PinnerService$2;-><init>(Lcom/android/server/PinnerService;)V
+PLcom/android/server/PinnerService$3;-><init>(Lcom/android/server/PinnerService;Landroid/os/Handler;Landroid/net/Uri;)V
+PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/PinnerService$4$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/PinnerService$4$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/PinnerService$4;->$r8$lambda$JKP9FOe5dDnst80l_XkFWpt_l38(Lcom/android/server/PinnerService;I)V
+PLcom/android/server/PinnerService$4;->$r8$lambda$g8CC-koera5q3TVS1KdRY9fBXII(Lcom/android/server/PinnerService;I)V
+PLcom/android/server/PinnerService$4;-><init>(Lcom/android/server/PinnerService;)V
+HPLcom/android/server/PinnerService$4;->onUidActive(I)V
+HPLcom/android/server/PinnerService$4;->onUidGone(IZ)V
+PLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;)V
+PLcom/android/server/PinnerService$Injector;-><init>()V
+PLcom/android/server/PinnerService$Injector;->getDeviceConfigInterface()Landroid/provider/DeviceConfigInterface;
+PLcom/android/server/PinnerService$Injector;->pinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
+PLcom/android/server/PinnerService$Injector;->publishBinderService(Lcom/android/server/PinnerService;Landroid/os/Binder;)V
+PLcom/android/server/PinnerService$PinRange;-><init>()V
+PLcom/android/server/PinnerService$PinRangeSource;-><init>()V
+PLcom/android/server/PinnerService$PinRangeSource;-><init>(Lcom/android/server/PinnerService$PinRangeSource-IA;)V
+PLcom/android/server/PinnerService$PinRangeSourceStatic;-><init>(II)V
+PLcom/android/server/PinnerService$PinRangeSourceStatic;->read(Lcom/android/server/PinnerService$PinRange;)Z
+PLcom/android/server/PinnerService$PinnedFile;-><init>(JILjava/lang/String;I)V
+PLcom/android/server/PinnerService$PinnerHandler;-><init>(Lcom/android/server/PinnerService;Landroid/os/Looper;)V
+PLcom/android/server/PinnerService$PinnerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/PinnerService;->$r8$lambda$Lg5HhffEN45yR2JlIq0obZpr-Xc(Lcom/android/server/PinnerService;I)V
+HPLcom/android/server/PinnerService;->-$$Nest$fgetmPinnerHandler(Lcom/android/server/PinnerService;)Lcom/android/server/PinnerService$PinnerHandler;
+PLcom/android/server/PinnerService;->-$$Nest$mhandlePinOnStart(Lcom/android/server/PinnerService;)V
+PLcom/android/server/PinnerService;->-$$Nest$mhandleUidActive(Lcom/android/server/PinnerService;I)V
+PLcom/android/server/PinnerService;->-$$Nest$mhandleUidGone(Lcom/android/server/PinnerService;I)V
+PLcom/android/server/PinnerService;->-$$Nest$smpinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
+PLcom/android/server/PinnerService;-><clinit>()V
+PLcom/android/server/PinnerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/PinnerService;-><init>(Landroid/content/Context;Lcom/android/server/PinnerService$Injector;)V
+PLcom/android/server/PinnerService;->clamp(III)I
+PLcom/android/server/PinnerService;->createPinKeys()Landroid/util/ArraySet;
+PLcom/android/server/PinnerService;->getPinKeys()Landroid/util/ArraySet;
+PLcom/android/server/PinnerService;->handlePinOnStart()V
+PLcom/android/server/PinnerService;->handleUidActive(I)V
+HPLcom/android/server/PinnerService;->handleUidGone(I)V
+PLcom/android/server/PinnerService;->onBootPhase(I)V
+PLcom/android/server/PinnerService;->onStart()V
+PLcom/android/server/PinnerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/PinnerService;->pinApps(I)V
+PLcom/android/server/PinnerService;->pinAppsInternal(IZ)V
+PLcom/android/server/PinnerService;->pinFileInternal(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
+HPLcom/android/server/PinnerService;->pinFileRanges(Ljava/lang/String;ILcom/android/server/PinnerService$PinRangeSource;)Lcom/android/server/PinnerService$PinnedFile;
+HPLcom/android/server/PinnerService;->pinOptimizedDexDependencies(Lcom/android/server/PinnerService$PinnedFile;ILandroid/content/pm/ApplicationInfo;)I
+PLcom/android/server/PinnerService;->refreshPinAnonConfig()V
+PLcom/android/server/PinnerService;->registerUidListener()V
+PLcom/android/server/PinnerService;->registerUserSetupCompleteListener()V
+PLcom/android/server/PinnerService;->safeClose(Ljava/io/Closeable;)V
+PLcom/android/server/PinnerService;->safeClose(Ljava/io/FileDescriptor;)V
+PLcom/android/server/PinnerService;->sendPinAppsMessage(I)V
+PLcom/android/server/PinnerService;->unpinFile(Ljava/lang/String;)V
+HPLcom/android/server/PinnerService;->updateActiveState(IZ)V
+PLcom/android/server/RescueParty$RescuePartyMonitorCallback;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/RescueParty$RescuePartyMonitorCallback;->onDeviceConfigAccess(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/RescueParty$RescuePartyObserver;->-$$Nest$mrecordDeviceConfigAccess(Lcom/android/server/RescueParty$RescuePartyObserver;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/RescueParty$RescuePartyObserver;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->getInstance(Landroid/content/Context;)Lcom/android/server/RescueParty$RescuePartyObserver;
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->getName()Ljava/lang/String;
+HPLcom/android/server/RescueParty$RescuePartyObserver;->recordDeviceConfigAccess(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/RescueParty;-><clinit>()V
+PLcom/android/server/RescueParty;->handleNativeRescuePartyResets()V
+PLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty;->registerHealthObserver(Landroid/content/Context;)V
+PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda1;-><init>(Ljava/io/StringWriter;)V
+PLcom/android/server/ResourcePressureUtil$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/ResourcePressureUtil;->$r8$lambda$YqRwUJ2GaBiqQtdp5zJtNgfVUt0(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/ResourcePressureUtil;-><clinit>()V
+PLcom/android/server/ResourcePressureUtil;->currentPsiState()Ljava/lang/String;
+PLcom/android/server/ResourcePressureUtil;->readResourcePsiState(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/RuntimeService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SecurityStateManagerService;-><clinit>()V
+PLcom/android/server/SecurityStateManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SensorNotificationService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SensorNotificationService;->onBootPhase(I)V
+PLcom/android/server/SensorNotificationService;->onStart()V
+HSPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V
+HSPLcom/android/server/ServiceThread;->makeSharedHandler(Landroid/os/Looper;)Landroid/os/Handler;
+HSPLcom/android/server/ServiceThread;->run()V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/StorageManagerService$1;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$2;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Handler;)V
+PLcom/android/server/StorageManagerService$3;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$3;->onVolumeCreated(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/StorageManagerService$3;->onVolumeDestroyed(Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$3;->onVolumeInternalPathChanged(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$3;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/StorageManagerService$3;->onVolumeStateChanged(Ljava/lang/String;II)V
+PLcom/android/server/StorageManagerService$4;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$5;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$6;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$7;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService$7;->onVolumeChecking(Ljava/io/FileDescriptor;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/StorageManagerService$Callbacks;->-$$Nest$mnotifyStorageStateChanged(Lcom/android/server/StorageManagerService$Callbacks;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$Callbacks;->-$$Nest$mnotifyVolumeStateChanged(Lcom/android/server/StorageManagerService$Callbacks;Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService$Callbacks;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/StorageManagerService$Callbacks;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/StorageManagerService$Callbacks;->invokeCallback(Landroid/os/storage/IStorageEventListener;ILcom/android/internal/os/SomeArgs;)V
+PLcom/android/server/StorageManagerService$Callbacks;->notifyStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$Callbacks;->notifyVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService$Callbacks;->register(Landroid/os/storage/IStorageEventListener;)V
+PLcom/android/server/StorageManagerService$ExternalStorageServiceAnrController;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$ExternalStorageServiceAnrController;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$ExternalStorageServiceAnrController-IA;)V
+PLcom/android/server/StorageManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onStart()V
+PLcom/android/server/StorageManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/StorageManagerService$ObbActionHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$StorageManagerInternalImpl-IA;)V
+HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z
+HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorageAccess(ILjava/lang/String;)Z
+HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasLegacyExternalStorage(I)Z
+HPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->isExternalStorageService(I)Z
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->markCeStoragePrepared(I)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onAppOpsChanged(IILjava/lang/String;II)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onReset(Landroid/os/IVold;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->registerCloudProviderChangeListener(Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
+PLcom/android/server/StorageManagerService$StorageManagerServiceHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;-><init>()V
+PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->append(I)V
+HPLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->contains(I)Z
+PLcom/android/server/StorageManagerService$WatchedUnlockedUsers;->invalidateIsUserUnlockedCache()V
+PLcom/android/server/StorageManagerService;->$r8$lambda$3W1bgg_uBq6o73zqwNdqgsQVYZE(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmCeStoragePreparedUsers(Lcom/android/server/StorageManagerService;)Ljava/util/Set;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmContext(Lcom/android/server/StorageManagerService;)Landroid/content/Context;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmDisks(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/StorageManagerService;)Landroid/os/Handler;
+HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmIAppOpsService(Lcom/android/server/StorageManagerService;)Lcom/android/internal/app/IAppOpsService;
+HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmIPackageManager(Lcom/android/server/StorageManagerService;)Landroid/content/pm/IPackageManager;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmLock(Lcom/android/server/StorageManagerService;)Ljava/lang/Object;
+HPLcom/android/server/StorageManagerService;->-$$Nest$fgetmMediaStoreAuthorityAppId(Lcom/android/server/StorageManagerService;)I
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmStorageSessionController(Lcom/android/server/StorageManagerService;)Lcom/android/server/storage/StorageSessionController;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmUidsWithLegacyExternalStorage(Lcom/android/server/StorageManagerService;)Ljava/util/Set;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmVold(Lcom/android/server/StorageManagerService;)Landroid/os/IVold;
+PLcom/android/server/StorageManagerService;->-$$Nest$fgetmVolumes(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/StorageManagerService;->-$$Nest$mbootCompleted(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mcompleteUnlockUser(Lcom/android/server/StorageManagerService;I)V
+HPLcom/android/server/StorageManagerService;->-$$Nest$mgetMountModeInternal(Lcom/android/server/StorageManagerService;ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->-$$Nest$mhandleBootCompleted(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mhandleDaemonConnected(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mhandleSystemReady(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$misMountDisallowed(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/StorageManagerService;->-$$Nest$mmount(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mnotifyCloudMediaProviderChangedAsync(Lcom/android/server/StorageManagerService;Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$monUserUnlocking(Lcom/android/server/StorageManagerService;I)V
+PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeCreatedLocked(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeStateChangedAsync(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService;->-$$Nest$monVolumeStateChangedLocked(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;I)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mservicesReady(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$msnapshotAndMonitorLegacyStorageAppOp(Lcom/android/server/StorageManagerService;Landroid/os/UserHandle;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$mstart(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->-$$Nest$msystemReady(Lcom/android/server/StorageManagerService;)V
+HPLcom/android/server/StorageManagerService;->-$$Nest$sfgetLOCAL_LOGV()Z
+PLcom/android/server/StorageManagerService;-><clinit>()V
+HPLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V
+PLcom/android/server/StorageManagerService;->bootCompleted()V
+PLcom/android/server/StorageManagerService;->commitChanges()V
+PLcom/android/server/StorageManagerService;->completeUnlockUser(I)V
+PLcom/android/server/StorageManagerService;->configureTranscoding()V
+PLcom/android/server/StorageManagerService;->connectStoraged()V
+PLcom/android/server/StorageManagerService;->connectVold()V
+PLcom/android/server/StorageManagerService;->enforceExternalStorageService()V
+PLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService;->extendWatchdogTimeout(Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String;
+HPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->getProviderInfo(Ljava/lang/String;)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;
+HPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
+PLcom/android/server/StorageManagerService;->handleBootCompleted()V
+PLcom/android/server/StorageManagerService;->handleDaemonConnected()V
+PLcom/android/server/StorageManagerService;->handleSystemReady()V
+PLcom/android/server/StorageManagerService;->isBroadcastWorthy(Landroid/os/storage/VolumeInfo;)Z
+HPLcom/android/server/StorageManagerService;->isCeStorageUnlocked(I)Z
+PLcom/android/server/StorageManagerService;->isHevcDecoderSupported()Z
+PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z
+HPLcom/android/server/StorageManagerService;->isSystemUnlocked(I)Z
+HPLcom/android/server/StorageManagerService;->isUidOwnerOfPackageOrSystem(Ljava/lang/String;I)Z
+PLcom/android/server/StorageManagerService;->lambda$resetIfBootedAndConnected$0()V
+PLcom/android/server/StorageManagerService;->lastMaintenance()J
+PLcom/android/server/StorageManagerService;->maybeLogMediaMount(Landroid/os/storage/VolumeInfo;I)V
+HPLcom/android/server/StorageManagerService;->monitor()V
+PLcom/android/server/StorageManagerService;->mount(Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->needsCheckpoint()Z
+PLcom/android/server/StorageManagerService;->notifyCloudMediaProviderChangedAsync(Landroid/os/storage/StorageManagerInternal$CloudProviderChangeListener;)V
+PLcom/android/server/StorageManagerService;->onDaemonConnected()V
+PLcom/android/server/StorageManagerService;->onKeyguardStateChanged(Z)V
+PLcom/android/server/StorageManagerService;->onUserUnlocking(I)V
+PLcom/android/server/StorageManagerService;->onVolumeCreatedLocked(Landroid/os/storage/VolumeInfo;)V
+HPLcom/android/server/StorageManagerService;->onVolumeStateChangedAsync(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService;->onVolumeStateChangedLocked(Landroid/os/storage/VolumeInfo;I)V
+PLcom/android/server/StorageManagerService;->prepareSmartIdleMaint()Z
+PLcom/android/server/StorageManagerService;->prepareUserStorage(Ljava/lang/String;II)V
+PLcom/android/server/StorageManagerService;->prepareUserStorageIfNeeded(Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->prepareUserStorageInternal(Ljava/lang/String;II)V
+PLcom/android/server/StorageManagerService;->readSettingsLocked()V
+PLcom/android/server/StorageManagerService;->refreshZramSettings()V
+PLcom/android/server/StorageManagerService;->registerListener(Landroid/os/storage/IStorageEventListener;)V
+HPLcom/android/server/StorageManagerService;->resetIfBootedAndConnected()V
+PLcom/android/server/StorageManagerService;->restoreCeUnlockedUsers()V
+PLcom/android/server/StorageManagerService;->restoreSystemUnlockedUsers(Landroid/os/UserManager;Ljava/util/List;[I)V
+PLcom/android/server/StorageManagerService;->servicesReady()V
+PLcom/android/server/StorageManagerService;->setCloudMediaProvider(Ljava/lang/String;)V
+HPLcom/android/server/StorageManagerService;->snapshotAndMonitorLegacyStorageAppOp(Landroid/os/UserHandle;)V
+PLcom/android/server/StorageManagerService;->start()V
+PLcom/android/server/StorageManagerService;->supportsCheckpoint()Z
+PLcom/android/server/StorageManagerService;->systemReady()V
+PLcom/android/server/StorageManagerService;->unlockCeStorage(I[B)V
+HPLcom/android/server/StorageManagerService;->updateLegacyStorageApps(Ljava/lang/String;IZ)V
+PLcom/android/server/SystemClockTime;-><clinit>()V
+PLcom/android/server/SystemClockTime;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/SystemClockTime;->getCurrentTimeMillis()J
+PLcom/android/server/SystemClockTime;->initializeIfRequired()V
+HSPLcom/android/server/SystemConfig$PermissionEntry;-><init>(Ljava/lang/String;Z)V
+HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/SystemConfig;-><clinit>()V
+HSPLcom/android/server/SystemConfig;-><init>()V
+HSPLcom/android/server/SystemConfig;->addFeature(Ljava/lang/String;I)V
+HSPLcom/android/server/SystemConfig;->enableIpSecTunnelMigrationOnVsrUAndAbove()V
+PLcom/android/server/SystemConfig;->getAllowImplicitBroadcasts()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getAllowInDataUsageSave()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getAllowInPowerSave()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getAllowInPowerSaveExceptIdle()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getAllowUnthrottledLocation()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getAllowedAssociations()Landroid/util/ArrayMap;
+HSPLcom/android/server/SystemConfig;->getAndClearPackageToUserTypeBlacklist()Landroid/util/ArrayMap;
+HSPLcom/android/server/SystemConfig;->getAndClearPackageToUserTypeWhitelist()Landroid/util/ArrayMap;
+HSPLcom/android/server/SystemConfig;->getApexModuleNameFromFilePath(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/lang/String;
+HSPLcom/android/server/SystemConfig;->getAppDataIsolationWhitelistedApps()Landroid/util/ArraySet;
+HSPLcom/android/server/SystemConfig;->getAvailableFeatures()Landroid/util/ArrayMap;
+PLcom/android/server/SystemConfig;->getBackupTransportWhitelist()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getBgRestrictionExemption()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getBugreportWhitelistedPackages()Landroid/util/ArraySet;
+HPLcom/android/server/SystemConfig;->getComponentsEnabledStates(Ljava/lang/String;)Landroid/util/ArrayMap;
+PLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierApps()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierAssociatedApps()Landroid/util/ArrayMap;
+PLcom/android/server/SystemConfig;->getEnhancedConfirmationTrustedInstallers()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getEnhancedConfirmationTrustedPackages()Landroid/util/ArraySet;
+HPLcom/android/server/SystemConfig;->getGlobalGids()[I
+PLcom/android/server/SystemConfig;->getInitialNonStoppedSystemPackages()Ljava/util/Set;
+HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig;
+HPLcom/android/server/SystemConfig;->getLinkedApps()Landroid/util/ArraySet;
+PLcom/android/server/SystemConfig;->getNamedActors()Ljava/util/Map;
+PLcom/android/server/SystemConfig;->getOverlayConfigSignaturePackage()Ljava/lang/String;
+HSPLcom/android/server/SystemConfig;->getPermissionAllowlist()Lcom/android/server/pm/permission/PermissionAllowlist;
+HSPLcom/android/server/SystemConfig;->getPermissions()Landroid/util/ArrayMap;
+PLcom/android/server/SystemConfig;->getPreinstallPackagesWithStrictSignatureCheck()Ljava/util/Set;
+HSPLcom/android/server/SystemConfig;->getSharedLibraries()Landroid/util/ArrayMap;
+HSPLcom/android/server/SystemConfig;->getSplitPermissions()Ljava/util/ArrayList;
+HPLcom/android/server/SystemConfig;->getSystemAppUpdateOwnerPackageName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/SystemConfig;->getSystemPermissions()Landroid/util/SparseArray;
+HSPLcom/android/server/SystemConfig;->isErofsSupported()Z
+HSPLcom/android/server/SystemConfig;->isSystemProcess()Z
+HSPLcom/android/server/SystemConfig;->readAllPermissions()V
+HSPLcom/android/server/SystemConfig;->readApexPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;Ljava/nio/file/Path;)V
+HSPLcom/android/server/SystemConfig;->readInstallInUserType(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;Ljava/util/Map;)V
+HSPLcom/android/server/SystemConfig;->readPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
+HSPLcom/android/server/SystemConfig;->readPermissionAllowlist(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Ljava/lang/String;)V
+HSPLcom/android/server/SystemConfig;->readPermissions(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
+HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;I)V
+HSPLcom/android/server/SystemConfig;->readPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/SystemConfig;->readPublicLibrariesListFile(Ljava/io/File;)V
+HSPLcom/android/server/SystemConfig;->readPublicNativeLibrariesList()V
+HSPLcom/android/server/SystemConfig;->readSplitPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;)V
+PLcom/android/server/SystemConfigService$1$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/SystemConfigService$1;-><init>(Lcom/android/server/SystemConfigService;)V
+PLcom/android/server/SystemConfigService$1;->getDisabledUntilUsedPreinstalledCarrierApps()Ljava/util/List;
+PLcom/android/server/SystemConfigService$1;->getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries()Ljava/util/Map;
+PLcom/android/server/SystemConfigService$1;->getEnhancedConfirmationTrustedInstallers()Ljava/util/List;
+PLcom/android/server/SystemConfigService$1;->getEnhancedConfirmationTrustedPackages()Ljava/util/List;
+PLcom/android/server/SystemConfigService$1;->getSystemPermissionUids(Ljava/lang/String;)[I
+PLcom/android/server/SystemConfigService;->-$$Nest$fgetmContext(Lcom/android/server/SystemConfigService;)Landroid/content/Context;
+PLcom/android/server/SystemConfigService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemConfigService;->onStart()V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda0;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda1;-><init>(III)V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/SystemServer$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/SystemServer$$ExternalSyntheticLambda8;->onModuleServiceConnected(Landroid/os/IBinder;)V
+PLcom/android/server/SystemServer$1;-><init>(Lcom/android/server/SystemServer;)V
+PLcom/android/server/SystemServer$1;->onTransactionError(IIII)V
+HSPLcom/android/server/SystemServer$SystemServerDumper;->-$$Nest$maddDumpable(Lcom/android/server/SystemServer$SystemServerDumper;Landroid/util/Dumpable;)V
+HSPLcom/android/server/SystemServer$SystemServerDumper;-><init>(Lcom/android/server/SystemServer;)V
+HSPLcom/android/server/SystemServer$SystemServerDumper;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/SystemServer$SystemServerDumper-IA;)V
+HSPLcom/android/server/SystemServer$SystemServerDumper;->addDumpable(Landroid/util/Dumpable;)V
+PLcom/android/server/SystemServer;->$r8$lambda$0ek3wX68xKbgZMUwZfiBRkUNTFs()V
+HSPLcom/android/server/SystemServer;->$r8$lambda$2PdG6KuU0ZTvilD515PGrttj0sk(III)V
+PLcom/android/server/SystemServer;->$r8$lambda$CJLFlg8wnqihjN12r-2Qq_1qSd8()V
+PLcom/android/server/SystemServer;->$r8$lambda$CKXj3ds6gqFm1f6gBL5oAqAHviY(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
+PLcom/android/server/SystemServer;->$r8$lambda$R8_YVQM1rsXoSgswlNNq9SsFhyw(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/SystemServer;->$r8$lambda$SEp7M2CWq7mEDzo8pfMdSQNkGv4()V
+PLcom/android/server/SystemServer;->$r8$lambda$W9fBdZlq2B12i1BBxZIhG9kbSqM(Landroid/os/IBinder;)V
+PLcom/android/server/SystemServer;->-$$Nest$fgetmActivityManagerService(Lcom/android/server/SystemServer;)Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/SystemServer;-><clinit>()V
+HSPLcom/android/server/SystemServer;-><init>()V
+HSPLcom/android/server/SystemServer;->createSystemContext()V
+PLcom/android/server/SystemServer;->deviceHasConfigString(Landroid/content/Context;I)Z
+HSPLcom/android/server/SystemServer;->getDumpableName()Ljava/lang/String;
+HSPLcom/android/server/SystemServer;->getMaxFd()I
+PLcom/android/server/SystemServer;->handleEarlySystemWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
+PLcom/android/server/SystemServer;->isFirstBootOrUpgrade()Z
+HSPLcom/android/server/SystemServer;->lambda$spawnFdLeakCheckThread$0(III)V
+PLcom/android/server/SystemServer;->lambda$startOtherServices$1()V
+PLcom/android/server/SystemServer;->lambda$startOtherServices$2()V
+PLcom/android/server/SystemServer;->lambda$startOtherServices$3()V
+PLcom/android/server/SystemServer;->lambda$startOtherServices$5(Landroid/os/IBinder;)V
+HPLcom/android/server/SystemServer;->lambda$startOtherServices$6(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;ZLandroid/content/Context;ZLandroid/net/ConnectivityManager;Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/VpnManagerService;Lcom/android/server/VcnManagementService;Lcom/android/server/HsumBootUserInitializer;Lcom/android/server/CountryDetectorService;Lcom/android/server/timedetector/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/SystemServer;->main([Ljava/lang/String;)V
+HSPLcom/android/server/SystemServer;->performPendingShutdown()V
+HSPLcom/android/server/SystemServer;->run()V
+HSPLcom/android/server/SystemServer;->spawnFdLeakCheckThread()V
+PLcom/android/server/SystemServer;->startApexServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startAttentionService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startBootstrapServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startContentCaptureService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HPLcom/android/server/SystemServer;->startCoreServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HPLcom/android/server/SystemServer;->startOtherServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startRotationResolverService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startSystemCaptionsManagerService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/SystemServer;->startTextToSpeechManagerService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->startWearableSensingService(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServer;->updateWatchdogTimeout(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+PLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda0;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServerInitThreadPool$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/SystemServerInitThreadPool;->$r8$lambda$KBkrFsHiqcxWyjNRg1WxRI4WNHA(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServerInitThreadPool;-><clinit>()V
+HSPLcom/android/server/SystemServerInitThreadPool;-><init>()V
+HSPLcom/android/server/SystemServerInitThreadPool;->getDumpableName()Ljava/lang/String;
+HSPLcom/android/server/SystemServerInitThreadPool;->lambda$submitTask$0(Ljava/lang/String;Ljava/lang/Runnable;)V
+PLcom/android/server/SystemServerInitThreadPool;->shutdown()V
+HSPLcom/android/server/SystemServerInitThreadPool;->start()Lcom/android/server/SystemServerInitThreadPool;
+HSPLcom/android/server/SystemServerInitThreadPool;->submit(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
+HSPLcom/android/server/SystemServerInitThreadPool;->submitTask(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/util/concurrent/Future;
+PLcom/android/server/SystemService$TargetUser;-><init>(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/SystemService$TargetUser;->getUserHandle()Landroid/os/UserHandle;
+PLcom/android/server/SystemService$TargetUser;->getUserIdentifier()I
+PLcom/android/server/SystemService$TargetUser;->isFull()Z
+PLcom/android/server/SystemService$TargetUser;->isPreCreated()Z
+PLcom/android/server/SystemService$TargetUser;->toString()Ljava/lang/String;
+PLcom/android/server/SystemService$UserCompletedEventType;-><init>(I)V
+HPLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserStarting()Z
+PLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserSwitching()Z
+HPLcom/android/server/SystemService$UserCompletedEventType;->includesOnUserUnlocked()Z
+HPLcom/android/server/SystemService$UserCompletedEventType;->toString()Ljava/lang/String;
+HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder;
+HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context;
+PLcom/android/server/SystemService;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
+PLcom/android/server/SystemService;->getManager()Lcom/android/server/SystemServiceManager;
+PLcom/android/server/SystemService;->isSafeMode()Z
+PLcom/android/server/SystemService;->isUserSupported(Lcom/android/server/SystemService$TargetUser;)Z
+HSPLcom/android/server/SystemService;->onBootPhase(I)V
+PLcom/android/server/SystemService;->onUserCompletedEvent(Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
+PLcom/android/server/SystemService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/SystemService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/SystemService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;)V
+HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;Z)V
+HSPLcom/android/server/SystemService;->publishBinderService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
+HSPLcom/android/server/SystemService;->publishLocalService(Ljava/lang/Class;Ljava/lang/Object;)V
+PLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/SystemServiceManager;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
+HPLcom/android/server/SystemServiceManager$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/SystemServiceManager;->$r8$lambda$-x2iNvPr7Y3U1ISY6dmkmFA351E(Lcom/android/server/SystemServiceManager;Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
+HSPLcom/android/server/SystemServiceManager;-><clinit>()V
+HSPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/SystemServiceManager;->ensureSystemDir()Ljava/io/File;
+HSPLcom/android/server/SystemServiceManager;->getDumpableName()Ljava/lang/String;
+PLcom/android/server/SystemServiceManager;->getOnUserCompletedEventRunnable(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)Ljava/lang/Runnable;
+PLcom/android/server/SystemServiceManager;->getTargetUser(I)Lcom/android/server/SystemService$TargetUser;
+PLcom/android/server/SystemServiceManager;->isBootCompleted()Z
+HPLcom/android/server/SystemServiceManager;->isJarInTestApex(Ljava/lang/String;)Z
+PLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z
+PLcom/android/server/SystemServiceManager;->isSafeMode()Z
+HPLcom/android/server/SystemServiceManager;->lambda$getOnUserCompletedEventRunnable$1(Lcom/android/server/utils/TimingsTraceAndSlog;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;Ljava/lang/String;Lcom/android/server/SystemService;)V
+HSPLcom/android/server/SystemServiceManager;->loadClassFromLoader(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
+PLcom/android/server/SystemServiceManager;->newTargetUser(I)Lcom/android/server/SystemService$TargetUser;
+PLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
+PLcom/android/server/SystemServiceManager;->onUser(Ljava/lang/String;I)V
+PLcom/android/server/SystemServiceManager;->onUserCompletedEvent(II)V
+PLcom/android/server/SystemServiceManager;->onUserStarting(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
+PLcom/android/server/SystemServiceManager;->onUserUnlocked(I)V
+PLcom/android/server/SystemServiceManager;->onUserUnlocking(I)V
+PLcom/android/server/SystemServiceManager;->preSystemReady()V
+PLcom/android/server/SystemServiceManager;->sealStartedServices()V
+PLcom/android/server/SystemServiceManager;->setSafeMode(Z)V
+HSPLcom/android/server/SystemServiceManager;->setStartInfo(ZJJ)V
+HSPLcom/android/server/SystemServiceManager;->startBootPhase(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
+HSPLcom/android/server/SystemServiceManager;->startService(Lcom/android/server/SystemService;)V
+HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/Class;)Lcom/android/server/SystemService;
+HSPLcom/android/server/SystemServiceManager;->startService(Ljava/lang/String;)Lcom/android/server/SystemService;
+PLcom/android/server/SystemServiceManager;->startServiceFromJar(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/SystemService;
+PLcom/android/server/SystemServiceManager;->updateOtherServicesStartIndex()V
+PLcom/android/server/SystemServiceManager;->useThreadPool(ILjava/lang/String;)Z
+HPLcom/android/server/SystemServiceManager;->useThreadPoolForService(Ljava/lang/String;I)Z
+HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V
+HSPLcom/android/server/SystemTimeZone;-><clinit>()V
+PLcom/android/server/SystemTimeZone;->addDebugLogEntry(Ljava/lang/String;)V
+HSPLcom/android/server/SystemTimeZone;->initializeTimeZoneSettingsIfRequired()V
+HSPLcom/android/server/SystemTimeZone;->isValidTimeZoneId(Ljava/lang/String;)Z
+PLcom/android/server/SystemUpdateManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemUpdateManagerService;->loadSystemUpdateInfoLocked()Landroid/os/Bundle;
+PLcom/android/server/SystemUpdateManagerService;->removeInfoFileAndGetDefaultInfoBundleLocked()Landroid/os/Bundle;
+PLcom/android/server/TelephonyRegistry$1;-><init>(Lcom/android/server/TelephonyRegistry;)V
+PLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/TelephonyRegistry$2;-><init>(Lcom/android/server/TelephonyRegistry;)V
+PLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda0;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda3;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda6;-><init>()V
+HPLcom/android/server/TelephonyRegistry$ConfigurationProvider$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$C6OjoOM6QjWKuvRgmR-CDyixxwM(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
+HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$fiLSZuDgZl0ukk9Pd8o7udet0Lc()Ljava/lang/Integer;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->$r8$lambda$ia5Kj1BuRYcdkS9zbfBdAW8KTno(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;-><init>()V
+HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->getRegistrationLimit()I
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->isActiveDataSubIdReadPhoneStateEnforcedInPlatformCompat(Ljava/lang/String;Landroid/os/UserHandle;)Z
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->isCallStateReadPhoneStateEnforcedInPlatformCompat(Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$getRegistrationLimit$0()Ljava/lang/Integer;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$isActiveDataSubIdReadPhoneStateEnforcedInPlatformCompat$3(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
+PLcom/android/server/TelephonyRegistry$ConfigurationProvider;->lambda$isCallStateReadPhoneStateEnforcedInPlatformCompat$2(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/lang/Boolean;
+HPLcom/android/server/TelephonyRegistry$Record;-><init>()V
+PLcom/android/server/TelephonyRegistry$Record;-><init>(Lcom/android/server/TelephonyRegistry$Record-IA;)V
+PLcom/android/server/TelephonyRegistry$Record;->matchCarrierConfigChangeListener()Z
+PLcom/android/server/TelephonyRegistry$Record;->matchCarrierPrivilegesCallback()Z
+PLcom/android/server/TelephonyRegistry$Record;->matchTelephonyCallbackEvent(I)Z
+PLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;-><init>(Lcom/android/server/TelephonyRegistry;Landroid/os/IBinder;)V
+PLcom/android/server/TelephonyRegistry;->-$$Nest$fgetmCellIdentity(Lcom/android/server/TelephonyRegistry;)[Landroid/telephony/CellIdentity;
+PLcom/android/server/TelephonyRegistry;->-$$Nest$fgetmHandler(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler;
+PLcom/android/server/TelephonyRegistry;->-$$Nest$mgetTelephonyManager(Lcom/android/server/TelephonyRegistry;)Landroid/telephony/TelephonyManager;
+PLcom/android/server/TelephonyRegistry;->-$$Nest$mnotifyCellLocationForSubscriber(Lcom/android/server/TelephonyRegistry;ILandroid/telephony/CellIdentity;Z)V
+PLcom/android/server/TelephonyRegistry;-><clinit>()V
+HPLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;Lcom/android/server/TelephonyRegistry$ConfigurationProvider;)V
+HPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;IIZ)Lcom/android/server/TelephonyRegistry$Record;
+HPLcom/android/server/TelephonyRegistry;->addCarrierConfigChangeListener(Lcom/android/internal/telephony/ICarrierConfigChangeListener;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->addCarrierPrivilegesCallback(ILcom/android/internal/telephony/ICarrierPrivilegesCallback;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->addOnOpportunisticSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+HPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+PLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V
+PLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V
+HPLcom/android/server/TelephonyRegistry;->checkListenerPermission(Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z
+PLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z
+PLcom/android/server/TelephonyRegistry;->createCallQuality()Landroid/telephony/CallQuality;
+PLcom/android/server/TelephonyRegistry;->createPreciseCallState()Landroid/telephony/PreciseCallState;
+PLcom/android/server/TelephonyRegistry;->createServiceStateBroadcastOptions(IILjava/lang/String;)Landroid/app/BroadcastOptions;
+PLcom/android/server/TelephonyRegistry;->createServiceStateIntent(Landroid/telephony/ServiceState;IIZ)Landroid/content/Intent;
+PLcom/android/server/TelephonyRegistry;->doesLimitApplyForListeners(II)Z
+PLcom/android/server/TelephonyRegistry;->fillInSignalStrengthNotifierBundle(Landroid/telephony/SignalStrength;Landroid/os/Bundle;)V
+HPLcom/android/server/TelephonyRegistry;->getPhoneIdFromSubId(I)I
+PLcom/android/server/TelephonyRegistry;->getTelephonyManager()Landroid/telephony/TelephonyManager;
+PLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V
+PLcom/android/server/TelephonyRegistry;->idMatch(Lcom/android/server/TelephonyRegistry$Record;II)Z
+HPLcom/android/server/TelephonyRegistry;->isActiveEmergencySessionPermissionRequired(Ljava/util/Set;)Z
+HPLcom/android/server/TelephonyRegistry;->isLocationPermissionRequired(Ljava/util/Set;)Z
+HPLcom/android/server/TelephonyRegistry;->isPhoneStatePermissionRequired(Ljava/util/Set;Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/TelephonyRegistry;->isPrecisePhoneStatePermissionRequired(Ljava/util/Set;)Z
+HPLcom/android/server/TelephonyRegistry;->isPrivilegedPhoneStatePermissionRequired(Ljava/util/Set;)Z
+HPLcom/android/server/TelephonyRegistry;->listen(ZZLjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;Ljava/util/Set;ZI)V
+HPLcom/android/server/TelephonyRegistry;->listenWithEventList(ZZILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;[IZ)V
+PLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V
+PLcom/android/server/TelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V
+PLcom/android/server/TelephonyRegistry;->notifyCarrierConfigChanged(IIII)V
+PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/telephony/CellIdentity;Z)V
+PLcom/android/server/TelephonyRegistry;->notifyDataEnabled(IIZI)V
+HPLcom/android/server/TelephonyRegistry;->notifyEmergencyNumberList(II)V
+PLcom/android/server/TelephonyRegistry;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
+PLcom/android/server/TelephonyRegistry;->notifyRadioPowerStateChanged(III)V
+PLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
+PLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
+PLcom/android/server/TelephonyRegistry;->onMultiSimConfigChanged()V
+PLcom/android/server/TelephonyRegistry;->pii(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
+PLcom/android/server/TelephonyRegistry;->systemRunning()V
+PLcom/android/server/TelephonyRegistry;->validatePhoneId(I)Z
+HSPLcom/android/server/ThreadPriorityBooster$1;-><init>(Lcom/android/server/ThreadPriorityBooster;)V
+HSPLcom/android/server/ThreadPriorityBooster$1;->initialValue()Lcom/android/server/ThreadPriorityBooster$PriorityState;
+HSPLcom/android/server/ThreadPriorityBooster$1;->initialValue()Ljava/lang/Object;
+HSPLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>()V
+HSPLcom/android/server/ThreadPriorityBooster$PriorityState;-><init>(Lcom/android/server/ThreadPriorityBooster$PriorityState-IA;)V
+HSPLcom/android/server/ThreadPriorityBooster;-><init>(II)V
+HSPLcom/android/server/ThreadPriorityBooster;->boost()V
+HSPLcom/android/server/ThreadPriorityBooster;->reset()V
+PLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V
+PLcom/android/server/UiModeManagerInternal;-><init>()V
+PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;)V
+PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$10;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+PLcom/android/server/UiModeManagerService$11;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+PLcom/android/server/UiModeManagerService$12;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$13;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$1;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$1;->get()I
+PLcom/android/server/UiModeManagerService$1;->set(I)V
+PLcom/android/server/UiModeManagerService$2;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$4;-><init>(Lcom/android/server/UiModeManagerService;)V
+HPLcom/android/server/UiModeManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/UiModeManagerService$5;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$6;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$7;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$8;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$9;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+PLcom/android/server/UiModeManagerService$Injector;-><init>()V
+PLcom/android/server/UiModeManagerService$LocalService;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$Stub;-><init>(Lcom/android/server/UiModeManagerService;Landroid/content/Context;)V
+PLcom/android/server/UiModeManagerService$Stub;->addCallback(Landroid/app/IUiModeManagerCallback;)V
+HPLcom/android/server/UiModeManagerService$Stub;->addOnProjectionStateChangedListener(Landroid/app/IOnProjectionStateChangedListener;I)V
+PLcom/android/server/UiModeManagerService$Stub;->getActiveProjectionTypes()I
+PLcom/android/server/UiModeManagerService$Stub;->getContrast()F
+PLcom/android/server/UiModeManagerService$Stub;->getCurrentModeType()I
+PLcom/android/server/UiModeManagerService;->$r8$lambda$QPwDb2teQBOty6gCNDQwNIaFO6w(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;)V
+PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmLock(Lcom/android/server/UiModeManagerService;)Ljava/lang/Object;
+PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmProjectionHolders(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmProjectionListeners(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/UiModeManagerService;->-$$Nest$fgetmUiModeManagerCallbacks(Lcom/android/server/UiModeManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/UiModeManagerService;->-$$Nest$fputmCharging(Lcom/android/server/UiModeManagerService;Z)V
+PLcom/android/server/UiModeManagerService;->-$$Nest$fputmProjectionListeners(Lcom/android/server/UiModeManagerService;Landroid/util/SparseArray;)V
+PLcom/android/server/UiModeManagerService;->-$$Nest$mgetContrastLocked(Lcom/android/server/UiModeManagerService;)F
+PLcom/android/server/UiModeManagerService;->-$$Nest$mpopulateWithRelevantActivePackageNames(Lcom/android/server/UiModeManagerService;ILjava/util/List;)I
+PLcom/android/server/UiModeManagerService;-><clinit>()V
+PLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;ZLcom/android/server/twilight/TwilightManager;Lcom/android/server/UiModeManagerService$Injector;)V
+PLcom/android/server/UiModeManagerService;->applyConfigurationExternallyLocked()V
+PLcom/android/server/UiModeManagerService;->getComputedUiModeConfiguration(I)I
+PLcom/android/server/UiModeManagerService;->getContrastLocked()F
+PLcom/android/server/UiModeManagerService;->initPowerSave()V
+PLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z
+PLcom/android/server/UiModeManagerService;->lambda$onStart$1(Landroid/content/Context;Landroid/content/res/Resources;)V
+HPLcom/android/server/UiModeManagerService;->onBootPhase(I)V
+PLcom/android/server/UiModeManagerService;->onStart()V
+PLcom/android/server/UiModeManagerService;->populateWithRelevantActivePackageNames(ILjava/util/List;)I
+PLcom/android/server/UiModeManagerService;->registerVrStateListener()V
+PLcom/android/server/UiModeManagerService;->resetNightModeOverrideLocked()Z
+PLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V
+PLcom/android/server/UiModeManagerService;->setupWizardCompleteForCurrentUser()Z
+PLcom/android/server/UiModeManagerService;->unregisterTimeChangeEvent()V
+HPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V
+HPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V
+PLcom/android/server/UiModeManagerService;->updateContrastLocked()Z
+HPLcom/android/server/UiModeManagerService;->updateLocked(II)V
+PLcom/android/server/UiModeManagerService;->updateNightModeFromSettingsLocked(Landroid/content/Context;Landroid/content/res/Resources;I)V
+PLcom/android/server/UiModeManagerService;->updateSystemProperties()V
+PLcom/android/server/UiModeManagerService;->verifySetupWizardCompleted()V
+HSPLcom/android/server/UiThread;-><init>()V
+HSPLcom/android/server/UiThread;->ensureThreadLocked()V
+HSPLcom/android/server/UiThread;->get()Lcom/android/server/UiThread;
+HSPLcom/android/server/UiThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/UiThread;->run()V
+PLcom/android/server/UpdateLockService$LockWatcher;-><init>(Lcom/android/server/UpdateLockService;Landroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService$LockWatcher;->acquired()V
+PLcom/android/server/UpdateLockService$LockWatcher;->released()V
+PLcom/android/server/UpdateLockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V
+PLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V
+PLcom/android/server/UserspaceRebootLogger;->shouldLogUserspaceRebootEvent()Z
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/VcnManagementService;)V
+PLcom/android/server/VcnManagementService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/VcnManagementService$Dependencies;-><init>()V
+PLcom/android/server/VcnManagementService$Dependencies;->getLooper()Landroid/os/Looper;
+PLcom/android/server/VcnManagementService$Dependencies;->newPersistableBundleLockingReadWriteHelper(Ljava/lang/String;)Lcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;
+PLcom/android/server/VcnManagementService$Dependencies;->newTelephonySubscriptionTracker(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;)Lcom/android/server/vcn/TelephonySubscriptionTracker;
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;-><init>(Lcom/android/server/VcnManagementService;)V
+PLcom/android/server/VcnManagementService$TrackingNetworkCallback;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$TrackingNetworkCallback-IA;)V
+PLcom/android/server/VcnManagementService$VcnBroadcastReceiver;-><init>(Lcom/android/server/VcnManagementService;)V
+PLcom/android/server/VcnManagementService$VcnBroadcastReceiver;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$VcnBroadcastReceiver-IA;)V
+PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;-><init>(Lcom/android/server/VcnManagementService;)V
+PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;-><init>(Lcom/android/server/VcnManagementService;Lcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback-IA;)V
+PLcom/android/server/VcnManagementService$VcnSubscriptionTrackerCallback;->onNewSnapshot(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
+PLcom/android/server/VcnManagementService;->$r8$lambda$Ef7L22K53jlZvoAbNN6oKOpv0Wo(Lcom/android/server/VcnManagementService;)V
+PLcom/android/server/VcnManagementService;->-$$Nest$fgetmConfigs(Lcom/android/server/VcnManagementService;)Ljava/util/Map;
+PLcom/android/server/VcnManagementService;->-$$Nest$fgetmLastSnapshot(Lcom/android/server/VcnManagementService;)Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;
+PLcom/android/server/VcnManagementService;->-$$Nest$fgetmLock(Lcom/android/server/VcnManagementService;)Ljava/lang/Object;
+PLcom/android/server/VcnManagementService;->-$$Nest$fgetmVcns(Lcom/android/server/VcnManagementService;)Ljava/util/Map;
+PLcom/android/server/VcnManagementService;->-$$Nest$fputmLastSnapshot(Lcom/android/server/VcnManagementService;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
+PLcom/android/server/VcnManagementService;->-$$Nest$mgetSubGroupToSubIdMappings(Lcom/android/server/VcnManagementService;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)Ljava/util/Map;
+PLcom/android/server/VcnManagementService;->-$$Nest$mlogInfo(Lcom/android/server/VcnManagementService;Ljava/lang/String;)V
+PLcom/android/server/VcnManagementService;->-$$Nest$sfgetTAG()Ljava/lang/String;
+PLcom/android/server/VcnManagementService;-><clinit>()V
+HPLcom/android/server/VcnManagementService;-><init>(Landroid/content/Context;Lcom/android/server/VcnManagementService$Dependencies;)V
+PLcom/android/server/VcnManagementService;->create(Landroid/content/Context;)Lcom/android/server/VcnManagementService;
+PLcom/android/server/VcnManagementService;->getSubGroupToSubIdMappings(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)Ljava/util/Map;
+PLcom/android/server/VcnManagementService;->lambda$new$0()V
+PLcom/android/server/VcnManagementService;->logInfo(Ljava/lang/String;)V
+PLcom/android/server/VcnManagementService;->systemReady()V
+PLcom/android/server/VpnManagerService$1;-><init>(Lcom/android/server/VpnManagerService;)V
+PLcom/android/server/VpnManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/VpnManagerService$2;-><init>(Lcom/android/server/VpnManagerService;)V
+PLcom/android/server/VpnManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/VpnManagerService$Dependencies;-><init>()V
+PLcom/android/server/VpnManagerService$Dependencies;->createVpn(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetd;I)Lcom/android/server/connectivity/Vpn;
+PLcom/android/server/VpnManagerService$Dependencies;->getCallingUid()I
+PLcom/android/server/VpnManagerService$Dependencies;->getINetworkManagementService()Landroid/os/INetworkManagementService;
+PLcom/android/server/VpnManagerService$Dependencies;->getMainUserId()I
+PLcom/android/server/VpnManagerService$Dependencies;->getNetd()Landroid/net/INetd;
+PLcom/android/server/VpnManagerService$Dependencies;->getVpnProfileStore()Lcom/android/server/connectivity/VpnProfileStore;
+PLcom/android/server/VpnManagerService$Dependencies;->makeHandlerThread()Landroid/os/HandlerThread;
+PLcom/android/server/VpnManagerService;->-$$Nest$mensureRunningOnHandlerThread(Lcom/android/server/VpnManagerService;)V
+PLcom/android/server/VpnManagerService;->-$$Nest$monUserStarted(Lcom/android/server/VpnManagerService;I)V
+PLcom/android/server/VpnManagerService;->-$$Nest$monUserUnlocked(Lcom/android/server/VpnManagerService;I)V
+PLcom/android/server/VpnManagerService;-><clinit>()V
+PLcom/android/server/VpnManagerService;-><init>(Landroid/content/Context;Lcom/android/server/VpnManagerService$Dependencies;)V
+PLcom/android/server/VpnManagerService;->create(Landroid/content/Context;)Lcom/android/server/VpnManagerService;
+PLcom/android/server/VpnManagerService;->ensureRunningOnHandlerThread()V
+PLcom/android/server/VpnManagerService;->isLockdownVpnEnabled()Z
+PLcom/android/server/VpnManagerService;->log(Ljava/lang/String;)V
+PLcom/android/server/VpnManagerService;->onUserStarted(I)V
+PLcom/android/server/VpnManagerService;->onUserUnlocked(I)V
+PLcom/android/server/VpnManagerService;->registerReceivers()V
+PLcom/android/server/VpnManagerService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V
+PLcom/android/server/VpnManagerService;->startAlwaysOnVpn(I)Z
+PLcom/android/server/VpnManagerService;->systemReady()V
+PLcom/android/server/VpnManagerService;->updateLockdownVpn()Z
+HSPLcom/android/server/Watchdog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/Watchdog;)V
+HSPLcom/android/server/Watchdog$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V
+HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$BinderThreadMonitor-IA;)V
+HSPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V
+HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Object;Ljava/time/Clock;)V
+HSPLcom/android/server/Watchdog$HandlerChecker;->addMonitorLocked(Lcom/android/server/Watchdog$Monitor;)V
+HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
+HSPLcom/android/server/Watchdog$HandlerChecker;->getThread()Ljava/lang/Thread;
+HSPLcom/android/server/Watchdog$HandlerChecker;->isHandlerPolling()Z
+PLcom/android/server/Watchdog$HandlerChecker;->pauseForLocked(ILjava/lang/String;)V
+HSPLcom/android/server/Watchdog$HandlerChecker;->pauseLocked(Ljava/lang/String;)V
+PLcom/android/server/Watchdog$HandlerChecker;->resumeLocked(Ljava/lang/String;)V
+HSPLcom/android/server/Watchdog$HandlerChecker;->run()V
+HSPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked(J)V
+HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;-><init>(Lcom/android/server/Watchdog$HandlerChecker;Ljava/util/Optional;)V
+HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->checker()Lcom/android/server/Watchdog$HandlerChecker;
+HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->customTimeoutMillis()Ljava/util/Optional;
+HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->withCustomTimeout(Lcom/android/server/Watchdog$HandlerChecker;J)Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
+HSPLcom/android/server/Watchdog$HandlerCheckerAndTimeout;->withDefaultTimeout(Lcom/android/server/Watchdog$HandlerChecker;)Lcom/android/server/Watchdog$HandlerCheckerAndTimeout;
+PLcom/android/server/Watchdog$RebootRequestReceiver;-><init>(Lcom/android/server/Watchdog;)V
+PLcom/android/server/Watchdog$SettingsObserver;-><init>(Landroid/content/Context;Lcom/android/server/Watchdog;)V
+PLcom/android/server/Watchdog$SettingsObserver;->onChange()V
+HSPLcom/android/server/Watchdog;->$r8$lambda$IHmOjeSmDoiNkZR0B-wv71mYNoM(Lcom/android/server/Watchdog;)V
+HSPLcom/android/server/Watchdog;-><clinit>()V
+HSPLcom/android/server/Watchdog;-><init>()V
+HSPLcom/android/server/Watchdog;->addMonitor(Lcom/android/server/Watchdog$Monitor;)V
+HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;)V
+HSPLcom/android/server/Watchdog;->addThread(Landroid/os/Handler;J)V
+PLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I
+HSPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
+PLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/Watchdog;->isInterestingJavaProcess(Ljava/lang/String;)Z
+HSPLcom/android/server/Watchdog;->pauseWatchingCurrentThread(Ljava/lang/String;)V
+PLcom/android/server/Watchdog;->pauseWatchingCurrentThreadFor(ILjava/lang/String;)V
+PLcom/android/server/Watchdog;->pauseWatchingMonitorsFor(ILjava/lang/String;)V
+PLcom/android/server/Watchdog;->processDied(Ljava/lang/String;I)V
+HPLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
+PLcom/android/server/Watchdog;->registerSettingsObserver(Landroid/content/Context;)V
+HPLcom/android/server/Watchdog;->resumeWatchingCurrentThread(Ljava/lang/String;)V
+HSPLcom/android/server/Watchdog;->run()V
+HSPLcom/android/server/Watchdog;->start()V
+PLcom/android/server/Watchdog;->updateWatchdogTimeout(J)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;-><init>(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;-><init>(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->-$$Nest$mnotifyAccessibilityEventInternal(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;ILandroid/view/accessibility/AccessibilityEvent;Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->addWindowTokenForDisplay(I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->addWindowTokensForAllDisplays()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->canReceiveEventsLocked()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->ensureWindowsAvailableTimedLocked(I)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getCapabilities()I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getRelevantEventTypes()I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindowTransformationMatrixAndMagnificationSpec(I)Landroid/util/Pair;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindows()Landroid/view/accessibility/AccessibilityWindowInfo$WindowListSparseArray;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindowsByDisplayLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->intConnTracingEnabled()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdLocked(I)I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDisplayTypes(I)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->svcClientTracingEnabled()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->svcConnTracingEnabled()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wantsEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wmTracingEnabled()Z
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda13;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda16;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda18;->onResult(IZ)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda19;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda22;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda23;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda24;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda25;-><init>(Ljava/util/List;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda30;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda30;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda35;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda38;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda38;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda41;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda41;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda44;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda46;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda47;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda49;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda49;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda52;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda52;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda54;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda54;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda55;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda56;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda62;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda62;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda63;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda63;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda9;-><init>()V
+PLcom/android/server/accessibility/AccessibilityManagerService$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$3;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$4;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/content/Context;Landroid/os/Handler;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->getValidDisplayList()Ljava/util/ArrayList;
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->initializeDisplayList()V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->isValidDisplay(Landroid/view/Display;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayChanged(I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;ILcom/android/server/accessibility/AccessibilityManagerService$Client-IA;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onStart()V
+PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->bindInput()V
+PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->createImeSession(Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$LocalServiceImpl;->startInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$4Xl_kWd5nUlOJpqnPRLhjur2PxQ(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$FCnKv_Ut84T3aNcEnU4D12D8l6Y(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/RemoteCallbackList;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$HPhUjXfCPlcxeEddVlx5oqAs2d4(Lcom/android/server/accessibility/AccessibilityManagerService;JLjava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$IYYIwjVu0bO5FTn9IS3RVPPeDiY(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$JB6TZPFG0N2h7zdKOCgM4OOCpf8(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$KFC275e1a0Nf4HzkH5ujj0liXIg(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$Qha0yO4BlErsZ1OeDWa1PxGEaNA(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$VD7IcTrYlIEbLD7q-dNQxZYFZs4(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$XpL8pm9VEQwLAqYA1AVZJvP4ZkA(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$_gBIiOvr-Vr0gJkDVFAi3JBURXE(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$c2sb4fePdTUn6QD12AOuX4CLSEw(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$cfUn8_rRT4Qib40MwfhpW9o6DZY(Lcom/android/server/accessibility/AccessibilityManagerService;ILjava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$j68DccWKI_ecJheQGTvw8Cpflic(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$mdjZbluv7Qcd_o_Ype1SGqTxgkY(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$p1awZzkw3tQaXOYBFrrZx5_PAC0(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->$r8$lambda$wYPfPbaBszuUF6sjhczksiy53FI(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmCurrentUserId(Lcom/android/server/accessibility/AccessibilityManagerService;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmLock(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmPackageManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmProxyManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/ProxyManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$fgetmTraceManager(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityTraceManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$mcomputeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$mgetUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityUserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$monBootPhase(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->-$$Nest$munlockUser(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;-><clinit>()V
+HPLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
+PLcom/android/server/accessibility/AccessibilityManagerService;->bindInput()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/function/Consumer;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->changeCurrentUserForTestAutomationIfNeededLocked(I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->createImeSession(Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->disableAccessibilityMenuToMigrateIfNeeded()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->dispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->fallBackMagnificationModeSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getClientStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserIdLocked()I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityUserState;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getFocusColor()I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getFocusStrokeWidth()I
+PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationConnectionManager()Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillis()J
+PLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillisLocked(Lcom/android/server/accessibility/AccessibilityUserState;)J
+PLcom/android/server/accessibility/AccessibilityManagerService;->getSystemActionPerformer()Lcom/android/server/accessibility/SystemActionPerformer;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getTraceManager()Lcom/android/server/accessibility/AccessibilityTraceManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getUserState(I)Lcom/android/server/accessibility/AccessibilityUserState;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityUserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getValidDisplayList()Ljava/util/ArrayList;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getWindowTransformationMatrixAndMagnificationSpec(I)Landroid/util/Pair;
+PLcom/android/server/accessibility/AccessibilityManagerService;->init()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->isClientInPackageAllowlist(Landroid/accessibilityservice/AccessibilityServiceInfo;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$notifyClientsOfServicesStateChange$18(JLjava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$onPackagesForceStoppedLocked$2(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$sendStateToClients$17(ILjava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateFocusAppearanceDataLocked$31(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateFocusAppearanceDataLocked$32(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$12(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$13(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->migrateAccessibilityButtonSettingsIfNecessaryLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyRefreshMagnificationModeToInputFilter(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onBootPhase(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(ZZ)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onMagnificationTransitionEndedLocked(IZ)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onPackagesForceStoppedLocked([Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->parseAccessibilityServiceInfos(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityManagerService;->parseAccessibilityShortcutInfos(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonTargetComponentLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutKeySettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAlwaysOnMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAudioDescriptionEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedSettingToSet(Ljava/lang/String;ILjava/util/function/Function;Ljava/util/Set;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedStringToSet(Ljava/lang/String;Ljava/util/function/Function;Ljava/util/Set;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromSettingLocked(Ljava/lang/String;ILjava/util/Set;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;Ljava/util/List;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/List;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationFollowTypingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationModeForDefaultDisplayLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->readUserRecommendedUiTimeoutSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleBindInput()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleCreateImeSession(Landroid/util/ArraySet;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChangeLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleStartInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityUserState;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventForCurrentUserLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendPendingWindowStateChangedEventsForAvailableWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendServicesStateChanged(Landroid/os/RemoteCallbackList;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToAllClients(II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->setAccessibilityWindowAttributes(IIILandroid/view/accessibility/AccessibilityWindowAttributes;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->setNonA11yToolNotificationToMatchSafetyCenter()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->startInput(Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutKeyTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateFocusAppearanceDataLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationCapabilitiesSettingsChangeLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationConnectionIfNeeded(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationModeChangeSettingsForAllDisplaysLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationModeChangeSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateRecommendedUiTimeoutLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->userHasListeningMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><clinit>()V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Landroid/content/pm/PackageManagerInternal;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canDispatchAccessibilityEventLocked(ILandroid/view/accessibility/AccessibilityEvent;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canGetAccessibilityNodeInfoLocked(ILcom/android/server/accessibility/AbstractAccessibilityServiceConnection;I)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRegisterService(Landroid/content/pm/ServiceInfo;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->checkAccessibilityAccess(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->computeValidReportedPackages(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->hasPermission(Ljava/lang/String;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isRetrievalAllowingWindowLocked(II)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isValidPackageForUid(Ljava/lang/String;I)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->onSwitchUserLocked(ILjava/util/Set;)V
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveValidReportedPackageLocked(Ljava/lang/CharSequence;III)Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setAccessibilityWindowManager(Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setSendingNonA11yToolNotificationLocked(Z)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityTraceManager;-><clinit>()V
+PLcom/android/server/accessibility/AccessibilityTraceManager;-><init>(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AccessibilityTraceManager;->getInstance(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)Lcom/android/server/accessibility/AccessibilityTraceManager;
+HPLcom/android/server/accessibility/AccessibilityTraceManager;->getTraceStateForAccessibilityManagerClientState()I
+HPLcom/android/server/accessibility/AccessibilityTraceManager;->isA11yTracingEnabledForTypes(J)Z
+PLcom/android/server/accessibility/AccessibilityUserState;-><clinit>()V
+HPLcom/android/server/accessibility/AccessibilityUserState;-><init>(ILandroid/content/Context;Lcom/android/server/accessibility/AccessibilityUserState$ServiceInfoChangeListener;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->getBindInstantServiceAllowedLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->getBindingServicesLocked()Ljava/util/Set;
+PLcom/android/server/accessibility/AccessibilityUserState;->getClientStateLocked(ZI)I
+PLcom/android/server/accessibility/AccessibilityUserState;->getCrashedServicesLocked()Ljava/util/Set;
+PLcom/android/server/accessibility/AccessibilityUserState;->getFocusColorLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getFocusStrokeWidthLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getInteractiveUiTimeoutLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getLastSentClientStateLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getMagnificationCapabilitiesLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getMagnificationModeLocked(I)I
+PLcom/android/server/accessibility/AccessibilityUserState;->getNonInteractiveUiTimeoutLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getShortcutTargetsLocked(I)Landroid/util/ArraySet;
+PLcom/android/server/accessibility/AccessibilityUserState;->getTargetAssignedToAccessibilityButton()Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilityUserState;->getUserInteractiveUiTimeoutLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getUserNonInteractiveUiTimeoutLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->isAlwaysOnMagnificationEnabled()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isAudioDescriptionByDefaultEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isAutoclickEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isFilterKeyEventsEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isHandlingAccessibilityEventsLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationFollowTypingEnabled()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationSingleFingerTripleTapEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isMagnificationTwoFingerTripleTapEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isPerformGesturesEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isSendMotionEventsEnabled()Z
+HPLcom/android/server/accessibility/AccessibilityUserState;->isShortcutMagnificationEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isTextHighContrastEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isTouchExplorationEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isValidMagnificationModeLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityUserState;->onSwitchToAnotherUserLocked()V
+PLcom/android/server/accessibility/AccessibilityUserState;->resetServiceDetectsGestures()V
+PLcom/android/server/accessibility/AccessibilityUserState;->setAccessibilityFocusOnlyInActiveWindow(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setFilterKeyEventsEnabledLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setInteractiveUiTimeoutLocked(I)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setLastSentClientStateLocked(I)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setMagnificationCapabilitiesLocked(I)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setMagnificationModeLocked(II)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setMultiFingerGesturesLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setNonInteractiveUiTimeoutLocked(I)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setPerformGesturesEnabledLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setSendMotionEventsEnabled(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setServiceHandlesDoubleTapLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setTwoFingerPassthroughLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->unbindAllServicesLocked()V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->-$$Nest$fgetmDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->-$$Nest$fgetmIsProxy(Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;-><init>(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->cacheWindows(Ljava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->computePartialInteractiveRegionForWindowLocked(IZLandroid/graphics/Region;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getTypeForWindowManagerWindowType(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getWindowListLocked()Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->isTrackingWindowsLocked()Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->onWindowsForAccessibilityChanged(ZILandroid/os/IBinder;Ljava/util/List;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->populateReportedWindowLocked(ILandroid/view/WindowInfo;Landroid/util/SparseArray;)Landroid/view/accessibility/AccessibilityWindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->sendEventsForChangedWindowsLocked(Ljava/util/List;Landroid/util/SparseArray;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->shouldUpdateWindowsLocked(ZLjava/util/List;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->startTrackingWindowsLocked()V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowWithWindowAttributes(Landroid/view/WindowInfo;Landroid/view/accessibility/AccessibilityWindowAttributes;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowsByWindowAttributesLocked(Ljava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowsLocked(ILjava/util/List;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;-><init>(Lcom/android/server/accessibility/AccessibilityWindowManager;ILandroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;II)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getPackageName()Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getRemote()Landroid/view/accessibility/IAccessibilityInteractionConnection;
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->getUid()I
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->linkToDeath()V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityEventSender(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityFocusedWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmAccessibilityUserManager(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmActiveWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmLock(Lcom/android/server/accessibility/AccessibilityWindowManager;)Ljava/lang/Object;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTopFocusedWindowToken(Lcom/android/server/accessibility/AccessibilityWindowManager;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmTouchInteractionInProgress(Lcom/android/server/accessibility/AccessibilityWindowManager;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmWindowAttributes(Lcom/android/server/accessibility/AccessibilityWindowManager;)Landroid/util/SparseArray;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmActiveWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmLastNonProxyTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedDisplayId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedWindowId(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$fputmTopFocusedWindowToken(Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$misProxyed(Lcom/android/server/accessibility/AccessibilityWindowManager;I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->-$$Nest$mtraceWMEnabled(Lcom/android/server/accessibility/AccessibilityWindowManager;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;-><init>(Ljava/lang/Object;Landroid/os/Handler;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;Lcom/android/server/accessibility/AccessibilityTraceManager;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->findFocusedWindowId(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowIdLocked(ILandroid/os/IBinder;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getActiveWindowId(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getConnectionLocked(II)Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayIdByUserIdAndWindowIdLocked(II)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayListLocked(I)Ljava/util/ArrayList;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayWindowObserverByWindowIdLocked(I)Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getHostTokenLocked(Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getInteractionConnectionsForUserLocked(I)Landroid/util/SparseArray;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getLeashTokenLocked(I)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getPictureInPictureActionReplacingConnection()Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowIdLocked(Landroid/os/IBinder;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowListLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokenForUserAndWindowIdLocked(II)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokensForUserLocked(I)Landroid/util/SparseArray;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isEmbeddedHierarchyWindowsLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isProxyed(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked()Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForInteractionConnectionsLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForWindowTokensLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->registerIdLocked(Landroid/os/IBinder;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->resetHasProxyIfNeededLocked()V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->resolveParentWindowIdLocked(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->resolveTopParentTokenLocked(Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->setAccessibilityWindowAttributes(IIILandroid/view/accessibility/AccessibilityWindowAttributes;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->startTrackingWindows(IZ)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->stopTrackingWindows(I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->traceWMEnabled()Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->updateActiveAndAccessibilityFocusedWindowLocked(IIJII)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->windowIdBelongsToDisplayType(II)Z
+PLcom/android/server/accessibility/CaptioningManagerImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/accessibility/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/accessibility/FeatureFlagsImpl;->addWindowTokenWithoutLock()Z
+PLcom/android/server/accessibility/FeatureFlagsImpl;->deprecatePackageListObserver()Z
+PLcom/android/server/accessibility/FeatureFlagsImpl;->disableContinuousShortcutOnForceStop()Z
+PLcom/android/server/accessibility/FeatureFlagsImpl;->enableMagnificationMultipleFingerMultipleTapGesture()Z
+PLcom/android/server/accessibility/FeatureFlagsImpl;->load_overrides_accessibility()V
+PLcom/android/server/accessibility/FeatureFlagsImpl;->scanPackagesWithoutLock()Z
+PLcom/android/server/accessibility/Flags;-><clinit>()V
+PLcom/android/server/accessibility/Flags;->addWindowTokenWithoutLock()Z
+PLcom/android/server/accessibility/Flags;->deprecatePackageListObserver()Z
+PLcom/android/server/accessibility/Flags;->disableContinuousShortcutOnForceStop()Z
+PLcom/android/server/accessibility/Flags;->enableMagnificationMultipleFingerMultipleTapGesture()Z
+PLcom/android/server/accessibility/Flags;->scanPackagesWithoutLock()Z
+PLcom/android/server/accessibility/FlashNotificationsController$1;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$2;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$3;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$4;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$4;->onDisplayChanged(I)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashBroadcastReceiver;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashContentObserver;-><init>(Lcom/android/server/accessibility/FlashNotificationsController;Landroid/os/Handler;)V
+PLcom/android/server/accessibility/FlashNotificationsController$FlashContentObserver;->register(Landroid/content/ContentResolver;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmAudioPlaybackCallback(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/media/AudioManager$AudioPlaybackCallback;
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmCallbackHandler(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/os/Handler;
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmCameraManager(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/hardware/camera2/CameraManager;
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmContext(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/content/Context;
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmDisplayManager(Lcom/android/server/accessibility/FlashNotificationsController;)Landroid/hardware/display/DisplayManager;
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fgetmIsCameraFlashNotificationEnabled(Lcom/android/server/accessibility/FlashNotificationsController;)Z
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmCameraManager(Lcom/android/server/accessibility/FlashNotificationsController;Landroid/hardware/camera2/CameraManager;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmDisplayState(Lcom/android/server/accessibility/FlashNotificationsController;I)V
+PLcom/android/server/accessibility/FlashNotificationsController;->-$$Nest$fputmIsCameraFlashNotificationEnabled(Lcom/android/server/accessibility/FlashNotificationsController;Z)V
+PLcom/android/server/accessibility/FlashNotificationsController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/FlashNotificationsController;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;)V
+PLcom/android/server/accessibility/FlashNotificationsController;->getStartedHandler(Ljava/lang/String;)Landroid/os/Handler;
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/PolicyWarningUIController$NotificationController;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->cancelSentNotifications()V
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->onSwitchUser(I)V
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->readNotifiedServiceList(I)Landroid/util/ArraySet;
+PLcom/android/server/accessibility/PolicyWarningUIController$NotificationController;->setSendingNotification(Z)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->$r8$lambda$FLmotYt3XsdyYeosV5FvzhGVtLY(Lcom/android/server/accessibility/PolicyWarningUIController;Z)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->$r8$lambda$Gr6qzlAd0Ku36cCnv-sLqB_nbeM(Lcom/android/server/accessibility/PolicyWarningUIController;ILjava/util/Set;)V
+PLcom/android/server/accessibility/PolicyWarningUIController;-><clinit>()V
+PLcom/android/server/accessibility/PolicyWarningUIController;-><init>(Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/accessibility/PolicyWarningUIController$NotificationController;)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->enableSendingNonA11yToolNotification(Z)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->enableSendingNonA11yToolNotificationInternal(Z)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->onSwitchUser(ILjava/util/Set;)V
+PLcom/android/server/accessibility/PolicyWarningUIController;->onSwitchUserInternal(ILjava/util/Set;)V
+PLcom/android/server/accessibility/ProxyManager;-><clinit>()V
+PLcom/android/server/accessibility/ProxyManager;-><init>(Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/accessibility/UiAutomationManager;Lcom/android/server/accessibility/ProxyManager$SystemSupport;)V
+PLcom/android/server/accessibility/ProxyManager;->canRetrieveInteractiveWindowsLocked()Z
+HPLcom/android/server/accessibility/ProxyManager;->getFirstDeviceIdForUidLocked(I)I
+HPLcom/android/server/accessibility/ProxyManager;->getLocalVdm()Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
+PLcom/android/server/accessibility/ProxyManager;->isProxyedDeviceId(I)Z
+PLcom/android/server/accessibility/ProxyManager;->isProxyedDisplay(I)Z
+PLcom/android/server/accessibility/ProxyManager;->updateTimeoutsIfNeeded(II)V
+PLcom/android/server/accessibility/SystemActionPerformer;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/accessibility/SystemActionPerformer$SystemActionsChangedListener;Lcom/android/server/accessibility/SystemActionPerformer$DisplayUpdateCallBack;)V
+PLcom/android/server/accessibility/UiAutomationManager$1;-><init>(Lcom/android/server/accessibility/UiAutomationManager;)V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;)V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->$r8$lambda$EBbVjiQaLueOGoICPHv_0YkCzl4(Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;)V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;-><init>(Lcom/android/server/accessibility/UiAutomationManager;Landroid/content/Context;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->connectServiceUnknownThread()V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->hasRightsToCurrentUserLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->lambda$connectServiceUnknownThread$0()V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+PLcom/android/server/accessibility/UiAutomationManager;->-$$Nest$fgetmUiAutomationService(Lcom/android/server/accessibility/UiAutomationManager;)Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;
+PLcom/android/server/accessibility/UiAutomationManager;->-$$Nest$sfgetCOMPONENT_NAME()Landroid/content/ComponentName;
+PLcom/android/server/accessibility/UiAutomationManager;-><clinit>()V
+PLcom/android/server/accessibility/UiAutomationManager;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/UiAutomationManager;->canIntrospect()Z
+PLcom/android/server/accessibility/UiAutomationManager;->canRetrieveInteractiveWindowsLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager;->getRelevantEventTypes()I
+PLcom/android/server/accessibility/UiAutomationManager;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+PLcom/android/server/accessibility/UiAutomationManager;->isTouchExplorationEnabledLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager;->registerUiTestAutomationServiceLocked(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/content/Context;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Lcom/android/server/accessibility/AccessibilitySecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Landroid/accessibilityservice/AccessibilityTrace;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/UiAutomationManager;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/UiAutomationManager;->suppressingAccessibilityServicesLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager;->useAccessibility()Z
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->addOnChangedListener(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Landroid/provider/DeviceConfig$OnPropertiesChangedListener;
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getDefaultValue()Z
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getFeatureName()Ljava/lang/String;
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->getNamespace()Ljava/lang/String;
+PLcom/android/server/accessibility/magnification/AlwaysOnMagnificationFeatureFlag;->isFeatureFlagEnabled()Z
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager$1;-><init>(Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/accessibility/magnification/MagnificationConnectionManager$Callback;Lcom/android/server/accessibility/AccessibilityTraceManager;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;)V
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->isWindowMagnifierEnabled(I)Z
+PLcom/android/server/accessibility/magnification/MagnificationConnectionManager;->removeMagnificationButton(I)Z
+PLcom/android/server/accessibility/magnification/MagnificationController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/magnification/MagnificationController;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;Landroid/content/Context;Lcom/android/server/accessibility/magnification/MagnificationScaleProvider;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/accessibility/magnification/MagnificationController;->getCurrentMagnificationCenterLocked(II)Landroid/graphics/PointF;
+PLcom/android/server/accessibility/magnification/MagnificationController;->getDisableMagnificationEndRunnableLocked(I)Lcom/android/server/accessibility/magnification/MagnificationController$DisableMagnificationCallback;
+PLcom/android/server/accessibility/magnification/MagnificationController;->getMagnificationConnectionManager()Lcom/android/server/accessibility/magnification/MagnificationConnectionManager;
+PLcom/android/server/accessibility/magnification/MagnificationController;->isActivated(II)Z
+PLcom/android/server/accessibility/magnification/MagnificationController;->isAlwaysOnMagnificationFeatureFlagEnabled()Z
+PLcom/android/server/accessibility/magnification/MagnificationController;->isFullScreenMagnificationControllerInitialized()Z
+PLcom/android/server/accessibility/magnification/MagnificationController;->onRectangleOnScreenRequested(IIIII)V
+PLcom/android/server/accessibility/magnification/MagnificationController;->setMagnificationCapabilities(I)V
+PLcom/android/server/accessibility/magnification/MagnificationController;->supportWindowMagnification()Z
+PLcom/android/server/accessibility/magnification/MagnificationController;->transitionMagnificationModeLocked(IILcom/android/server/accessibility/magnification/MagnificationController$TransitionCallBack;)V
+PLcom/android/server/accessibility/magnification/MagnificationController;->updateUserIdIfNeeded(I)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/lang/Runnable;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda7;-><init>(Ljava/lang/Runnable;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase$$ExternalSyntheticLambda7;->runOrThrow()V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$-Kf-nTTxGJWSQrXs1QThaOrkPek(Ljava/lang/Runnable;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$KXsRNBwfYHScpt3V4aI4KVvs4mk(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->$r8$lambda$axYtYuWd7ezeyobLYU1aL4M31Ak(Lcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;-><init>()V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->addOnChangedListener(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Landroid/provider/DeviceConfig$OnPropertiesChangedListener;
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->clearCallingIdentifyAndTryCatch(Ljava/lang/Runnable;Ljava/lang/Runnable;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->isFeatureFlagEnabled()Z
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$addOnChangedListener$6(Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$clearCallingIdentifyAndTryCatch$0(Ljava/lang/Runnable;)V
+PLcom/android/server/accessibility/magnification/MagnificationFeatureFlagBase;->lambda$isFeatureFlagEnabled$1(Ljava/util/concurrent/atomic/AtomicBoolean;)V
+PLcom/android/server/accessibility/magnification/MagnificationProcessor;-><init>(Lcom/android/server/accessibility/magnification/MagnificationController;)V
+PLcom/android/server/accessibility/magnification/MagnificationScaleProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>()V
+PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>(Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer-IA;)V
+PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/accounts/AuthenticatorDescription;
+PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Ljava/lang/Object;
+PLcom/android/server/accounts/AccountAuthenticatorCache;-><clinit>()V
+PLcom/android/server/accounts/AccountAuthenticatorCache;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
+HPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription;
+PLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object;
+PLcom/android/server/accounts/AccountManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$2;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$3;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$4;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl-IA;)V
+PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V
+PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;ILjava/lang/String;Z)V
+PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
+PLcom/android/server/accounts/AccountManagerService$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V
+PLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getCeDatabaseName(I)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getDeDatabaseName(I)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getMessageHandlerLooper()Landroid/os/Looper;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getPreNDatabaseName(I)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onStart()V
+PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/accounts/AccountManagerService$MessageHandler;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V
+PLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;Z)V
+HPLcom/android/server/accounts/AccountManagerService$Session;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZ)V
+PLcom/android/server/accounts/AccountManagerService$Session;->bind()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->close()V
+PLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
+PLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accounts/AccountManagerService$Session;->scheduleTimeout()V
+PLcom/android/server/accounts/AccountManagerService$Session;->unbind()V
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetmReceiversForType(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetuserId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->-$$Nest$fgetvisibilityCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;-><init>(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V
+PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmAppPermissionChangeListeners(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmAuthenticatorCache(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache;
+PLcom/android/server/accounts/AccountManagerService;->-$$Nest$fgetmSessions(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap;
+PLcom/android/server/accounts/AccountManagerService;->-$$Nest$misLocalUnlockedUser(Lcom/android/server/accounts/AccountManagerService;I)Z
+PLcom/android/server/accounts/AccountManagerService;-><clinit>()V
+HPLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V
+PLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsForSystem([I)[Landroid/accounts/AccountAndUser;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;
+PLcom/android/server/accounts/AccountManagerService;->getAllAccountsForSystemProcess()[Landroid/accounts/AccountAndUser;
+PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap;
+PLcom/android/server/accounts/AccountManagerService;->getRunningAccountsForSystem()[Landroid/accounts/AccountAndUser;
+PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+HPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+PLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z
+PLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z
+HPLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V
+PLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->unregisterAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V
+HPLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V
+PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper;
+PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
+HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-$$Nest$fgetmCeAttached(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->-$$Nest$fputmCeAttached(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper-IA;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb;-><clinit>()V
+PLcom/android/server/accounts/AccountsDb;-><init>(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Landroid/content/Context;Ljava/io/File;)V
+PLcom/android/server/accounts/AccountsDb;->attachCeDatabase(Ljava/io/File;)V
+PLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb;
+PLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map;
+PLcom/android/server/accounts/AccountsDb;->findAllUidGrants()Ljava/util/List;
+PLcom/android/server/accounts/AccountsDb;->findAllVisibilityValues()Ljava/util/Map;
+PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List;
+PLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map;
+HPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
+PLcom/android/server/accounts/TokenCache$TokenLruCache;-><init>()V
+PLcom/android/server/accounts/TokenCache;-><init>()V
+PLcom/android/server/adb/AdbDebuggingManager$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/adb/AdbDebuggingManager$$ExternalSyntheticLambda0;->currentTimeMillis()J
+PLcom/android/server/adb/AdbDebuggingManager$AdbConnectionInfo;-><init>()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$1;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$2;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;Landroid/os/Handler;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;-><init>(Lcom/android/server/adb/AdbDebuggingManager;Landroid/os/Looper;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->cancelJobToUpdateAdbKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->initKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->logAdbConnectionChanged(Ljava/lang/String;IZ)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->registerForAuthTimeChanges()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->scheduleJobToUpdateAdbKeyStore()J
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->startAdbDebuggingThread()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;-><init>()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->closeSocketLocked()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->listenToSocket()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->openSocketLocked()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->run()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->setHandler(Landroid/os/Handler;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->addExistingUserKeysToKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->deleteKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->filterOutOldKeys()Z
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getAllowedConnectionTime()J
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getLastConnectionTime(Ljava/lang/String;)J
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getNextExpirationTime()J
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getSystemKeysFromFile(Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->initKeyFile()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->persistKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->readTempKeysFile()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->setLastConnectionTime(Ljava/lang/String;J)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->setLastConnectionTime(Ljava/lang/String;JZ)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->updateKeyStore()V
+PLcom/android/server/adb/AdbDebuggingManager$PortListenerImpl;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager;->$r8$lambda$I3NlJTMol-2JFN3dPyCB7gKkrsk()J
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmAdbUsbEnabled(Lcom/android/server/adb/AdbDebuggingManager;)Z
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmAdbWifiEnabled(Lcom/android/server/adb/AdbDebuggingManager;)Z
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmConnectedKeys(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/util/Map;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmConnectionPortPoller(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$AdbConnectionPortPoller;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmContext(Lcom/android/server/adb/AdbDebuggingManager;)Landroid/content/Context;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmTempKeysFile(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/io/File;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmThread(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmTicker(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$Ticker;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fgetmUserKeyFile(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/io/File;
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fputmAdbUsbEnabled(Lcom/android/server/adb/AdbDebuggingManager;Z)V
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$fputmThread(Lcom/android/server/adb/AdbDebuggingManager;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;)V
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$msendPersistKeyStoreMessage(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager;->-$$Nest$sfgetTAG()Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;-><clinit>()V
+PLcom/android/server/adb/AdbDebuggingManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/adb/AdbDebuggingManager;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;Lcom/android/server/adb/AdbDebuggingManager$Ticker;)V
+PLcom/android/server/adb/AdbDebuggingManager;->getAdbFile(Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/adb/AdbDebuggingManager;->lambda$static$0()J
+PLcom/android/server/adb/AdbDebuggingManager;->sendPersistKeyStoreMessage()V
+PLcom/android/server/adb/AdbDebuggingManager;->setAdbEnabled(ZB)V
+PLcom/android/server/adb/AdbService$AdbConnectionPortListener;-><init>(Lcom/android/server/adb/AdbService;)V
+PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;)V
+PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;Lcom/android/server/adb/AdbService$AdbManagerInternalImpl-IA;)V
+PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->isAdbEnabled(B)Z
+PLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->registerTransport(Landroid/debug/IAdbTransport;)V
+PLcom/android/server/adb/AdbService$AdbSettingsObserver;-><init>(Lcom/android/server/adb/AdbService;)V
+PLcom/android/server/adb/AdbService$Lifecycle$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/adb/AdbService$Lifecycle$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/adb/AdbService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/adb/AdbService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/adb/AdbService$Lifecycle;->onStart()V
+PLcom/android/server/adb/AdbService;->-$$Nest$fgetmIsAdbUsbEnabled(Lcom/android/server/adb/AdbService;)Z
+PLcom/android/server/adb/AdbService;->-$$Nest$fgetmTransports(Lcom/android/server/adb/AdbService;)Landroid/util/ArrayMap;
+PLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;Lcom/android/server/adb/AdbService-IA;)V
+PLcom/android/server/adb/AdbService;->bootCompleted()V
+PLcom/android/server/adb/AdbService;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/adb/AdbService;->registerContentObservers()V
+PLcom/android/server/adb/AdbService;->systemReady()V
+HPLcom/android/server/alarm/Alarm$Snapshot;-><init>(Lcom/android/server/alarm/Alarm;)V
+PLcom/android/server/alarm/Alarm;->-$$Nest$fgetmPolicyWhenElapsed(Lcom/android/server/alarm/Alarm;)[J
+HPLcom/android/server/alarm/Alarm;-><init>(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
+PLcom/android/server/alarm/Alarm;->getMaxWhenElapsed()J
+PLcom/android/server/alarm/Alarm;->getRequestedElapsed()J
+PLcom/android/server/alarm/Alarm;->getWhenElapsed()J
+HPLcom/android/server/alarm/Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/alarm/Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z
+HPLcom/android/server/alarm/Alarm;->setPolicyElapsed(IJ)Z
+HPLcom/android/server/alarm/Alarm;->updateWhenElapsed()Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda14;-><init>(I)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/alarm/AlarmManagerService;Landroid/util/ArraySet;)V
+HPLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda15;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda22;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$$ExternalSyntheticLambda3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/alarm/AlarmManagerService$1;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
+PLcom/android/server/alarm/AlarmManagerService$2$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/alarm/AlarmManagerService$2;->$r8$lambda$FzGTY398wY7rsveJl5qWIzqCYlQ(Lcom/android/server/alarm/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
+PLcom/android/server/alarm/AlarmManagerService$2;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$2;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
+HPLcom/android/server/alarm/AlarmManagerService$2;->lambda$doAlarm$0(Landroid/app/IAlarmCompleteListener;)V
+PLcom/android/server/alarm/AlarmManagerService$3;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$4;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$4;->canScheduleExactAlarms(Ljava/lang/String;)Z
+PLcom/android/server/alarm/AlarmManagerService$4;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
+HPLcom/android/server/alarm/AlarmManagerService$4;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/alarm/AlarmManagerService$4;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
+PLcom/android/server/alarm/AlarmManagerService$7;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/AlarmManagerService$8;)V
+PLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda0;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/alarm/AlarmManagerService$8;I)V
+HPLcom/android/server/alarm/AlarmManagerService$8$$ExternalSyntheticLambda1;->updateAlarmDelivery(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService$8;->$r8$lambda$HnHZA72qLxi-ubEMVN7MFMyc2DI(Lcom/android/server/alarm/AlarmManagerService$8;ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$8;->$r8$lambda$R67M3X63FHlLLApwXe7t37Hv1Ao(Lcom/android/server/alarm/AlarmManagerService$8;Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$8;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$8;->handleUidCachedChanged(IZ)V
+HPLcom/android/server/alarm/AlarmManagerService$8;->lambda$updateAlarmsForUid$1(ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$8;->lambda$updateAllAlarms$0(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService$8;->unblockAlarmsForUid(I)V
+HPLcom/android/server/alarm/AlarmManagerService$8;->updateAlarmsForUid(I)V
+PLcom/android/server/alarm/AlarmManagerService$8;->updateAllAlarms()V
+PLcom/android/server/alarm/AlarmManagerService$AlarmHandler$$ExternalSyntheticLambda0;-><init>(I)V
+HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->$r8$lambda$fGF9k_ZLsVmKzJSadhA1hLMfPXM(ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$AlarmHandler;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/alarm/AlarmManagerService$AlarmHandler;->lambda$handleMessage$0(ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService$AlarmThread;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$AlarmThread;->run()V
+PLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService$AppStandbyTracker-IA;)V
+HPLcom/android/server/alarm/AlarmManagerService$AppStandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;-><init>(J)V
+HPLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->recordAlarmForPackage(Ljava/lang/String;IJ)V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->removeForPackage(Ljava/lang/String;I)V
+PLcom/android/server/alarm/AlarmManagerService$AppWakeupHistory;->snapToWindow(Landroid/util/LongArrayQueue;)V
+PLcom/android/server/alarm/AlarmManagerService$BroadcastStats;-><init>(ILjava/lang/String;)V
+PLcom/android/server/alarm/AlarmManagerService$ChargingReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$ClockReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V
+HPLcom/android/server/alarm/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V
+PLcom/android/server/alarm/AlarmManagerService$Constants;-><init>(Lcom/android/server/alarm/AlarmManagerService;Landroid/os/Handler;)V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->onTareEnabledModeChanged(I)V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->start()V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V
+PLcom/android/server/alarm/AlarmManagerService$Constants;->updateTareSettings(I)V
+PLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/alarm/Alarm;J)V
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/alarm/AlarmManagerService$InFlight;
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/alarm/AlarmManagerService$InFlight;
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V
+HPLcom/android/server/alarm/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/alarm/AlarmManagerService$InFlight;)V
+PLcom/android/server/alarm/AlarmManagerService$FilterStats;-><init>(Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V
+HPLcom/android/server/alarm/AlarmManagerService$InFlight;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;J)V
+PLcom/android/server/alarm/AlarmManagerService$InFlight;->isBroadcast()Z
+PLcom/android/server/alarm/AlarmManagerService$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getAlarmWakeLock()Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
+HPLcom/android/server/alarm/AlarmManagerService$Injector;->getCallingUid()I
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getClockReceiver(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$ClockReceiver;
+HPLcom/android/server/alarm/AlarmManagerService$Injector;->getCurrentTimeMillis()J
+HPLcom/android/server/alarm/AlarmManagerService$Injector;->getElapsedRealtimeMillis()J
+PLcom/android/server/alarm/AlarmManagerService$Injector;->getSystemUiUid(Landroid/content/pm/PackageManagerInternal;)I
+PLcom/android/server/alarm/AlarmManagerService$Injector;->init()V
+PLcom/android/server/alarm/AlarmManagerService$Injector;->initializeTimeIfRequired()V
+HPLcom/android/server/alarm/AlarmManagerService$Injector;->isAlarmDriverPresent()Z
+PLcom/android/server/alarm/AlarmManagerService$Injector;->registerDeviceConfigListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+HPLcom/android/server/alarm/AlarmManagerService$Injector;->setAlarm(IJ)V
+PLcom/android/server/alarm/AlarmManagerService$Injector;->waitForAlarm()I
+PLcom/android/server/alarm/AlarmManagerService$InteractiveStateReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$LocalService;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$LocalService;-><init>(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/AlarmManagerService$LocalService-IA;)V
+HPLcom/android/server/alarm/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V
+HPLcom/android/server/alarm/AlarmManagerService$LocalService;->shouldGetBucketElevation(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;-><init>(Lcom/android/server/alarm/Alarm;IJJ)V
+PLcom/android/server/alarm/AlarmManagerService$RemovedAlarm;->isLoggable(I)Z
+PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;-><init>(J)V
+PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;->cleanUpExpiredQuotas(J)V
+PLcom/android/server/alarm/AlarmManagerService$TemporaryQuotaReserve;->removeForPackage(Ljava/lang/String;I)V
+PLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$-ljxB-II3TsrNDjjSE-gaVuQkPU(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$ADG0EAACpycMPBOZGFyKeH7UxXU(ILcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$L82siL18ro7TYb8gZPPKO1HL33E(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;)I
+PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$gTBrLqI8lRe-eLGhoAoKns8vULU(Lcom/android/server/alarm/AlarmManagerService;Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$lO7FlqYCXbhzV969DpFL5GaI-Ko(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->$r8$lambda$tqdFahJPkNbOEr_3mNLrRNcYMTM(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmActivityManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/app/ActivityManagerInternal;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmAppStateTracker(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/AppStateTrackerImpl;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmBackgroundIntent(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/Intent;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmBatteryStatsInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/os/BatteryStatsInternal;
+HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmInjector(Lcom/android/server/alarm/AlarmManagerService;)Lcom/android/server/alarm/AlarmManagerService$Injector;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmListenerCount(Lcom/android/server/alarm/AlarmManagerService;)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmListenerFinishCount(Lcom/android/server/alarm/AlarmManagerService;)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmNextTickHistory(Lcom/android/server/alarm/AlarmManagerService;)I
+HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/alarm/AlarmManagerService;)Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmSendCount(Lcom/android/server/alarm/AlarmManagerService;)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmSendFinishCount(Lcom/android/server/alarm/AlarmManagerService;)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fgetmTickHistory(Lcom/android/server/alarm/AlarmManagerService;)[J
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTickReceived(Lcom/android/server/alarm/AlarmManagerService;J)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTickSet(Lcom/android/server/alarm/AlarmManagerService;J)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastTrigger(Lcom/android/server/alarm/AlarmManagerService;J)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmLastWakeup(Lcom/android/server/alarm/AlarmManagerService;J)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmListenerCount(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmListenerFinishCount(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmNextTickHistory(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmSendCount(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$fputmSendFinishCount(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$madjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetAlarmOperationBundle(Lcom/android/server/alarm/AlarmManagerService;Lcom/android/server/alarm/Alarm;)Landroid/os/Bundle;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetStatsLocked(Lcom/android/server/alarm/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mgetStatsLocked(Lcom/android/server/alarm/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mlogAlarmBatchDelivered(Lcom/android/server/alarm/AlarmManagerService;IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mnotifyBroadcastAlarmCompleteLocked(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mnotifyBroadcastAlarmPendingLocked(Lcom/android/server/alarm/AlarmManagerService;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mremoveAlarmsInternalLocked(Lcom/android/server/alarm/AlarmManagerService;Ljava/util/function/Predicate;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$mupdateNextAlarmClockLocked(Lcom/android/server/alarm/AlarmManagerService;)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smgetAlarmAttributionUid(Lcom/android/server/alarm/Alarm;)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smincrement(Landroid/util/SparseIntArray;I)V
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$sminit()J
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smisExactAlarmChangeEnabled(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smset(JIJJ)I
+PLcom/android/server/alarm/AlarmManagerService;->-$$Nest$smwaitForAlarm(J)I
+PLcom/android/server/alarm/AlarmManagerService;-><clinit>()V
+PLcom/android/server/alarm/AlarmManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/alarm/AlarmManagerService;-><init>(Landroid/content/Context;Lcom/android/server/alarm/AlarmManagerService$Injector;)V
+PLcom/android/server/alarm/AlarmManagerService;->addClampPositive(JJ)J
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBatterySaver(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->adjustDeliveryTimeBasedOnTareLocked(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V
+PLcom/android/server/alarm/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z
+HPLcom/android/server/alarm/AlarmManagerService;->convertToElapsed(JI)J
+HPLcom/android/server/alarm/AlarmManagerService;->decrementAlarmCount(II)V
+HPLcom/android/server/alarm/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V
+PLcom/android/server/alarm/AlarmManagerService;->getAlarmAttributionUid(Lcom/android/server/alarm/Alarm;)I
+PLcom/android/server/alarm/AlarmManagerService;->getAlarmOperationBundle(Lcom/android/server/alarm/Alarm;)Landroid/os/Bundle;
+PLcom/android/server/alarm/AlarmManagerService;->getMinimumAllowedWindow(JJ)J
+PLcom/android/server/alarm/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo;
+HPLcom/android/server/alarm/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
+PLcom/android/server/alarm/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/alarm/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/alarm/AlarmManagerService;->hasScheduleExactAlarmInternal(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->hasUseExactAlarmInternal(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->increment(Landroid/util/SparseIntArray;I)V
+HPLcom/android/server/alarm/AlarmManagerService;->incrementAlarmCount(I)V
+HPLcom/android/server/alarm/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isExactAlarmChangeEnabled(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromAppStandby(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromBatterySaver(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isExemptFromExactAlarmPermissionNoLock(I)Z
+PLcom/android/server/alarm/AlarmManagerService;->isRtc(I)Z
+PLcom/android/server/alarm/AlarmManagerService;->isScheduleExactAlarmDeniedByDefault(Ljava/lang/String;I)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isTimeTickAlarm(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->isUseExactAlarmEnabled(Ljava/lang/String;I)Z
+PLcom/android/server/alarm/AlarmManagerService;->lambda$new$1(Lcom/android/server/alarm/Alarm;Lcom/android/server/alarm/Alarm;)I
+HPLcom/android/server/alarm/AlarmManagerService;->lambda$onUserStarting$7(I)V
+PLcom/android/server/alarm/AlarmManagerService;->lambda$reevaluateRtcAlarms$2(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->lambda$removeLocked$17(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Lcom/android/server/alarm/Alarm;)Z
+PLcom/android/server/alarm/AlarmManagerService;->lambda$removeLocked$18(ILcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->lambda$reorderAlarmsBasedOnStandbyBuckets$5(Landroid/util/ArraySet;Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->logAlarmBatchDelivered(IILandroid/util/SparseIntArray;Landroid/util/SparseIntArray;)V
+PLcom/android/server/alarm/AlarmManagerService;->makeBasicAlarmBroadcastOptions()Landroid/app/BroadcastOptions;
+HPLcom/android/server/alarm/AlarmManagerService;->maxTriggerTime(JJJ)J
+HPLcom/android/server/alarm/AlarmManagerService;->maybeUnregisterTareListenerLocked(Lcom/android/server/alarm/Alarm;)V
+PLcom/android/server/alarm/AlarmManagerService;->notifyBroadcastAlarmCompleteLocked(I)V
+PLcom/android/server/alarm/AlarmManagerService;->notifyBroadcastAlarmPendingLocked(I)V
+PLcom/android/server/alarm/AlarmManagerService;->onBootPhase(I)V
+HPLcom/android/server/alarm/AlarmManagerService;->onStart()V
+PLcom/android/server/alarm/AlarmManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/alarm/AlarmManagerService;->reevaluateRtcAlarms()V
+PLcom/android/server/alarm/AlarmManagerService;->refreshExactAlarmCandidates()V
+HPLcom/android/server/alarm/AlarmManagerService;->registerTareListener(Lcom/android/server/alarm/Alarm;)V
+HPLcom/android/server/alarm/AlarmManagerService;->removeAlarmsInternalLocked(Ljava/util/function/Predicate;I)V
+PLcom/android/server/alarm/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+PLcom/android/server/alarm/AlarmManagerService;->removeLocked(II)V
+HPLcom/android/server/alarm/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;I)V
+HPLcom/android/server/alarm/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z
+PLcom/android/server/alarm/AlarmManagerService;->reportAlarmEventToTare(Lcom/android/server/alarm/Alarm;)V
+HPLcom/android/server/alarm/AlarmManagerService;->rescheduleKernelAlarmsLocked()V
+PLcom/android/server/alarm/AlarmManagerService;->restoreRequestedTime(Lcom/android/server/alarm/Alarm;)Z
+HPLcom/android/server/alarm/AlarmManagerService;->sendPendingBackgroundAlarmsLocked(ILjava/lang/String;)V
+HPLcom/android/server/alarm/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
+HPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(IJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;Landroid/os/Bundle;I)V
+HPLcom/android/server/alarm/AlarmManagerService;->setImplLocked(Lcom/android/server/alarm/Alarm;)V
+HPLcom/android/server/alarm/AlarmManagerService;->setLocked(IJ)V
+HPLcom/android/server/alarm/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
+HPLcom/android/server/alarm/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)I
+HPLcom/android/server/alarm/AlarmManagerService;->updateNextAlarmClockLocked()V
+PLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/alarm/LazyAlarmStore$$ExternalSyntheticLambda0;->applyAsLong(Ljava/lang/Object;)J
+PLcom/android/server/alarm/LazyAlarmStore;-><clinit>()V
+PLcom/android/server/alarm/LazyAlarmStore;-><init>()V
+HPLcom/android/server/alarm/LazyAlarmStore;->add(Lcom/android/server/alarm/Alarm;)V
+HPLcom/android/server/alarm/LazyAlarmStore;->addAll(Ljava/util/ArrayList;)V
+HPLcom/android/server/alarm/LazyAlarmStore;->getNextDeliveryTime()J
+HPLcom/android/server/alarm/LazyAlarmStore;->getNextWakeupDeliveryTime()J
+HPLcom/android/server/alarm/LazyAlarmStore;->remove(Ljava/util/function/Predicate;)Ljava/util/ArrayList;
+HPLcom/android/server/alarm/LazyAlarmStore;->removePendingAlarms(J)Ljava/util/ArrayList;
+PLcom/android/server/alarm/LazyAlarmStore;->setAlarmClockRemovalListener(Ljava/lang/Runnable;)V
+HPLcom/android/server/alarm/LazyAlarmStore;->size()I
+HPLcom/android/server/alarm/LazyAlarmStore;->updateAlarmDeliveries(Lcom/android/server/alarm/AlarmStore$AlarmDeliveryCalculator;)Z
+PLcom/android/server/alarm/MetricsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/alarm/MetricsHelper;Ljava/util/function/Supplier;)V
+PLcom/android/server/alarm/MetricsHelper;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
+PLcom/android/server/alarm/MetricsHelper;->pushAlarmBatchDelivered(II[I[I[I)V
+HPLcom/android/server/alarm/MetricsHelper;->pushAlarmScheduled(Lcom/android/server/alarm/Alarm;I)V
+PLcom/android/server/alarm/MetricsHelper;->reasonToStatsReason(I)I
+PLcom/android/server/alarm/MetricsHelper;->registerPuller(Ljava/util/function/Supplier;)V
+PLcom/android/server/am/ActiveInstrumentation;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;)V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ActiveServices;IZ)V
+HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;-><init>(I)V
+HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;)V
+HPLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/ActiveServices$$ExternalSyntheticLambda9;-><init>()V
+HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V
+HSPLcom/android/server/am/ActiveServices$5;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$5;->run()V
+PLcom/android/server/am/ActiveServices$ActiveForegroundApp;-><init>()V
+PLcom/android/server/am/ActiveServices$AppOpCallback$1;-><init>(Lcom/android/server/am/ActiveServices$AppOpCallback;)V
+PLcom/android/server/am/ActiveServices$AppOpCallback$1;->onOpNoted(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/am/ActiveServices$AppOpCallback$2;-><init>(Lcom/android/server/am/ActiveServices$AppOpCallback;)V
+PLcom/android/server/am/ActiveServices$AppOpCallback;->-$$Nest$mincrementOpCountIfNeeded(Lcom/android/server/am/ActiveServices$AppOpCallback;III)V
+PLcom/android/server/am/ActiveServices$AppOpCallback;-><clinit>()V
+HPLcom/android/server/am/ActiveServices$AppOpCallback;-><init>(Lcom/android/server/am/ProcessRecord;Landroid/app/AppOpsManager;)V
+PLcom/android/server/am/ActiveServices$AppOpCallback;->incrementOpCountIfNeeded(III)V
+PLcom/android/server/am/ActiveServices$AppOpCallback;->isNotTop()Z
+PLcom/android/server/am/ActiveServices$AppOpCallback;->isObsoleteLocked()Z
+PLcom/android/server/am/ActiveServices$AppOpCallback;->registerLocked()V
+PLcom/android/server/am/ActiveServices$BackgroundRestrictedListener;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$MediaProjectionFgsTypeCustomPermission;-><init>(Lcom/android/server/am/ActiveServices;)V
+HSPLcom/android/server/am/ActiveServices$ProcessAnrTimer;-><init>(Lcom/android/server/am/ActivityManagerService;ILjava/lang/String;)V
+HPLcom/android/server/am/ActiveServices$ProcessAnrTimer;->start(Lcom/android/server/am/ProcessRecord;J)V
+HSPLcom/android/server/am/ActiveServices$ServiceAnrTimer;-><init>(Lcom/android/server/am/ActivityManagerService;ILjava/lang/String;)V
+PLcom/android/server/am/ActiveServices$ServiceAnrTimer;->start(Lcom/android/server/am/ServiceRecord;J)V
+HPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Landroid/content/ComponentName;)V
+PLcom/android/server/am/ActiveServices$ServiceMap;-><init>(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
+PLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$ServiceRestarter-IA;)V
+PLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;-><init>(Lcom/android/server/am/ActiveServices;)V
+PLcom/android/server/am/ActiveServices$SystemExemptedFgsTypePermission;->checkPermission(Landroid/content/Context;IILjava/lang/String;Z)I
+PLcom/android/server/am/ActiveServices;->$r8$lambda$0qkjeNpxaTsg0ZNHkscOuBnZYxA(Lcom/android/server/am/ActiveServices;)V
+HPLcom/android/server/am/ActiveServices;->$r8$lambda$btpRyn2QvHxPy1BXkZJjoK5OB78(Lcom/android/server/am/ActiveServices;IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+HPLcom/android/server/am/ActiveServices;->$r8$lambda$dtupl9fjxv8RDOZGvTs4p44nKJI(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+HPLcom/android/server/am/ActiveServices;->$r8$lambda$jK_UxrI6agW1buIHNND7c_BI120(ILcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+PLcom/android/server/am/ActiveServices;->$r8$lambda$p_X4sOJTkojjyDKVG3R4by9T9zs(Lcom/android/server/am/ActiveServices;ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;
+HSPLcom/android/server/am/ActiveServices;-><clinit>()V
+HSPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActiveServices;->appRestrictedAnyInBackground(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActiveServices;->applyForegroundServiceNotificationLocked(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
+HPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
+HPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I
+PLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZZ)Z
+HPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZZLjava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;Z)V
+HPLcom/android/server/am/ActiveServices;->bringUpServiceInnerLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZZZI)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;IZ)Z
+PLcom/android/server/am/ActiveServices;->canBindingClientStartFgsLocked(I)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZLandroid/util/ArrayMap;)Z
+HPLcom/android/server/am/ActiveServices;->deferServiceBringupIfFrozenLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IZZILandroid/app/BackgroundStartPrivileges;ZLandroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActiveServices;->dropFgsNotificationStateLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[I[Ljava/lang/String;IZ)Z
+HPLcom/android/server/am/ActiveServices;->dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActiveServices;->fgsStopReasonToString(I)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord;
+PLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V
+HPLcom/android/server/am/ActiveServices;->generateAdditionalSeInfoFromService(Landroid/content/Intent;)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I
+HPLcom/android/server/am/ActiveServices;->getAppStateTracker()Lcom/android/server/AppStateTracker;
+PLcom/android/server/am/ActiveServices;->getExtraRestartTimeInBetweenLocked()J
+HPLcom/android/server/am/ActiveServices;->getHostingRecordTriggerType(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->getProcessNameForService(Landroid/content/pm/ServiceInfo;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
+HPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForAddLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I
+HPLcom/android/server/am/ActiveServices;->getServiceBindingOomAdjPolicyForRemovalLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;)I
+HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
+HPLcom/android/server/am/ActiveServices;->getServiceMapLocked(I)Lcom/android/server/am/ActiveServices$ServiceMap;
+PLcom/android/server/am/ActiveServices;->getServicesLocked(I)Landroid/util/ArrayMap;
+HPLcom/android/server/am/ActiveServices;->getShortProcessNameForStats(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->getShortServiceNameForStats(Lcom/android/server/am/ServiceRecord;)Ljava/lang/String;
+HPLcom/android/server/am/ActiveServices;->hasForegroundServiceNotificationLocked(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/am/ActiveServices;->initMediaProjectFgsTypeCustomPermission()V
+PLcom/android/server/am/ActiveServices;->initSystemExemptedFgsTypePermission()V
+PLcom/android/server/am/ActiveServices;->isBgFgsRestrictionEnabled(Lcom/android/server/am/ServiceRecord;I)Z
+PLcom/android/server/am/ActiveServices;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
+PLcom/android/server/am/ActiveServices;->isForegroundServiceAllowedInBackgroundRestricted(ILjava/lang/String;)Z
+PLcom/android/server/am/ActiveServices;->isForegroundServiceAllowedInBackgroundRestricted(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
+PLcom/android/server/am/ActiveServices;->isServiceRestartBackoffEnabledLocked(Ljava/lang/String;)Z
+HPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
+PLcom/android/server/am/ActiveServices;->lambda$attachApplicationLocked$2()V
+PLcom/android/server/am/ActiveServices;->lambda$canBindingClientStartFgsLocked$6(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Landroid/util/Pair;
+HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsStartForegroundNoBindingCheckLocked$7(IZLcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionByBindingsLocked$5(ILandroid/util/ArraySet;Lcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+HPLcom/android/server/am/ActiveServices;->lambda$shouldAllowFgsWhileInUsePermissionLocked$4(ILcom/android/server/am/ProcessRecord;)Ljava/lang/Integer;
+HPLcom/android/server/am/ActiveServices;->logFGSStateChangeLocked(Lcom/android/server/am/ServiceRecord;IIIIIZ)V
+PLcom/android/server/am/ActiveServices;->logFgsApiBeginLocked(III)V
+PLcom/android/server/am/ActiveServices;->logFgsApiEndLocked(III)V
+HPLcom/android/server/am/ActiveServices;->logFgsBackgroundStart(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
+HPLcom/android/server/am/ActiveServices;->maybeLogBindCrossProfileService(ILjava/lang/String;I)V
+HPLcom/android/server/am/ActiveServices;->maybeStopShortFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->maybeUpdateShortFgsTrackingLocked(Lcom/android/server/am/ServiceRecord;Z)V
+HPLcom/android/server/am/ActiveServices;->notifyBindingServiceEventLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->onForegroundServiceNotificationUpdateLocked(ZLandroid/app/Notification;ILjava/lang/String;I)V
+HPLcom/android/server/am/ActiveServices;->performRescheduleServiceRestartOnMemoryPressureLocked(JJLjava/lang/String;J)V
+HPLcom/android/server/am/ActiveServices;->performScheduleRestartLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;ZZI)V
+PLcom/android/server/am/ActiveServices;->registerAppOpCallbackLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Z)I
+PLcom/android/server/am/ActiveServices;->removeServiceNotificationDeferralsLocked(Ljava/lang/String;I)V
+PLcom/android/server/am/ActiveServices;->removeServiceRestartBackoffEnabledLocked(Ljava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZI)Z
+HPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;ZI)V
+HPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;Ljava/lang/String;ILandroid/content/Intent;ZIZLandroid/app/IServiceConnection;)Z
+PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V
+PLcom/android/server/am/ActiveServices;->rescheduleServiceRestartIfPossibleLocked(JJLjava/lang/String;J)V
+HPLcom/android/server/am/ActiveServices;->rescheduleServiceRestartOnMemoryPressureIfNeededLocked(IILjava/lang/String;J)V
+HPLcom/android/server/am/ActiveServices;->resetFgsRestrictionLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
+HPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZLandroid/app/ForegroundServiceDelegationOptions;ZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
+PLcom/android/server/am/ActiveServices;->scheduleServiceForegroundTransitionTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
+HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;IIIZLandroid/content/Intent;)V
+HPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZZI)V
+PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActiveServices;->setAllowListWhileInUsePermissionInFgs()V
+HPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;Z)V
+HPLcom/android/server/am/ActiveServices;->setFgsRestrictionLocked(Ljava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;ILandroid/app/BackgroundStartPrivileges;ZZ)V
+HPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;III)V
+PLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+PLcom/android/server/am/ActiveServices;->shouldAllowBootCompletedStart(Lcom/android/server/am/ServiceRecord;I)Z
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundNoBindingCheckLocked(IIILjava/lang/String;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;)I
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsStartForegroundWithBindingCheckLocked(ILjava/lang/String;IILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Landroid/app/BackgroundStartPrivileges;Z)I
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionByBindingsLocked(I)I
+HPLcom/android/server/am/ActiveServices;->shouldAllowFgsWhileInUsePermissionLocked(Ljava/lang/String;IILcom/android/server/am/ProcessRecord;Landroid/app/BackgroundStartPrivileges;)I
+PLcom/android/server/am/ActiveServices;->shouldShowFgsNotificationLocked(Lcom/android/server/am/ServiceRecord;)Z
+PLcom/android/server/am/ActiveServices;->signalForegroundServiceObserversLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->startFgsDeferralTimerLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZILjava/lang/String;IZLjava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;IILjava/lang/String;IZZLandroid/app/BackgroundStartPrivileges;Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;ZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V
+HPLcom/android/server/am/ActiveServices;->stopServiceAndUpdateAllowlistManagerLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+PLcom/android/server/am/ActiveServices;->systemServicesReady()V
+HPLcom/android/server/am/ActiveServices;->traceInstant(Ljava/lang/String;Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
+HPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
+PLcom/android/server/am/ActiveServices;->unscheduleShortFgsTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->updateAllowlistManagerLocked(Lcom/android/server/am/ProcessServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
+HPLcom/android/server/am/ActiveServices;->updateNumForegroundServicesLocked()V
+HPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;Lcom/android/server/am/ConnectionRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessServiceRecord;Z)V
+HPLcom/android/server/am/ActiveServices;->validateForegroundServiceType(Lcom/android/server/am/ServiceRecord;III)Landroid/util/Pair;
+PLcom/android/server/am/ActiveServices;->verifyPackage(Ljava/lang/String;I)Z
+PLcom/android/server/am/ActiveServices;->withinFgsDeferRateLimit(Lcom/android/server/am/ServiceRecord;J)Z
+HSPLcom/android/server/am/ActiveUids;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
+HSPLcom/android/server/am/ActiveUids;->clear()V
+HPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;
+HPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V
+HPLcom/android/server/am/ActiveUids;->remove(I)V
+HSPLcom/android/server/am/ActiveUids;->size()I
+HPLcom/android/server/am/ActiveUids;->valueAt(I)Lcom/android/server/am/UidRecord;
+HSPLcom/android/server/am/ActivityManagerConstants$1;-><init>(Lcom/android/server/am/ActivityManagerConstants;)V
+PLcom/android/server/am/ActivityManagerConstants$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/ActivityManagerConstants$2;-><init>(Lcom/android/server/am/ActivityManagerConstants;)V
+PLcom/android/server/am/ActivityManagerConstants$2;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/ActivityManagerConstants;-><clinit>()V
+HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I
+PLcom/android/server/am/ActivityManagerConstants;->loadDeviceConfigConstants()V
+HSPLcom/android/server/am/ActivityManagerConstants;->loadNativeBootDeviceConfigConstants()V
+PLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V
+PLcom/android/server/am/ActivityManagerConstants;->updateActivityStartsLoggingEnabled()V
+HPLcom/android/server/am/ActivityManagerConstants;->updateConstants()V
+PLcom/android/server/am/ActivityManagerConstants;->updateForceEnablePssProfiling()V
+PLcom/android/server/am/ActivityManagerConstants;->updateForegroundServiceStartsLoggingEnabled()V
+PLcom/android/server/am/ActivityManagerDebugConfig;-><clinit>()V
+HSPLcom/android/server/am/ActivityManagerProcLock;-><init>()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda0;-><init>([ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/LinkedList;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda18;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/ActivityManagerService;JJZZ)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda20;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/wm/ActivityTaskManagerInternal;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda23;->run()V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/am/ActivityManagerService;JZLcom/android/server/am/ProcessRecord;IJ)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda3;-><init>(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;I)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
+PLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda6;->run()V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;-><init>(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$$ExternalSyntheticLambda7;->run()V
+HPLcom/android/server/am/ActivityManagerService$14;-><init>(Lcom/android/server/am/ActivityManagerService;I)V
+PLcom/android/server/am/ActivityManagerService$14;->binderDied()V
+HPLcom/android/server/am/ActivityManagerService$15;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
+HPLcom/android/server/am/ActivityManagerService$15;->run()V
+PLcom/android/server/am/ActivityManagerService$16;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;ZLandroid/os/DropBoxManager;)V
+PLcom/android/server/am/ActivityManagerService$16;->run()V
+HSPLcom/android/server/am/ActivityManagerService$1;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HSPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
+PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunched(JLandroid/content/ComponentName;II)V
+PLcom/android/server/am/ActivityManagerService$2;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/am/ActivityManagerService$2;->onReportFullyDrawn(JJ)V
+HSPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z
+HPLcom/android/server/am/ActivityManagerService$3;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
+PLcom/android/server/am/ActivityManagerService$3;->getIntentFilter(Lcom/android/server/am/BroadcastFilter;)Landroid/content/IntentFilter;
+HPLcom/android/server/am/ActivityManagerService$3;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+HPLcom/android/server/am/ActivityManagerService$3;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
+HPLcom/android/server/am/ActivityManagerService$3;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+HPLcom/android/server/am/ActivityManagerService$3;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
+HPLcom/android/server/am/ActivityManagerService$3;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Lcom/android/server/am/BroadcastFilter;IIJ)Lcom/android/server/am/BroadcastFilter;
+HPLcom/android/server/am/ActivityManagerService$3;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+PLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$5;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$9$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ActivityManagerService$9;)V
+PLcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$9;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
+HPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
+PLcom/android/server/am/ActivityManagerService$CacheBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;-><init>(JILjava/lang/String;I)V
+HSPLcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;-><init>()V
+HSPLcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor;-><init>(Lcom/android/server/am/ActivityManagerService$GetBackgroundStartPrivilegesFunctor-IA;)V
+PLcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;-><init>(Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getPolicy()I
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getValidEnforcementPolicy(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->isDisabled()Z
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->registerObserver()V
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->update()V
+HSPLcom/android/server/am/ActivityManagerService$Injector;->-$$Nest$fputmUserController(Lcom/android/server/am/ActivityManagerService$Injector;Lcom/android/server/am/UserController;)V
+HSPLcom/android/server/am/ActivityManagerService$Injector;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/am/ActivityManagerService$Injector;->clearCallingIdentity()J
+HPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z
+HSPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/appop/AppOpsService;
+HSPLcom/android/server/am/ActivityManagerService$Injector;->getBroadcastQueues(Lcom/android/server/am/ActivityManagerService;)[Lcom/android/server/am/BroadcastQueue;
+HPLcom/android/server/am/ActivityManagerService$Injector;->getCallingPid()I
+HPLcom/android/server/am/ActivityManagerService$Injector;->getCallingUid()I
+HSPLcom/android/server/am/ActivityManagerService$Injector;->getContext()Landroid/content/Context;
+HSPLcom/android/server/am/ActivityManagerService$Injector;->getProcessList(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/ProcessList;
+HSPLcom/android/server/am/ActivityManagerService$Injector;->getUiHandler(Lcom/android/server/am/ActivityManagerService;)Landroid/os/Handler;
+HPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z
+HPLcom/android/server/am/ActivityManagerService$Injector;->restoreCallingIdentity(J)V
+HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object;
+PLcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
+PLcom/android/server/am/ActivityManagerService$ItemMatcher;->build(Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$ItemMatcher;->match(Ljava/lang/Object;Landroid/content/ComponentName;)Z
+HSPLcom/android/server/am/ActivityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->getService()Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onBootPhase(I)V
+HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V
+HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->startService(Lcom/android/server/SystemServiceManager;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ActivityManagerService$LocalService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addAppBackgroundRestrictionListener(Landroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addBindServiceEventListener(Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addBroadcastEventListener(Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addForegroundServiceStateListener(Landroid/app/ActivityManagerInternal$ForegroundServiceStateListener;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->addPendingTopUid(IILandroid/app/IApplicationThread;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->applyForegroundServiceNotification(Landroid/app/Notification;Ljava/lang/String;ILjava/lang/String;I)Landroid/app/ActivityManagerInternal$ServiceNotificationPolicy;
+PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastGlobalConfigurationChanged(IZ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;[Ljava/lang/String;ZI[ILjava/util/function/BiFunction;Landroid/os/Bundle;)I
+PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/app/IApplicationThread;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->deletePendingTopUid(IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->enforceBroadcastOptionsPermissions(Landroid/os/Bundle;I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->finishBooting()V
+PLcom/android/server/am/ActivityManagerService$LocalService;->getBootTimeTempAllowListDuration()J
+PLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentProfileIds()[I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I
+PLcom/android/server/am/ActivityManagerService$LocalService;->getInstrumentationSourceUid(I)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->getRestrictionLevel(I)I
+PLcom/android/server/am/ActivityManagerService$LocalService;->getServiceStartForegroundTimeout()I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->hasForegroundServiceNotification(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->hasStartedUserState(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppBad(Ljava/lang/String;I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppStartModeDisabled(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isAssociatedCompanionApp(II)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isBooted()Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isBooting()Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isDeviceOwner(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isModernQueueEnabled()Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isPendingTopUid(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isProfileOwner(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isSplitConfigurationChange(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isTempAllowlistedForFgsWhileInUse(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isUidActive(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isUserRunning(II)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->killAllBackgroundProcessesExcept(II)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->logFgsApiBegin(III)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->logFgsApiEnd(III)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmFinish(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->noteAlarmStart(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->noteWakeupAlarm(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->onForegroundServiceNotificationUpdate(ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->registerAnrController(Landroid/app/AnrController;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->registerNetworkPolicyUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->scheduleAppGcs()V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setBooted(Z)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setBooting(Z)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setCompanionAppUids(ILjava/util/Set;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleAllowlist([I[I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceOwnerUid(I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowlistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;JIILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setProfileOwnerUid(Landroid/util/ArraySet;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setVoiceInteractionManagerProvider(Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->shouldConfirmCredentials(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->shouldWaitForNetworkRulesUpdate(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->startProcess(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZZLjava/lang/String;Landroid/content/ComponentName;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ILandroid/app/BackgroundStartPrivileges;)Landroid/content/ComponentName;
+PLcom/android/server/am/ActivityManagerService$LocalService;->trimApplications()V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;Landroid/app/assist/ActivityId;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateCpuStats()V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempAllowlist([IIZJIILjava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->updateOomLevelsForDisplay(I)V
+PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;-><init>(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;-><init>(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$-BaOH0nhWmB1j4fAdRCLVwJvRCA(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->$r8$lambda$bz9CTa7TXqawLiiOdBfpNP_dnbI(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$1(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BroadcastEventListener;)V
+HPLcom/android/server/am/ActivityManagerService$MainHandler;->lambda$handleMessage$2(Landroid/os/Message;Landroid/app/ActivityManagerInternal$BindServiceEventListener;)V
+PLcom/android/server/am/ActivityManagerService$MemBinder$1;-><init>(Lcom/android/server/am/ActivityManagerService$MemBinder;)V
+PLcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$PendingTempAllowlist;-><init>(IJILjava/lang/String;II)V
+PLcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z
+PLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService$PermissionController;->isRuntimePermission(Ljava/lang/String;)Z
+HSPLcom/android/server/am/ActivityManagerService$PidMap;-><init>()V
+HPLcom/android/server/am/ActivityManagerService$PidMap;->doAddInternal(ILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService$PidMap;->doRemoveInternal(ILcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService$PidMap;->size()I
+PLcom/android/server/am/ActivityManagerService$PidMap;->valueAt(I)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
+PLcom/android/server/am/ActivityManagerService$ProcessInfoService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$StickyBroadcast;-><init>()V
+HPLcom/android/server/am/ActivityManagerService$StickyBroadcast;->create(Landroid/content/Intent;ZII)Lcom/android/server/am/ActivityManagerService$StickyBroadcast;
+HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;-><init>(Ljava/lang/Boolean;)V
+PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;->isProcessFrozen()Ljava/lang/Boolean;
+PLcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;->withProcessFrozenState(Z)Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;
+HSPLcom/android/server/am/ActivityManagerService;->$r8$lambda$4jAnBrF-SmuZoSRgfVhHQN2lKao(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$Dp0egYYO_wvfUqcu1s5QAPQddjA([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$IE8SqRKSFsLlY7GC_8cKvVDeK0g(Lcom/android/server/am/ActivityManagerService;Ljava/util/LinkedList;)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$IzjUh_o8KWqydvYO0dnNprsu32k(Lcom/android/server/am/ActivityManagerService;JJZZLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$e8WnLKSH7e6sDHRELddgL3PL_d8(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$gwpxWp5Qwn61kRYqtmpQ9WyBNik(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
+PLcom/android/server/am/ActivityManagerService;->$r8$lambda$p1-L-hA5wy-OdXKEh0TX_hvZ7h0(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmCompanionAppUidsMap(Lcom/android/server/am/ActivityManagerService;)Ljava/util/Map;
+HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmDeviceOwnerUid(Lcom/android/server/am/ActivityManagerService;)I
+HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmFgsWhileInUseTempAllowList(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/FgsTempAllowList;
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmNetworkPolicyUidObserver(Lcom/android/server/am/ActivityManagerService;)Landroid/app/IUidObserver;
+HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmPendingStartActivityUids(Lcom/android/server/am/ActivityManagerService;)Lcom/android/server/am/PendingStartActivityUids;
+HPLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmProfileOwnerUids(Lcom/android/server/am/ActivityManagerService;)Landroid/util/ArraySet;
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmStrictModeCallbacks(Lcom/android/server/am/ActivityManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fgetmUidNetworkBlockedReasons(Lcom/android/server/am/ActivityManagerService;)Landroid/util/SparseIntArray;
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmDeviceOwnerUid(Lcom/android/server/am/ActivityManagerService;I)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmNetworkPolicyUidObserver(Lcom/android/server/am/ActivityManagerService;Landroid/app/IUidObserver;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$fputmProfileOwnerUids(Lcom/android/server/am/ActivityManagerService;Landroid/util/ArraySet;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mdoDump(Lcom/android/server/am/ActivityManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mhandleBindApplicationTimeoutHard(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mhandleBindApplicationTimeoutSoft(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;I)V
+HPLcom/android/server/am/ActivityManagerService;->-$$Nest$misAppBad(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$msetHomeTimeout(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$msetVoiceInteractionManagerProvider(Lcom/android/server/am/ActivityManagerService;Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
+HSPLcom/android/server/am/ActivityManagerService;->-$$Nest$mstart(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mstartBroadcastObservers(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->-$$Nest$mtrimApplications(Lcom/android/server/am/ActivityManagerService;ZI)V
+HSPLcom/android/server/am/ActivityManagerService;-><clinit>()V
+HSPLcom/android/server/am/ActivityManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZILjava/lang/String;ZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZZLjava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
+HPLcom/android/server/am/ActivityManagerService;->addErrorToDropBox(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/Float;Landroid/os/incremental/IncrementalMetrics;Ljava/util/UUID;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;)V
+HPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->addServiceToMap(Landroid/util/ArrayMap;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;ZLjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLOSP(ILjava/lang/String;I)I
+PLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLOSP(ILjava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Lcom/android/server/am/ActivityManagerService$VolatileDropboxEntryStates;Ljava/lang/StringBuilder;)V
+HPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V
+HPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)V
+PLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
+PLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V
+HPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;ZILjava/lang/String;Landroid/app/IApplicationThread;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V
+HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForProcLockedSection()V
+PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V
+PLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZILandroid/app/BackgroundStartPrivileges;[I)I
+PLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIII)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentLockedTraced(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;ZZIIIIILandroid/app/BackgroundStartPrivileges;[ILjava/util/function/BiFunction;)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForFlags(I)Lcom/android/server/am/BroadcastQueue;
+HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForFlags(ILjava/lang/Object;)Lcom/android/server/am/BroadcastQueue;
+HPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
+HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V
+HPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V
+HPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIIZ)I
+HPLcom/android/server/am/ActivityManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsage()V
+HPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
+HPLcom/android/server/am/ActivityManagerService;->checkPermissionForDevice(Ljava/lang/String;III)I
+HPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
+PLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIIZLjava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;IZZIZZ)Z
+HPLcom/android/server/am/ActivityManagerService;->clearProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I[I)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+HPLcom/android/server/am/ActivityManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V
+PLcom/android/server/am/ActivityManagerService;->doesReasonCodeAllowSchedulingUserInitiatedJobs(I)Z
+PLcom/android/server/am/ActivityManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->enforceAllowedToStartOrBindServiceIfSdkSandbox(Landroid/content/Intent;)V
+PLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/app/BroadcastOptions;I)V
+HPLcom/android/server/am/ActivityManagerService;->enforceBroadcastOptionPermissionsInternal(Landroid/os/Bundle;I)V
+HPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->enforceDumpPermissionForPackage(Ljava/lang/String;IILjava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedOrSdkSandboxCaller(Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V
+HPLcom/android/server/am/ActivityManagerService;->ensureAllowedAssociations()V
+HPLcom/android/server/am/ActivityManagerService;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->finishAttachApplication(J)V
+HPLcom/android/server/am/ActivityManagerService;->finishAttachApplicationInner(JII)V
+HPLcom/android/server/am/ActivityManagerService;->finishBooting()V
+PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
+PLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZZILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZZILjava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->frozenBinderTransactionDetected(IIII)V
+PLcom/android/server/am/ActivityManagerService;->getAppId(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/am/ActivityManagerService;->getAppOpsManager()Landroid/app/AppOpsManager;
+HPLcom/android/server/am/ActivityManagerService;->getAppStartModeLOSP(ILjava/lang/String;IIZZZ)I
+HPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
+HPLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Landroid/util/ArrayMap;
+PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
+PLcom/android/server/am/ActivityManagerService;->getContentProviderHelper()Lcom/android/server/am/ContentProviderHelper;
+PLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo;
+HPLcom/android/server/am/ActivityManagerService;->getCurrentUserId()I
+HPLcom/android/server/am/ActivityManagerService;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/am/ActivityManagerService;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo;
+HPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
+HPLcom/android/server/am/ActivityManagerService;->getIntentSenderWithFeatureAsApp(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;II)Landroid/content/IIntentSender;
+PLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I
+HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->getRealProcessStateLocked(Lcom/android/server/am/ProcessRecord;I)I
+HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->getRecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I
+PLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getShortAction(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getTagForIntentSenderLocked(Lcom/android/server/am/PendingIntentRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/ActivityManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I
+HSPLcom/android/server/am/ActivityManagerService;->getTopApp()Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->getUidProcessCapabilityLocked(I)I
+HPLcom/android/server/am/ActivityManagerService;->getUidProcessState(ILjava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->getUidProcessStateInnerLOSP(I)I
+HPLcom/android/server/am/ActivityManagerService;->getUidState(I)I
+HPLcom/android/server/am/ActivityManagerService;->getUidStateLocked(I)I
+HPLcom/android/server/am/ActivityManagerService;->grantImplicitAccess(ILandroid/content/Intent;II)V
+HPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;IZZZ)V
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->handleBindApplicationTimeoutHard(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->handleBindApplicationTimeoutSoft(Lcom/android/server/am/ProcessRecord;I)V
+HPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->handlePendingSystemServerWtfs(Ljava/util/LinkedList;)V
+HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;II)Z
+HPLcom/android/server/am/ActivityManagerService;->idleUids()V
+PLcom/android/server/am/ActivityManagerService;->initDropboxRateLimiter()V
+HSPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V
+PLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/am/ActivityManagerService;->isAllowlistedForFgsStartLOSP(I)Lcom/android/server/am/ActivityManagerService$FgsTempAllowListItem;
+HPLcom/android/server/am/ActivityManagerService;->isAppBad(Ljava/lang/String;I)Z
+HPLcom/android/server/am/ActivityManagerService;->isAppFreezerExemptInstPkg()Z
+HPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->isDeviceProvisioned(Landroid/content/Context;)Z
+HPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleAllowlistLOSP(IZ)Z
+HPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;[I)Z
+HPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->isSystemUserOnly(I)Z
+HPLcom/android/server/am/ActivityManagerService;->isUidActive(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->isUidActiveLOSP(I)Z
+HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
+PLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z
+PLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V
+HPLcom/android/server/am/ActivityManagerService;->lambda$appendDropBoxProcessHeaders$12(Ljava/lang/StringBuilder;Landroid/content/pm/IPackageManager;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->lambda$checkExcessivePowerUsage$20(JJZZLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->lambda$filterNonExportedComponents$19(Landroid/app/IUnsafeIntentStrictModeCallback;Landroid/content/Intent;I)V
+PLcom/android/server/am/ActivityManagerService;->lambda$getPackageProcessState$0([ILjava/lang/String;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->lambda$logStrictModeViolationToDropBox$10(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->lambda$schedulePendingSystemServerWtfs$11(Ljava/util/LinkedList;)V
+HSPLcom/android/server/am/ActivityManagerService;->lambda$scheduleUpdateBinderHeavyHitterWatcherConfig$33()V
+PLcom/android/server/am/ActivityManagerService;->logFgsApiBegin(III)V
+PLcom/android/server/am/ActivityManagerService;->logFgsApiEnd(III)V
+HPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
+PLcom/android/server/am/ActivityManagerService;->maybeLogUserspaceRebootEvent()V
+HPLcom/android/server/am/ActivityManagerService;->maybeSendBootCompletedLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->monitor()V
+PLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V
+PLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->notifyBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V
+HPLcom/android/server/am/ActivityManagerService;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+HPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
+HPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService;->pushTempAllowlist()V
+HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z
+PLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
+HPLcom/android/server/am/ActivityManagerService;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
+HPLcom/android/server/am/ActivityManagerService;->registerStrictModeCallback(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->registerUidObserverForUids(Landroid/app/IUidObserver;IILjava/lang/String;[I)Landroid/os/IBinder;
+PLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V
+PLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->removeOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;Z)V
+HPLcom/android/server/am/ActivityManagerService;->removePidLocked(ILcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
+PLcom/android/server/am/ActivityManagerService;->reportCurWakefulnessUsageEvent()V
+PLcom/android/server/am/ActivityManagerService;->reportGlobalUsageEvent(I)V
+HPLcom/android/server/am/ActivityManagerService;->reportUidFrozenStateChanged([I[I)V
+HPLcom/android/server/am/ActivityManagerService;->reportUidInfoMessageLocked(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V
+HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterProcLockedSection()V
+PLcom/android/server/am/ActivityManagerService;->retrieveSettings()V
+PLcom/android/server/am/ActivityManagerService;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
+HPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V
+PLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V
+PLcom/android/server/am/ActivityManagerService;->scheduleAsFifoPriority(IZ)Z
+PLcom/android/server/am/ActivityManagerService;->schedulePendingSystemServerWtfs(Ljava/util/LinkedList;)V
+HSPLcom/android/server/am/ActivityManagerService;->scheduleUpdateBinderHeavyHitterWatcherConfig()V
+PLcom/android/server/am/ActivityManagerService;->sendBootBroadcastToAppLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/Intent;I)V
+HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+HPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;IIILandroid/content/Intent;)V
+HPLcom/android/server/am/ActivityManagerService;->setAppIdTempAllowlistStateLSP(IZ)V
+PLcom/android/server/am/ActivityManagerService;->setAppOpsPolicy(Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
+PLcom/android/server/am/ActivityManagerService;->setHomeTimeout()V
+HSPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V
+HPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLOSP(Lcom/android/server/am/ProcessRecord;I)V
+HPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
+PLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+HPLcom/android/server/am/ActivityManagerService;->setSystemProcess()V
+HSPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V
+HPLcom/android/server/am/ActivityManagerService;->setUidTempAllowlistStateLSP(IZ)V
+PLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
+PLcom/android/server/am/ActivityManagerService;->setVoiceInteractionManagerProvider(Landroid/app/ActivityManagerInternal$VoiceInteractionManagerProvider;)V
+PLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/am/ActivityManagerService;->shouldIgnoreDeliveryGroupPolicy(Ljava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->showConsoleNotificationIfActive()V
+PLcom/android/server/am/ActivityManagerService;->showMteOverrideNotificationIfActive()V
+HSPLcom/android/server/am/ActivityManagerService;->start()V
+HPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IIJLandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
+PLcom/android/server/am/ActivityManagerService;->startBroadcastObservers()V
+HPLcom/android/server/am/ActivityManagerService;->startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;ILandroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V
+HPLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V
+HPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZ)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActivityManagerService;->stopAssociationLocked(ILjava/lang/String;IJLandroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
+PLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IZILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HPLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HPLcom/android/server/am/ActivityManagerService;->tempAllowlistUidLocked(IJILjava/lang/String;II)V
+HPLcom/android/server/am/ActivityManagerService;->traceBegin(JLjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->trimApplications(ZI)V
+HPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(ZI)V
+PLcom/android/server/am/ActivityManagerService;->uidOnBackgroundAllowlistLOSP(I)Z
+PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
+HPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
+HPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
+PLcom/android/server/am/ActivityManagerService;->unstableProviderDied(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;Landroid/app/assist/ActivityId;)V
+PLcom/android/server/am/ActivityManagerService;->updateAppProcessCpuTimeLPr(JZJILcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLOSP(Ljava/util/List;ZI)V
+PLcom/android/server/am/ActivityManagerService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
+HPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V
+PLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
+PLcom/android/server/am/ActivityManagerService;->updateForceBackgroundCheck(Z)V
+PLcom/android/server/am/ActivityManagerService;->updateForegroundServiceUsageStats(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(I)V
+HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z
+HPLcom/android/server/am/ActivityManagerService;->updateOomAdjPendingTargetsLocked(I)V
+PLcom/android/server/am/ActivityManagerService;->updatePhantomProcessCpuTimeLPr(JZJILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZZ)V
+HPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(Ljava/lang/String;ILjava/lang/String;I)Z
+PLcom/android/server/am/ActivityManagerService;->validateServiceInstanceName(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerService;->watchDeviceProvisioning(Landroid/content/Context;)V
+PLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V
+PLcom/android/server/am/ActivityManagerShellCommand;-><clinit>()V
+PLcom/android/server/am/ActivityManagerShellCommand;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
+PLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent;
+PLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I
+HPLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerUtils;-><clinit>()V
+PLcom/android/server/am/ActivityManagerUtils;->extractByte([BI)I
+PLcom/android/server/am/ActivityManagerUtils;->getAndroidIdHash()I
+PLcom/android/server/am/ActivityManagerUtils;->getUnsignedHashCached(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerUtils;->getUnsignedHashUnCached(Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerUtils;->logUnsafeIntentEvent(IILandroid/content/Intent;Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerUtils;->shouldSamplePackageForAtom(Ljava/lang/String;F)Z
+PLcom/android/server/am/ActivityManagerUtils;->unsignedIntFromBytes([B)I
+HSPLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/AnrHelper;ILcom/android/internal/os/TimeoutRecord;)V
+PLcom/android/server/am/AnrHelper$$ExternalSyntheticLambda2;->call()Ljava/lang/Object;
+PLcom/android/server/am/AnrHelper$AnrConsumerThread;-><init>(Lcom/android/server/am/AnrHelper;)V
+PLcom/android/server/am/AnrHelper$AnrConsumerThread;->next()Lcom/android/server/am/AnrHelper$AnrRecord;
+PLcom/android/server/am/AnrHelper$AnrConsumerThread;->run()V
+PLcom/android/server/am/AnrHelper$AnrRecord;-><init>(Lcom/android/server/am/AnrHelper;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;ZLjava/util/concurrent/Future;)V
+PLcom/android/server/am/AnrHelper$AnrRecord;->appNotResponding(Z)V
+PLcom/android/server/am/AnrHelper;->$r8$lambda$o4U1b8DdepzPilDk5ASRfiFAv34(Lcom/android/server/am/AnrHelper;ILcom/android/internal/os/TimeoutRecord;)Ljava/io/File;
+PLcom/android/server/am/AnrHelper;->$r8$lambda$w_5HmdP7xJVX9IY4uygDlAQ5zxQ(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/am/AnrHelper;->$r8$lambda$y7RFlsVN6Rac_UO6nHdK_btKHW0(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmAnrRecords(Lcom/android/server/am/AnrHelper;)Ljava/util/ArrayList;
+PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmAuxiliaryTaskExecutor(Lcom/android/server/am/AnrHelper;)Ljava/util/concurrent/ExecutorService;
+PLcom/android/server/am/AnrHelper;->-$$Nest$fgetmRunning(Lcom/android/server/am/AnrHelper;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/am/AnrHelper;->-$$Nest$fputmProcessingPid(Lcom/android/server/am/AnrHelper;I)V
+PLcom/android/server/am/AnrHelper;->-$$Nest$mscheduleBinderHeavyHitterAutoSamplerIfNecessary(Lcom/android/server/am/AnrHelper;)V
+PLcom/android/server/am/AnrHelper;->-$$Nest$sfgetEXPIRED_REPORT_TIME_MS()J
+PLcom/android/server/am/AnrHelper;->-$$Nest$sfgetSELF_ONLY_AFTER_BOOT_MS()J
+HSPLcom/android/server/am/AnrHelper;-><clinit>()V
+HSPLcom/android/server/am/AnrHelper;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/AnrHelper;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/util/concurrent/ExecutorService;Ljava/util/concurrent/ExecutorService;)V
+PLcom/android/server/am/AnrHelper;->appNotResponding(Lcom/android/server/am/ProcessRecord;Lcom/android/internal/os/TimeoutRecord;)V
+PLcom/android/server/am/AnrHelper;->appNotResponding(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;Z)V
+PLcom/android/server/am/AnrHelper;->lambda$appNotResponding$2(ILcom/android/internal/os/TimeoutRecord;)Ljava/io/File;
+PLcom/android/server/am/AnrHelper;->lambda$static$0(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/am/AnrHelper;->lambda$static$1(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLcom/android/server/am/AnrHelper;->makeExpiringThreadPoolWithSize(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ThreadPoolExecutor;
+PLcom/android/server/am/AnrHelper;->scheduleBinderHeavyHitterAutoSamplerIfNecessary()V
+PLcom/android/server/am/AnrHelper;->startAnrConsumerIfNeeded()V
+PLcom/android/server/am/AppBatteryExemptionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryExemptionTracker;)V
+PLcom/android/server/am/AppBatteryExemptionTracker$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryExemptionTracker;)V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->$r8$lambda$jMixVCQDkf-BsCQ_bwWqAgEzrk0(Lcom/android/server/am/AppBatteryExemptionTracker;)V
+HSPLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBatteryExemptionTracker;)V
+PLcom/android/server/am/AppBatteryExemptionTracker$AppBatteryExemptionPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->$r8$lambda$iWmJGcyLLkDvNkQor9pOnxtCJY0(Lcom/android/server/am/AppBatteryExemptionTracker;Lcom/android/server/am/BaseAppStateTracker;)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->-$$Nest$mtrimDurations(Lcom/android/server/am/AppBatteryExemptionTracker;)V
+HSPLcom/android/server/am/AppBatteryExemptionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppBatteryExemptionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->lambda$onSystemReady$0(Lcom/android/server/am/BaseAppStateTracker;)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->onStateChange(ILjava/lang/String;ZJI)V
+PLcom/android/server/am/AppBatteryExemptionTracker;->onSystemReady()V
+PLcom/android/server/am/AppBatteryExemptionTracker;->trimDurations()V
+HSPLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppBatteryTracker;)V
+HSPLcom/android/server/am/AppBatteryTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/AppBatteryTracker;)V
+HSPLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBatteryTracker;)V
+HSPLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getFloatArray(Landroid/content/res/TypedArray;)[F
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->onSystemReady()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->onUserInteractionStarted(Ljava/lang/String;I)V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateBgCurrentDrainAutoRestrictAbusiveAppsEnabled()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainDecoupleThresholds()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainEventDurationBasedThresholdEnabled()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainExemptedTypes()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainInteractionGracePeriod()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainLocationMinDuration()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainMediaPlaybackMinDuration()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainThreshold()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateCurrentDrainWindow()V
+PLcom/android/server/am/AppBatteryTracker$AppBatteryPolicy;->updateTrackerEnabled()V
+HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><clinit>()V
+HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><init>()V
+HSPLcom/android/server/am/AppBatteryTracker$BatteryUsage;-><init>(DDDDD)V
+HSPLcom/android/server/am/AppBatteryTracker$ImmutableBatteryUsage;-><init>()V
+HSPLcom/android/server/am/AppBatteryTracker;-><clinit>()V
+HSPLcom/android/server/am/AppBatteryTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppBatteryTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBatteryTracker;->onSystemReady()V
+PLcom/android/server/am/AppBatteryTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
+PLcom/android/server/am/AppBatteryTracker;->scheduleBatteryUsageStatsUpdateIfNecessary(J)V
+HPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppBindRecord;->dumpInIntentBind(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/am/AppBindServiceEventsTracker$AppBindServiceEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBindServiceEventsTracker;)V
+HSPLcom/android/server/am/AppBindServiceEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppBindServiceEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBindServiceEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateEvents;
+HPLcom/android/server/am/AppBindServiceEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+PLcom/android/server/am/AppBindServiceEventsTracker;->getTrackerInfoForStatsd(I)[B
+PLcom/android/server/am/AppBindServiceEventsTracker;->getType()I
+HPLcom/android/server/am/AppBindServiceEventsTracker;->onBindingService(Ljava/lang/String;I)V
+PLcom/android/server/am/AppBindServiceEventsTracker;->onSystemReady()V
+HSPLcom/android/server/am/AppBroadcastEventsTracker$AppBroadcastEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppBroadcastEventsTracker;)V
+HSPLcom/android/server/am/AppBroadcastEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppBroadcastEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppBroadcastEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateEvents;
+PLcom/android/server/am/AppBroadcastEventsTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;
+HPLcom/android/server/am/AppBroadcastEventsTracker;->onSendingBroadcast(Ljava/lang/String;I)V
+PLcom/android/server/am/AppBroadcastEventsTracker;->onSystemReady()V
+HSPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/PackageWatchdog;)V
+HPLcom/android/server/am/AppErrors;->isBadProcess(Ljava/lang/String;I)Z
+PLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfig(Ljava/lang/String;)V
+HPLcom/android/server/am/AppErrors;->resetProcessCrashTime(Ljava/lang/String;I)V
+PLcom/android/server/am/AppErrors;->resetProcessCrashTime(ZII)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;I)V
+HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda15;->run()V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;)V
+HPLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda17;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;-><init>()V
+PLcom/android/server/am/AppExitInfoTracker$$ExternalSyntheticLambda7;->get()Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker$1;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$2;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->$r8$lambda$Y4wPp1NAYnFwArAHF0m1DTLetnA(Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;)I
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->-$$Nest$fputmUid(Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;I)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addInfoLocked(Landroid/util/SparseArray;Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfoLocked(IILjava/util/ArrayList;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getInfosLocked(Landroid/util/SparseArray;IILjava/util/ArrayList;)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->lambda$getInfosLocked$0(Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;)I
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->toListLocked(Ljava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/lang/String;Ljava/lang/Integer;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->addLocked(IILjava/lang/Object;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->onProcDied(IILjava/lang/Integer;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->remove(II)Landroid/util/Pair;
+HSPLcom/android/server/am/AppExitInfoTracker$AppTraceRetriever;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+HSPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->getUidByIsolatedUid(I)Ljava/lang/Integer;
+PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeIsolatedUidLocked(I)I
+HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;-><init>(Lcom/android/server/am/AppExitInfoTracker;Landroid/os/Looper;)V
+HPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$4bSqVHM7qj6v6DxMNp66FfiZ0SQ(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$8ldOFQfwVDb6WsbCLIHcgkKxIAI(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+PLcom/android/server/am/AppExitInfoTracker;->$r8$lambda$h-8YP32HtmCPcUbOWTowipwKDNc(Lcom/android/server/am/AppExitInfoTracker;)V
+HPLcom/android/server/am/AppExitInfoTracker;->-$$Nest$fgetmLock(Lcom/android/server/am/AppExitInfoTracker;)Ljava/lang/Object;
+PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$fgetmService(Lcom/android/server/am/AppExitInfoTracker;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$mupdateExitInfoIfNecessaryLocked(Lcom/android/server/am/AppExitInfoTracker;IILjava/lang/Integer;Ljava/lang/Integer;)Z
+PLcom/android/server/am/AppExitInfoTracker;->-$$Nest$smfindAndRemoveFromSparse2dArray(Landroid/util/SparseArray;II)Ljava/lang/Object;
+HSPLcom/android/server/am/AppExitInfoTracker;-><clinit>()V
+HSPLcom/android/server/am/AppExitInfoTracker;-><init>()V
+HPLcom/android/server/am/AppExitInfoTracker;->addExitInfoInnerLocked(Ljava/lang/String;ILandroid/app/ApplicationExitInfo;Z)V
+PLcom/android/server/am/AppExitInfoTracker;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)Landroid/app/ApplicationExitInfo;
+HPLcom/android/server/am/AppExitInfoTracker;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;Z)Landroid/app/ApplicationExitInfo;
+PLcom/android/server/am/AppExitInfoTracker;->copyToGzFile(Ljava/io/File;Ljava/io/File;JJ)Z
+PLcom/android/server/am/AppExitInfoTracker;->findAndRemoveFromSparse2dArray(Landroid/util/SparseArray;II)Ljava/lang/Object;
+HPLcom/android/server/am/AppExitInfoTracker;->forEachPackageLocked(Ljava/util/function/BiFunction;)V
+HPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/ArrayList;)V
+HPLcom/android/server/am/AppExitInfoTracker;->getExitInfoLocked(Ljava/lang/String;II)Landroid/app/ApplicationExitInfo;
+PLcom/android/server/am/AppExitInfoTracker;->handleLogAnrTrace(II[Ljava/lang/String;Ljava/io/File;JJ)V
+PLcom/android/server/am/AppExitInfoTracker;->handleNoteAppKillLocked(Landroid/app/ApplicationExitInfo;)V
+HPLcom/android/server/am/AppExitInfoTracker;->handleNoteProcessDiedLocked(Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker;->handleZygoteSigChld(III)V
+HSPLcom/android/server/am/AppExitInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/AppExitInfoTracker;->isFresh(J)Z
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$getExitInfo$3(ILjava/util/ArrayList;ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+PLcom/android/server/am/AppExitInfoTracker;->lambda$onSystemReady$0()V
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessaryLocked$2(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+PLcom/android/server/am/AppExitInfoTracker;->loadExistingProcessExitInfo()V
+HPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecord(Lcom/android/server/am/ProcessRecord;J)Landroid/app/ApplicationExitInfo;
+PLcom/android/server/am/AppExitInfoTracker;->onSystemReady()V
+HPLcom/android/server/am/AppExitInfoTracker;->performLogToStatsdLocked(Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker;->putToSparse2dArray(Landroid/util/SparseArray;IILjava/lang/Object;Ljava/util/function/Supplier;Ljava/util/function/Consumer;)V
+HPLcom/android/server/am/AppExitInfoTracker;->recycleRawRecord(Landroid/app/ApplicationExitInfo;)V
+PLcom/android/server/am/AppExitInfoTracker;->registerForPackageRemoval()V
+PLcom/android/server/am/AppExitInfoTracker;->registerForUserRemoval()V
+PLcom/android/server/am/AppExitInfoTracker;->scheduleChildProcDied(III)V
+PLcom/android/server/am/AppExitInfoTracker;->scheduleLogAnrTrace(II[Ljava/lang/String;Ljava/io/File;JJ)V
+HPLcom/android/server/am/AppExitInfoTracker;->scheduleLogToStatsdLocked(Landroid/app/ApplicationExitInfo;Z)V
+PLcom/android/server/am/AppExitInfoTracker;->scheduleNoteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
+HPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteLmkdProcKilled(II)V
+HPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteProcessDied(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppExitInfoTracker;->schedulePersistProcessExitInfo(Z)V
+HPLcom/android/server/am/AppExitInfoTracker;->updateExistingExitInfoRecordLocked(Landroid/app/ApplicationExitInfo;Ljava/lang/Integer;Ljava/lang/Integer;)V
+HPLcom/android/server/am/AppExitInfoTracker;->updateExitInfoIfNecessaryLocked(IILjava/lang/Integer;Ljava/lang/Integer;)Z
+HSPLcom/android/server/am/AppFGSTracker$1;-><init>(Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker$1;->onForegroundActivitiesChanged(IIZ)V
+PLcom/android/server/am/AppFGSTracker$1;->onForegroundServicesChanged(III)V
+PLcom/android/server/am/AppFGSTracker$1;->onProcessDied(II)V
+HSPLcom/android/server/am/AppFGSTracker$AppFGSPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->getFgsLongRunningThreshold()J
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onSystemReady()V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->onTrackerEnabled(Z)V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsLocationThreshold()V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsLongRunningThreshold()V
+PLcom/android/server/am/AppFGSTracker$AppFGSPolicy;->updateBgFgsMediaPlaybackThreshold()V
+HSPLcom/android/server/am/AppFGSTracker$MyHandler;-><init>(Lcom/android/server/am/AppFGSTracker;)V
+HPLcom/android/server/am/AppFGSTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/AppFGSTracker$NotificationListener;-><init>(Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;-><clinit>()V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;-><init>(Lcom/android/server/am/AppFGSTracker$PackageDurations;)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->addEvent(ZJ)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->hasForegroundServices()Z
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->isLongRunning()Z
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->notifyListenersOnStateChangeIfNecessary(ZJI)V
+PLcom/android/server/am/AppFGSTracker$PackageDurations;->setForegroundServiceType(IJ)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$fgetmHandler(Lcom/android/server/am/AppFGSTracker;)Lcom/android/server/am/AppFGSTracker$MyHandler;
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServiceNotificationUpdated(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;II)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$mhandleNotificationPosted(Lcom/android/server/am/AppFGSTracker;Ljava/lang/String;II)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$monBgFgsLongRunningThresholdChanged(Lcom/android/server/am/AppFGSTracker;)V
+PLcom/android/server/am/AppFGSTracker;->-$$Nest$monBgFgsMonitorEnabled(Lcom/android/server/am/AppFGSTracker;Z)V
+HSPLcom/android/server/am/AppFGSTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppFGSTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(ILjava/lang/String;)Lcom/android/server/am/AppFGSTracker$PackageDurations;
+PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(Lcom/android/server/am/AppFGSTracker$PackageDurations;)Lcom/android/server/am/AppFGSTracker$PackageDurations;
+PLcom/android/server/am/AppFGSTracker;->createAppStateEvents(Lcom/android/server/am/BaseAppStateEvents;)Lcom/android/server/am/BaseAppStateEvents;
+PLcom/android/server/am/AppFGSTracker;->foregroundServiceTypeToIndex(I)I
+PLcom/android/server/am/AppFGSTracker;->getTotalDurations(Lcom/android/server/am/AppFGSTracker$PackageDurations;J)J
+PLcom/android/server/am/AppFGSTracker;->handleForegroundServiceNotificationUpdated(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->handleForegroundServicesChanged(Ljava/lang/String;II)V
+PLcom/android/server/am/AppFGSTracker;->handleForegroundServicesChanged(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->handleNotificationPosted(Ljava/lang/String;II)V
+HPLcom/android/server/am/AppFGSTracker;->hasForegroundServices(Ljava/lang/String;I)Z
+PLcom/android/server/am/AppFGSTracker;->onBgFgsLongRunningThresholdChanged()V
+PLcom/android/server/am/AppFGSTracker;->onBgFgsMonitorEnabled(Z)V
+PLcom/android/server/am/AppFGSTracker;->onForegroundServiceNotificationUpdated(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->onForegroundServiceStateChanged(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/AppFGSTracker;->onSystemReady()V
+HPLcom/android/server/am/AppFGSTracker;->scheduleDurationCheckLocked(J)V
+HSPLcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppMediaSessionTracker;)V
+PLcom/android/server/am/AppMediaSessionTracker$$ExternalSyntheticLambda0;->onActiveSessionsChanged(Ljava/util/List;)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppMediaSessionTracker;)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->$r8$lambda$vU9Y6O_Ak5yd1fFgiQvvDQnuaxQ(Lcom/android/server/am/AppMediaSessionTracker;)V
+HSPLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppMediaSessionTracker;)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/AppMediaSessionTracker$AppMediaSessionPolicy;->onTrackerEnabled(Z)V
+PLcom/android/server/am/AppMediaSessionTracker;->$r8$lambda$QGd-MrvifawKK7V_H96hUv85JPk(Lcom/android/server/am/AppMediaSessionTracker;Ljava/util/List;)V
+PLcom/android/server/am/AppMediaSessionTracker;->-$$Nest$monBgMediaSessionMonitorEnabled(Lcom/android/server/am/AppMediaSessionTracker;Z)V
+PLcom/android/server/am/AppMediaSessionTracker;->-$$Nest$mtrimDurations(Lcom/android/server/am/AppMediaSessionTracker;)V
+HSPLcom/android/server/am/AppMediaSessionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppMediaSessionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppMediaSessionTracker;->handleMediaSessionChanged(Ljava/util/List;)V
+PLcom/android/server/am/AppMediaSessionTracker;->onBgMediaSessionMonitorEnabled(Z)V
+PLcom/android/server/am/AppMediaSessionTracker;->trimDurations()V
+HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;-><clinit>()V
+HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/AppPermissionTracker;)V
+PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->getBgPermissionsInMonitor()[Landroid/util/Pair;
+PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->onSystemReady()V
+PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->onTrackerEnabled(Z)V
+HSPLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->parsePermissionConfig([Ljava/lang/String;)[Landroid/util/Pair;
+PLcom/android/server/am/AppPermissionTracker$AppPermissionPolicy;->updateBgPermissionsInMonitor()V
+PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;-><init>(Lcom/android/server/am/AppPermissionTracker;)V
+PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;-><init>(Lcom/android/server/am/AppPermissionTracker;Lcom/android/server/am/AppPermissionTracker$MyAppOpsCallback-IA;)V
+PLcom/android/server/am/AppPermissionTracker$MyAppOpsCallback;->opChanged(IILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/AppPermissionTracker$MyHandler;-><init>(Lcom/android/server/am/AppPermissionTracker;)V
+PLcom/android/server/am/AppPermissionTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;-><init>(Lcom/android/server/am/AppPermissionTracker;ILjava/lang/String;I)V
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->hashCode()I
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->isGranted()Z
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updateAppOps()V
+HPLcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;->updatePermissionState()V
+PLcom/android/server/am/AppPermissionTracker;->-$$Nest$fgetmHandler(Lcom/android/server/am/AppPermissionTracker;)Lcom/android/server/am/AppPermissionTracker$MyHandler;
+PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandleAppOpsInit(Lcom/android/server/am/AppPermissionTracker;)V
+PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandleOpChanged(Lcom/android/server/am/AppPermissionTracker;IILjava/lang/String;)V
+PLcom/android/server/am/AppPermissionTracker;->-$$Nest$mhandlePermissionsInit(Lcom/android/server/am/AppPermissionTracker;)V
+PLcom/android/server/am/AppPermissionTracker;->-$$Nest$monPermissionTrackerEnabled(Lcom/android/server/am/AppPermissionTracker;Z)V
+HSPLcom/android/server/am/AppPermissionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppPermissionTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/AppPermissionTracker;->handleAppOpsInit()V
+PLcom/android/server/am/AppPermissionTracker;->handleOpChanged(IILjava/lang/String;)V
+PLcom/android/server/am/AppPermissionTracker;->handlePermissionsChangedLocked(I[Lcom/android/server/am/AppPermissionTracker$UidGrantedPermissionState;)V
+HPLcom/android/server/am/AppPermissionTracker;->handlePermissionsInit()V
+PLcom/android/server/am/AppPermissionTracker;->onLockedBootCompleted()V
+PLcom/android/server/am/AppPermissionTracker;->onPermissionTrackerEnabled(Z)V
+PLcom/android/server/am/AppPermissionTracker;->startWatchingMode([Ljava/lang/Integer;)V
+PLcom/android/server/am/AppPermissionTracker;->stopWatchingMode()V
+HSPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/am/AppProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/AppProfiler$1;-><init>(Lcom/android/server/am/AppProfiler;)V
+HSPLcom/android/server/am/AppProfiler$BgHandler;-><init>(Lcom/android/server/am/AppProfiler;Landroid/os/Looper;)V
+HPLcom/android/server/am/AppProfiler$BgHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;J)V
+HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->$r8$lambda$zI0BBTvUIJgiEIeZIL8U6fuo_8Y(Lcom/android/server/am/AppProfiler$CachedAppsWatermarkData;JLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;-><init>(Lcom/android/server/am/AppProfiler;)V
+HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->lambda$updateCachedAppsSnapshot$0(JLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsHighWatermarkIfNecessaryLocked(IJ)V
+HPLcom/android/server/am/AppProfiler$CachedAppsWatermarkData;->updateCachedAppsSnapshot(J)V
+PLcom/android/server/am/AppProfiler$CpuBinder$1;-><init>(Lcom/android/server/am/AppProfiler$CpuBinder;)V
+PLcom/android/server/am/AppProfiler$CpuBinder;-><init>(Lcom/android/server/am/AppProfiler;)V
+HSPLcom/android/server/am/AppProfiler$ProcessCpuThread;-><init>(Lcom/android/server/am/AppProfiler;Ljava/lang/String;)V
+HSPLcom/android/server/am/AppProfiler$ProcessCpuThread;->run()V
+HSPLcom/android/server/am/AppProfiler$ProfileData;-><init>(Lcom/android/server/am/AppProfiler;)V
+HSPLcom/android/server/am/AppProfiler$ProfileData;-><init>(Lcom/android/server/am/AppProfiler;Lcom/android/server/am/AppProfiler$ProfileData-IA;)V
+PLcom/android/server/am/AppProfiler$ProfileData;->getProfileApp()Ljava/lang/String;
+PLcom/android/server/am/AppProfiler$ProfileData;->getProfileProc()Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/AppProfiler;->$r8$lambda$O0KXijwG7-p0M_PB8ZuTBcOSGho(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmLastCpuTime(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/atomic/AtomicLong;
+HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmLastWriteTime(Lcom/android/server/am/AppProfiler;)J
+HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuInitLatch(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/CountDownLatch;
+HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuMutexFree(Lcom/android/server/am/AppProfiler;)Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmProcessCpuTracker(Lcom/android/server/am/AppProfiler;)Lcom/android/internal/os/ProcessCpuTracker;
+HPLcom/android/server/am/AppProfiler;->-$$Nest$fgetmService(Lcom/android/server/am/AppProfiler;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/AppProfiler;->-$$Nest$mhandleMemoryPressureChangedLocked(Lcom/android/server/am/AppProfiler;II)V
+HSPLcom/android/server/am/AppProfiler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;Lcom/android/server/am/LowMemDetector;)V
+HPLcom/android/server/am/AppProfiler;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppProfiler;->getCpuDelayTimeForPid(I)J
+PLcom/android/server/am/AppProfiler;->getCpuTimeForPid(I)J
+PLcom/android/server/am/AppProfiler;->getLastMemoryLevelLocked()I
+HPLcom/android/server/am/AppProfiler;->handleMemoryPressureChangedLocked(II)V
+HPLcom/android/server/am/AppProfiler;->isLastMemoryLevelNormal()Z
+HPLcom/android/server/am/AppProfiler;->isProfilingPss()Z
+HPLcom/android/server/am/AppProfiler;->lambda$updateLowMemStateLSP$3(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppProfiler;->onActivityLaunched()V
+HSPLcom/android/server/am/AppProfiler;->onActivityManagerInternalAdded()V
+HPLcom/android/server/am/AppProfiler;->onAppDiedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppProfiler;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppProfiler;->printCurrentCpuState(Ljava/lang/StringBuilder;J)V
+PLcom/android/server/am/AppProfiler;->retrieveSettings()V
+HPLcom/android/server/am/AppProfiler;->scheduleAppGcsLPf()V
+PLcom/android/server/am/AppProfiler;->setAllowLowerMemLevelLocked(Z)V
+PLcom/android/server/am/AppProfiler;->setCpuInfoService()V
+HPLcom/android/server/am/AppProfiler;->setupProfilerInfoLocked(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ActiveInstrumentation;)Landroid/app/ProfilerInfo;
+HPLcom/android/server/am/AppProfiler;->updateCpuStats()V
+HPLcom/android/server/am/AppProfiler;->updateCpuStatsNow()V
+HSPLcom/android/server/am/AppProfiler;->updateLowMemStateLSP(IIIJ)Z
+HPLcom/android/server/am/AppProfiler;->updateNextPssTimeLPf(ILcom/android/server/am/ProcessProfileRecord;JZ)V
+HSPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;-><init>(ILjava/lang/String;I)V
+HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/AppRestrictionController;ILcom/android/server/usage/AppStandbyInternal;I)V
+HPLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$$ExternalSyntheticLambda4;->run()V
+HSPLcom/android/server/am/AppRestrictionController$1;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppRestrictionController$2;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/am/AppRestrictionController$3;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppRestrictionController$4;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HPLcom/android/server/am/AppRestrictionController$4;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/am/AppRestrictionController$4;->onUserInteractionStarted(Ljava/lang/String;I)V
+HSPLcom/android/server/am/AppRestrictionController$5;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HPLcom/android/server/am/AppRestrictionController$5;->onUidActive(I)V
+HPLcom/android/server/am/AppRestrictionController$5;->onUidGone(IZ)V
+HPLcom/android/server/am/AppRestrictionController$5;->onUidIdle(IZ)V
+HPLcom/android/server/am/AppRestrictionController$5;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/am/AppRestrictionController$BgHandler;-><init>(Landroid/os/Looper;Lcom/android/server/am/AppRestrictionController$Injector;)V
+HPLcom/android/server/am/AppRestrictionController$BgHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/AppRestrictionController$ConstantsObserver;-><init>(Lcom/android/server/am/AppRestrictionController;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->start()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAbusiveNotificationMinimalInterval()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAutoRestrictAbusiveApps()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgAutoRestrictedBucketChanged()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgLongFgsNotificationMinimalInterval()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptAbusiveAppToBgRestricted()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsOnLongRunning()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsWithNotiOnLongRunning()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgPromptFgsWithNotiToBgRestricted()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateBgRestrictionExemptedPackages()V
+PLcom/android/server/am/AppRestrictionController$ConstantsObserver;->updateDeviceConfig()V
+HSPLcom/android/server/am/AppRestrictionController$Injector;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/am/AppRestrictionController$Injector;->currentTimeMillis()J
+HPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getActivityManagerService()Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/AppRestrictionController$Injector;->getAppFGSTracker()Lcom/android/server/am/AppFGSTracker;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getAppHibernationInternal()Lcom/android/server/apphibernation/AppHibernationManagerInternal;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getAppOpsManager()Landroid/app/AppOpsManager;
+PLcom/android/server/am/AppRestrictionController$Injector;->getAppRestrictionController()Lcom/android/server/am/AppRestrictionController;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getAppStateTracker()Lcom/android/server/AppStateTracker;
+HSPLcom/android/server/am/AppRestrictionController$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/am/AppRestrictionController$Injector;->getDataSystemDeDirectory(I)Ljava/io/File;
+PLcom/android/server/am/AppRestrictionController$Injector;->getIActivityManager()Landroid/app/IActivityManager;
+HSPLcom/android/server/am/AppRestrictionController$Injector;->getNotificationManager()Landroid/app/NotificationManager;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/am/AppRestrictionController$Injector;->getPackageName(I)Ljava/lang/String;
+PLcom/android/server/am/AppRestrictionController$Injector;->getRoleManager()Landroid/app/role/RoleManager;
+PLcom/android/server/am/AppRestrictionController$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
+HPLcom/android/server/am/AppRestrictionController$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+HSPLcom/android/server/am/AppRestrictionController$Injector;->initAppStateTrackers(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$Injector;->isTest()Z
+PLcom/android/server/am/AppRestrictionController$Injector;->scheduleInitTrackers(Landroid/os/Handler;Ljava/lang/Runnable;)V
+HSPLcom/android/server/am/AppRestrictionController$NotificationHelper$1;-><init>(Lcom/android/server/am/AppRestrictionController$NotificationHelper;)V
+HSPLcom/android/server/am/AppRestrictionController$NotificationHelper;-><clinit>()V
+HSPLcom/android/server/am/AppRestrictionController$NotificationHelper;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HPLcom/android/server/am/AppRestrictionController$NotificationHelper;->notificationTimeAttrToType(Ljava/lang/String;)I
+PLcom/android/server/am/AppRestrictionController$NotificationHelper;->notificationTypeToTimeAttr(I)Ljava/lang/String;
+PLcom/android/server/am/AppRestrictionController$NotificationHelper;->onSystemReady()V
+PLcom/android/server/am/AppRestrictionController$PhoneCarrierPrivilegesCallback;-><init>(Lcom/android/server/am/AppRestrictionController;I)V
+PLcom/android/server/am/AppRestrictionController$PhoneCarrierPrivilegesCallback;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmCurrentRestrictionLevel(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmLevelChangeTime(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)J
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->-$$Nest$fgetmReason(Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;)I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;-><init>(Lcom/android/server/am/AppRestrictionController$RestrictionSettings;Ljava/lang/String;I)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getCurrentRestrictionLevel()I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getLastNotificationTime(I)J
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getReason()I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->getUid()I
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->setLevelChangeTime(J)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;->update(III)I
+HSPLcom/android/server/am/AppRestrictionController$RestrictionSettings;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->forEachPackageInUidLocked(ILcom/android/internal/util/function/TriConsumer;)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getReason(Ljava/lang/String;I)I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(I)I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionLevel(ILjava/lang/String;)I
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getRestrictionSettingsLocked(ILjava/lang/String;)Lcom/android/server/am/AppRestrictionController$RestrictionSettings$PkgSettings;
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->getXmlFileNameForUser(I)Ljava/io/File;
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadFromXml(IZ)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadFromXml(Z)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->loadOneFromXml(Lcom/android/modules/utils/TypedXmlPullParser;J[JZ)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->persistToXml(I)V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->scheduleLoadFromXml()V
+PLcom/android/server/am/AppRestrictionController$RestrictionSettings;->schedulePersistToXml(I)V
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->toXmlByteArray(I)[B
+HPLcom/android/server/am/AppRestrictionController$RestrictionSettings;->update(Ljava/lang/String;IIII)I
+HSPLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController$TrackerInfo;-><init>(Lcom/android/server/am/AppRestrictionController;I[B)V
+PLcom/android/server/am/AppRestrictionController;->$r8$lambda$_ydL4E-eseJqSvYCC9_LF-yu1d4(ILjava/lang/String;ILandroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
+PLcom/android/server/am/AppRestrictionController;->$r8$lambda$cCOwIzhwVMmMXJ70sQK3rFQtGL0(Lcom/android/server/am/AppRestrictionController;)V
+PLcom/android/server/am/AppRestrictionController;->$r8$lambda$oY7vGD6ZBYgVNvNPzUZAGcXnf7g(Lcom/android/server/am/AppRestrictionController;ILcom/android/server/usage/AppStandbyInternal;ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
+HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmAppStateTrackers(Lcom/android/server/am/AppRestrictionController;)Ljava/util/ArrayList;
+HPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmBgHandler(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$BgHandler;
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmCarrierPrivilegedApps(Lcom/android/server/am/AppRestrictionController;)Landroid/util/SparseArray;
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmCarrierPrivilegedLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmEmptyTrackerInfo(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$TrackerInfo;
+HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmInjector(Lcom/android/server/am/AppRestrictionController;)Lcom/android/server/am/AppRestrictionController$Injector;
+HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmRestrictionSettingsXmlLoaded(Lcom/android/server/am/AppRestrictionController;)Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLcom/android/server/am/AppRestrictionController;->-$$Nest$fgetmSettingsLock(Lcom/android/server/am/AppRestrictionController;)Ljava/lang/Object;
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$mdispatchAppRestrictionLevelChanges(Lcom/android/server/am/AppRestrictionController;ILjava/lang/String;I)V
+PLcom/android/server/am/AppRestrictionController;->-$$Nest$monLockedBootCompleted(Lcom/android/server/am/AppRestrictionController;)V
+HSPLcom/android/server/am/AppRestrictionController;-><clinit>()V
+HSPLcom/android/server/am/AppRestrictionController;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/AppRestrictionController;-><init>(Lcom/android/server/am/AppRestrictionController$Injector;Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/AppRestrictionController;->addAppBackgroundRestrictionListener(Landroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
+HPLcom/android/server/am/AppRestrictionController;->applyRestrictionLevel(Ljava/lang/String;IILcom/android/server/am/AppRestrictionController$TrackerInfo;IZII)V
+HPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevel(IILjava/lang/String;IZZ)Landroid/util/Pair;
+HPLcom/android/server/am/AppRestrictionController;->calcAppRestrictionLevelFromTackers(ILjava/lang/String;I)Landroid/util/Pair;
+HPLcom/android/server/am/AppRestrictionController;->dispatchAppRestrictionLevelChanges(ILjava/lang/String;I)V
+PLcom/android/server/am/AppRestrictionController;->forEachTracker(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/am/AppRestrictionController;->getBackgroundHandler()Landroid/os/Handler;
+HPLcom/android/server/am/AppRestrictionController;->getBackgroundRestrictionExemptionReason(I)I
+HSPLcom/android/server/am/AppRestrictionController;->getLock()Ljava/lang/Object;
+PLcom/android/server/am/AppRestrictionController;->getPackageName(I)Ljava/lang/String;
+HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(I)I
+HPLcom/android/server/am/AppRestrictionController;->getPotentialSystemExemptionReason(ILjava/lang/String;)I
+HPLcom/android/server/am/AppRestrictionController;->getPotentialUserAllowedExemptionReason(ILjava/lang/String;)I
+HPLcom/android/server/am/AppRestrictionController;->getRestrictionLevel(I)I
+HPLcom/android/server/am/AppRestrictionController;->getRestrictionLevel(ILjava/lang/String;)I
+HPLcom/android/server/am/AppRestrictionController;->handleAppStandbyBucketChanged(ILjava/lang/String;I)V
+HPLcom/android/server/am/AppRestrictionController;->handleUidActive(I)V
+HPLcom/android/server/am/AppRestrictionController;->handleUidGone(I)V
+HPLcom/android/server/am/AppRestrictionController;->handleUidInactive(IZ)V
+HPLcom/android/server/am/AppRestrictionController;->handleUidProcStateChanged(II)V
+HPLcom/android/server/am/AppRestrictionController;->hasForegroundServices(Ljava/lang/String;I)Z
+PLcom/android/server/am/AppRestrictionController;->initBgRestrictionExemptioFromSysConfig()V
+PLcom/android/server/am/AppRestrictionController;->initRestrictionStates()V
+PLcom/android/server/am/AppRestrictionController;->initRolesInInterest()V
+PLcom/android/server/am/AppRestrictionController;->initSystemModuleNames()V
+HPLcom/android/server/am/AppRestrictionController;->isBgAutoRestrictedBucketFeatureFlagEnabled()Z
+HPLcom/android/server/am/AppRestrictionController;->isCarrierApp(Ljava/lang/String;)Z
+HPLcom/android/server/am/AppRestrictionController;->isExemptedFromSysConfig(Ljava/lang/String;)Z
+HPLcom/android/server/am/AppRestrictionController;->isOnDeviceIdleAllowlist(I)Z
+HPLcom/android/server/am/AppRestrictionController;->isOnSystemDeviceIdleAllowlist(I)Z
+HPLcom/android/server/am/AppRestrictionController;->isRoleHeldByUid(Ljava/lang/String;I)Z
+HPLcom/android/server/am/AppRestrictionController;->isSystemModule(Ljava/lang/String;)Z
+PLcom/android/server/am/AppRestrictionController;->lambda$dispatchAppRestrictionLevelChanges$2(ILjava/lang/String;ILandroid/app/ActivityManagerInternal$AppBackgroundRestrictionListener;)V
+HPLcom/android/server/am/AppRestrictionController;->lambda$handleUidActive$9(ILcom/android/server/usage/AppStandbyInternal;ILjava/lang/String;Ljava/lang/Integer;Ljava/lang/Integer;)V
+PLcom/android/server/am/AppRestrictionController;->lambda$onSystemReady$0()V
+PLcom/android/server/am/AppRestrictionController;->loadAppIdsFromPackageList(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
+PLcom/android/server/am/AppRestrictionController;->onLockedBootCompleted()V
+PLcom/android/server/am/AppRestrictionController;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/am/AppRestrictionController;->onSystemReady()V
+PLcom/android/server/am/AppRestrictionController;->onUserInteractionStarted(Ljava/lang/String;I)V
+HPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUid(IIIZ)V
+HPLcom/android/server/am/AppRestrictionController;->refreshAppRestrictionLevelForUser(III)V
+PLcom/android/server/am/AppRestrictionController;->registerCarrierPrivilegesCallbacks()V
+PLcom/android/server/am/AppRestrictionController;->registerForSystemBroadcasts()V
+PLcom/android/server/am/AppRestrictionController;->registerForUidObservers()V
+PLcom/android/server/am/AppRestrictionController;->setDeviceIdleAllowlist([I[I)V
+PLcom/android/server/am/AppRestrictionController;->standbyBucketToRestrictionLevel(I)I
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/am/AppStartInfoTracker$1;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker$2;-><init>(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->$r8$lambda$m8mTdqn0Kp9LC0IM3Ch2QHqUGag(Landroid/app/ApplicationStartInfo;Landroid/app/ApplicationStartInfo;)I
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->-$$Nest$fputmUid(Lcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;I)V
+HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;-><init>(Lcom/android/server/am/AppStartInfoTracker;I)V
+HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)V
+HPLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->addTimestampToStartLocked(IJ)V
+PLcom/android/server/am/AppStartInfoTracker$AppStartInfoContainer;->lambda$addStartInfoLocked$0(Landroid/app/ApplicationStartInfo;Landroid/app/ApplicationStartInfo;)I
+PLcom/android/server/am/AppStartInfoTracker;->$r8$lambda$VdR_UMu5lcdcEkpdcV9tz9DCksE(Lcom/android/server/am/AppStartInfoTracker;)V
+PLcom/android/server/am/AppStartInfoTracker;->-$$Nest$smgetStartTimestamp(Landroid/app/ApplicationStartInfo;)J
+HSPLcom/android/server/am/AppStartInfoTracker;-><clinit>()V
+HSPLcom/android/server/am/AppStartInfoTracker;-><init>()V
+HPLcom/android/server/am/AppStartInfoTracker;->addBaseFieldsFromProcessRecord(Landroid/app/ApplicationStartInfo;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppStartInfoTracker;->addStartInfoLocked(Landroid/app/ApplicationStartInfo;)Landroid/app/ApplicationStartInfo;
+HPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Lcom/android/server/am/ProcessRecord;JI)V
+HPLcom/android/server/am/AppStartInfoTracker;->addTimestampToStart(Ljava/lang/String;IJI)V
+PLcom/android/server/am/AppStartInfoTracker;->checkCompletenessAndCallback(Landroid/app/ApplicationStartInfo;)V
+HPLcom/android/server/am/AppStartInfoTracker;->getStartTimestamp(Landroid/app/ApplicationStartInfo;)J
+HPLcom/android/server/am/AppStartInfoTracker;->handleProcessServiceStart(JLcom/android/server/am/ProcessRecord;Lcom/android/server/am/ServiceRecord;Z)V
+HSPLcom/android/server/am/AppStartInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/AppStartInfoTracker;->lambda$onSystemReady$0()V
+PLcom/android/server/am/AppStartInfoTracker;->loadExistingProcessStartInfo()V
+PLcom/android/server/am/AppStartInfoTracker;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
+PLcom/android/server/am/AppStartInfoTracker;->onActivityLaunched(JLandroid/content/ComponentName;JLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppStartInfoTracker;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/am/AppStartInfoTracker;->onReportFullyDrawn(JJ)V
+PLcom/android/server/am/AppStartInfoTracker;->onSystemReady()V
+PLcom/android/server/am/AppStartInfoTracker;->registerForPackageRemoval()V
+PLcom/android/server/am/AppStartInfoTracker;->registerForUserRemoval()V
+HPLcom/android/server/am/AppStartInfoTracker;->reportBindApplicationTimeNanos(Lcom/android/server/am/ProcessRecord;J)V
+HPLcom/android/server/am/AppStartInfoTracker;->schedulePersistProcessStartInfo(Z)V
+PLcom/android/server/am/BaseAppStateDurations;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+PLcom/android/server/am/BaseAppStateDurations;-><init>(Lcom/android/server/am/BaseAppStateDurations;)V
+PLcom/android/server/am/BaseAppStateDurations;->addEvent(ZLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;I)V
+PLcom/android/server/am/BaseAppStateDurations;->getTotalDurations(JI)J
+PLcom/android/server/am/BaseAppStateDurations;->getTotalDurationsSince(JJI)J
+PLcom/android/server/am/BaseAppStateDurations;->isActive(I)Z
+PLcom/android/server/am/BaseAppStateDurations;->subtract(Lcom/android/server/am/BaseAppStateDurations;II)V
+PLcom/android/server/am/BaseAppStateDurations;->subtract(Ljava/util/LinkedList;Ljava/util/LinkedList;)Ljava/util/LinkedList;
+PLcom/android/server/am/BaseAppStateDurations;->trimEvents(JI)V
+PLcom/android/server/am/BaseAppStateDurations;->trimEvents(JLjava/util/LinkedList;)V
+PLcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;-><init>(ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+PLcom/android/server/am/BaseAppStateDurationsTracker$SimplePackageDurations;->addEvent(ZJ)V
+PLcom/android/server/am/BaseAppStateDurationsTracker$UidStateDurations;-><init>(ILcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+HSPLcom/android/server/am/BaseAppStateDurationsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/BaseAppStateDurationsTracker;->getTotalDurations(Ljava/lang/String;IJI)J
+PLcom/android/server/am/BaseAppStateDurationsTracker;->getTotalDurations(Ljava/lang/String;IJIZ)J
+PLcom/android/server/am/BaseAppStateDurationsTracker;->onUidGone(I)V
+HPLcom/android/server/am/BaseAppStateDurationsTracker;->onUidProcStateChanged(II)V
+PLcom/android/server/am/BaseAppStateDurationsTracker;->trimLocked(J)V
+HPLcom/android/server/am/BaseAppStateEvents;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+PLcom/android/server/am/BaseAppStateEvents;-><init>(Lcom/android/server/am/BaseAppStateEvents;)V
+HPLcom/android/server/am/BaseAppStateEvents;->getEarliest(J)J
+HPLcom/android/server/am/BaseAppStateEvents;->getTotalEvents(JI)I
+PLcom/android/server/am/BaseAppStateEvents;->isEmpty()Z
+HSPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateEventsTracker;Ljava/lang/String;ZLjava/lang/String;J)V
+HPLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->getMaxTrackingDuration()J
+PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->onSystemReady()V
+PLcom/android/server/am/BaseAppStateEventsTracker$BaseAppStateEventsPolicy;->updateMaxTrackingDuration()V
+HSPLcom/android/server/am/BaseAppStateEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->getUidEventsLocked(I)Lcom/android/server/am/BaseAppStateEvents;
+HPLcom/android/server/am/BaseAppStateEventsTracker;->isUidOnTop(I)Z
+HPLcom/android/server/am/BaseAppStateEventsTracker;->onUidGone(I)V
+HPLcom/android/server/am/BaseAppStateEventsTracker;->onUidProcStateChanged(II)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->onUidProcStateChangedUncheckedLocked(II)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->trim(J)V
+PLcom/android/server/am/BaseAppStateEventsTracker;->trimLocked(J)V
+HSPLcom/android/server/am/BaseAppStatePolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTracker;Ljava/lang/String;Z)V
+PLcom/android/server/am/BaseAppStatePolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
+HPLcom/android/server/am/BaseAppStatePolicy;->isEnabled()Z
+PLcom/android/server/am/BaseAppStatePolicy;->onSystemReady()V
+HPLcom/android/server/am/BaseAppStatePolicy;->shouldExemptUid(I)I
+PLcom/android/server/am/BaseAppStatePolicy;->updateTrackerEnabled()V
+PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;-><init>(J)V
+PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;-><init>(Lcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;)V
+PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->clone()Ljava/lang/Object;
+PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->getTimestamp()J
+PLcom/android/server/am/BaseAppStateTimeEvents$BaseTimeEvent;->trimTo(J)V
+PLcom/android/server/am/BaseAppStateTimeEvents;-><init>(ILjava/lang/String;ILjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+PLcom/android/server/am/BaseAppStateTimeEvents;-><init>(Lcom/android/server/am/BaseAppStateTimeEvents;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEvents;-><init>(ILjava/lang/String;IJLjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->addEvent(JI)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getSlotStartTime(J)J
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->getTotalEventsSince(JJI)I
+HPLcom/android/server/am/BaseAppStateTimeSlotEvents;->trimEvents(JI)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->$r8$lambda$kd2ZnF50Kq1e96018ClxXCBOF9w(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;-><init>(Lcom/android/server/am/BaseAppStateTracker$Injector;Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;Ljava/lang/String;ZLjava/lang/String;JLjava/lang/String;I)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getNumOfEventsThreshold()I
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getProposedRestrictionLevel(Ljava/lang/String;II)I
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->getTimeSlotSize()J
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onMaxTrackingDurationChanged(J)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onSystemReady()V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onTrackerEnabled(Z)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->onUserInteractionStarted(Ljava/lang/String;I)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->shouldExempt(Ljava/lang/String;I)I
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$BaseAppStateTimeSlotEventsPolicy;->updateNumOfEventsThreshold()V
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;-><init>(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker$SimpleAppStateTimeslotEvents;-><init>(ILjava/lang/String;JLjava/lang/String;Lcom/android/server/am/BaseAppStateEvents$MaxTrackingDurationConfig;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->-$$Nest$mtrimEvents(Lcom/android/server/am/BaseAppStateTimeSlotEventsTracker;)V
+HSPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->getTotalEventsLocked(IJ)I
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->handleNewEvent(Ljava/lang/String;I)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onMonitorEnabled(Z)V
+HPLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onNewEvent(Ljava/lang/String;I)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onNumOfEventsThresholdChanged(I)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
+PLcom/android/server/am/BaseAppStateTimeSlotEventsTracker;->trimEvents()V
+HSPLcom/android/server/am/BaseAppStateTracker$Injector;-><init>()V
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getBatteryManagerInternal()Landroid/os/BatteryManagerInternal;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getIAppOpsService()Lcom/android/internal/app/IAppOpsService;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getMediaSessionManager()Landroid/media/session/MediaSessionManager;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getPermissionManager()Landroid/permission/PermissionManager;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getPermissionManagerServiceInternal()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getPolicy()Lcom/android/server/am/BaseAppStatePolicy;
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getServiceStartForegroundTimeout()J
+PLcom/android/server/am/BaseAppStateTracker$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+HPLcom/android/server/am/BaseAppStateTracker$Injector;->onSystemReady()V
+HSPLcom/android/server/am/BaseAppStateTracker$Injector;->setPolicy(Lcom/android/server/am/BaseAppStatePolicy;)V
+HSPLcom/android/server/am/BaseAppStateTracker;-><init>(Landroid/content/Context;Lcom/android/server/am/AppRestrictionController;Ljava/lang/reflect/Constructor;Ljava/lang/Object;)V
+PLcom/android/server/am/BaseAppStateTracker;->getPolicy()Lcom/android/server/am/BaseAppStatePolicy;
+HPLcom/android/server/am/BaseAppStateTracker;->notifyListenersOnStateChange(ILjava/lang/String;ZJI)V
+PLcom/android/server/am/BaseAppStateTracker;->onLockedBootCompleted()V
+PLcom/android/server/am/BaseAppStateTracker;->onSystemReady()V
+PLcom/android/server/am/BaseAppStateTracker;->onUidGone(I)V
+PLcom/android/server/am/BaseAppStateTracker;->onUidProcStateChanged(II)V
+PLcom/android/server/am/BaseAppStateTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
+PLcom/android/server/am/BaseAppStateTracker;->registerStateListener(Lcom/android/server/am/BaseAppStateTracker$StateListener;)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda100;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda100;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;-><init>(Lcom/android/server/am/BatteryStatsService;ZJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda101;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda104;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda106;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda106;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/am/BatteryStatsService;JJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda10;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda11;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda14;->scheduleAlarm(JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda15;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda16;->get()Ljava/lang/Object;
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BatteryStatsService;IJ[I)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda17;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BatteryStatsService;ZIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda18;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda19;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda20;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda23;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda28;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda31;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda32;->run()V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda33;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda34;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda35;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda35;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda38;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda39;-><init>(Lcom/android/server/am/BatteryStatsService;JJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda39;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/am/BatteryStatsService;IZJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda41;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/am/BatteryStatsService;JJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda43;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda52;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda52;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda54;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda54;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda55;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda5;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda61;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda65;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda65;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda67;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda67;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda68;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda68;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda71;-><init>(Lcom/android/server/am/BatteryStatsService;Landroid/telephony/SignalStrength;JJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda71;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;-><init>(Lcom/android/server/am/BatteryStatsService;II)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda73;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda75;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda75;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;-><init>(Lcom/android/server/am/BatteryStatsService;IJJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda76;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda77;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda77;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda7;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda80;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda82;-><init>(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda82;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda84;-><init>(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda84;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda93;-><init>(Lcom/android/server/am/BatteryStatsService;IJJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda93;->run()V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda94;-><init>(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda94;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;-><init>(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda98;->run()V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService$$ExternalSyntheticLambda9;->run()V
+HSPLcom/android/server/am/BatteryStatsService$1;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$2;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$3;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$LocalService;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$LocalService;-><init>(Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService$LocalService-IA;)V
+PLcom/android/server/am/BatteryStatsService$LocalService;->noteWakingAlarmBatch(J[I)V
+PLcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/am/BatteryStatsService;Lcom/android/server/am/BatteryStatsService$StatsPullAtomCallbackImpl-IA;)V
+HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;-><init>(Lcom/android/server/am/BatteryStatsService;)V
+HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->run()V
+HSPLcom/android/server/am/BatteryStatsService$WakeupReasonThread;->waitWakeup()Ljava/lang/String;
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$05VuxEHPxv9bihz9kfDhxNYcUeg(Lcom/android/server/am/BatteryStatsService;II)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$0fzjwUAJJ2V4v0Cay7jzrTdU40o(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$5NUW-CFGVE8WF6xUKrwN74CSvqk(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$5c9rjGQgA92fhsoBQw9Y09QbGbc(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$66TrSI7HPB2r78-NHdlVdzcoo0I(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$6bEZ99kbZB3XX6HcnBga24l6aUc(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$70eN_K-s58p6l5EY1KYPtppqPbc(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9YKwtw1IoxWGgto0UI2p_sj-9dQ(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9grG_uws1JUn8unR54WcHbhwn5c(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;JJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$9w4mwgpslyOzt3AR9Ha0zPYHpwA(Lcom/android/server/am/BatteryStatsService;)Ljava/lang/Long;
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$AVovY0AMHiiXsBa6jBuOU51vHcs(Lcom/android/server/am/BatteryStatsService;Landroid/telephony/SignalStrength;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$Aja08BbHSMMTwusvvYTiqkGKBAQ(Lcom/android/server/am/BatteryStatsService;ZIJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$C6FpWSABUutRWNI5WWUNUMlbhX8(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$DU-o6h6aLnoKPvLYt0hicwKfF64(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$E2zZySja-QLWcx-iSOhrqHJf6yg(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$EgeH5604sbT6COs9ssH7Gnc9_UY(Lcom/android/server/am/BatteryStatsService;ZJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$HB6PHpsf2JO-bV8EaT-6cBmi25g(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$HPK3ieJxw8HM__PfnZB13lFXngg(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$I4JXgMyze7aO4AYNI9qaJb5DHnE(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$IupxpBj-T3QQ4VPpQdAn45060Bk(Lcom/android/server/am/BatteryStatsService;JJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$KWnpYgez9XnIYTdHYwFXQBEtGWA(Lcom/android/server/am/BatteryStatsService;IZJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$L6Emotnq_h9BsIXrMev47t-2ues(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$OMr0PYqqN0qekZ4Oq5EyCc3f6yY(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$QChUd1G6g1_FJ1G5zg2vCcUJr6g(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$S2EACvTzdacLK36CDf9BLXIiBdE(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$TItPRlBD8FUMtanBE_REU0Bc7wI(Lcom/android/server/am/BatteryStatsService;IILjava/lang/String;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$TQviDJidtGDxQAAKQbSr5Ay1c4w(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$UvPVJvfLJUv7DtJ03YLFls1_iP0(Lcom/android/server/am/BatteryStatsService;JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$VOEBeS3jOU02rZfcXEfni9PuRDQ(Lcom/android/server/am/BatteryStatsService;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$WhP3tsKNyaWq4EKerIaU2_tdTiA(Lcom/android/server/am/BatteryStatsService;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$WkwX9rcT9mMOtA9bjNLRt0WfrYM(Lcom/android/server/am/BatteryStatsService;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$YruM32EUvUPcBIsiSaEzCqeUrpI(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$ZbDBcGr7GIjhlP9uVlhIJ6H-yI0(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$_wc9i2CN7elpRhTTxnndgHftIik(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$dF-U_JxRR-TXS-G38yOId48wzV8(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$f7YTA7KXLeuJfd9ui_uSHE_x4U4(Lcom/android/server/am/BatteryStatsService;IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$g5F2iod5rkuBWKW51BpAD_uY9EM(Lcom/android/server/am/BatteryStatsService;Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService;->$r8$lambda$hQPDLi0WrcPIkhfpv4ZQEEC1HwU(Lcom/android/server/am/BatteryStatsService;)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$hobJ83HHMdRmCpAK-IwwsUAHx5I(Lcom/android/server/am/BatteryStatsService;IJJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$rbX6PWNefdfv6B_50VnXELEMDf0(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$sqB_0NoPbXgwuh-ZQaJfwVslwMU(Lcom/android/server/am/BatteryStatsService;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$v5i86d7gh9jhycRQIAW4bfFGFFo(Lcom/android/server/am/BatteryStatsService;IJ[I)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$vLt9HebbnK7vzU1AuoOmeTlgDO4(Lcom/android/server/am/BatteryStatsService;IIIIIIIIJJJJ)V
+PLcom/android/server/am/BatteryStatsService;->$r8$lambda$xojdHRayd8rEc5I8EnGVfIYEOYE(Lcom/android/server/am/BatteryStatsService;IJJJ)V
+HPLcom/android/server/am/BatteryStatsService;->$r8$lambda$zkXyGfuKC6HI4x68m_-LppSuQG4(Lcom/android/server/am/BatteryStatsService;ILjava/lang/String;IJJ)V
+HSPLcom/android/server/am/BatteryStatsService;->-$$Nest$smnativeWaitWakeup(Ljava/nio/ByteBuffer;)I
+HSPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;)V
+HSPLcom/android/server/am/BatteryStatsService;->create(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;)Lcom/android/server/am/BatteryStatsService;
+HSPLcom/android/server/am/BatteryStatsService;->createAggregatedPowerStatsConfig()Lcom/android/server/power/stats/AggregatedPowerStatsConfig;
+HSPLcom/android/server/am/BatteryStatsService;->createPowerStatsScheduler(Landroid/content/Context;)Lcom/android/server/power/stats/PowerStatsScheduler;
+HSPLcom/android/server/am/BatteryStatsService;->fillLowPowerStats(Lcom/android/internal/os/RpmStats;)V
+HSPLcom/android/server/am/BatteryStatsService;->fillRailDataStats(Lcom/android/internal/os/RailStats;)V
+HSPLcom/android/server/am/BatteryStatsService;->getActiveStatistics()Lcom/android/server/power/stats/BatteryStatsImpl;
+PLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats;
+PLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;
+HSPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V
+PLcom/android/server/am/BatteryStatsService;->isCharging()Z
+PLcom/android/server/am/BatteryStatsService;->isOnBattery()Z
+PLcom/android/server/am/BatteryStatsService;->lambda$createPowerStatsScheduler$0(JLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
+PLcom/android/server/am/BatteryStatsService;->lambda$createPowerStatsScheduler$1()Ljava/lang/Long;
+PLcom/android/server/am/BatteryStatsService;->lambda$noteAlarmFinish$22(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteAlarmStart$21(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteBleScanReset$90(JJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteChangeWakelockFromSource$26(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteCpuWakingActivity$2(IJ[I)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteCurrentTimeChanged$99(JJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteEvent$14(ILjava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteInteractive$42(ZJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteJobFinish$18(Ljava/lang/String;IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteJobStart$17(Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteNetworkStatsEnabled$84()V
+PLcom/android/server/am/BatteryStatsService;->lambda$notePhoneSignalStrength$47(Landroid/telephony/SignalStrength;JJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$notePhoneState$49(IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteProcessAnr$11(Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteProcessDied$101(II)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteProcessFinish$12(Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteProcessStart$9(Ljava/lang/String;IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteScreenBrightness$39(IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteScreenState$38(IJJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartLaunch$105(ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStartRunning$103(ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopLaunch$106(ILjava/lang/String;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteServiceStopRunning$104(ILjava/lang/String;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteStartAudio$52(IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteStartSensor$32(IIJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelock$23(IILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteStartWakelockFromSource$25(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteStopAudio$53(IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteStopSensor$33(IIJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelock$24(IILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteStopWakelockFromSource$27(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/am/BatteryStatsService;->lambda$noteUidProcessState$13(IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteUserActivity$40(IIJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteVibratorOff$35(IJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteVibratorOn$34(IJJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteWakupAlarm$20(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteWifiOn$50(JJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$noteWifiSupplicantStateChanged$69(IZJJ)V
+HSPLcom/android/server/am/BatteryStatsService;->lambda$scheduleWriteToDisk$5()V
+PLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$96(IIIIIIIIJJJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$97(IIIIIIIIJJJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$updateBatteryStatsOnActivityUsage$100(ZIJJ)V
+PLcom/android/server/am/BatteryStatsService;->lambda$updateForegroundTimeIfOnBattery$98(ILjava/lang/String;JJJ)V
+HPLcom/android/server/am/BatteryStatsService;->monitor()V
+HPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V
+PLcom/android/server/am/BatteryStatsService;->noteBleScanReset()V
+PLcom/android/server/am/BatteryStatsService;->noteChangeWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+PLcom/android/server/am/BatteryStatsService;->noteCpuWakingActivity(IJ[I)V
+PLcom/android/server/am/BatteryStatsService;->noteCurrentTimeChanged()V
+HPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V
+PLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V
+PLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V
+PLcom/android/server/am/BatteryStatsService;->noteProcessAnr(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessDied(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V
+PLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteServiceStartLaunch(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteServiceStartRunning(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteServiceStopLaunch(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteServiceStopRunning(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
+PLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
+PLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V
+PLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
+PLcom/android/server/am/BatteryStatsService;->noteUserActivity(II)V
+PLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V
+PLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V
+PLcom/android/server/am/BatteryStatsService;->noteWakeupSensorEvent(JII)V
+HPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiOn()V
+PLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V
+PLcom/android/server/am/BatteryStatsService;->onSystemReady()V
+PLcom/android/server/am/BatteryStatsService;->populatePowerEntityMaps()V
+HSPLcom/android/server/am/BatteryStatsService;->publish()V
+PLcom/android/server/am/BatteryStatsService;->registerStatsCallbacks()V
+HSPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V
+HPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIIIJ)V
+PLcom/android/server/am/BatteryStatsService;->systemServicesReady()V
+PLcom/android/server/am/BatteryStatsService;->updateBatteryStatsOnActivityUsage(Ljava/lang/String;Ljava/lang/String;IIZ)V
+PLcom/android/server/am/BatteryStatsService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
+PLcom/android/server/am/BroadcastConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/BroadcastConstants;)V
+PLcom/android/server/am/BroadcastConstants$SettingsObserver;-><init>(Lcom/android/server/am/BroadcastConstants;Landroid/os/Handler;)V
+HSPLcom/android/server/am/BroadcastConstants;-><clinit>()V
+HSPLcom/android/server/am/BroadcastConstants;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigBoolean(Ljava/lang/String;Z)Z
+HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigInt(Ljava/lang/String;I)I
+HSPLcom/android/server/am/BroadcastConstants;->getDeviceConfigLong(Ljava/lang/String;J)J
+HSPLcom/android/server/am/BroadcastConstants;->getMaxRunningQueues()I
+HSPLcom/android/server/am/BroadcastConstants;->propertyFor(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/am/BroadcastConstants;->propertyOverrideFor(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/BroadcastConstants;->startObserving(Landroid/os/Handler;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/am/BroadcastConstants;->updateDeviceConfigConstants()V
+PLcom/android/server/am/BroadcastConstants;->updateSettingsConstants()V
+HPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZZZ)V
+HSPLcom/android/server/am/BroadcastHistory;-><init>(Lcom/android/server/am/BroadcastConstants;)V
+HPLcom/android/server/am/BroadcastHistory;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastHistory;->onBroadcastEnqueuedLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastHistory;->onBroadcastFinishedLocked(Lcom/android/server/am/BroadcastRecord;)V
+PLcom/android/server/am/BroadcastHistory;->ringAdvance(III)I
+PLcom/android/server/am/BroadcastLoopers;-><clinit>()V
+HPLcom/android/server/am/BroadcastLoopers;->addMyLooper()V
+PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda0;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/am/BroadcastProcessQueue$$ExternalSyntheticLambda1;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastProcessQueue;->$r8$lambda$7jvfHufVyE3JdVe4Li1zoeZOhgw(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastProcessQueue;->$r8$lambda$uTkPoca9PFx_MiK361g77-Nbtxk(Lcom/android/server/am/BroadcastRecord;I)Z
+HPLcom/android/server/am/BroadcastProcessQueue;-><init>(Lcom/android/server/am/BroadcastConstants;Ljava/lang/String;I)V
+HPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked()V
+HPLcom/android/server/am/BroadcastProcessQueue;->assertHealthLocked(Ljava/util/ArrayDeque;)V
+HPLcom/android/server/am/BroadcastProcessQueue;->clearDeferredStates(Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)V
+HPLcom/android/server/am/BroadcastProcessQueue;->enqueueOrReplaceBroadcast(Lcom/android/server/am/BroadcastRecord;ILcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcast(Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->forEachMatchingBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->getActive()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastProcessQueue;->getActiveAssumedDeliveryCountSinceIdle()I
+HPLcom/android/server/am/BroadcastProcessQueue;->getActiveCountSinceIdle()I
+HPLcom/android/server/am/BroadcastProcessQueue;->getActiveIndex()I
+HPLcom/android/server/am/BroadcastProcessQueue;->getActiveViaColdStart()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->getActiveWasStopped()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->getPreferredSchedulingGroupLocked()I
+HPLcom/android/server/am/BroadcastProcessQueue;->getQueueForBroadcast(Lcom/android/server/am/BroadcastRecord;)Ljava/util/ArrayDeque;
+HPLcom/android/server/am/BroadcastProcessQueue;->getRunnableAt()J
+HPLcom/android/server/am/BroadcastProcessQueue;->insertIntoRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastProcessQueue;->invalidateRunnableAt()V
+HPLcom/android/server/am/BroadcastProcessQueue;->isActive()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isEmpty()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isPendingManifest()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isPendingOrdered()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isPendingResultTo()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isPendingUrgent()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isProcessWarm()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isQueueEmpty(Ljava/util/ArrayDeque;)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->isRunnable()Z
+PLcom/android/server/am/BroadcastProcessQueue;->lambda$updateDeferredStates$0(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastProcessQueue;->lambda$updateDeferredStates$1(Lcom/android/server/am/BroadcastRecord;I)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->makeActiveIdle()V
+HPLcom/android/server/am/BroadcastProcessQueue;->makeActiveNextPending()V
+HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastDequeued(Lcom/android/server/am/BroadcastRecord;I)V
+HPLcom/android/server/am/BroadcastProcessQueue;->onBroadcastEnqueued(Lcom/android/server/am/BroadcastRecord;I)V
+HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcast()Lcom/android/internal/os/SomeArgs;
+HPLcom/android/server/am/BroadcastProcessQueue;->peekNextBroadcastRecord()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast()Ljava/util/ArrayDeque;
+HPLcom/android/server/am/BroadcastProcessQueue;->queueForNextBroadcast(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque;II)Ljava/util/ArrayDeque;
+HPLcom/android/server/am/BroadcastProcessQueue;->removeFromRunnableList(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastProcessQueue;)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastProcessQueue;->removeNextBroadcast()Lcom/android/internal/os/SomeArgs;
+HPLcom/android/server/am/BroadcastProcessQueue;->replaceBroadcast(Lcom/android/server/am/BroadcastRecord;I)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastProcessQueue;->replaceBroadcastInQueue(Ljava/util/ArrayDeque;Lcom/android/server/am/BroadcastRecord;I)Lcom/android/server/am/BroadcastRecord;
+PLcom/android/server/am/BroadcastProcessQueue;->setActiveViaColdStart(Z)V
+HPLcom/android/server/am/BroadcastProcessQueue;->setProcessAndUidState(Lcom/android/server/am/ProcessRecord;ZZ)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->setProcessFreezable(Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->setProcessInstrumented(Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->setProcessPersistent(Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->setTimeoutScheduled(Z)V
+HPLcom/android/server/am/BroadcastProcessQueue;->setUidForeground(Z)Z
+HPLcom/android/server/am/BroadcastProcessQueue;->shouldBeDeferred()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->timeoutScheduled()Z
+HPLcom/android/server/am/BroadcastProcessQueue;->toShortString()Ljava/lang/String;
+PLcom/android/server/am/BroadcastProcessQueue;->toString()Ljava/lang/String;
+HPLcom/android/server/am/BroadcastProcessQueue;->traceActiveBegin()V
+HPLcom/android/server/am/BroadcastProcessQueue;->traceActiveEnd()V
+HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessEnd()V
+HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessRunningBegin()V
+HPLcom/android/server/am/BroadcastProcessQueue;->traceProcessStartingBegin()V
+HPLcom/android/server/am/BroadcastProcessQueue;->updateDeferredStates(Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;)V
+HPLcom/android/server/am/BroadcastProcessQueue;->updateRunnableAt()V
+HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastHistory;)V
+PLcom/android/server/am/BroadcastQueue;->checkState(ZLjava/lang/String;)V
+HPLcom/android/server/am/BroadcastQueue;->traceBegin(Ljava/lang/String;)I
+HPLcom/android/server/am/BroadcastQueue;->traceEnd(I)V
+HPLcom/android/server/am/BroadcastQueueImpl;->logBootCompletedBroadcastCompletionLatencyIfPossible(Lcom/android/server/am/BroadcastRecord;)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda12;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda13;->accept(Lcom/android/server/am/BroadcastRecord;I)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda14;->accept(Lcom/android/server/am/BroadcastRecord;I)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda15;->accept(Lcom/android/server/am/BroadcastRecord;I)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda16;->accept(Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/os/BundleMerger;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda18;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;-><init>()V
+HPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda6;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda7;-><init>()V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/am/BroadcastQueueModernImpl$$ExternalSyntheticLambda8;->test(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastQueueModernImpl$1;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$1;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;-><init>(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/os/Handler;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl$BroadcastAnrTimer;->start(Lcom/android/server/am/BroadcastProcessQueue;J)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$1141mqPXqA39gHvm8k1RvJok8ag(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$IA0U1TDYlMnhLy7gkIvyunwabTM(ILcom/android/server/am/BroadcastProcessQueue;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$N57OdIm--GFn45qEJb2p5M2c1j0(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$XfkV9LwUrXbMSXZ_yM6OxtAr1eQ(Lcom/android/server/am/BroadcastRecord;I)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$d79aYiK04-SKNC9AXzRIc2ug0aQ(Lcom/android/server/am/BroadcastQueueModernImpl;Landroid/os/Message;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$e8id_ODzsrGaHviXqkfUDpIVDZk(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$hPIdd26uRdf2eZATmbOexHo1U30(Lcom/android/server/am/BroadcastProcessQueue;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$iMV30Exe2X2No64mUUsPPvg246Q(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->$r8$lambda$wimp7yt_FsAyLko1-wOxiCNCaqo(Lcom/android/server/am/BroadcastQueueModernImpl;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->-$$Nest$fgetmLocalHandler(Lcom/android/server/am/BroadcastQueueModernImpl;)Landroid/os/Handler;
+HSPLcom/android/server/am/BroadcastQueueModernImpl;-><clinit>()V
+HSPLcom/android/server/am/BroadcastQueueModernImpl;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastConstants;)V
+HSPLcom/android/server/am/BroadcastQueueModernImpl;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastConstants;Lcom/android/server/am/BroadcastSkipPolicy;Lcom/android/server/am/BroadcastHistory;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->applyDeliveryGroupPolicy(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->assertHealthLocked()V
+PLcom/android/server/am/BroadcastQueueModernImpl;->backgroundServicesFinishedLocked(I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->cancelDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->checkAndRemoveWaitingFor()V
+PLcom/android/server/am/BroadcastQueueModernImpl;->checkHealth()V
+PLcom/android/server/am/BroadcastQueueModernImpl;->checkHealthLocked()V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->checkPendingColdStartValidityLocked()V
+PLcom/android/server/am/BroadcastQueueModernImpl;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;I)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->containsAllReceivers(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->demoteFromRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->dispatchReceivers(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->enqueueUpdateRunningList()V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverActiveLocked(Lcom/android/server/am/BroadcastProcessQueue;ILjava/lang/String;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->finishReceiverLocked(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->forEachMatchingBroadcast(Ljava/util/function/Predicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastPredicate;Lcom/android/server/am/BroadcastProcessQueue$BroadcastConsumer;Z)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getDeliveryState(Lcom/android/server/am/BroadcastRecord;I)I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getOrCreateProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getPreferredSchedulingGroupLocked(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getRecordsLookupCache()Landroid/util/ArrayMap;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningIndexOf(Lcom/android/server/am/BroadcastProcessQueue;)I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningSize()I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->getRunningUrgentCount()I
+HPLcom/android/server/am/BroadcastQueueModernImpl;->isPendingColdStartValid()Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->isProcessFreezable(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$applyDeliveryGroupPolicy$3(Lcom/android/server/am/BroadcastRecord;Landroid/util/ArrayMap;Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$cleanupDisabledPackageReceiversLocked$4(ILcom/android/server/am/BroadcastProcessQueue;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$0(Landroid/os/Message;)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$10(Lcom/android/server/am/BroadcastRecord;I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$11(Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$12(Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$new$13(Lcom/android/server/am/BroadcastRecord;I)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$onApplicationCleanupLocked$1(Lcom/android/server/am/BroadcastRecord;I)Z
+PLcom/android/server/am/BroadcastQueueModernImpl;->lambda$static$8(Lcom/android/server/am/BroadcastProcessQueue;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->logBroadcastDeliveryEventReported(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishBroadcast(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyFinishReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyScheduleRegisteredReceiver(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStartedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->notifyStoppedRunning(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationAttachedLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->onApplicationCleanupLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->onProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->promoteToRunningLocked(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->refreshProcessQueueLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->refreshProcessQueuesLocked(I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->removeProcessQueue(Ljava/lang/String;I)Lcom/android/server/am/BroadcastProcessQueue;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->reportUsageStatsBroadcastDispatched(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverColdLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleReceiverWarmLocked(Lcom/android/server/am/BroadcastProcessQueue;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->scheduleResultTo(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->setDeliveryState(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;ILjava/lang/Object;ILjava/lang/String;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->setQueueProcess(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->shouldRetire(Lcom/android/server/am/BroadcastProcessQueue;)Z
+HPLcom/android/server/am/BroadcastQueueModernImpl;->shouldSkipReceiver(Lcom/android/server/am/BroadcastProcessQueue;Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastQueueModernImpl;->skipAndCancelReplacedBroadcasts(Landroid/util/ArraySet;)V
+PLcom/android/server/am/BroadcastQueueModernImpl;->start(Landroid/content/ContentResolver;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->startDeliveryTimeoutLocked(Lcom/android/server/am/BroadcastProcessQueue;I)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunnableList(Lcom/android/server/am/BroadcastProcessQueue;)V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningList()V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateRunningListLocked()V
+HPLcom/android/server/am/BroadcastQueueModernImpl;->updateWarmProcess(Lcom/android/server/am/BroadcastProcessQueue;)V
+HSPLcom/android/server/am/BroadcastRecord;-><clinit>()V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZILandroid/app/BackgroundStartPrivileges;ZLjava/util/function/BiFunction;I)V
+HPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V
+HPLcom/android/server/am/BroadcastRecord;->applySingletonPolicy(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/BroadcastRecord;->areMatchingKeysEqual(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;)Z
+HPLcom/android/server/am/BroadcastRecord;->calculateBlockedUntilBeyondCount(Ljava/util/List;Z)[I
+HPLcom/android/server/am/BroadcastRecord;->calculateDeferUntilActive(ILandroid/app/BroadcastOptions;Landroid/content/IIntentReceiver;ZZ)Z
+HPLcom/android/server/am/BroadcastRecord;->calculateTypeForLogging()I
+HPLcom/android/server/am/BroadcastRecord;->calculateUrgent(Landroid/content/Intent;Landroid/app/BroadcastOptions;)Z
+PLcom/android/server/am/BroadcastRecord;->clearMatchingRecordsCache()V
+PLcom/android/server/am/BroadcastRecord;->containsAllReceivers(Ljava/util/List;)Z
+HPLcom/android/server/am/BroadcastRecord;->containsReceiver(Ljava/lang/Object;)Z
+HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingFilter(Lcom/android/server/am/BroadcastRecord;)Landroid/content/IntentFilter;
+HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingKeyFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupMatchingNamespaceFragment(Lcom/android/server/am/BroadcastRecord;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->getDeliveryGroupPolicy()I
+HPLcom/android/server/am/BroadcastRecord;->getDeliveryState(I)I
+HPLcom/android/server/am/BroadcastRecord;->getHostingRecordTriggerType()Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->getReceiverIntent(Ljava/lang/Object;)Landroid/content/Intent;
+HPLcom/android/server/am/BroadcastRecord;->getReceiverPriority(Ljava/lang/Object;)I
+HPLcom/android/server/am/BroadcastRecord;->getReceiverProcessName(Ljava/lang/Object;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->getReceiverUid(Ljava/lang/Object;)I
+HPLcom/android/server/am/BroadcastRecord;->isAssumedDelivered(I)Z
+HPLcom/android/server/am/BroadcastRecord;->isBlocked(I)Z
+HPLcom/android/server/am/BroadcastRecord;->isCallerInstrumented(Lcom/android/server/am/ProcessRecord;I)Z
+PLcom/android/server/am/BroadcastRecord;->isDeferUntilActive()Z
+PLcom/android/server/am/BroadcastRecord;->isDeliveryStateBeyond(I)Z
+HPLcom/android/server/am/BroadcastRecord;->isDeliveryStateTerminal(I)Z
+HPLcom/android/server/am/BroadcastRecord;->isForeground()Z
+HPLcom/android/server/am/BroadcastRecord;->isMatchingKeyNull(Lcom/android/server/am/BroadcastRecord;)Z
+PLcom/android/server/am/BroadcastRecord;->isNoAbort()Z
+HPLcom/android/server/am/BroadcastRecord;->isOffload()Z
+PLcom/android/server/am/BroadcastRecord;->isPrioritized([IZ)Z
+PLcom/android/server/am/BroadcastRecord;->isReceiverEquals(Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/am/BroadcastRecord;->isReplacePending()Z
+HPLcom/android/server/am/BroadcastRecord;->isUrgent()Z
+HPLcom/android/server/am/BroadcastRecord;->matchesDeliveryGroup(Lcom/android/server/am/BroadcastRecord;)Z
+HPLcom/android/server/am/BroadcastRecord;->matchesDeliveryGroup(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastRecord;)Z
+HPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastRecord;->setDeliveryState(IILjava/lang/String;)Z
+PLcom/android/server/am/BroadcastRecord;->setMatchingRecordsCache(Landroid/util/ArrayMap;)V
+HPLcom/android/server/am/BroadcastRecord;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/BroadcastRecord;->wasDeliveryAttempted(I)Z
+HSPLcom/android/server/am/BroadcastSkipPolicy;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/BroadcastSkipPolicy;->broadcastDescription(Lcom/android/server/am/BroadcastRecord;Landroid/content/ComponentName;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastSkipPolicy;->disallowBackgroundStart(Lcom/android/server/am/BroadcastRecord;)Z
+HPLcom/android/server/am/BroadcastSkipPolicy;->isSignaturePerm([Ljava/lang/String;)Z
+PLcom/android/server/am/BroadcastSkipPolicy;->noteOpForManifestReceiver(ILcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;Landroid/content/ComponentName;)Z
+HPLcom/android/server/am/BroadcastSkipPolicy;->noteOpForManifestReceiverInner(ILcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;Landroid/content/ComponentName;Ljava/lang/String;)Z
+HPLcom/android/server/am/BroadcastSkipPolicy;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z
+HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Landroid/content/pm/ResolveInfo;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;)Ljava/lang/String;
+HPLcom/android/server/am/BroadcastSkipPolicy;->shouldSkipMessage(Lcom/android/server/am/BroadcastRecord;Ljava/lang/Object;)Ljava/lang/String;
+PLcom/android/server/am/BroadcastStats$1;-><init>()V
+HPLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
+PLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V
+PLcom/android/server/am/BroadcastStats$ViolationEntry;-><init>()V
+PLcom/android/server/am/BroadcastStats;-><clinit>()V
+PLcom/android/server/am/BroadcastStats;-><init>()V
+HPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
+HSPLcom/android/server/am/CacheOomRanker$1;-><init>(Lcom/android/server/am/CacheOomRanker;)V
+HSPLcom/android/server/am/CacheOomRanker$CacheUseComparator;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$CacheUseComparator;-><init>(Lcom/android/server/am/CacheOomRanker$CacheUseComparator-IA;)V
+HSPLcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$LastActivityTimeComparator;-><init>(Lcom/android/server/am/CacheOomRanker$LastActivityTimeComparator-IA;)V
+HSPLcom/android/server/am/CacheOomRanker$LastRssComparator;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$LastRssComparator;-><init>(Lcom/android/server/am/CacheOomRanker$LastRssComparator-IA;)V
+HSPLcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl;-><init>(Lcom/android/server/am/CacheOomRanker$ProcessDependenciesImpl-IA;)V
+PLcom/android/server/am/CacheOomRanker$RankedProcessRecord;-><init>()V
+PLcom/android/server/am/CacheOomRanker$RankedProcessRecord;-><init>(Lcom/android/server/am/CacheOomRanker$RankedProcessRecord-IA;)V
+HSPLcom/android/server/am/CacheOomRanker$RssComparator;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$RssComparator;-><init>(Lcom/android/server/am/CacheOomRanker$RssComparator-IA;)V
+HSPLcom/android/server/am/CacheOomRanker$ScoreComparator;-><init>()V
+HSPLcom/android/server/am/CacheOomRanker$ScoreComparator;-><init>(Lcom/android/server/am/CacheOomRanker$ScoreComparator-IA;)V
+HSPLcom/android/server/am/CacheOomRanker;-><clinit>()V
+HSPLcom/android/server/am/CacheOomRanker;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/CacheOomRanker;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/CacheOomRanker$ProcessDependencies;)V
+PLcom/android/server/am/CacheOomRanker;->getNumberToReRank()I
+PLcom/android/server/am/CacheOomRanker;->init(Ljava/util/concurrent/Executor;)V
+PLcom/android/server/am/CacheOomRanker;->updateLruWeight()V
+PLcom/android/server/am/CacheOomRanker;->updateNumberToReRank()V
+PLcom/android/server/am/CacheOomRanker;->updateRssWeight()V
+PLcom/android/server/am/CacheOomRanker;->updateUseOomReranking()V
+PLcom/android/server/am/CacheOomRanker;->updateUsesWeight()V
+HSPLcom/android/server/am/CacheOomRanker;->useOomReranking()Z
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CachedAppOptimizer;Z)V
+HPLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/CachedAppOptimizer;Z)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda2;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/CachedAppOptimizer;ILjava/lang/String;II)V
+PLcom/android/server/am/CachedAppOptimizer$$ExternalSyntheticLambda5;->run()V
+HSPLcom/android/server/am/CachedAppOptimizer$1;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HSPLcom/android/server/am/CachedAppOptimizer$2;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HSPLcom/android/server/am/CachedAppOptimizer$3;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$3;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HSPLcom/android/server/am/CachedAppOptimizer$4;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer$4;->add(Lcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;)Z
+HPLcom/android/server/am/CachedAppOptimizer$4;->add(Ljava/lang/Object;)Z
+PLcom/android/server/am/CachedAppOptimizer$5;-><clinit>()V
+HPLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer$AggregatedCompactionStats;->addMemStats(JJJJJ)V
+HPLcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/String;)V
+PLcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)V
+HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;->$values()[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
+HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;-><clinit>()V
+HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/am/CachedAppOptimizer$CancelCompactReason;->values()[Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;
+PLcom/android/server/am/CachedAppOptimizer$CompactProfile;->$values()[Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+PLcom/android/server/am/CachedAppOptimizer$CompactProfile;-><clinit>()V
+PLcom/android/server/am/CachedAppOptimizer$CompactProfile;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/am/CachedAppOptimizer$CompactProfile;->values()[Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;->$values()[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
+HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;-><clinit>()V
+HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/am/CachedAppOptimizer$CompactSource;->values()[Lcom/android/server/am/CachedAppOptimizer$CompactSource;
+HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><clinit>()V
+HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><init>()V
+HSPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;-><init>(Lcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies-IA;)V
+HPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->getRss(I)[J
+HPLcom/android/server/am/CachedAppOptimizer$DefaultProcessDependencies;->performCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;I)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$IAfIfEcFxcOjA58aDQgnJCZBAt4(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$JrdK-GOHWyvTveD-A9PVDkKW66c(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->$r8$lambda$dwqBiMSA3Eh5CYi4YkeM0J8Nh5U(Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$FreezeHandler-IA;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->freezeProcess(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleBinderFreezerFailure(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$freezeProcess$1(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$freezeProcess$2(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->lambda$handleBinderFreezerFailure$0(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer$FreezeHandler;->reportUnfreeze(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;I)V
+PLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler-IA;)V
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldOomAdjThrottleCompaction(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldRssThrottleCompaction(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;ILjava/lang/String;[J)Z
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldThrottleMiscCompaction(Lcom/android/server/am/ProcessRecord;I)Z
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->shouldTimeThrottleCompaction(Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Z
+HSPLcom/android/server/am/CachedAppOptimizer$SettingsContentObserver;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;-><clinit>()V
+HPLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;-><init>([JLcom/android/server/am/CachedAppOptimizer$CompactSource;Ljava/lang/String;JJJJJIIII)V
+PLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->getRssAfterCompaction()[J
+HPLcom/android/server/am/CachedAppOptimizer$SingleCompactionStats;->sendStat()V
+PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$50-5szAMI3_Lo87NbZnc0_MNRnM(Lcom/android/server/am/CachedAppOptimizer;ILjava/lang/String;II)V
+PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$IZHebRIY4Ji4Hhts59PebGRJdjw(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/Integer;Ljava/lang/Integer;)V
+PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$JxGAByAESCLWWhMw0Ii9S5PJx-0(Lcom/android/server/am/CachedAppOptimizer;Z)V
+PLcom/android/server/am/CachedAppOptimizer;->$r8$lambda$ZH029cmpkk4u9PrurAANG_5gCdM(Lcom/android/server/am/CachedAppOptimizer;ZLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmAm(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFreezeHandler(Lcom/android/server/am/CachedAppOptimizer;)Landroid/os/Handler;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFreezerOverride(Lcom/android/server/am/CachedAppOptimizer;)Z
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmFrozenProcesses(Lcom/android/server/am/CachedAppOptimizer;)Landroid/util/SparseArray;
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmPendingCompactionProcesses(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/ArrayList;
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcLock(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerGlobalLock;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcLocksReader(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/internal/os/ProcLocksReader;
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmProcessDependencies(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$fgetmRandom(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Random;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mbinderErrorLocked(Lcom/android/server/am/CachedAppOptimizer;Landroid/util/IntArray;)V
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mfreezeAppAsyncLSP(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/ProcessRecord;J)V
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mgetPerProcessAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer;Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mgetPerSourceAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mpostUidFrozenMessage(Lcom/android/server/am/CachedAppOptimizer;IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->-$$Nest$mreportOneUidFrozenStateChanged(Lcom/android/server/am/CachedAppOptimizer;IZ)V
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smcompactProcess(II)V
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smgetBinderFreezeInfo(I)I
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smgetUsedZramMemory()J
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smthreadCpuTimeNs()J
+PLcom/android/server/am/CachedAppOptimizer;->-$$Nest$smtraceAppFreeze(Ljava/lang/String;II)V
+HSPLcom/android/server/am/CachedAppOptimizer;-><clinit>()V
+HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;Lcom/android/server/am/CachedAppOptimizer$ProcessDependencies;)V
+HPLcom/android/server/am/CachedAppOptimizer;->binderError(ILcom/android/server/am/ProcessRecord;III)V
+HPLcom/android/server/am/CachedAppOptimizer;->binderErrorLocked(Landroid/util/IntArray;)V
+HPLcom/android/server/am/CachedAppOptimizer;->cancelCompactionForProcess(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CancelCompactReason;)V
+HPLcom/android/server/am/CachedAppOptimizer;->compactApp(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/CachedAppOptimizer$CompactProfile;Lcom/android/server/am/CachedAppOptimizer$CompactSource;Z)Z
+HPLcom/android/server/am/CachedAppOptimizer;->enableFreezer(Z)Z
+HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncInternalLSP(Lcom/android/server/am/ProcessRecord;JZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncLSP(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->freezeAppAsyncLSP(Lcom/android/server/am/ProcessRecord;J)V
+HPLcom/android/server/am/CachedAppOptimizer;->freezerExemptInstPkg()Z
+HPLcom/android/server/am/CachedAppOptimizer;->getPerProcessAggregatedCompactStat(Ljava/lang/String;)Lcom/android/server/am/CachedAppOptimizer$AggregatedProcessCompactionStats;
+HPLcom/android/server/am/CachedAppOptimizer;->getPerSourceAggregatedCompactStat(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)Lcom/android/server/am/CachedAppOptimizer$AggregatedSourceCompactionStats;
+HPLcom/android/server/am/CachedAppOptimizer;->getUnfreezeReasonCodeFromOomAdjReason(I)I
+PLcom/android/server/am/CachedAppOptimizer;->init()V
+PLcom/android/server/am/CachedAppOptimizer;->isFreezerSupported()Z
+PLcom/android/server/am/CachedAppOptimizer;->killProcess(ILjava/lang/String;II)V
+PLcom/android/server/am/CachedAppOptimizer;->lambda$binderErrorLocked$3(Ljava/lang/Integer;Ljava/lang/Integer;)V
+PLcom/android/server/am/CachedAppOptimizer;->lambda$enableFreezer$0(ZLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer;->lambda$killProcess$2(ILjava/lang/String;II)V
+PLcom/android/server/am/CachedAppOptimizer;->lambda$updateUseFreezer$1(Z)V
+HPLcom/android/server/am/CachedAppOptimizer;->onCleanupApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->onOomAdjustChanged(IILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->onProcessFrozen(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer;->onProcessFrozenCancelled(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/CachedAppOptimizer;->parseProcStateThrottle(Ljava/lang/String;)Z
+HPLcom/android/server/am/CachedAppOptimizer;->postUidFrozenMessage(IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->reportOneUidFrozenStateChanged(IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->reportProcessFreezableChangedLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->resolveCompactionProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+HPLcom/android/server/am/CachedAppOptimizer;->traceAppFreeze(Ljava/lang/String;II)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppInternalLSP(Lcom/android/server/am/ProcessRecord;IZ)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeAppLSP(Lcom/android/server/am/ProcessRecord;I)V
+PLcom/android/server/am/CachedAppOptimizer;->unfreezeProcess(II)V
+PLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V
+HPLcom/android/server/am/CachedAppOptimizer;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;IJ)V
+PLcom/android/server/am/CachedAppOptimizer;->updateCompactStatsdSampleRate()V
+PLcom/android/server/am/CachedAppOptimizer;->updateCompactionThrottles()V
+HPLcom/android/server/am/CachedAppOptimizer;->updateEarliestFreezableTime(Lcom/android/server/am/ProcessRecord;J)J
+PLcom/android/server/am/CachedAppOptimizer;->updateFreezerDebounceTimeout()V
+PLcom/android/server/am/CachedAppOptimizer;->updateFreezerExemptInstPkg()V
+PLcom/android/server/am/CachedAppOptimizer;->updateFreezerStatsdSampleRate()V
+PLcom/android/server/am/CachedAppOptimizer;->updateFullDeltaRssThrottle()V
+PLcom/android/server/am/CachedAppOptimizer;->updateFullRssThrottle()V
+PLcom/android/server/am/CachedAppOptimizer;->updateMaxOomAdjThrottle()V
+PLcom/android/server/am/CachedAppOptimizer;->updateMinOomAdjThrottle()V
+PLcom/android/server/am/CachedAppOptimizer;->updateProcStateThrottle()V
+PLcom/android/server/am/CachedAppOptimizer;->updateUseCompaction()V
+PLcom/android/server/am/CachedAppOptimizer;->updateUseFreezer()V
+HPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
+HPLcom/android/server/am/CachedAppOptimizer;->useFreezer()Z
+PLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda0;-><init>(Landroid/content/pm/ResolveInfo;)V
+HPLcom/android/server/am/ComponentAliasResolver$$ExternalSyntheticLambda1;-><init>(Landroid/content/Intent;Ljava/lang/String;III)V
+HSPLcom/android/server/am/ComponentAliasResolver$1;-><init>(Lcom/android/server/am/ComponentAliasResolver;)V
+HPLcom/android/server/am/ComponentAliasResolver$Resolution;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/am/ComponentAliasResolver$Resolution;->getAlias()Ljava/lang/Object;
+PLcom/android/server/am/ComponentAliasResolver$Resolution;->getTarget()Ljava/lang/Object;
+HPLcom/android/server/am/ComponentAliasResolver$Resolution;->isAlias()Z
+HSPLcom/android/server/am/ComponentAliasResolver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ComponentAliasResolver;->onSystemReady(ZLjava/lang/String;)V
+HPLcom/android/server/am/ComponentAliasResolver;->resolveComponentAlias(Ljava/util/function/Supplier;)Lcom/android/server/am/ComponentAliasResolver$Resolution;
+HPLcom/android/server/am/ComponentAliasResolver;->resolveReceiver(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Ljava/lang/String;JIIZ)Lcom/android/server/am/ComponentAliasResolver$Resolution;
+HPLcom/android/server/am/ComponentAliasResolver;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/am/ComponentAliasResolver$Resolution;
+PLcom/android/server/am/ComponentAliasResolver;->update(ZLjava/lang/String;)V
+PLcom/android/server/am/ConnectionRecord;-><clinit>()V
+HPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Landroid/app/IServiceConnection;JILandroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/am/ConnectionRecord;->getFlags()J
+HPLcom/android/server/am/ConnectionRecord;->hasFlag(I)Z
+HPLcom/android/server/am/ConnectionRecord;->hasFlag(J)Z
+HPLcom/android/server/am/ConnectionRecord;->notHasFlag(I)Z
+HPLcom/android/server/am/ConnectionRecord;->startAssociationIfNeeded()V
+HPLcom/android/server/am/ConnectionRecord;->stopAssociation()V
+PLcom/android/server/am/ConnectionRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ConnectionRecord;->trackProcState(II)V
+HPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)V
+HPLcom/android/server/am/ContentProviderConnection;->adjustCounts(II)V
+HPLcom/android/server/am/ContentProviderConnection;->decrementCount(Z)I
+HPLcom/android/server/am/ContentProviderConnection;->incrementCount(Z)I
+HPLcom/android/server/am/ContentProviderConnection;->initializeCount(Z)V
+PLcom/android/server/am/ContentProviderConnection;->stableCount()I
+HPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V
+HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
+HPLcom/android/server/am/ContentProviderConnection;->totalRefCount()I
+HPLcom/android/server/am/ContentProviderConnection;->trackProcState(II)V
+HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;)V
+HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderConnection;ZZ)V
+HPLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ContentProviderHelper$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ContentProviderHelper$DevelopmentSettingsObserver;-><init>(Lcom/android/server/am/ContentProviderHelper;)V
+PLcom/android/server/am/ContentProviderHelper$DevelopmentSettingsObserver;->onChange()V
+HPLcom/android/server/am/ContentProviderHelper;->$r8$lambda$7SqNWgaMV7-OpTBuN-1CMmNHiyU(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/ContentProviderHelper;->$r8$lambda$WgT9vu5eZilG5Q2yFu6AlQnBbWA(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ContentProviderConnection;ZZ)V
+PLcom/android/server/am/ContentProviderHelper;->$r8$lambda$Ybb6ASgJllmnwf29cCLpR_JR-Yg(Lcom/android/server/am/ContentProviderHelper;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+PLcom/android/server/am/ContentProviderHelper;->-$$Nest$fgetmService(Lcom/android/server/am/ContentProviderHelper;)Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/ContentProviderHelper;-><clinit>()V
+HSPLcom/android/server/am/ContentProviderHelper;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
+HPLcom/android/server/am/ContentProviderHelper;->canAccessContentProviderFromSdkSandbox(Landroid/content/pm/ProviderInfo;I)Z
+HPLcom/android/server/am/ContentProviderHelper;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ContentProviderHelper;->checkAssociationAndPermissionLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;IIZLjava/lang/String;J)V
+HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderHelper;->checkContentProviderPermission(Landroid/content/pm/ProviderInfo;IIIZLjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderHelper;->checkTime(JLjava/lang/String;)V
+HPLcom/android/server/am/ContentProviderHelper;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
+HPLcom/android/server/am/ContentProviderHelper;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ZZZ)Z
+HPLcom/android/server/am/ContentProviderHelper;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
+HPLcom/android/server/am/ContentProviderHelper;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
+HPLcom/android/server/am/ContentProviderHelper;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;
+PLcom/android/server/am/ContentProviderHelper;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/am/ContentProviderHelper;->getProviderMap()Lcom/android/server/am/ProviderMap;
+HPLcom/android/server/am/ContentProviderHelper;->handleProviderRemoval(Lcom/android/server/am/ContentProviderConnection;ZZ)V
+HPLcom/android/server/am/ContentProviderHelper;->hasProviderConnectionLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ContentProviderHelper;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZZJLcom/android/server/am/ProcessList;I)Lcom/android/server/am/ContentProviderConnection;
+PLcom/android/server/am/ContentProviderHelper;->installEncryptionUnawareProviders(I)V
+PLcom/android/server/am/ContentProviderHelper;->installSystemProviders()V
+HPLcom/android/server/am/ContentProviderHelper;->isAuthorityRedirectedForCloneProfileCached(Ljava/lang/String;)Z
+HPLcom/android/server/am/ContentProviderHelper;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ContentProviderHelper;->isSingletonOrSystemUserOnly(Landroid/content/pm/ProviderInfo;)Z
+HPLcom/android/server/am/ContentProviderHelper;->lambda$checkContentProviderAssociation$4(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ProviderInfo;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/ContentProviderHelper;->lambda$decProviderCountLocked$3(Lcom/android/server/am/ContentProviderConnection;ZZ)V
+HPLcom/android/server/am/ContentProviderHelper;->lambda$installEncryptionUnawareProviders$2(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/ContentProviderHelper;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ContentProviderHelper;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
+HPLcom/android/server/am/ContentProviderHelper;->refContentProvider(Landroid/os/IBinder;II)Z
+HPLcom/android/server/am/ContentProviderHelper;->removeContentProvider(Landroid/os/IBinder;Z)V
+HPLcom/android/server/am/ContentProviderHelper;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
+PLcom/android/server/am/ContentProviderHelper;->requestTargetProviderPermissionsReviewIfNeededLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;ILandroid/content/Context;)Z
+PLcom/android/server/am/ContentProviderHelper;->unstableProviderDied(Landroid/os/IBinder;)V
+HPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
+HPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
+HPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;Z)Landroid/app/ContentProviderHolder;
+HPLcom/android/server/am/ContentProviderRecord;->onProviderPublishStatusLocked(Z)V
+HPLcom/android/server/am/ContentProviderRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ContentProviderRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/CoreSettingsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/CoreSettingsObserver;)V
+PLcom/android/server/am/CoreSettingsObserver$DeviceConfigEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Object;)V
+PLcom/android/server/am/CoreSettingsObserver;-><clinit>()V
+PLcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V
+HPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
+PLcom/android/server/am/CoreSettingsObserver;->loadDeviceConfigContextEntries(Landroid/content/Context;)V
+HPLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V
+HPLcom/android/server/am/CoreSettingsObserver;->populateSettingsFromDeviceConfig()V
+PLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V
+PLcom/android/server/am/DataConnectionStats$PhoneStateListenerExecutor;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/am/DataConnectionStats$PhoneStateListenerImpl;-><init>(Lcom/android/server/am/DataConnectionStats;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/am/DataConnectionStats;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/am/DataConnectionStats;->notePhoneDataConnectionState()V
+PLcom/android/server/am/DataConnectionStats;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/am/DataConnectionStats;->startMonitoring()V
+PLcom/android/server/am/DataConnectionStats;->updateSimState(Landroid/content/Intent;)V
+HSPLcom/android/server/am/DropboxRateLimiter$DefaultClock;-><init>()V
+HSPLcom/android/server/am/DropboxRateLimiter$DefaultClock;-><init>(Lcom/android/server/am/DropboxRateLimiter$DefaultClock-IA;)V
+PLcom/android/server/am/DropboxRateLimiter$DefaultClock;->uptimeMillis()J
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;-><init>(Lcom/android/server/am/DropboxRateLimiter;JI)V
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getAllowedEntries()I
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getBufferDuration()J
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getCount()I
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->getStartTime()J
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->incrementCount()V
+PLcom/android/server/am/DropboxRateLimiter$ErrorRecord;->isRepeated()Z
+PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;-><init>(Lcom/android/server/am/DropboxRateLimiter;ZI)V
+PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->createHeader()Ljava/lang/String;
+PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->droppedCountSinceRateLimitActivated()I
+PLcom/android/server/am/DropboxRateLimiter$RateLimitResult;->shouldRateLimit()Z
+PLcom/android/server/am/DropboxRateLimiter;->-$$Nest$fgetmRateLimitAllowedEntries(Lcom/android/server/am/DropboxRateLimiter;)I
+PLcom/android/server/am/DropboxRateLimiter;->-$$Nest$fgetmRateLimitBufferDuration(Lcom/android/server/am/DropboxRateLimiter;)J
+HSPLcom/android/server/am/DropboxRateLimiter;-><init>()V
+HSPLcom/android/server/am/DropboxRateLimiter;-><init>(Lcom/android/server/am/DropboxRateLimiter$Clock;)V
+PLcom/android/server/am/DropboxRateLimiter;->errorKey(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/DropboxRateLimiter;->init()V
+PLcom/android/server/am/DropboxRateLimiter;->maybeRemoveExpiredRecords(J)V
+HPLcom/android/server/am/DropboxRateLimiter;->shouldRateLimit(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/am/DropboxRateLimiter$RateLimitResult;
+HPLcom/android/server/am/ErrorDialogController;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ErrorDialogController;->clearAllErrorDialogs()V
+PLcom/android/server/am/ErrorDialogController;->clearAnrDialogs()V
+PLcom/android/server/am/ErrorDialogController;->clearCrashDialogs()V
+PLcom/android/server/am/ErrorDialogController;->clearCrashDialogs(Z)V
+PLcom/android/server/am/ErrorDialogController;->clearViolationDialogs()V
+PLcom/android/server/am/ErrorDialogController;->clearWaitingDialog()V
+PLcom/android/server/am/EventLogTags;->writeAmMemFactor(II)V
+HPLcom/android/server/am/EventLogTags;->writeAmProcBound(IILjava/lang/String;)V
+HPLcom/android/server/am/EventLogTags;->writeAmProcDied(IILjava/lang/String;II)V
+PLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V
+PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V
+PLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V
+PLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V
+PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V
+HPLcom/android/server/am/EventLogTags;->writeAmWtf(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/EventLogTags;->writeBootProgressAmsReady(J)V
+PLcom/android/server/am/EventLogTags;->writeBootProgressEnableScreen(J)V
+PLcom/android/server/am/EventLogTags;->writeConfigurationChanged(I)V
+PLcom/android/server/am/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/am/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/am/FeatureFlagsImpl;->fgsBootCompleted()Z
+PLcom/android/server/am/FeatureFlagsImpl;->load_overrides_backstage_power()V
+HPLcom/android/server/am/FeatureFlagsImpl;->newFgsRestrictionLogic()Z
+HPLcom/android/server/am/FeatureFlagsImpl;->serviceBindingOomAdjPolicy()Z
+HSPLcom/android/server/am/FgsTempAllowList;-><init>()V
+HPLcom/android/server/am/FgsTempAllowList;->add(IJLjava/lang/Object;)V
+HPLcom/android/server/am/FgsTempAllowList;->get(I)Landroid/util/Pair;
+HPLcom/android/server/am/FgsTempAllowList;->isAllowed(I)Z
+HPLcom/android/server/am/FgsTempAllowList;->removeUid(I)V
+PLcom/android/server/am/Flags;-><clinit>()V
+PLcom/android/server/am/Flags;->fgsBootCompleted()Z
+HPLcom/android/server/am/Flags;->newFgsRestrictionLogic()Z
+HPLcom/android/server/am/Flags;->serviceBindingOomAdjPolicy()Z
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule$FgsApiRecord;-><init>(IILjava/lang/String;IJ)V
+HPLcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState;-><init>()V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState;-><init>(Lcom/android/server/am/ForegroundServiceTypeLoggerModule$UidState-IA;)V
+HSPLcom/android/server/am/ForegroundServiceTypeLoggerModule;-><init>()V
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->convertFgsTypeToApiTypes(I)Landroid/util/IntArray;
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->hasValidActiveFgs(II)Z
+HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventBegin(IIILjava/lang/String;)J
+PLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceApiEventEnd(III)J
+HPLcom/android/server/am/ForegroundServiceTypeLoggerModule;->logForegroundServiceStart(IILcom/android/server/am/ServiceRecord;)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;)V
+PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;I)V
+HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Z)V
+PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/HostingRecord;->getAction()Ljava/lang/String;
+PLcom/android/server/am/HostingRecord;->getDefiningPackageName()Ljava/lang/String;
+PLcom/android/server/am/HostingRecord;->getDefiningProcessName()Ljava/lang/String;
+PLcom/android/server/am/HostingRecord;->getDefiningUid()I
+HPLcom/android/server/am/HostingRecord;->getHostingTypeIdStatsd(Ljava/lang/String;)I
+PLcom/android/server/am/HostingRecord;->getName()Ljava/lang/String;
+PLcom/android/server/am/HostingRecord;->getTriggerType()Ljava/lang/String;
+HPLcom/android/server/am/HostingRecord;->getTriggerTypeForStatsd(Ljava/lang/String;)I
+PLcom/android/server/am/HostingRecord;->getType()Ljava/lang/String;
+PLcom/android/server/am/HostingRecord;->isTopApp()Z
+HPLcom/android/server/am/HostingRecord;->usesAppZygote()Z
+HPLcom/android/server/am/HostingRecord;->usesWebviewZygote()Z
+HSPLcom/android/server/am/InstrumentationReporter;-><init>()V
+HPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
+PLcom/android/server/am/IntentBindRecord;->collectFlags()J
+PLcom/android/server/am/IntentBindRecord;->dumpInService(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/LmkdConnection$1;-><init>(Lcom/android/server/am/LmkdConnection;)V
+PLcom/android/server/am/LmkdConnection$1;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
+PLcom/android/server/am/LmkdConnection;->-$$Nest$mfileDescriptorEventHandler(Lcom/android/server/am/LmkdConnection;Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/LmkdConnection;-><init>(Landroid/os/MessageQueue;Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;)V
+PLcom/android/server/am/LmkdConnection;->connect()Z
+HPLcom/android/server/am/LmkdConnection;->exchange(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
+PLcom/android/server/am/LmkdConnection;->fileDescriptorEventHandler(Ljava/io/FileDescriptor;I)I
+HPLcom/android/server/am/LmkdConnection;->isConnected()Z
+PLcom/android/server/am/LmkdConnection;->openSocket()Landroid/net/LocalSocket;
+HPLcom/android/server/am/LmkdConnection;->processIncomingData()V
+HPLcom/android/server/am/LmkdConnection;->read(Ljava/nio/ByteBuffer;)I
+PLcom/android/server/am/LmkdConnection;->waitForConnection(J)Z
+HPLcom/android/server/am/LmkdConnection;->write(Ljava/nio/ByteBuffer;)Z
+HPLcom/android/server/am/LmkdStatsReporter;->logKillOccurred(Ljava/io/DataInputStream;II)V
+PLcom/android/server/am/LmkdStatsReporter;->mapKillReason(I)I
+HSPLcom/android/server/am/LowMemDetector$LowMemThread;-><init>(Lcom/android/server/am/LowMemDetector;)V
+HSPLcom/android/server/am/LowMemDetector$LowMemThread;->run()V
+PLcom/android/server/am/LowMemDetector;->-$$Nest$fgetmPressureStateLock(Lcom/android/server/am/LowMemDetector;)Ljava/lang/Object;
+PLcom/android/server/am/LowMemDetector;->-$$Nest$fputmPressureState(Lcom/android/server/am/LowMemDetector;I)V
+HSPLcom/android/server/am/LowMemDetector;->-$$Nest$mwaitForPressure(Lcom/android/server/am/LowMemDetector;)I
+HSPLcom/android/server/am/LowMemDetector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/LowMemDetector;->getMemFactor()I
+HSPLcom/android/server/am/LowMemDetector;->isAvailable()Z
+PLcom/android/server/am/MemoryStatUtil$MemoryStat;-><init>()V
+PLcom/android/server/am/MemoryStatUtil;-><clinit>()V
+PLcom/android/server/am/MemoryStatUtil;->hasMemcg()Z
+PLcom/android/server/am/MemoryStatUtil;->parseMemoryStatFromProcfs(Ljava/lang/String;)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
+PLcom/android/server/am/MemoryStatUtil;->readFileContents(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/MemoryStatUtil;->readMemoryStatFromFilesystem(II)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
+PLcom/android/server/am/MemoryStatUtil;->readMemoryStatFromProcfs(I)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
+PLcom/android/server/am/NativeCrashListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/NativeCrashListener;->run()V
+HSPLcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/am/OomAdjProfiler$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;-><init>(Lcom/android/server/am/OomAdjProfiler;)V
+HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;-><init>(Lcom/android/server/am/OomAdjProfiler;Lcom/android/server/am/OomAdjProfiler$CpuTimes-IA;)V
+HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeMs(JZZ)V
+HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeUs(J)V
+HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeUs(JZZ)V
+HSPLcom/android/server/am/OomAdjProfiler;->$r8$lambda$c4Q2P5csnq29GPhTB7rlnNqRQWs(Lcom/android/server/am/OomAdjProfiler;ZZZ)V
+HSPLcom/android/server/am/OomAdjProfiler;->-$$Nest$fgetmOnBattery(Lcom/android/server/am/OomAdjProfiler;)Z
+HSPLcom/android/server/am/OomAdjProfiler;->-$$Nest$fgetmScreenOff(Lcom/android/server/am/OomAdjProfiler;)Z
+HSPLcom/android/server/am/OomAdjProfiler;-><init>()V
+HSPLcom/android/server/am/OomAdjProfiler;->batteryPowerChanged(Z)V
+HSPLcom/android/server/am/OomAdjProfiler;->oomAdjEnded()V
+HSPLcom/android/server/am/OomAdjProfiler;->oomAdjStarted()V
+HSPLcom/android/server/am/OomAdjProfiler;->scheduleSystemServerCpuTimeUpdate()V
+HSPLcom/android/server/am/OomAdjProfiler;->updateSystemServerCpuTime(ZZZ)V
+HSPLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/OomAdjuster;)V
+HPLcom/android/server/am/OomAdjuster$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;-><init>(Lcom/android/server/am/OomAdjuster;)V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->initialize(Lcom/android/server/am/ProcessRecord;IZZIIIII)V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onPausedActivity()V
+PLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onStoppingActivity(Z)V
+HPLcom/android/server/am/OomAdjuster;->$r8$lambda$WdlWDnyVtMFVApq1sSUGD1QBVaM(Landroid/os/Message;)Z
+HSPLcom/android/server/am/OomAdjuster;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;)V
+HSPLcom/android/server/am/OomAdjuster;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessList;Lcom/android/server/am/ActiveUids;Lcom/android/server/ServiceThread;)V
+HPLcom/android/server/am/OomAdjuster;->applyOomAdjLSP(Lcom/android/server/am/ProcessRecord;ZJJI)Z
+HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V
+HSPLcom/android/server/am/OomAdjuster;->checkAndEnqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/OomAdjuster;->collectReachableProcessesLocked(Landroid/util/ArraySet;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;)Z
+HPLcom/android/server/am/OomAdjuster;->computeOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZIZ)Z
+HPLcom/android/server/am/OomAdjuster;->computeProviderHostOomAdjLSP(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z
+HPLcom/android/server/am/OomAdjuster;->computeServiceHostOomAdjLSP(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;JLcom/android/server/am/ProcessRecord;ZZZIIZZ)Z
+HSPLcom/android/server/am/OomAdjuster;->createAdjusterThread()Lcom/android/server/ServiceThread;
+HPLcom/android/server/am/OomAdjuster;->enqueueOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjuster;->getBfslCapabilityFromClient(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/OomAdjuster;->getDefaultCapability(Lcom/android/server/am/ProcessRecord;I)I
+HPLcom/android/server/am/OomAdjuster;->getInitialAdj(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/OomAdjuster;->getInitialCapability(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/OomAdjuster;->getInitialIsCurBoundByNonBgRestrictedApp(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/OomAdjuster;->getInitialProcState(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V
+PLcom/android/server/am/OomAdjuster;->initSettings()V
+HPLcom/android/server/am/OomAdjuster;->isChangeEnabled(ILandroid/content/pm/ApplicationInfo;Z)Z
+PLcom/android/server/am/OomAdjuster;->isScreenOnOrAnimatingLocked(Lcom/android/server/am/ProcessStateRecord;)Z
+HPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z
+HPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessStateRecord;J)V
+HPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLSP(Lcom/android/server/am/ProcessRecord;J)V
+PLcom/android/server/am/OomAdjuster;->onProcessEndLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/OomAdjuster;->onProcessOomAdjChanged(Lcom/android/server/am/ProcessRecord;I)V
+PLcom/android/server/am/OomAdjuster;->onProcessStateChanged(Lcom/android/server/am/ProcessRecord;I)V
+HSPLcom/android/server/am/OomAdjuster;->oomAdjReasonToString(I)Ljava/lang/String;
+HSPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(I)V
+HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z
+HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjLSP(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;JI)Z
+HPLcom/android/server/am/OomAdjuster;->performUpdateOomAdjPendingTargetsLocked(I)V
+HSPLcom/android/server/am/OomAdjuster;->postUpdateOomAdjInnerLSP(ILcom/android/server/am/ActiveUids;JJJ)V
+HPLcom/android/server/am/OomAdjuster;->removeOomAdjTargetLocked(Lcom/android/server/am/ProcessRecord;Z)V
+HSPLcom/android/server/am/OomAdjuster;->resetUidRecordsLsp(Lcom/android/server/am/ActiveUids;)V
+HPLcom/android/server/am/OomAdjuster;->setAppIdTempAllowlistStateLSP(IZ)V
+HPLcom/android/server/am/OomAdjuster;->setAttachingProcessStatesLSP(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjuster;->setIntermediateAdjLSP(Lcom/android/server/am/ProcessRecord;III)I
+HPLcom/android/server/am/OomAdjuster;->setIntermediateProcStateLSP(Lcom/android/server/am/ProcessRecord;II)V
+HPLcom/android/server/am/OomAdjuster;->setIntermediateSchedGroupLSP(Lcom/android/server/am/ProcessStateRecord;I)V
+HPLcom/android/server/am/OomAdjuster;->setUidTempAllowlistStateLSP(IZ)V
+HSPLcom/android/server/am/OomAdjuster;->shouldKillExcessiveProcesses(J)Z
+HPLcom/android/server/am/OomAdjuster;->shouldSkipDueToCycle(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessStateRecord;IIZ)Z
+HPLcom/android/server/am/OomAdjuster;->unfreezeTemporarily(Lcom/android/server/am/ProcessRecord;I)V
+HSPLcom/android/server/am/OomAdjuster;->updateAndTrimProcessLSP(JJJLcom/android/server/am/ActiveUids;I)Z
+HPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLSP(Lcom/android/server/am/ProcessRecord;IZ)V
+HPLcom/android/server/am/OomAdjuster;->updateAppUidRecIfNecessaryLSP(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjuster;->updateAppUidRecLSP(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjInnerLSP(ILcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;ZZ)V
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(I)V
+HPLcom/android/server/am/OomAdjuster;->updateOomAdjLSP(Lcom/android/server/am/ProcessRecord;I)Z
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(I)V
+HPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;I)Z
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjPendingTargetsLocked(I)V
+HSPLcom/android/server/am/OomAdjuster;->updateUidsLSP(Lcom/android/server/am/ActiveUids;J)V
+HSPLcom/android/server/am/OomConnection$OomConnectionThread;-><init>(Lcom/android/server/am/OomConnection;)V
+HSPLcom/android/server/am/OomConnection$OomConnectionThread;-><init>(Lcom/android/server/am/OomConnection;Lcom/android/server/am/OomConnection$OomConnectionThread-IA;)V
+HSPLcom/android/server/am/OomConnection$OomConnectionThread;->run()V
+HSPLcom/android/server/am/OomConnection;->-$$Nest$smwaitOom()[Landroid/os/OomKillRecord;
+HSPLcom/android/server/am/OomConnection;-><init>(Lcom/android/server/am/OomConnection$OomConnectionListener;)V
+HPLcom/android/server/am/PackageList;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/PackageList;->clear()V
+HPLcom/android/server/am/PackageList;->containsKey(Ljava/lang/Object;)Z
+HPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/BiConsumer;)V
+HPLcom/android/server/am/PackageList;->forEachPackage(Ljava/util/function/Consumer;)V
+HPLcom/android/server/am/PackageList;->forEachPackageProcessStats(Ljava/util/function/Consumer;)V
+HPLcom/android/server/am/PackageList;->get(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+HPLcom/android/server/am/PackageList;->getPackageList()[Ljava/lang/String;
+PLcom/android/server/am/PackageList;->getPackageListLocked()Landroid/util/ArrayMap;
+HPLcom/android/server/am/PackageList;->put(Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+HPLcom/android/server/am/PackageList;->searchEachPackage(Ljava/util/function/Function;)Ljava/lang/Object;
+HPLcom/android/server/am/PackageList;->size()I
+HSPLcom/android/server/am/PendingIntentController;-><init>(Landroid/os/Looper;Lcom/android/server/am/UserController;Lcom/android/server/am/ActivityManagerConstants;)V
+HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V
+HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;Z)V
+HPLcom/android/server/am/PendingIntentController;->decrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V
+HPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;Ljava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;
+HPLcom/android/server/am/PendingIntentController;->incrementUidStatLocked(Lcom/android/server/am/PendingIntentRecord;)V
+HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;)V
+HSPLcom/android/server/am/PendingIntentController;->onActivityManagerInternalAdded()V
+PLcom/android/server/am/PendingIntentController;->removePendingIntentsForPackage(Ljava/lang/String;IIZ)Z
+PLcom/android/server/am/PendingIntentController;->setPendingIntentAllowlistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;JIILjava/lang/String;)V
+PLcom/android/server/am/PendingIntentRecord$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/am/PendingIntentRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V
+HPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
+PLcom/android/server/am/PendingIntentRecord$TempAllowListDuration;-><init>(JIILjava/lang/String;)V
+PLcom/android/server/am/PendingIntentRecord;->$r8$lambda$n7a96RwVvewtpifhQ2aQt1qSbXo(Lcom/android/server/am/PendingIntentRecord;)V
+HPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V
+PLcom/android/server/am/PendingIntentRecord;->completeFinalize()V
+HPLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList;
+HPLcom/android/server/am/PendingIntentRecord;->finalize()V
+HPLcom/android/server/am/PendingIntentRecord;->getBackgroundStartPrivilegesForActivitySender(Landroid/util/ArraySet;Landroid/os/IBinder;Landroid/os/Bundle;I)Landroid/app/BackgroundStartPrivileges;
+HPLcom/android/server/am/PendingIntentRecord;->sendInner(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
+PLcom/android/server/am/PendingIntentRecord;->sendWithResult(Landroid/app/IApplicationThread;ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+PLcom/android/server/am/PendingIntentRecord;->setAllowBgActivityStarts(Landroid/os/IBinder;I)V
+PLcom/android/server/am/PendingIntentRecord;->setAllowlistDurationLocked(Landroid/os/IBinder;JIILjava/lang/String;)V
+HSPLcom/android/server/am/PendingStartActivityUids;-><init>()V
+PLcom/android/server/am/PendingStartActivityUids;->add(II)Z
+HPLcom/android/server/am/PendingStartActivityUids;->delete(IJ)V
+HPLcom/android/server/am/PendingStartActivityUids;->isPendingTopUid(I)Z
+HSPLcom/android/server/am/PendingTempAllowlists;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/PendingTempAllowlists;->indexOfKey(I)I
+HPLcom/android/server/am/PendingTempAllowlists;->put(ILcom/android/server/am/ActivityManagerService$PendingTempAllowlist;)V
+HPLcom/android/server/am/PendingTempAllowlists;->removeAt(I)V
+HPLcom/android/server/am/PendingTempAllowlists;->size()I
+HPLcom/android/server/am/PendingTempAllowlists;->valueAt(I)Lcom/android/server/am/ActivityManagerService$PendingTempAllowlist;
+HSPLcom/android/server/am/PhantomProcessList$Injector;-><init>()V
+HPLcom/android/server/am/PhantomProcessList$Injector;->openCgroupProcs(Ljava/lang/String;)Ljava/io/InputStream;
+PLcom/android/server/am/PhantomProcessList$Injector;->readCgroupProcs(Ljava/io/InputStream;[BII)I
+HSPLcom/android/server/am/PhantomProcessList;-><clinit>()V
+HSPLcom/android/server/am/PhantomProcessList;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/PhantomProcessList;->addChildPidLocked(Lcom/android/server/am/ProcessRecord;II)V
+PLcom/android/server/am/PhantomProcessList;->forEachPhantomProcessOfApp(Lcom/android/server/am/ProcessRecord;Ljava/util/function/Function;)V
+HPLcom/android/server/am/PhantomProcessList;->getCgroupFilePath(II)Ljava/lang/String;
+PLcom/android/server/am/PhantomProcessList;->getOrCreatePhantomProcessIfNeededLocked(Ljava/lang/String;IIZ)Lcom/android/server/am/PhantomProcessRecord;
+PLcom/android/server/am/PhantomProcessList;->isAppProcess(I)Z
+HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked()V
+HPLcom/android/server/am/PhantomProcessList;->lookForPhantomProcessesLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/PhantomProcessList;->onAppDied(I)V
+HSPLcom/android/server/am/PhantomProcessList;->probeCgroupVersion()V
+PLcom/android/server/am/PhantomProcessList;->pruneStaleProcessesLocked()V
+PLcom/android/server/am/PhantomProcessList;->updateProcessCpuStatesLocked(Lcom/android/internal/os/ProcessCpuTracker;)V
+PLcom/android/server/am/PlatformCompatCache$CacheItem;-><init>(Lcom/android/server/compat/PlatformCompat;J)V
+HPLcom/android/server/am/PlatformCompatCache$CacheItem;->fetchLocked(Landroid/content/pm/ApplicationInfo;I)Z
+HPLcom/android/server/am/PlatformCompatCache$CacheItem;->invalidate(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/PlatformCompatCache$CacheItem;->isChangeEnabled(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/am/PlatformCompatCache;-><clinit>()V
+PLcom/android/server/am/PlatformCompatCache;-><init>([J)V
+HPLcom/android/server/am/PlatformCompatCache;->getInstance()Lcom/android/server/am/PlatformCompatCache;
+HPLcom/android/server/am/PlatformCompatCache;->invalidate(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/PlatformCompatCache;->isChangeEnabled(ILandroid/content/pm/ApplicationInfo;Z)Z
+HPLcom/android/server/am/PlatformCompatCache;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;Z)Z
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getEarliestFreezableTime()J
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getFreezeUnfreezeTime()J
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastCompactProfile()Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastCompactTime()J
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastOomAdjChangeReason()I
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getLastUsedTimeout()J
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getReqCompactProfile()Lcom/android/server/am/CachedAppOptimizer$CompactProfile;
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->getReqCompactSource()Lcom/android/server/am/CachedAppOptimizer$CompactSource;
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->hasFreezerOverride()Z
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->hasPendingCompact()Z
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->init(J)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->isForceCompact()Z
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isFreezeExempt()Z
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isFreezeSticky()Z
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->isFrozen()Z
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->isPendingFreeze()Z
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setEarliestFreezableTime(J)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setForceCompact(Z)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setFreezeUnfreezeTime(J)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setFreezerOverride(Z)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setFrozen(Z)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setHasCollectedFrozenPSS(Z)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setHasPendingCompact(Z)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastCompactProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastCompactTime(J)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastOomAdjChangeReason(I)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setLastUsedTimeout(J)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setPendingFreeze(Z)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setReqCompactProfile(Lcom/android/server/am/CachedAppOptimizer$CompactProfile;)V
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->setReqCompactSource(Lcom/android/server/am/CachedAppOptimizer$CompactSource;)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(Z)V
+HPLcom/android/server/am/ProcessCachedOptimizerRecord;->setShouldNotFreeze(ZZ)Z
+PLcom/android/server/am/ProcessCachedOptimizerRecord;->shouldNotFreeze()Z
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;)V
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)V
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda3;->call()Ljava/lang/Object;
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;)V
+PLcom/android/server/am/ProcessErrorStateRecord$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessErrorStateRecord;)V
+PLcom/android/server/am/ProcessErrorStateRecord;->$r8$lambda$DQtvmgZQqXnoidXVW34IrZY3fRc(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)Ljava/util/ArrayList;
+PLcom/android/server/am/ProcessErrorStateRecord;->$r8$lambda$iJnj86igrSWbTddnzSwFSnBtv04(Lcom/android/server/am/ProcessErrorStateRecord;Lcom/android/internal/os/anr/AnrLatencyTracker;)V
+HPLcom/android/server/am/ProcessErrorStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessErrorStateRecord;->appNotResponding(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLcom/android/internal/os/TimeoutRecord;Ljava/util/concurrent/ExecutorService;ZZLjava/util/concurrent/Future;)V
+PLcom/android/server/am/ProcessErrorStateRecord;->buildMemoryHeadersFor(I)Ljava/lang/String;
+PLcom/android/server/am/ProcessErrorStateRecord;->getAnrAnnotation()Ljava/lang/String;
+PLcom/android/server/am/ProcessErrorStateRecord;->getDialogController()Lcom/android/server/am/ErrorDialogController;
+PLcom/android/server/am/ProcessErrorStateRecord;->getShowBackground()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->isBad()Z
+HPLcom/android/server/am/ProcessErrorStateRecord;->isCrashing()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->isInterestingForBackgroundTraces()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->isMonitorCpuUsage()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->isNotResponding()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->isSilentAnr()Z
+PLcom/android/server/am/ProcessErrorStateRecord;->lambda$appNotResponding$1(Lcom/android/internal/os/anr/AnrLatencyTracker;)V
+PLcom/android/server/am/ProcessErrorStateRecord;->lambda$appNotResponding$3(Lcom/android/internal/os/anr/AnrLatencyTracker;ZZ)Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessErrorStateRecord;->onCleanupApplicationRecordLSP()V
+PLcom/android/server/am/ProcessErrorStateRecord;->setAnrAnnotation(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessErrorStateRecord;->setCrashHandler(Ljava/lang/Runnable;)V
+HPLcom/android/server/am/ProcessErrorStateRecord;->setCrashing(Z)V
+HPLcom/android/server/am/ProcessErrorStateRecord;->setNotResponding(Z)V
+PLcom/android/server/am/ProcessErrorStateRecord;->skipAnrLocked(Ljava/lang/String;)Z
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;-><init>(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/am/ProcessList;J)V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/ProcessList;)V
+PLcom/android/server/am/ProcessList$$ExternalSyntheticLambda4;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList$$ExternalSyntheticLambda5;->run()V
+HSPLcom/android/server/am/ProcessList$1;-><init>(Lcom/android/server/am/ProcessList;)V
+HSPLcom/android/server/am/ProcessList$2;-><init>(Lcom/android/server/am/ProcessList;)V
+HPLcom/android/server/am/ProcessList$2;->handleUnsolicitedMessage(Ljava/io/DataInputStream;I)Z
+PLcom/android/server/am/ProcessList$2;->onConnect(Ljava/io/OutputStream;)Z
+HSPLcom/android/server/am/ProcessList$ImperceptibleKillRunner$H;-><init>(Lcom/android/server/am/ProcessList$ImperceptibleKillRunner;Landroid/os/Looper;)V
+HSPLcom/android/server/am/ProcessList$ImperceptibleKillRunner;-><init>(Lcom/android/server/am/ProcessList;Landroid/os/Looper;)V
+HSPLcom/android/server/am/ProcessList$IsolatedUidRange;-><init>(Lcom/android/server/am/ProcessList;II)V
+HPLcom/android/server/am/ProcessList$IsolatedUidRange;->freeIsolatedUidLocked(I)V
+HSPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;-><init>(Lcom/android/server/am/ProcessList;III)V
+HSPLcom/android/server/am/ProcessList$KillHandler;-><init>(Lcom/android/server/am/ProcessList;Landroid/os/Looper;)V
+PLcom/android/server/am/ProcessList$KillHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/ProcessList$MyProcessMap;-><init>(Lcom/android/server/am/ProcessList;)V
+HPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList$MyProcessMap;->remove(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList$ProcStartHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+PLcom/android/server/am/ProcessList$ProcStartHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
+HPLcom/android/server/am/ProcessList;->$r8$lambda$3Aeowc7Aa0A47bbOcoIMPuNZ44Y(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList;->$r8$lambda$3aT8AjDesFyouy4iqaLN2hUmayA(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList;->$r8$lambda$CC7yn4e5nUPqzC8siIAeG5XlMLQ(Lcom/android/server/am/ProcessList;JLcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessList;->$r8$lambda$JNHuPiwSzts8mouEo9gde_DuUw8(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessList;->$r8$lambda$_2hhy3f6tCYNbqfLdggq9vFVtX4(Lcom/android/server/am/ProcessList;Ljava/io/FileDescriptor;I)I
+PLcom/android/server/am/ProcessList;->-$$Nest$mhandlePredecessorProcDied(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessList;->-$$Nest$sfgetsLmkdConnection()Lcom/android/server/am/LmkdConnection;
+HSPLcom/android/server/am/ProcessList;-><clinit>()V
+HSPLcom/android/server/am/ProcessList;-><init>()V
+HPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ)Ljava/lang/String;
+HPLcom/android/server/am/ProcessList;->checkSlow(JLjava/lang/String;)V
+HPLcom/android/server/am/ProcessList;->computeGidsForProcess(II[IZ)[I
+HPLcom/android/server/am/ProcessList;->computeNextPssTime(ILcom/android/server/am/ProcessList$ProcStateMemTracker;ZZJJ)J
+HSPLcom/android/server/am/ProcessList;->createSystemServerSocketForZygote()Landroid/net/LocalSocket;
+HPLcom/android/server/am/ProcessList;->dispatchProcessDied(II)V
+PLcom/android/server/am/ProcessList;->dispatchProcessStarted(Lcom/android/server/am/ProcessRecord;I)V
+HPLcom/android/server/am/ProcessList;->dispatchProcessesChanged()V
+HPLcom/android/server/am/ProcessList;->enqueueProcessChangeItemLocked(II)Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
+HPLcom/android/server/am/ProcessList;->fillInProcMemInfoLOSP(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
+HPLcom/android/server/am/ProcessList;->findAppProcessLOSP(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->forEachLruProcessesLOSP(ZLjava/util/function/Consumer;)V
+PLcom/android/server/am/ProcessList;->getAppStartInfoTracker()Lcom/android/server/am/AppStartInfoTracker;
+PLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J
+HPLcom/android/server/am/ProcessList;->getLRURecordForAppLOSP(Landroid/os/IBinder;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->getLruProcessesLOSP()Ljava/util/ArrayList;
+HSPLcom/android/server/am/ProcessList;->getLruSizeLOSP()I
+HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
+HPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+HPLcom/android/server/am/ProcessList;->getNextProcStateSeq()J
+HPLcom/android/server/am/ProcessList;->getNumForegroundServices()Landroid/util/Pair;
+HPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;
+PLcom/android/server/am/ProcessList;->getProcessNamesLOSP()Lcom/android/server/am/ProcessList$MyProcessMap;
+HPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList;->getRunningAppProcessesLOSP(ZIZII)Ljava/util/List;
+HPLcom/android/server/am/ProcessList;->getSdkSandboxProcessesForAppLocked(I)Ljava/util/List;
+HPLcom/android/server/am/ProcessList;->getUidProcStateLOSP(I)I
+HPLcom/android/server/am/ProcessList;->getUidProcessCapabilityLOSP(I)I
+HPLcom/android/server/am/ProcessList;->getUidRecordLOSP(I)Lcom/android/server/am/UidRecord;
+PLcom/android/server/am/ProcessList;->handleDyingAppDeathLocked(Lcom/android/server/am/ProcessRecord;I)Z
+PLcom/android/server/am/ProcessList;->handlePrecedingAppDiedLocked(Lcom/android/server/am/ProcessRecord;)Z
+PLcom/android/server/am/ProcessList;->handlePredecessorProcDied(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessList;->handleProcessStart(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/am/ProcessList;->handleProcessStartWithPredecessor(Lcom/android/server/am/ProcessRecord;Ljava/lang/Runnable;)V
+HPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z
+HPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;Landroid/os/Process$ProcessStartResult;J)Z
+HPLcom/android/server/am/ProcessList;->handleZygoteMessages(Ljava/io/FileDescriptor;I)I
+HPLcom/android/server/am/ProcessList;->hasAppStorage(Landroid/content/pm/PackageManagerInternal;Ljava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->haveBackgroundProcessLOSP()Z
+HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLOSP(Lcom/android/server/am/ActiveUids;)V
+HSPLcom/android/server/am/ProcessList;->init(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActiveUids;Lcom/android/server/compat/PlatformCompat;)V
+PLcom/android/server/am/ProcessList;->isInLruListLOSP(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ProcessList;->isProcStartValidLocked(Lcom/android/server/am/ProcessRecord;J)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->killAllBackgroundProcessesExceptLSP(II)V
+HPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/ProcessRecord;J)J
+HPLcom/android/server/am/ProcessList;->killAppIfBgRestrictedAndCachedIdleLocked(Lcom/android/server/am/UidRecord;)V
+HPLcom/android/server/am/ProcessList;->killPackageProcessesLSP(Ljava/lang/String;IIIZZZZZZIILjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->killProcessGroup(II)V
+HPLcom/android/server/am/ProcessList;->lambda$handleProcessStart$1(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessList;->lambda$killAppIfBgRestrictedAndCachedIdleLocked$5(JLcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessList;->lambda$startProcessLocked$0(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/am/ProcessList;->lambda$updateApplicationInfoLOSP$3(ZLjava/util/List;Landroid/util/ArrayMap;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessList;->makeOomAdjString(IZ)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String;
+PLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J
+HPLcom/android/server/am/ProcessList;->needsStorageDataIsolation(Landroid/os/storage/StorageManagerInternal;Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZILjava/lang/String;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ProcessList;->noteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
+HPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessList;->onLmkdConnect(Ljava/io/OutputStream;)Z
+PLcom/android/server/am/ProcessList;->onSystemReady()V
+HPLcom/android/server/am/ProcessList;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
+HPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z
+PLcom/android/server/am/ProcessList;->registerProcessObserver(Landroid/app/IProcessObserver;)V
+HPLcom/android/server/am/ProcessList;->remove(I)V
+HPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/ProcessList;->scheduleDispatchProcessDiedLocked(II)V
+HPLcom/android/server/am/ProcessList;->searchEachLruProcessesLOSP(ZLjava/util/function/Function;)Ljava/lang/Object;
+HPLcom/android/server/am/ProcessList;->setOomAdj(III)V
+HPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;
+HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJ)Z
+PLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;I)V
+HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;ILjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;IZZLjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;IZZIZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ProcessList;->startPsiMonitoringAfterBoot()V
+PLcom/android/server/am/ProcessList;->updateApplicationInfoLOSP(Ljava/util/List;IZ)V
+HPLcom/android/server/am/ProcessList;->updateClientActivitiesOrderingLSP(Lcom/android/server/am/ProcessRecord;III)V
+PLcom/android/server/am/ProcessList;->updateCoreSettingsLOSP(Landroid/os/Bundle;)V
+HPLcom/android/server/am/ProcessList;->updateLruProcessInternalLSP(Lcom/android/server/am/ProcessRecord;JIILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/ProcessList;->updateLruProcessLSP(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;ZZ)V
+HPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V
+HPLcom/android/server/am/ProcessList;->updateSeInfo(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
+HPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
+PLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/app/procstats/ProcessState;)V
+HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/ProcessProfileRecord;Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;)V
+HPLcom/android/server/am/ProcessProfileRecord$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/am/ProcessProfileRecord;->$r8$lambda$IUdC3S34rs87Xa1P5tzUxV1FgmY(Lcom/android/server/am/ProcessProfileRecord;Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+PLcom/android/server/am/ProcessProfileRecord;->$r8$lambda$JxHNnB95IHo4uPFFKjkpWwJexpY(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+HPLcom/android/server/am/ProcessProfileRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessProfileRecord;->abortNextPssTime()V
+PLcom/android/server/am/ProcessProfileRecord;->abortNextPssTime(Lcom/android/server/am/ProcessList$ProcStateMemTracker;)V
+HPLcom/android/server/am/ProcessProfileRecord;->addHostingComponentType(I)V
+HPLcom/android/server/am/ProcessProfileRecord;->clearHostingComponentType(I)V
+HPLcom/android/server/am/ProcessProfileRecord;->computeNextPssTime(IZZJ)J
+PLcom/android/server/am/ProcessProfileRecord;->getBaseProcessTracker()Lcom/android/internal/app/procstats/ProcessState;
+PLcom/android/server/am/ProcessProfileRecord;->getLastPss()J
+HPLcom/android/server/am/ProcessProfileRecord;->getLastPssTime()J
+PLcom/android/server/am/ProcessProfileRecord;->getLastRss()J
+HPLcom/android/server/am/ProcessProfileRecord;->getLastStateTime()J
+HPLcom/android/server/am/ProcessProfileRecord;->getNextPssTime()J
+PLcom/android/server/am/ProcessProfileRecord;->getTrimMemoryLevel()I
+HPLcom/android/server/am/ProcessProfileRecord;->getUidForAttribution(Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/ProcessProfileRecord;->hasPendingUiClean()Z
+PLcom/android/server/am/ProcessProfileRecord;->init(J)V
+HPLcom/android/server/am/ProcessProfileRecord;->lambda$onProcessActive$0(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/server/am/ProcessStatsService;ILcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+HPLcom/android/server/am/ProcessProfileRecord;->lambda$onProcessInactive$1(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+HPLcom/android/server/am/ProcessProfileRecord;->onProcessActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessProfileRecord;->onProcessFrozen()V
+HPLcom/android/server/am/ProcessProfileRecord;->onProcessInactive(Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessProfileRecord;->onProcessUnfrozen()V
+PLcom/android/server/am/ProcessProfileRecord;->setBaseProcessTracker(Lcom/android/internal/app/procstats/ProcessState;)V
+PLcom/android/server/am/ProcessProfileRecord;->setLastLowMemory(J)V
+PLcom/android/server/am/ProcessProfileRecord;->setLastRequestedGc(J)V
+HPLcom/android/server/am/ProcessProfileRecord;->setNextPssTime(J)V
+HPLcom/android/server/am/ProcessProfileRecord;->setPendingUiClean(Z)V
+HPLcom/android/server/am/ProcessProfileRecord;->setPid(I)V
+HPLcom/android/server/am/ProcessProfileRecord;->setProcessTrackerState(II)V
+HPLcom/android/server/am/ProcessProfileRecord;->updateProcState(Lcom/android/server/am/ProcessStateRecord;)V
+HPLcom/android/server/am/ProcessProviderRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessProviderRecord;->addProviderConnection(Lcom/android/server/am/ContentProviderConnection;)V
+PLcom/android/server/am/ProcessProviderRecord;->ensureProviderCapacity(I)V
+PLcom/android/server/am/ProcessProviderRecord;->getLastProviderTime()J
+HPLcom/android/server/am/ProcessProviderRecord;->getProvider(Ljava/lang/String;)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProcessProviderRecord;->getProviderAt(I)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProcessProviderRecord;->getProviderConnectionAt(I)Lcom/android/server/am/ContentProviderConnection;
+PLcom/android/server/am/ProcessProviderRecord;->hasProvider(Ljava/lang/String;)Z
+PLcom/android/server/am/ProcessProviderRecord;->installProvider(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ProcessProviderRecord;->numberOfProviderConnections()I
+HPLcom/android/server/am/ProcessProviderRecord;->numberOfProviders()I
+HPLcom/android/server/am/ProcessProviderRecord;->onCleanupApplicationRecordLocked(Z)Z
+HPLcom/android/server/am/ProcessProviderRecord;->removeProviderConnection(Lcom/android/server/am/ContentProviderConnection;)Z
+PLcom/android/server/am/ProcessProviderRecord;->setLastProviderTime(J)V
+HPLcom/android/server/am/ProcessReceiverRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessReceiverRecord;->addReceiver(Lcom/android/server/am/ReceiverList;)V
+HPLcom/android/server/am/ProcessReceiverRecord;->decrementCurReceivers()V
+HPLcom/android/server/am/ProcessReceiverRecord;->incrementCurReceivers()V
+HPLcom/android/server/am/ProcessReceiverRecord;->numberOfReceivers()I
+HPLcom/android/server/am/ProcessReceiverRecord;->onCleanupApplicationRecordLocked()V
+HPLcom/android/server/am/ProcessReceiverRecord;->removeReceiver(Lcom/android/server/am/ReceiverList;)V
+PLcom/android/server/am/ProcessRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/internal/app/procstats/ProcessState;)V
+PLcom/android/server/am/ProcessRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/ProcessRecord;->$r8$lambda$HANeJKZz4r720moq9uNElrY05J8(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+HPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->addOrUpdateBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
+HPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z
+PLcom/android/server/am/ProcessRecord;->getActiveInstrumentation()Lcom/android/server/am/ActiveInstrumentation;
+PLcom/android/server/am/ProcessRecord;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/am/ProcessRecord;->getBindApplicationTime()J
+PLcom/android/server/am/ProcessRecord;->getCompat()Landroid/content/res/CompatibilityInfo;
+HPLcom/android/server/am/ProcessRecord;->getCpuDelayTime()J
+PLcom/android/server/am/ProcessRecord;->getCpuTime()J
+PLcom/android/server/am/ProcessRecord;->getDeathRecipient()Landroid/os/IBinder$DeathRecipient;
+PLcom/android/server/am/ProcessRecord;->getDisabledCompatChanges()[J
+PLcom/android/server/am/ProcessRecord;->getDyingPid()I
+HPLcom/android/server/am/ProcessRecord;->getHostingRecord()Lcom/android/server/am/HostingRecord;
+PLcom/android/server/am/ProcessRecord;->getIsolatedEntryPoint()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->getLastActivityTime()J
+HPLcom/android/server/am/ProcessRecord;->getLruSeq()I
+HPLcom/android/server/am/ProcessRecord;->getMountMode()I
+PLcom/android/server/am/ProcessRecord;->getOnewayThread()Landroid/app/IApplicationThread;
+HPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->getPid()I
+PLcom/android/server/am/ProcessRecord;->getPkgDeps()Landroid/util/ArraySet;
+HPLcom/android/server/am/ProcessRecord;->getPkgList()Lcom/android/server/am/PackageList;
+PLcom/android/server/am/ProcessRecord;->getProcessClassEnum()I
+HPLcom/android/server/am/ProcessRecord;->getRenderThreadTid()I
+PLcom/android/server/am/ProcessRecord;->getRss(I)J
+HPLcom/android/server/am/ProcessRecord;->getSeInfo()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->getSetAdj()I
+HPLcom/android/server/am/ProcessRecord;->getSetProcState()I
+HPLcom/android/server/am/ProcessRecord;->getStartElapsedTime()J
+HPLcom/android/server/am/ProcessRecord;->getStartSeq()J
+HPLcom/android/server/am/ProcessRecord;->getStartTime()J
+HPLcom/android/server/am/ProcessRecord;->getStartUid()I
+HPLcom/android/server/am/ProcessRecord;->getStartUptime()J
+HPLcom/android/server/am/ProcessRecord;->getThread()Landroid/app/IApplicationThread;
+HPLcom/android/server/am/ProcessRecord;->getUidRecord()Lcom/android/server/am/UidRecord;
+HPLcom/android/server/am/ProcessRecord;->getWaitingToKill()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->getWindowProcessController()Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/am/ProcessRecord;->hasActivities()Z
+HPLcom/android/server/am/ProcessRecord;->hasActivitiesOrRecentTasks()Z
+HPLcom/android/server/am/ProcessRecord;->isCached()Z
+HPLcom/android/server/am/ProcessRecord;->isDebuggable()Z
+PLcom/android/server/am/ProcessRecord;->isDebugging()Z
+HPLcom/android/server/am/ProcessRecord;->isInFullBackup()Z
+PLcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
+HPLcom/android/server/am/ProcessRecord;->isKilled()Z
+HPLcom/android/server/am/ProcessRecord;->isKilledByAm()Z
+HPLcom/android/server/am/ProcessRecord;->isPendingFinishAttach()Z
+HPLcom/android/server/am/ProcessRecord;->isPendingStart()Z
+HPLcom/android/server/am/ProcessRecord;->isPersistent()Z
+HPLcom/android/server/am/ProcessRecord;->isRemoved()Z
+HPLcom/android/server/am/ProcessRecord;->isThreadReady()Z
+PLcom/android/server/am/ProcessRecord;->isUnlocked()Z
+PLcom/android/server/am/ProcessRecord;->isUsingWrapper()Z
+PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IIZZ)V
+PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;IZ)V
+PLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZ)V
+HPLcom/android/server/am/ProcessRecord;->killLocked(Ljava/lang/String;Ljava/lang/String;IIZZ)V
+HPLcom/android/server/am/ProcessRecord;->killProcessGroupIfNecessaryLocked(Z)V
+PLcom/android/server/am/ProcessRecord;->lambda$resetPackageList$0(Lcom/android/internal/app/procstats/ProcessState;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)V
+HPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessRecord;->onCleanupApplicationRecordLSP(Lcom/android/server/am/ProcessStatsService;ZZ)Z
+HPLcom/android/server/am/ProcessRecord;->onProcessFrozen()V
+PLcom/android/server/am/ProcessRecord;->onProcessFrozenCancelled()V
+HPLcom/android/server/am/ProcessRecord;->onProcessUnfrozen()V
+PLcom/android/server/am/ProcessRecord;->onStartActivity(IZLjava/lang/String;J)V
+HPLcom/android/server/am/ProcessRecord;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V
+HPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
+PLcom/android/server/am/ProcessRecord;->setActiveInstrumentation(Lcom/android/server/am/ActiveInstrumentation;)V
+HPLcom/android/server/am/ProcessRecord;->setBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
+HPLcom/android/server/am/ProcessRecord;->setBindApplicationTime(J)V
+PLcom/android/server/am/ProcessRecord;->setCompat(Landroid/content/res/CompatibilityInfo;)V
+PLcom/android/server/am/ProcessRecord;->setDeathRecipient(Landroid/os/IBinder$DeathRecipient;)V
+HPLcom/android/server/am/ProcessRecord;->setDebugging(Z)V
+PLcom/android/server/am/ProcessRecord;->setDisabledCompatChanges([J)V
+HPLcom/android/server/am/ProcessRecord;->setDyingPid(I)V
+PLcom/android/server/am/ProcessRecord;->setGids([I)V
+PLcom/android/server/am/ProcessRecord;->setInstructionSet(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->setIsolatedEntryPoint(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->setIsolatedEntryPointArgs([Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessRecord;->setKilled(Z)V
+HPLcom/android/server/am/ProcessRecord;->setKilledByAm(Z)V
+HPLcom/android/server/am/ProcessRecord;->setLastActivityTime(J)V
+HPLcom/android/server/am/ProcessRecord;->setLruSeq(I)V
+HPLcom/android/server/am/ProcessRecord;->setMountMode(I)V
+HPLcom/android/server/am/ProcessRecord;->setPendingFinishAttach(Z)V
+HPLcom/android/server/am/ProcessRecord;->setPendingStart(Z)V
+HPLcom/android/server/am/ProcessRecord;->setPendingUiClean(Z)V
+HPLcom/android/server/am/ProcessRecord;->setPersistent(Z)V
+HPLcom/android/server/am/ProcessRecord;->setPid(I)V
+PLcom/android/server/am/ProcessRecord;->setPkgDeps(Landroid/util/ArraySet;)V
+HPLcom/android/server/am/ProcessRecord;->setRemoved(Z)V
+HPLcom/android/server/am/ProcessRecord;->setRenderThreadTid(I)V
+HPLcom/android/server/am/ProcessRecord;->setRequiredAbi(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->setRunningRemoteAnimation(Z)V
+HPLcom/android/server/am/ProcessRecord;->setStartParams(ILcom/android/server/am/HostingRecord;Ljava/lang/String;JJ)V
+HPLcom/android/server/am/ProcessRecord;->setStartSeq(J)V
+HPLcom/android/server/am/ProcessRecord;->setUidRecord(Lcom/android/server/am/UidRecord;)V
+HPLcom/android/server/am/ProcessRecord;->setUnlocked(Z)V
+HPLcom/android/server/am/ProcessRecord;->setUsingWrapper(Z)V
+PLcom/android/server/am/ProcessRecord;->setWaitingToKill(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->setWasForceStopped(Z)V
+PLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
+HPLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
+PLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZ)V
+HPLcom/android/server/am/ProcessRecord;->updateProcessRecordNodes(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessRecord;->updateServiceConnectionActivities()V
+HPLcom/android/server/am/ProcessRecord;->wasForceStopped()Z
+HPLcom/android/server/am/ProcessServiceRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUid(ILjava/lang/String;J)V
+HPLcom/android/server/am/ProcessServiceRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->addConnection(Lcom/android/server/am/ConnectionRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->addSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->areAllShortForegroundServicesProcstateTimedOut(J)Z
+HPLcom/android/server/am/ProcessServiceRecord;->areForegroundServiceTypesSame(IZ)Z
+HPLcom/android/server/am/ProcessServiceRecord;->clearBoundClientUids()V
+HPLcom/android/server/am/ProcessServiceRecord;->getConnectionAt(I)Lcom/android/server/am/ConnectionRecord;
+PLcom/android/server/am/ProcessServiceRecord;->getConnectionGroup()I
+HPLcom/android/server/am/ProcessServiceRecord;->getExecutingServiceAt(I)Lcom/android/server/am/ServiceRecord;
+HPLcom/android/server/am/ProcessServiceRecord;->getForegroundServiceTypes()I
+HPLcom/android/server/am/ProcessServiceRecord;->getNumForegroundServices()I
+HPLcom/android/server/am/ProcessServiceRecord;->getRunningServiceAt(I)Lcom/android/server/am/ServiceRecord;
+HPLcom/android/server/am/ProcessServiceRecord;->hasClientActivities()Z
+PLcom/android/server/am/ProcessServiceRecord;->hasForegroundServices()Z
+HPLcom/android/server/am/ProcessServiceRecord;->hasNonShortForegroundServices()Z
+PLcom/android/server/am/ProcessServiceRecord;->hasReportedForegroundServices()Z
+HPLcom/android/server/am/ProcessServiceRecord;->hasTopStartedAlmostPerceptibleServices()Z
+PLcom/android/server/am/ProcessServiceRecord;->isAlmostPerceptible(Lcom/android/server/am/ServiceRecord;)Z
+HPLcom/android/server/am/ProcessServiceRecord;->isTreatedLikeActivity()Z
+HPLcom/android/server/am/ProcessServiceRecord;->modifyRawOomAdj(I)I
+PLcom/android/server/am/ProcessServiceRecord;->noteScheduleServiceTimeoutPending(Z)V
+HPLcom/android/server/am/ProcessServiceRecord;->numberOfConnections()I
+HPLcom/android/server/am/ProcessServiceRecord;->numberOfExecutingServices()I
+HPLcom/android/server/am/ProcessServiceRecord;->numberOfRunningServices()I
+HPLcom/android/server/am/ProcessServiceRecord;->onCleanupApplicationRecordLocked()V
+PLcom/android/server/am/ProcessServiceRecord;->onProcessFrozenCancelled()V
+PLcom/android/server/am/ProcessServiceRecord;->onProcessUnfrozen()V
+HPLcom/android/server/am/ProcessServiceRecord;->removeAllConnections()V
+PLcom/android/server/am/ProcessServiceRecord;->removeAllSdkSandboxConnections()V
+HPLcom/android/server/am/ProcessServiceRecord;->removeConnection(Lcom/android/server/am/ConnectionRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->removeSdkSandboxConnectionIfNecessary(Lcom/android/server/am/ConnectionRecord;)V
+PLcom/android/server/am/ProcessServiceRecord;->scheduleServiceTimeoutIfNeededLocked()V
+HPLcom/android/server/am/ProcessServiceRecord;->setExecServicesFg(Z)V
+HPLcom/android/server/am/ProcessServiceRecord;->setHasClientActivities(Z)V
+PLcom/android/server/am/ProcessServiceRecord;->setHasForegroundServices(ZIZ)V
+HPLcom/android/server/am/ProcessServiceRecord;->setHasReportedForegroundServices(Z)V
+PLcom/android/server/am/ProcessServiceRecord;->setReportedForegroundServiceTypes(I)V
+HPLcom/android/server/am/ProcessServiceRecord;->shouldExecServicesFg()Z
+HPLcom/android/server/am/ProcessServiceRecord;->startExecutingService(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->startService(Lcom/android/server/am/ServiceRecord;)Z
+PLcom/android/server/am/ProcessServiceRecord;->stopAllExecutingServices()V
+HPLcom/android/server/am/ProcessServiceRecord;->stopExecutingService(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ProcessServiceRecord;->stopService(Lcom/android/server/am/ServiceRecord;)Z
+HPLcom/android/server/am/ProcessServiceRecord;->updateBoundClientUids()V
+HPLcom/android/server/am/ProcessServiceRecord;->updateHasTopStartedAlmostPerceptibleServices()V
+HPLcom/android/server/am/ProcessServiceRecord;->updateHostingComonentTypeForBindingsLocked()V
+HPLcom/android/server/am/ProcessStateRecord;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessStateRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZZIIIII)V
+HPLcom/android/server/am/ProcessStateRecord;->containsCycle()Z
+HPLcom/android/server/am/ProcessStateRecord;->forceProcessStateUpTo(I)V
+HPLcom/android/server/am/ProcessStateRecord;->getAdjSeq()I
+PLcom/android/server/am/ProcessStateRecord;->getAdjSource()Ljava/lang/Object;
+PLcom/android/server/am/ProcessStateRecord;->getAdjSourceProcState()I
+PLcom/android/server/am/ProcessStateRecord;->getAdjTarget()Ljava/lang/Object;
+PLcom/android/server/am/ProcessStateRecord;->getAdjTypeCode()I
+HPLcom/android/server/am/ProcessStateRecord;->getCachedCompatChange(I)Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedHasActivities()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedHasRecentTasks()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedHasVisibleActivities()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedIsHeavyWeight()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedIsHomeProcess()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedIsPreviousProcess()Z
+HPLcom/android/server/am/ProcessStateRecord;->getCachedIsReceivingBroadcast([I)Z
+HPLcom/android/server/am/ProcessStateRecord;->getCompletedAdjSeq()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurAdj()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurCapability()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurProcState()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurRawAdj()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurRawProcState()I
+HPLcom/android/server/am/ProcessStateRecord;->getCurrentSchedulingGroup()I
+PLcom/android/server/am/ProcessStateRecord;->getFgInteractionTime()J
+PLcom/android/server/am/ProcessStateRecord;->getForcingToImportant()Ljava/lang/Object;
+PLcom/android/server/am/ProcessStateRecord;->getInteractionEventTime()J
+PLcom/android/server/am/ProcessStateRecord;->getLastCanKillOnBgRestrictedAndIdleTime()J
+PLcom/android/server/am/ProcessStateRecord;->getLastInvisibleTime()J
+HPLcom/android/server/am/ProcessStateRecord;->getLastStateTime()J
+HPLcom/android/server/am/ProcessStateRecord;->getMaxAdj()I
+HPLcom/android/server/am/ProcessStateRecord;->getReportedProcState()I
+HPLcom/android/server/am/ProcessStateRecord;->getSetAdj()I
+HPLcom/android/server/am/ProcessStateRecord;->getSetCapability()I
+HPLcom/android/server/am/ProcessStateRecord;->getSetProcState()I
+PLcom/android/server/am/ProcessStateRecord;->getSetRawAdj()I
+HPLcom/android/server/am/ProcessStateRecord;->getSetSchedGroup()I
+HPLcom/android/server/am/ProcessStateRecord;->getVerifiedAdj()I
+PLcom/android/server/am/ProcessStateRecord;->getWhenUnimportant()J
+HPLcom/android/server/am/ProcessStateRecord;->hasForegroundActivities()Z
+HPLcom/android/server/am/ProcessStateRecord;->hasOverlayUi()Z
+HPLcom/android/server/am/ProcessStateRecord;->hasProcStateChanged()Z
+PLcom/android/server/am/ProcessStateRecord;->hasRepForegroundActivities()Z
+PLcom/android/server/am/ProcessStateRecord;->hasReportedInteraction()Z
+HPLcom/android/server/am/ProcessStateRecord;->hasShownUi()Z
+HPLcom/android/server/am/ProcessStateRecord;->hasTopUi()Z
+PLcom/android/server/am/ProcessStateRecord;->init(J)V
+HPLcom/android/server/am/ProcessStateRecord;->isBackgroundRestricted()Z
+HPLcom/android/server/am/ProcessStateRecord;->isCached()Z
+HPLcom/android/server/am/ProcessStateRecord;->isCurBoundByNonBgRestrictedApp()Z
+HPLcom/android/server/am/ProcessStateRecord;->isReachable()Z
+HPLcom/android/server/am/ProcessStateRecord;->isRunningRemoteAnimation()Z
+PLcom/android/server/am/ProcessStateRecord;->isServiceB()Z
+PLcom/android/server/am/ProcessStateRecord;->isSetBoundByNonBgRestrictedApp()Z
+HPLcom/android/server/am/ProcessStateRecord;->isSystemNoUi()Z
+HPLcom/android/server/am/ProcessStateRecord;->onCleanupApplicationRecordLSP()V
+HPLcom/android/server/am/ProcessStateRecord;->resetCachedInfo()V
+HPLcom/android/server/am/ProcessStateRecord;->setAdjSeq(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setAdjSource(Ljava/lang/Object;)V
+HPLcom/android/server/am/ProcessStateRecord;->setAdjSourceProcState(I)V
+PLcom/android/server/am/ProcessStateRecord;->setAdjTarget(Ljava/lang/Object;)V
+PLcom/android/server/am/ProcessStateRecord;->setAdjType(Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessStateRecord;->setAdjTypeCode(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setBackgroundRestricted(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setCached(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setCached(ZZ)Z
+HPLcom/android/server/am/ProcessStateRecord;->setCompletedAdjSeq(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setContainsCycle(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurAdj(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurBoundByNonBgRestrictedApp(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurCapability(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurProcState(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurRawAdj(IZ)Z
+HPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setCurRawProcState(IZ)Z
+HPLcom/android/server/am/ProcessStateRecord;->setCurrentSchedulingGroup(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setEmpty(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setFgInteractionTime(J)V
+PLcom/android/server/am/ProcessStateRecord;->setForcingToImportant(Ljava/lang/Object;)V
+HPLcom/android/server/am/ProcessStateRecord;->setHasForegroundActivities(Z)V
+PLcom/android/server/am/ProcessStateRecord;->setHasOverlayUi(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setHasShownUi(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setHasStartedServices(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setInteractionEventTime(J)V
+PLcom/android/server/am/ProcessStateRecord;->setLastStateTime(J)V
+PLcom/android/server/am/ProcessStateRecord;->setLastTopTime(J)V
+PLcom/android/server/am/ProcessStateRecord;->setMaxAdj(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setNoKillOnBgRestrictedAndIdle(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setProcStateChanged(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setReachable(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setReportedInteraction(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setReportedProcState(I)V
+PLcom/android/server/am/ProcessStateRecord;->setRunningRemoteAnimation(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setScheduleLikeTopApp(Z)V
+PLcom/android/server/am/ProcessStateRecord;->setServiceB(Z)V
+PLcom/android/server/am/ProcessStateRecord;->setSetAdj(I)V
+PLcom/android/server/am/ProcessStateRecord;->setSetCached(Z)V
+PLcom/android/server/am/ProcessStateRecord;->setSetCapability(I)V
+PLcom/android/server/am/ProcessStateRecord;->setSetNoKillOnBgRestrictedAndIdle(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setSetProcState(I)V
+PLcom/android/server/am/ProcessStateRecord;->setSetRawAdj(I)V
+PLcom/android/server/am/ProcessStateRecord;->setSetSchedGroup(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setSystemNoUi(Z)V
+HPLcom/android/server/am/ProcessStateRecord;->setVerifiedAdj(I)V
+HPLcom/android/server/am/ProcessStateRecord;->setWhenUnimportant(J)V
+PLcom/android/server/am/ProcessStateRecord;->shouldNotKillOnBgRestrictedAndIdle()Z
+HPLcom/android/server/am/ProcessStateRecord;->updateLastInvisibleTime(Z)V
+HSPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+HSPLcom/android/server/am/ProcessStatsService$LocalService;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+HSPLcom/android/server/am/ProcessStatsService$LocalService;-><init>(Lcom/android/server/am/ProcessStatsService;Lcom/android/server/am/ProcessStatsService$LocalService-IA;)V
+HSPLcom/android/server/am/ProcessStatsService;-><clinit>()V
+HSPLcom/android/server/am/ProcessStatsService;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/io/File;)V
+HSPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
+HPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IJLjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
+HPLcom/android/server/am/ProcessStatsService;->getServiceState(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
+HSPLcom/android/server/am/ProcessStatsService;->publish()V
+HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z
+HSPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
+HSPLcom/android/server/am/ProcessStatsService;->updateFileLocked()V
+HPLcom/android/server/am/ProcessStatsService;->updateProcessStateHolderLocked(Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;Ljava/lang/String;IJLjava/lang/String;)V
+HSPLcom/android/server/am/ProcessStatsService;->updateTrackingAssociationsLocked(IJ)V
+HSPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z
+PLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
+HPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
+HPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
+HPLcom/android/server/am/ProviderMap;->getProvidersByName(I)Ljava/util/HashMap;
+HPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
+HPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
+HPLcom/android/server/am/ReceiverList;->containsFilter(Landroid/content/IntentFilter;)Z
+PLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/am/ReceiverList;->hashCode()I
+PLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
+PLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
+HPLcom/android/server/am/SameProcessApplicationThread$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/am/SameProcessApplicationThread;->$r8$lambda$30wFUSGfb92ROcaDhzRGaDhM0Kc(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
+PLcom/android/server/am/SameProcessApplicationThread;->$r8$lambda$xSNZcV-izZZ4vzJCToJP1hgj54U(Lcom/android/server/am/SameProcessApplicationThread;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
+PLcom/android/server/am/SameProcessApplicationThread;-><init>(Landroid/app/IApplicationThread;Landroid/os/Handler;)V
+PLcom/android/server/am/SameProcessApplicationThread;->lambda$scheduleReceiver$0(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
+HPLcom/android/server/am/SameProcessApplicationThread;->lambda$scheduleRegisteredReceiver$1(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
+PLcom/android/server/am/SameProcessApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZZIIILjava/lang/String;)V
+HPLcom/android/server/am/SameProcessApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZIIILjava/lang/String;)V
+HPLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;I)V
+HPLcom/android/server/am/ServiceRecord$1;->run()V
+PLcom/android/server/am/ServiceRecord$2;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;ILandroid/app/Notification;IIZLcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ServiceRecord$2;->run()V
+HPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
+PLcom/android/server/am/ServiceRecord;->-$$Nest$msignalForegroundServiceNotification(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;IIZ)V
+HPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;Ljava/lang/String;ILjava/lang/String;Z)V
+HPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V
+PLcom/android/server/am/ServiceRecord;->allowedChanged(II)Z
+PLcom/android/server/am/ServiceRecord;->canStopIfKilled(Z)Z
+HPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
+HPLcom/android/server/am/ServiceRecord;->clearFgsAllowStart()V
+HPLcom/android/server/am/ServiceRecord;->clearFgsAllowWiu()V
+HPLcom/android/server/am/ServiceRecord;->clearShortFgsInfo()V
+HPLcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/ServiceRecord;->dumpReasonCode(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZZ)Lcom/android/server/am/ServiceRecord$StartItem;
+PLcom/android/server/am/ServiceRecord;->forceClearTracker()V
+HPLcom/android/server/am/ServiceRecord;->getBackgroundStartPrivilegesWithExclusiveToken()Landroid/app/BackgroundStartPrivileges;
+HPLcom/android/server/am/ServiceRecord;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/am/ServiceRecord;->getConnections()Landroid/util/ArrayMap;
+PLcom/android/server/am/ServiceRecord;->getFgsAllowStart()I
+PLcom/android/server/am/ServiceRecord;->getFgsAllowStart_legacy()I
+PLcom/android/server/am/ServiceRecord;->getFgsAllowStart_new()I
+HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_forCapabilities()I
+HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_forStart()I
+HPLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_legacy()I
+PLcom/android/server/am/ServiceRecord;->getFgsAllowWiu_new()I
+HPLcom/android/server/am/ServiceRecord;->getLastStartId()I
+HPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;
+HPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z
+PLcom/android/server/am/ServiceRecord;->isAppAlive()Z
+PLcom/android/server/am/ServiceRecord;->isFgsAllowedStart()Z
+HPLcom/android/server/am/ServiceRecord;->isFgsAllowedWiu_forCapabilities()Z
+HPLcom/android/server/am/ServiceRecord;->isFgsAllowedWiu_forStart()Z
+HPLcom/android/server/am/ServiceRecord;->isShortFgs()Z
+HPLcom/android/server/am/ServiceRecord;->makeNextStartId()I
+PLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V
+PLcom/android/server/am/ServiceRecord;->maybeLogFgsLogicChange()V
+HPLcom/android/server/am/ServiceRecord;->postNotification(Z)V
+PLcom/android/server/am/ServiceRecord;->reasonOr(II)I
+PLcom/android/server/am/ServiceRecord;->reasonOr(III)I
+HPLcom/android/server/am/ServiceRecord;->removeConnection(Landroid/os/IBinder;)V
+HPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V
+HPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
+PLcom/android/server/am/ServiceRecord;->setAllowedBgActivityStartsByBinding(Z)V
+HPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;Landroid/app/IApplicationThread;ILcom/android/server/am/UidRecord;)V
+PLcom/android/server/am/ServiceRecord;->shouldTriggerShortFgsTimedEvent(JJ)Z
+PLcom/android/server/am/ServiceRecord;->shouldTriggerShortFgsTimeout(J)Z
+HPLcom/android/server/am/ServiceRecord;->signalForegroundServiceNotification(Ljava/lang/String;IIZ)V
+HPLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ServiceRecord;->updateAllowUiJobScheduling(Z)V
+PLcom/android/server/am/ServiceRecord;->updateAllowlistManager()V
+HPLcom/android/server/am/ServiceRecord;->updateFgsHasNotificationPermission()V
+PLcom/android/server/am/ServiceRecord;->updateIsAllowedBgActivityStartsByBinding()V
+HPLcom/android/server/am/ServiceRecord;->updateKeepWarmLocked()V
+PLcom/android/server/am/ServiceRecord;->updateParentProcessBgActivityStartsToken()V
+HPLcom/android/server/am/ServiceRecord;->updateProcessStateOnRequest()V
+PLcom/android/server/am/ServiceRecord;->useNewBfslLogic()Z
+HPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forCapabilities()Z
+HPLcom/android/server/am/ServiceRecord;->useNewWiuLogic_forStart()Z
+PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
+PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
+PLcom/android/server/am/SettingsToPropertiesMapper$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
+PLcom/android/server/am/SettingsToPropertiesMapper$1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;Landroid/os/Handler;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/SettingsToPropertiesMapper;-><clinit>()V
+PLcom/android/server/am/SettingsToPropertiesMapper;-><init>(Landroid/content/ContentResolver;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;->isNativeFlagsResetPerformed()Z
+PLcom/android/server/am/SettingsToPropertiesMapper;->makePropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/am/SettingsToPropertiesMapper;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;->start(Landroid/content/ContentResolver;)Lcom/android/server/am/SettingsToPropertiesMapper;
+HPLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertiesFromSettings()V
+PLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertyFromSetting(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/StackTracesDumpHelper$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/am/StackTracesDumpHelper$$ExternalSyntheticLambda1;->applyAsLong(Ljava/lang/Object;)J
+PLcom/android/server/am/StackTracesDumpHelper;-><clinit>()V
+PLcom/android/server/am/StackTracesDumpHelper;->appendtoANRFile(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/StackTracesDumpHelper;->collectPids(Ljava/util/concurrent/Future;Ljava/lang/String;)Ljava/util/ArrayList;
+PLcom/android/server/am/StackTracesDumpHelper;->copyFirstPidTempDump(Ljava/lang/String;Ljava/util/concurrent/Future;JLcom/android/internal/os/anr/AnrLatencyTracker;)Z
+PLcom/android/server/am/StackTracesDumpHelper;->createAnrDumpFile(Ljava/io/File;)Ljava/io/File;
+PLcom/android/server/am/StackTracesDumpHelper;->dumpJavaTracesTombstoned(ILjava/lang/String;J)J
+PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/concurrent/Future;Ljava/util/concurrent/Future;Ljava/util/concurrent/Future;Lcom/android/internal/os/anr/AnrLatencyTracker;)J
+PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTraces(Ljava/util/ArrayList;Lcom/android/internal/os/ProcessCpuTracker;Landroid/util/SparseBooleanArray;Ljava/util/concurrent/Future;Ljava/io/StringWriter;Ljava/util/concurrent/atomic/AtomicLong;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Future;Lcom/android/internal/os/anr/AnrLatencyTracker;)Ljava/io/File;
+PLcom/android/server/am/StackTracesDumpHelper;->dumpStackTracesTempFile(ILcom/android/internal/os/anr/AnrLatencyTracker;)Ljava/io/File;
+PLcom/android/server/am/StackTracesDumpHelper;->maybePruneOldTraces(Ljava/io/File;)V
+PLcom/android/server/am/StackTracesDumpHelper;->writeUptimeStartHeaderForPid(ILjava/lang/String;)I
+HSPLcom/android/server/am/TraceErrorLogger;-><init>()V
+PLcom/android/server/am/TraceErrorLogger;->addProcessInfoAndErrorIdToTrace(Ljava/lang/String;ILjava/util/UUID;)V
+PLcom/android/server/am/TraceErrorLogger;->addSubjectToTrace(Ljava/lang/String;Ljava/util/UUID;)V
+PLcom/android/server/am/TraceErrorLogger;->generateErrorId()Ljava/util/UUID;
+PLcom/android/server/am/TraceErrorLogger;->isAddErrorIdEnabled()Z
+HSPLcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/am/UidObserverController;)V
+HPLcom/android/server/am/UidObserverController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/am/UidObserverController$ChangeRecord;-><init>()V
+HPLcom/android/server/am/UidObserverController$ChangeRecord;->copyTo(Lcom/android/server/am/UidObserverController$ChangeRecord;)V
+HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmCutpoint(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
+HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmUid(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
+HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->-$$Nest$fgetmWhich(Lcom/android/server/am/UidObserverController$UidObserverRegistration;)I
+PLcom/android/server/am/UidObserverController$UidObserverRegistration;-><clinit>()V
+HPLcom/android/server/am/UidObserverController$UidObserverRegistration;-><init>(ILjava/lang/String;IIZ[ILandroid/os/IBinder;)V
+HPLcom/android/server/am/UidObserverController$UidObserverRegistration;->isWatchingUid(I)Z
+HSPLcom/android/server/am/UidObserverController;-><init>(Landroid/os/Handler;)V
+HPLcom/android/server/am/UidObserverController;->dispatchUidsChanged()V
+HPLcom/android/server/am/UidObserverController;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/UidObserverController$UidObserverRegistration;I)V
+HPLcom/android/server/am/UidObserverController;->enqueueUidChange(Lcom/android/server/am/UidObserverController$ChangeRecord;IIIIJIZ)I
+HPLcom/android/server/am/UidObserverController;->getOrCreateChangeRecordLocked()Lcom/android/server/am/UidObserverController$ChangeRecord;
+PLcom/android/server/am/UidObserverController;->mergeWithPendingChange(II)I
+HPLcom/android/server/am/UidObserverController;->register(Landroid/app/IUidObserver;IILjava/lang/String;I[I)Landroid/os/IBinder;
+HSPLcom/android/server/am/UidProcessMap;-><init>()V
+HPLcom/android/server/am/UidProcessMap;->get(ILjava/lang/String;)Ljava/lang/Object;
+PLcom/android/server/am/UidProcessMap;->getMap()Landroid/util/SparseArray;
+HPLcom/android/server/am/UidProcessMap;->put(ILjava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/UidRecord;-><clinit>()V
+HPLcom/android/server/am/UidRecord;-><init>(ILcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/UidRecord;->addProcess(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/UidRecord;->areAllProcessesFrozen()Z
+HPLcom/android/server/am/UidRecord;->areAllProcessesFrozen(Lcom/android/server/am/ProcessRecord;)Z
+HPLcom/android/server/am/UidRecord;->clearProcAdjChanged()V
+HPLcom/android/server/am/UidRecord;->forEachProcess(Ljava/util/function/Consumer;)V
+PLcom/android/server/am/UidRecord;->getCurCapability()I
+PLcom/android/server/am/UidRecord;->getCurProcState()I
+PLcom/android/server/am/UidRecord;->getLastBackgroundTime()J
+PLcom/android/server/am/UidRecord;->getLastIdleTime()J
+HPLcom/android/server/am/UidRecord;->getMinProcAdj()I
+HPLcom/android/server/am/UidRecord;->getNumOfProcs()I
+HPLcom/android/server/am/UidRecord;->getProcAdjChanged()Z
+PLcom/android/server/am/UidRecord;->getProcessInPackage(Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HPLcom/android/server/am/UidRecord;->getSetCapability()I
+HPLcom/android/server/am/UidRecord;->getSetProcState()I
+HPLcom/android/server/am/UidRecord;->getUid()I
+HPLcom/android/server/am/UidRecord;->hasForegroundServices()Z
+HPLcom/android/server/am/UidRecord;->isCurAllowListed()Z
+HPLcom/android/server/am/UidRecord;->isEphemeral()Z
+HPLcom/android/server/am/UidRecord;->isFrozen()Z
+HPLcom/android/server/am/UidRecord;->isIdle()Z
+HPLcom/android/server/am/UidRecord;->isSetAllowListed()Z
+HPLcom/android/server/am/UidRecord;->isSetIdle()Z
+PLcom/android/server/am/UidRecord;->noteProcAdjChanged()V
+PLcom/android/server/am/UidRecord;->removeProcess(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/UidRecord;->reset()V
+HPLcom/android/server/am/UidRecord;->setCurAllowListed(Z)V
+PLcom/android/server/am/UidRecord;->setCurCapability(I)V
+PLcom/android/server/am/UidRecord;->setCurProcState(I)V
+HPLcom/android/server/am/UidRecord;->setEphemeral(Z)V
+HPLcom/android/server/am/UidRecord;->setForegroundServices(Z)V
+PLcom/android/server/am/UidRecord;->setFrozen(Z)V
+PLcom/android/server/am/UidRecord;->setIdle(Z)V
+PLcom/android/server/am/UidRecord;->setLastBackgroundTime(J)V
+PLcom/android/server/am/UidRecord;->setLastIdleTime(J)V
+HPLcom/android/server/am/UidRecord;->setLastReportedChange(I)V
+HPLcom/android/server/am/UidRecord;->setSetAllowListed(Z)V
+HPLcom/android/server/am/UidRecord;->setSetCapability(I)V
+HPLcom/android/server/am/UidRecord;->setSetIdle(Z)V
+HPLcom/android/server/am/UidRecord;->setSetProcState(I)V
+HPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/am/UserController;Landroid/content/pm/UserInfo;)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/am/UserController;Landroid/content/Intent;III)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda18;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/am/UserController;)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/am/UserController;I)V
+PLcom/android/server/am/UserController$$ExternalSyntheticLambda6;->run()V
+HSPLcom/android/server/am/UserController$1;-><init>(Lcom/android/server/am/UserController;)V
+PLcom/android/server/am/UserController$3;-><init>(Lcom/android/server/am/UserController;I)V
+PLcom/android/server/am/UserController$3;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/UserController$8;-><init>(Lcom/android/server/am/UserController;)V
+PLcom/android/server/am/UserController$8;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HSPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/UserController$Injector;->broadcastIntent(Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIII)I
+HPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I
+PLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+HSPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context;
+HSPLcom/android/server/am/UserController$Injector;->getHandler(Landroid/os/Handler$Callback;)Landroid/os/Handler;
+HSPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+PLcom/android/server/am/UserController$Injector;->getSystemServiceManager()Lcom/android/server/SystemServiceManager;
+HSPLcom/android/server/am/UserController$Injector;->getUiHandler(Landroid/os/Handler$Callback;)Landroid/os/Handler;
+PLcom/android/server/am/UserController$Injector;->getUserJourneyLogger()Lcom/android/server/pm/UserJourneyLogger;
+HPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
+PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/am/UserController$Injector;->installEncryptionUnawareProviders(I)V
+HPLcom/android/server/am/UserController$Injector;->isCallerRecents(I)Z
+PLcom/android/server/am/UserController$Injector;->isFirstBootOrUpgrade()Z
+PLcom/android/server/am/UserController$Injector;->isHeadlessSystemUserMode()Z
+PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z
+PLcom/android/server/am/UserController$Injector;->loadUserRecents(I)V
+PLcom/android/server/am/UserController$Injector;->onSystemUserVisibilityChanged(Z)V
+PLcom/android/server/am/UserController$Injector;->onUserStarting(I)V
+PLcom/android/server/am/UserController$Injector;->reportCurWakefulnessUsageEvent()V
+PLcom/android/server/am/UserController$Injector;->startPersistentApps(I)V
+PLcom/android/server/am/UserController$Injector;->startUserWidgets(I)V
+PLcom/android/server/am/UserController$Injector;->systemServiceManagerOnUserCompletedEvent(II)V
+HSPLcom/android/server/am/UserController$UserProgressListener;-><init>()V
+HSPLcom/android/server/am/UserController$UserProgressListener;-><init>(Lcom/android/server/am/UserController$UserProgressListener-IA;)V
+PLcom/android/server/am/UserController$UserProgressListener;->onFinished(ILandroid/os/Bundle;)V
+PLcom/android/server/am/UserController$UserProgressListener;->onProgress(IILandroid/os/Bundle;)V
+PLcom/android/server/am/UserController$UserProgressListener;->onStarted(ILandroid/os/Bundle;)V
+PLcom/android/server/am/UserController;->$r8$lambda$0_wyI9pjpiFPa1zdQhMhe6rQbs0(Lcom/android/server/am/UserController;I)V
+PLcom/android/server/am/UserController;->$r8$lambda$CJMUgyUXssLbrLSA211iBjtm80Q(Lcom/android/server/am/UserController;)V
+PLcom/android/server/am/UserController;->$r8$lambda$LYgwFBbxx9XRrYfMSUASCs9H6MY(Lcom/android/server/am/UserController;Landroid/content/Intent;III)V
+PLcom/android/server/am/UserController;->$r8$lambda$aXrMhheLTVS7w6eap82_5eQPhJk(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
+HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/UserController;-><init>(Lcom/android/server/am/UserController$Injector;)V
+PLcom/android/server/am/UserController;->canInteractWithAcrossProfilesPermission(IZIILjava/lang/String;)Z
+PLcom/android/server/am/UserController;->checkCallingHasOneOfThosePermissions(Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/am/UserController;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/UserController;->checkGetCurrentUserPermissions()V
+PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V
+PLcom/android/server/am/UserController;->ensureNotSpecialUser(I)V
+HPLcom/android/server/am/UserController;->exists(I)Z
+PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V
+PLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)Z
+PLcom/android/server/am/UserController;->getCurrentProfileIds()[I
+PLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo;
+HPLcom/android/server/am/UserController;->getCurrentUserId()I
+HPLcom/android/server/am/UserController;->getCurrentUserIdChecked()I
+HSPLcom/android/server/am/UserController;->getLastUserUnlockingUptime()J
+HPLcom/android/server/am/UserController;->getStartedUserArray()[I
+HPLcom/android/server/am/UserController;->getStartedUserState(I)Lcom/android/server/am/UserState;
+PLcom/android/server/am/UserController;->getTemporaryAppAllowlistBroadcastOptions(I)Landroid/app/BroadcastOptions;
+PLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/am/UserController;->getUserProperties(I)Landroid/content/pm/UserProperties;
+PLcom/android/server/am/UserController;->getUsers()[I
+HPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/UserController;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/am/UserController;->hasStartedUserState(I)Z
+HPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
+HPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z
+HPLcom/android/server/am/UserController;->isUserRunning(II)Z
+PLcom/android/server/am/UserController;->lambda$finishUserUnlockedCompleted$4(Landroid/content/Intent;III)V
+PLcom/android/server/am/UserController;->lambda$finishUserUnlocking$1(ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->lambda$handleMessage$18(I)V
+PLcom/android/server/am/UserController;->lambda$scheduleStartProfiles$13()V
+PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z
+PLcom/android/server/am/UserController;->maybeUnlockUser(ILandroid/os/IProgressListener;)Z
+PLcom/android/server/am/UserController;->onBootComplete(Landroid/content/IIntentReceiver;)V
+PLcom/android/server/am/UserController;->onSystemReady()V
+PLcom/android/server/am/UserController;->onSystemUserStarting()V
+PLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
+PLcom/android/server/am/UserController;->reportOnUserCompletedEvent(Ljava/lang/Integer;)V
+PLcom/android/server/am/UserController;->scheduleOnUserCompletedEvent(III)V
+PLcom/android/server/am/UserController;->scheduleStartProfiles()V
+PLcom/android/server/am/UserController;->sendLockedBootCompletedBroadcast(Landroid/content/IIntentReceiver;I)V
+PLcom/android/server/am/UserController;->sendUserStartedBroadcast(III)V
+PLcom/android/server/am/UserController;->sendUserStartingBroadcast(III)V
+PLcom/android/server/am/UserController;->sendUserSwitchBroadcasts(II)V
+PLcom/android/server/am/UserController;->setAllowUserUnlocking(Z)V
+PLcom/android/server/am/UserController;->setInitialConfig(ZIZ)V
+PLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z
+PLcom/android/server/am/UserController;->startProfiles()V
+HPLcom/android/server/am/UserController;->unsafeConvertIncomingUser(I)I
+PLcom/android/server/am/UserController;->updateProfileRelatedCaches()V
+HSPLcom/android/server/am/UserController;->updateStartedUserArrayLU()V
+HSPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V
+HPLcom/android/server/am/UserState;->setState(I)V
+PLcom/android/server/am/UserState;->setState(II)Z
+PLcom/android/server/am/UserState;->stateToString(I)Ljava/lang/String;
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda2;->apply(I)Ljava/lang/Object;
+PLcom/android/server/app/GameManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService$3;-><init>(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService$4;-><init>(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService$DeviceConfigListener;-><init>(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService$Injector$1;-><init>(Lcom/android/server/app/GameManagerService$Injector;)V
+PLcom/android/server/app/GameManagerService$Injector$1;->getInt(Ljava/lang/String;I)I
+PLcom/android/server/app/GameManagerService$Injector;-><init>()V
+PLcom/android/server/app/GameManagerService$Injector;->createSystemPropertiesWrapper()Lcom/android/server/app/GameManagerServiceSystemPropertiesWrapper;
+PLcom/android/server/app/GameManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/app/GameManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/app/GameManagerService$Lifecycle;->onStart()V
+PLcom/android/server/app/GameManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/app/GameManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/app/GameManagerService$LocalService;-><init>(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService$LocalService;-><init>(Lcom/android/server/app/GameManagerService;Lcom/android/server/app/GameManagerService$LocalService-IA;)V
+HPLcom/android/server/app/GameManagerService$LocalService;->getCompatScale(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;
+HPLcom/android/server/app/GameManagerService$LocalService;->getResolutionScalingFactor(Ljava/lang/String;I)F
+PLcom/android/server/app/GameManagerService$MyUidObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/app/GameManagerService$MyUidObserver;I)V
+PLcom/android/server/app/GameManagerService$MyUidObserver$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/app/GameManagerService$MyUidObserver;->$r8$lambda$mE-7E21f94kUEAgfV42TQXpejok(Lcom/android/server/app/GameManagerService$MyUidObserver;ILjava/lang/String;)Z
+PLcom/android/server/app/GameManagerService$MyUidObserver;-><init>(Lcom/android/server/app/GameManagerService;)V
+HPLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedOffTop(I)V
+PLcom/android/server/app/GameManagerService$MyUidObserver;->handleUidMovedToTop(I)V
+PLcom/android/server/app/GameManagerService$MyUidObserver;->lambda$handleUidMovedToTop$0(ILjava/lang/String;)Z
+PLcom/android/server/app/GameManagerService$MyUidObserver;->onUidGone(IZ)V
+HPLcom/android/server/app/GameManagerService$MyUidObserver;->onUidStateChanged(IIJI)V
+PLcom/android/server/app/GameManagerService$SettingsHandler;-><init>(Lcom/android/server/app/GameManagerService;Landroid/os/Looper;)V
+PLcom/android/server/app/GameManagerService$SettingsHandler;->doHandleMessage(Landroid/os/Message;)V
+PLcom/android/server/app/GameManagerService$SettingsHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/app/GameManagerService;->$r8$lambda$Sir-wtA0n6T1spL0WarCI-ChMjA(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/app/GameManagerService;->$r8$lambda$v0loNmftGWUMC3VLYZhDYOY54xM(I)[Ljava/lang/String;
+PLcom/android/server/app/GameManagerService;->-$$Nest$fgetmContext(Lcom/android/server/app/GameManagerService;)Landroid/content/Context;
+HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmGameForegroundUids(Lcom/android/server/app/GameManagerService;)Ljava/util/Set;
+HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmNonGameForegroundUids(Lcom/android/server/app/GameManagerService;)Ljava/util/Set;
+PLcom/android/server/app/GameManagerService;->-$$Nest$fgetmPackageManager(Lcom/android/server/app/GameManagerService;)Landroid/content/pm/PackageManager;
+HPLcom/android/server/app/GameManagerService;->-$$Nest$fgetmUidObserverLock(Lcom/android/server/app/GameManagerService;)Ljava/lang/Object;
+HPLcom/android/server/app/GameManagerService;->-$$Nest$mgetGameModeFromSettingsUnchecked(Lcom/android/server/app/GameManagerService;Ljava/lang/String;I)I
+PLcom/android/server/app/GameManagerService;->-$$Nest$mgetInstalledGamePackageNames(Lcom/android/server/app/GameManagerService;I)[Ljava/lang/String;
+PLcom/android/server/app/GameManagerService;->-$$Nest$misPackageGame(Lcom/android/server/app/GameManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/app/GameManagerService;->-$$Nest$mpublishLocalService(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterDeviceConfigListener(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterPackageReceiver(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService;->-$$Nest$mregisterStatsCallbacks(Lcom/android/server/app/GameManagerService;)V
+PLcom/android/server/app/GameManagerService;->-$$Nest$mwriteGameModeInterventionsToFile(Lcom/android/server/app/GameManagerService;I)V
+PLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HPLcom/android/server/app/GameManagerService;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Lcom/android/server/app/GameManagerService$Injector;)V
+PLcom/android/server/app/GameManagerService;->createServiceThread()Lcom/android/server/ServiceThread;
+PLcom/android/server/app/GameManagerService;->getAllUserIds(I)[I
+HPLcom/android/server/app/GameManagerService;->getConfig(Ljava/lang/String;I)Lcom/android/server/app/GameManagerService$GamePackageConfiguration;
+HPLcom/android/server/app/GameManagerService;->getGameModeFromSettingsUnchecked(Ljava/lang/String;I)I
+PLcom/android/server/app/GameManagerService;->getInstalledGamePackageNames(I)[Ljava/lang/String;
+PLcom/android/server/app/GameManagerService;->getInstalledGamePackageNamesByAllUsers(I)Ljava/util/List;
+HPLcom/android/server/app/GameManagerService;->getResolutionScalingFactorInternal(Ljava/lang/String;II)F
+PLcom/android/server/app/GameManagerService;->isPackageGame(Ljava/lang/String;I)Z
+PLcom/android/server/app/GameManagerService;->lambda$getInstalledGamePackageNames$2(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/app/GameManagerService;->lambda$getInstalledGamePackageNames$4(I)[Ljava/lang/String;
+PLcom/android/server/app/GameManagerService;->onBootCompleted()V
+PLcom/android/server/app/GameManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;Ljava/io/File;)V
+PLcom/android/server/app/GameManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/app/GameManagerService;->publishLocalService()V
+PLcom/android/server/app/GameManagerService;->registerDeviceConfigListener()V
+PLcom/android/server/app/GameManagerService;->registerPackageReceiver()V
+PLcom/android/server/app/GameManagerService;->registerStatsCallbacks()V
+PLcom/android/server/app/GameManagerService;->sendUserMessage(IILjava/lang/String;I)V
+PLcom/android/server/app/GameManagerService;->updateConfigsForUser(IZ[Ljava/lang/String;)V
+PLcom/android/server/app/GameManagerService;->writeGameModeInterventionsToFile(I)V
+PLcom/android/server/app/GameManagerSettings;-><init>(Ljava/io/File;)V
+HPLcom/android/server/app/GameManagerSettings;->getConfigOverride(Ljava/lang/String;)Lcom/android/server/app/GameManagerService$GamePackageConfiguration;
+HPLcom/android/server/app/GameManagerSettings;->getGameModeLocked(Ljava/lang/String;)I
+PLcom/android/server/app/GameManagerSettings;->readPersistentDataLocked()Z
+PLcom/android/server/appbinding/AppBindingConstants;-><init>(Ljava/lang/String;)V
+PLcom/android/server/appbinding/AppBindingConstants;->initializeFromString(Ljava/lang/String;)Lcom/android/server/appbinding/AppBindingConstants;
+PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
+PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/appbinding/AppBindingService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appbinding/AppBindingService$1;-><init>(Lcom/android/server/appbinding/AppBindingService;Landroid/os/Handler;)V
+PLcom/android/server/appbinding/AppBindingService$2;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
+PLcom/android/server/appbinding/AppBindingService$Injector;-><init>()V
+PLcom/android/server/appbinding/AppBindingService$Injector;->getGlobalSettingString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/appbinding/AppBindingService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService$Injector;)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onStart()V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monBootPhase(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monStartUser(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->-$$Nest$monUnlockUser(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;)V
+PLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService-IA;)V
+PLcom/android/server/appbinding/AppBindingService;->bindServicesLocked(ILcom/android/server/appbinding/finders/AppServiceFinder;Ljava/lang/String;)V
+PLcom/android/server/appbinding/AppBindingService;->findConnectionLock(ILcom/android/server/appbinding/finders/AppServiceFinder;)Lcom/android/server/appbinding/AppBindingService$AppServiceConnection;
+PLcom/android/server/appbinding/AppBindingService;->forAllAppsLocked(Ljava/util/function/Consumer;)V
+PLcom/android/server/appbinding/AppBindingService;->onBootPhase(I)V
+PLcom/android/server/appbinding/AppBindingService;->onPhaseActivityManagerReady()V
+PLcom/android/server/appbinding/AppBindingService;->onPhaseThirdPartyAppsCanStart()V
+PLcom/android/server/appbinding/AppBindingService;->onStartUser(I)V
+PLcom/android/server/appbinding/AppBindingService;->onUnlockUser(I)V
+PLcom/android/server/appbinding/AppBindingService;->rebindAllLocked(Ljava/lang/String;)V
+PLcom/android/server/appbinding/AppBindingService;->refreshConstants()V
+PLcom/android/server/appbinding/AppBindingUtils;->findService(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/Class;Landroid/content/pm/IPackageManager;Ljava/lang/StringBuilder;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/appbinding/finders/AppServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
+PLcom/android/server/appbinding/finders/AppServiceFinder;->findService(ILandroid/content/pm/IPackageManager;Lcom/android/server/appbinding/AppBindingConstants;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;)V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceAction()Ljava/lang/String;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceClass()Ljava/lang/Class;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServicePermission()Ljava/lang/String;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getTargetPackage(I)Ljava/lang/String;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->isEnabled(Lcom/android/server/appbinding/AppBindingConstants;)Z
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->startMonitoring()V
+PLcom/android/server/apphibernation/AppHibernationManagerInternal;-><init>()V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+HPLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda0;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
+PLcom/android/server/apphibernation/AppHibernationService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/apphibernation/AppHibernationService$1;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$AppHibernationServiceStub;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getBackgroundExecutor()Ljava/util/concurrent/Executor;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getContext()Landroid/content/Context;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getGlobalLevelDiskStore()Lcom/android/server/apphibernation/HibernationStateDiskStore;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getStorageStatsManager()Landroid/app/usage/StorageStatsManager;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUserLevelDiskStore(I)Lcom/android/server/apphibernation/HibernationStateDiskStore;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/apphibernation/AppHibernationService$InjectorImpl;->isOatArtifactDeletionEnabled()Z
+PLcom/android/server/apphibernation/AppHibernationService$LocalService;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+HPLcom/android/server/apphibernation/AppHibernationService$LocalService;->isHibernatingForUser(Ljava/lang/String;I)Z
+PLcom/android/server/apphibernation/AppHibernationService$LocalService;->isHibernatingGlobally(Ljava/lang/String;)Z
+PLcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/apphibernation/AppHibernationService;)V
+PLcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/AppHibernationService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$Fws_Wf_jgjjpMDT6HEIS6H9GGIc(Lcom/android/server/apphibernation/AppHibernationService;)V
+HPLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$fT12eBCv0K0U7e7DCdE6loRthKg(Lcom/android/server/apphibernation/AppHibernationService;ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/apphibernation/AppHibernationService;->$r8$lambda$pmiSg0_3IcxhUY6KWcWtKuVRLt4(Lcom/android/server/apphibernation/AppHibernationService;Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
+PLcom/android/server/apphibernation/AppHibernationService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/apphibernation/AppHibernationService;-><init>(Lcom/android/server/apphibernation/AppHibernationService$Injector;)V
+HPLcom/android/server/apphibernation/AppHibernationService;->checkUserStatesExist(ILjava/lang/String;Z)Z
+HPLcom/android/server/apphibernation/AppHibernationService;->handleIncomingUser(ILjava/lang/String;)I
+PLcom/android/server/apphibernation/AppHibernationService;->initializeGlobalHibernationStates(Ljava/util/List;)V
+PLcom/android/server/apphibernation/AppHibernationService;->initializeUserHibernationStates(ILjava/util/List;)V
+PLcom/android/server/apphibernation/AppHibernationService;->isAppHibernationEnabled()Z
+PLcom/android/server/apphibernation/AppHibernationService;->isDeviceConfigAppHibernationEnabled()Z
+HPLcom/android/server/apphibernation/AppHibernationService;->isHibernatingForUser(Ljava/lang/String;I)Z
+PLcom/android/server/apphibernation/AppHibernationService;->isHibernatingGlobally(Ljava/lang/String;)Z
+HPLcom/android/server/apphibernation/AppHibernationService;->lambda$new$6(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/apphibernation/AppHibernationService;->lambda$onBootPhase$0()V
+PLcom/android/server/apphibernation/AppHibernationService;->lambda$onUserUnlocking$5(Lcom/android/server/apphibernation/HibernationStateDiskStore;I)V
+PLcom/android/server/apphibernation/AppHibernationService;->onBootPhase(I)V
+PLcom/android/server/apphibernation/AppHibernationService;->onStart()V
+PLcom/android/server/apphibernation/AppHibernationService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingForUser(Ljava/lang/String;IZ)V
+HPLcom/android/server/apphibernation/AppHibernationService;->setHibernatingGlobally(Ljava/lang/String;Z)V
+PLcom/android/server/apphibernation/GlobalLevelHibernationProto;-><init>()V
+PLcom/android/server/apphibernation/GlobalLevelState;-><clinit>()V
+PLcom/android/server/apphibernation/GlobalLevelState;-><init>()V
+PLcom/android/server/apphibernation/HibernationStateDiskStore;-><init>(Ljava/io/File;Lcom/android/server/apphibernation/ProtoReadWriter;Ljava/util/concurrent/ScheduledExecutorService;)V
+PLcom/android/server/apphibernation/HibernationStateDiskStore;-><init>(Ljava/io/File;Lcom/android/server/apphibernation/ProtoReadWriter;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/String;)V
+PLcom/android/server/apphibernation/HibernationStateDiskStore;->readHibernationStates()Ljava/util/List;
+PLcom/android/server/apphibernation/UserLevelHibernationProto;-><init>()V
+PLcom/android/server/apphibernation/UserLevelState;-><clinit>()V
+PLcom/android/server/apphibernation/UserLevelState;-><init>()V
+HSPLcom/android/server/appop/AppOpMigrationHelperImpl;-><init>()V
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;-><init>(Lcom/android/server/appop/AppOpsCheckingServiceInterface;)V
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;)Z
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->clearAllModes()V
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getNonDefaultPackageModes(Ljava/lang/String;I)Landroid/util/SparseIntArray;
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getPackageMode(Ljava/lang/String;II)I
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->getUidMode(ILjava/lang/String;I)I
+HSPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->readState()V
+HPLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->removePackage(Ljava/lang/String;I)Z
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->removeUid(I)V
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->setUidMode(ILjava/lang/String;II)Z
+PLcom/android/server/appop/AppOpsCheckingServiceTracingDecorator;->systemReady()V
+HSPLcom/android/server/appop/AppOpsRestrictionsImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/appop/AppOpsRestrictions$AppOpsRestrictionRemovedListener;)V
+HPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;II)Z
+HPLcom/android/server/appop/AppOpsRestrictionsImpl;->getUserRestriction(Ljava/lang/Object;IILjava/lang/String;Ljava/lang/String;Z)Z
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->hasGlobalRestrictions(Ljava/lang/Object;)Z
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->hasUserRestrictions(Ljava/lang/Object;)Z
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->putUserRestriction(Ljava/lang/Object;IIZ)Z
+HPLcom/android/server/appop/AppOpsRestrictionsImpl;->putUserRestrictionExclusions(Ljava/lang/Object;ILandroid/os/PackageTagsList;)Z
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->resolveUserId(I)[I
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->setGlobalRestriction(Ljava/lang/Object;IZ)Z
+PLcom/android/server/appop/AppOpsRestrictionsImpl;->setUserRestriction(Ljava/lang/Object;IIZLandroid/os/PackageTagsList;)Z
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda10;->onUidStateChanged(IIZ)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;-><init>()V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;-><init>()V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;-><init>(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda5;-><init>()V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;-><init>()V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$$ExternalSyntheticLambda9;->execute(Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsService$1$1;-><init>(Lcom/android/server/appop/AppOpsService$1;)V
+PLcom/android/server/appop/AppOpsService$1$1;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/AppOpsService$1$1;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void;
+HSPLcom/android/server/appop/AppOpsService$1;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$1;->run()V
+HSPLcom/android/server/appop/AppOpsService$2;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$3;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/appop/AppOpsService$4;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$5;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$5;->run()V
+PLcom/android/server/appop/AppOpsService$6;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$7;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$8;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/util/Pair;)V
+PLcom/android/server/appop/AppOpsService$9;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
+PLcom/android/server/appop/AppOpsService$9;->accept(Landroid/app/AppOpsManager$HistoricalOps;)V
+PLcom/android/server/appop/AppOpsService$9;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$ActiveCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsActiveCallback;III)V
+HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl-IA;)V
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setDeviceAndProfileOwners(Landroid/util/SparseIntArray;)V
+HPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setGlobalRestriction(IZLandroid/os/IBinder;)V
+HSPLcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$AppOpsManagerLocalImpl-IA;)V
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda13;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda7;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher$$ExternalSyntheticLambda9;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$9t8iLhni7XlJaYUbHyUsLY8CxCM(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$TqGvemNPXzXUjdqWw7kwupm3azw(Lcom/android/server/appop/AppOpsService;IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$isKDS9RXD9cfyW6vB1LFop2lwy4(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$p7Z0eGBUU1-Gt7vHG9S-93UhGlY(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZ)I
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$q8BbxI-iIBB256_4cFe16ffKxiE(Lcom/android/server/appop/AppOpsService;ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->$r8$lambda$vZeNm9U4ce-mUj2m0fon_vppmA0(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->-$$Nest$fgetmCheckOpsDelegate(Lcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;)Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;
+HSPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZ)I
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService$CheckOpsDelegateDispatcher;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
+PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->destroy()V
+PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->isDefault()Z
+PLcom/android/server/appop/AppOpsService$ClientGlobalRestrictionState;->setRestriction(IZ)Z
+PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
+PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->destroy()V
+HPLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->hasRestriction(ILjava/lang/String;Ljava/lang/String;IZ)Z
+PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->isDefault()Z
+PLcom/android/server/appop/AppOpsService$ClientUserRestrictionState;->setRestriction(IZLandroid/os/PackageTagsList;I)Z
+HSPLcom/android/server/appop/AppOpsService$Constants;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/Handler;)V
+PLcom/android/server/appop/AppOpsService$Constants;->startMonitoring(Landroid/content/ContentResolver;)V
+HSPLcom/android/server/appop/AppOpsService$Constants;->updateConstants()V
+HPLcom/android/server/appop/AppOpsService$ModeCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;IIIII)V
+PLcom/android/server/appop/AppOpsService$ModeCallback;->onOpModeChanged(IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService$NotedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsNotedCallback;III)V
+HSPLcom/android/server/appop/AppOpsService$Op;->-$$Nest$mgetOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;
+HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;II)V
+HPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked()Landroid/app/AppOpsManager$OpEntry;
+HSPLcom/android/server/appop/AppOpsService$Op;->getOrCreateAttribution(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AttributedOp;
+HPLcom/android/server/appop/AppOpsService$Op;->isRunning()Z
+HSPLcom/android/server/appop/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/appop/AppOpsService$UidState;)V
+PLcom/android/server/appop/AppOpsService$PackageVerificationResult;-><init>(Landroid/app/AppOpsManager$RestrictionBypass;Z)V
+PLcom/android/server/appop/AppOpsService$StartedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsStartedCallback;III)V
+HSPLcom/android/server/appop/AppOpsService$UidState;-><init>(Lcom/android/server/appop/AppOpsService;I)V
+PLcom/android/server/appop/AppOpsService$UidState;->clear()V
+HPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I
+HPLcom/android/server/appop/AppOpsService$UidState;->getState()I
+HPLcom/android/server/appop/AppOpsService;->$r8$lambda$6k_N9hZ8kvjX_OAIx8qy1xpZV_s(Lcom/android/server/appop/AppOpsService;Ljava/lang/Runnable;)V
+HPLcom/android/server/appop/AppOpsService;->$r8$lambda$K1us0zRuosg7DEfhttpLHrRzwQ8(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$KZ8csPYjnHRgqtsqPZIdzSZk2M0(Lcom/android/server/appop/AppOpsService;IZI)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$_3mKgx97gA3YgX5RtEESYaD_JvY(Lcom/android/server/appop/AppOpsService;II)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$iHRjxQ_m4gxYrCioytzJw8v4y_Q(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->$r8$lambda$sKlvEb6CGkKf4LV4kVBIOznFZ9c(Lcom/android/server/appop/AppOpsService;IIZ)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$tCrK7GHyC4CL9PmON8WCNADuzSQ(Lcom/android/server/appop/AppOpsService;IIZLjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$uCCOXFJxz3bCZJrsIAuF17lDZks(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V
+PLcom/android/server/appop/AppOpsService;->$r8$lambda$xAhQeGPgXGiSjmtMzzdf_avZ1GE(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->-$$Nest$fgetmOpGlobalRestrictions(Lcom/android/server/appop/AppOpsService;)Landroid/util/ArrayMap;
+PLcom/android/server/appop/AppOpsService;->-$$Nest$fgetmRarelyUsedPackages(Lcom/android/server/appop/AppOpsService;)Landroid/util/ArraySet;
+PLcom/android/server/appop/AppOpsService;->-$$Nest$fputmRarelyUsedPackages(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
+PLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckAudioOperationImpl(Lcom/android/server/appop/AppOpsService;IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mcheckOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZ)I
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mfinishOperationImpl(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/appop/AppOpsService;->-$$Nest$mgetPackageListAndResample(Lcom/android/server/appop/AppOpsService;)Ljava/util/List;
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mgetPackageManagerInternal(Lcom/android/server/appop/AppOpsService;)Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/appop/AppOpsService;->-$$Nest$minitializeRarelyUsedPackagesList(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;)V
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteOperationImpl(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService;->-$$Nest$mnoteProxyOperationImpl(Lcom/android/server/appop/AppOpsService;ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService;->-$$Nest$mpackageRemovedLocked(Lcom/android/server/appop/AppOpsService;ILjava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->-$$Nest$mstartOperationImpl(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+HSPLcom/android/server/appop/AppOpsService;-><clinit>()V
+HSPLcom/android/server/appop/AppOpsService;-><init>(Ljava/io/File;Ljava/io/File;Landroid/os/Handler;Landroid/content/Context;)V
+HPLcom/android/server/appop/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->checkAudioOperationImpl(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->checkOperation(IILjava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->checkOperationForDevice(IILjava/lang/String;I)I
+HPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/String;Ljava/lang/String;IZ)I
+HPLcom/android/server/appop/AppOpsService;->checkOperationRaw(IILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IZ)I
+HPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->checkSystemUid(Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)V
+HPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[I)Ljava/util/ArrayList;
+PLcom/android/server/appop/AppOpsService;->createSandboxUidStateIfNotExistsForAppLocked(I)V
+HPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V
+PLcom/android/server/appop/AppOpsService;->ensureHistoricalOpRequestIsValid(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IJJI)V
+PLcom/android/server/appop/AppOpsService;->extractAsyncOps(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/appop/AppOpsService;->filterAppAccessUnlocked(Ljava/lang/String;I)Z
+HPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->finishOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService;->finishOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService;->getAsyncNotedOpsKey(Ljava/lang/String;I)Landroid/util/Pair;
+HPLcom/android/server/appop/AppOpsService;->getBypassforPackage(Lcom/android/server/pm/pkg/PackageState;)Landroid/app/AppOpsManager$RestrictionBypass;
+PLcom/android/server/appop/AppOpsService;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IIJJILandroid/os/RemoteCallback;)V
+PLcom/android/server/appop/AppOpsService;->getOpEntryForResult(Lcom/android/server/appop/AppOpsService$Op;)Landroid/app/AppOpsManager$OpEntry;
+HPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Op;
+HPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op;
+HPLcom/android/server/appop/AppOpsService;->getOpsLocked(ILjava/lang/String;Ljava/lang/String;ZLandroid/app/AppOpsManager$RestrictionBypass;Z)Lcom/android/server/appop/AppOpsService$Ops;
+PLcom/android/server/appop/AppOpsService;->getPackageListAndResample()Ljava/util/List;
+HPLcom/android/server/appop/AppOpsService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/appop/AppOpsService;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
+HPLcom/android/server/appop/AppOpsService;->getPackageNamesForSampling()Ljava/util/List;
+HPLcom/android/server/appop/AppOpsService;->getPackagesForOps([I)Ljava/util/List;
+HPLcom/android/server/appop/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;
+HPLcom/android/server/appop/AppOpsService;->getPersistentId(I)Ljava/lang/String;
+PLcom/android/server/appop/AppOpsService;->getRuntimeAppOpsList()Ljava/util/List;
+HSPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;
+HPLcom/android/server/appop/AppOpsService;->getUidStateTracker()Lcom/android/server/appop/AppOpsUidStateTracker;
+PLcom/android/server/appop/AppOpsService;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/appop/AppOpsService;->initializePackageUidStateLocked(IILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->initializeRarelyUsedPackagesList(Landroid/util/ArraySet;)V
+PLcom/android/server/appop/AppOpsService;->initializeUidStates()V
+PLcom/android/server/appop/AppOpsService;->initializeUserUidStatesLocked(ILjava/util/Map;)V
+HPLcom/android/server/appop/AppOpsService;->isAttributionInPackage(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
+HPLcom/android/server/appop/AppOpsService;->isIncomingPackageValid(Ljava/lang/String;I)Z
+HPLcom/android/server/appop/AppOpsService;->isOpRestrictedDueToSuspend(ILjava/lang/String;I)Z
+HPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$RestrictionBypass;Z)Z
+HPLcom/android/server/appop/AppOpsService;->isPackageExisted(Ljava/lang/String;)Z
+PLcom/android/server/appop/AppOpsService;->isSamplingTarget(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/appop/AppOpsService;->isSpecialPackage(ILjava/lang/String;)Z
+PLcom/android/server/appop/AppOpsService;->isValidVirtualDeviceId(I)Z
+PLcom/android/server/appop/AppOpsService;->lambda$collectAsyncNotedOp$4(Landroid/app/AsyncNotedAppOp;[ZILjava/lang/String;ILjava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->lambda$getUidStateTracker$0(Ljava/lang/Runnable;)V
+HPLcom/android/server/appop/AppOpsService;->lambda$systemReady$2(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;Z)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->noteProxyOperationImpl(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService;->noteProxyOperationWithState(ILandroid/content/AttributionSourceState;ZLjava/lang/String;ZZ)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/appop/AppOpsService;->notifyOpChanged(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/OnOpModeChangedListener;IILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->notifyOpChangedForAllPkgsInUid(IIZLjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;III)V
+PLcom/android/server/appop/AppOpsService;->notifyStorageManagerOpModeChangedSync(IILjava/lang/String;II)V
+PLcom/android/server/appop/AppOpsService;->notifyWatchersOnDefaultDevice(II)V
+HPLcom/android/server/appop/AppOpsService;->onUidStateChanged(IIZ)V
+HPLcom/android/server/appop/AppOpsService;->packageRemovedLocked(ILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->permissionToOpCode(Ljava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->prepareInternalCallbacks()V
+HSPLcom/android/server/appop/AppOpsService;->publish()V
+HSPLcom/android/server/appop/AppOpsService;->readAttributionOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->readOp(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->readPackage(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/appop/AppOpsService;->readRecentAccesses()V
+HSPLcom/android/server/appop/AppOpsService;->readRecentAccesses(Landroid/util/AtomicFile;)V
+HSPLcom/android/server/appop/AppOpsService;->readUid(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAndGetConfig(Ljava/lang/String;Landroid/app/SyncNotedAppOp;Ljava/lang/String;)Lcom/android/internal/app/MessageSamplingConfig;
+HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageAsyncLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->reportRuntimeAppOpAccessMessageInternalLocked(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->resampleAppOpForPackageLocked(Ljava/lang/String;Z)V
+PLcom/android/server/appop/AppOpsService;->resamplePackageAndAppOpLocked(Ljava/util/List;)V
+HPLcom/android/server/appop/AppOpsService;->resolveUid(Ljava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->scheduleFastWriteLocked()V
+HPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IZII)V
+HPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;III)V
+HPLcom/android/server/appop/AppOpsService;->scheduleOpStartedIfNeededLocked(IILjava/lang/String;Ljava/lang/String;IIIIII)V
+HPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V
+PLcom/android/server/appop/AppOpsService;->setAppOpsPolicy(Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
+HPLcom/android/server/appop/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;I)V
+PLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService;->setUidMode(III)V
+HPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V
+HPLcom/android/server/appop/AppOpsService;->setUserRestriction(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
+HPLcom/android/server/appop/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/appop/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V
+HPLcom/android/server/appop/AppOpsService;->shouldCollectNotes(I)Z
+PLcom/android/server/appop/AppOpsService;->shouldIgnoreCallback(III)Z
+HPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->startOperationImpl(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->startOperationUnchecked(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZII)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/appop/AppOpsService;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
+PLcom/android/server/appop/AppOpsService;->startWatchingAsyncNoted(Ljava/lang/String;Lcom/android/internal/app/IAppOpsAsyncNotedCallback;)V
+PLcom/android/server/appop/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V
+HPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
+HPLcom/android/server/appop/AppOpsService;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->startWatchingStarted([ILcom/android/internal/app/IAppOpsStartedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->switchPackageIfBootTimeOrRarelyUsedLocked(Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->systemReady()V
+HPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V
+PLcom/android/server/appop/AppOpsService;->updateStartedOpModeForUidForDefaultDeviceLocked(IZI)V
+PLcom/android/server/appop/AppOpsService;->updateStartedOpModeForUserForDefaultDevice(IZI)V
+HPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V
+HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
+HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
+HPLcom/android/server/appop/AppOpsService;->verifyAndGetBypass(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/appop/AppOpsService$PackageVerificationResult;
+HPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V
+PLcom/android/server/appop/AppOpsService;->verifyIncomingProxyUid(Landroid/content/AttributionSource;)V
+HPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V
+HPLcom/android/server/appop/AppOpsService;->writeRecentAccesses()V
+PLcom/android/server/appop/AppOpsUidStateTracker;->processStateToUidState(I)I
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->$r8$lambda$BDK_o82z4D0CLSzizoWclTSuQPc(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->$r8$lambda$Xv0rzRrxYVvZ3ael2cDamJtHe_M(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;-><init>(Landroid/os/Handler;Ljava/util/concurrent/Executor;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->execute(Ljava/lang/Runnable;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->executeDelayed(Ljava/lang/Runnable;J)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->lambda$execute$0(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$1;->lambda$executeDelayed$1(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;-><init>()V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;-><init>(Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Ljava/lang/Thread;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidState(IIIZZ)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logCommitUidStateAsync(JIIIZZ)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundMode(IIIII)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logEvalForegroundModeAsync(JIIIII)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcState(III)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl$EventLog;->logUpdateUidProcStateAsync(JIII)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->$r8$lambda$DDarXSJMLhcQjOvjQGC1suxs48A(Lcom/android/server/appop/AppOpsUidStateTrackerImpl;I)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><clinit>()V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><init>(Landroid/app/ActivityManagerInternal;Landroid/os/Handler;Ljava/util/concurrent/Executor;Lcom/android/internal/os/Clock;Lcom/android/server/appop/AppOpsService$Constants;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;-><init>(Landroid/app/ActivityManagerInternal;Lcom/android/server/appop/AppOpsUidStateTrackerImpl$DelayableExecutor;Lcom/android/internal/os/Clock;Lcom/android/server/appop/AppOpsService$Constants;Ljava/lang/Thread;)V
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->addUidStateChangedCallback(Ljava/util/concurrent/Executor;Lcom/android/server/appop/AppOpsUidStateTracker$UidStateChangedCallback;)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->commitUidPendingState(I)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalMode(III)I
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->evalModeInternal(IIII)I
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getOpCapability(I)I
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidAppWidgetVisible(I)Z
+PLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidCapability(I)I
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidState(I)I
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->getUidStateLocked(I)I
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeeded(I)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidPendingStateIfNeededLocked(I)V
+HPLcom/android/server/appop/AppOpsUidStateTrackerImpl;->updateUidProcState(III)V
+PLcom/android/server/appop/AttributedOp$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;-><init>(JJLandroid/os/IBinder;ILjava/lang/String;Ljava/lang/Runnable;ILandroid/app/AppOpsManager$OpEventProxyInfo;III)V
+HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->finish()V
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getAttributionChainId()I
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getAttributionFlags()I
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getClientId()Landroid/os/IBinder;
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getFlags()I
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getProxy()Landroid/app/AppOpsManager$OpEventProxyInfo;
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getStartElapsedTime()J
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getStartTime()J
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getUidState()I
+PLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->getVirtualDeviceId()I
+HPLcom/android/server/appop/AttributedOp$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;IILandroid/app/AppOpsManager$OpEventProxyInfo;IILandroid/util/Pools$Pool;)V
+HSPLcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;-><init>(Lcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;I)V
+HPLcom/android/server/appop/AttributedOp$InProgressStartOpEventPool;->acquire(JJLandroid/os/IBinder;Ljava/lang/String;ILjava/lang/Runnable;ILjava/lang/String;Ljava/lang/String;IIII)Lcom/android/server/appop/AttributedOp$InProgressStartOpEvent;
+HSPLcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;-><init>(I)V
+HSPLcom/android/server/appop/AttributedOp$OpEventProxyInfoPool;->acquire(ILjava/lang/String;Ljava/lang/String;)Landroid/app/AppOpsManager$OpEventProxyInfo;
+HSPLcom/android/server/appop/AttributedOp;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/appop/AppOpsService$Op;)V
+HPLcom/android/server/appop/AttributedOp;->accessed(ILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AttributedOp;->accessed(JJILjava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/appop/AttributedOp;->createAttributedOpEntryLocked()Landroid/app/AppOpsManager$AttributedOpEntry;
+HPLcom/android/server/appop/AttributedOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;
+HPLcom/android/server/appop/AttributedOp;->finishOrPause(Landroid/os/IBinder;ZZ)V
+HPLcom/android/server/appop/AttributedOp;->finished(Landroid/os/IBinder;)V
+HPLcom/android/server/appop/AttributedOp;->finished(Landroid/os/IBinder;Z)V
+HPLcom/android/server/appop/AttributedOp;->isPaused()Z
+HPLcom/android/server/appop/AttributedOp;->isRunning()Z
+HPLcom/android/server/appop/AttributedOp;->onUidStateChanged(I)V
+HPLcom/android/server/appop/AttributedOp;->rejected(II)V
+HSPLcom/android/server/appop/AttributedOp;->rejected(JII)V
+HPLcom/android/server/appop/AttributedOp;->started(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;IIIII)V
+HPLcom/android/server/appop/AttributedOp;->startedOrPaused(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;IIIZZII)V
+PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><clinit>()V
+PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>()V
+PLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>(Lcom/android/server/appop/AudioRestrictionManager$Restriction-IA;)V
+HSPLcom/android/server/appop/AudioRestrictionManager;-><clinit>()V
+HSPLcom/android/server/appop/AudioRestrictionManager;-><init>()V
+PLcom/android/server/appop/AudioRestrictionManager;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AudioRestrictionManager;->checkZenModeRestrictionLocked(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AudioRestrictionManager;->setZenModeAudioRestriction(IIII[Ljava/lang/String;)V
+PLcom/android/server/appop/DiscreteRegistry$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOp$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->addDiscreteAccess(Ljava/lang/String;IIJJII)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->getOrCreateDiscreteOpEventsList(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOp;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;->-$$Nest$mserialize(Lcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;-><init>(Lcom/android/server/appop/DiscreteRegistry;JJIIII)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOpEvent;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mclearHistory(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;ILjava/lang/String;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mreadFromFile(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;Ljava/io/File;J)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->-$$Nest$mwriteToStream(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;Ljava/io/FileOutputStream;)V
+HSPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;I)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->addDiscreteAccess(IILjava/lang/String;Ljava/lang/String;IIJJII)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->clearHistory(ILjava/lang/String;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->getOrCreateDiscreteUidOps(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;
+PLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->isEmpty()Z
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->readFromFile(Ljava/io/File;J)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteOps;->writeToStream(Ljava/io/FileOutputStream;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->addDiscreteAccess(ILjava/lang/String;IIJJII)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->getOrCreateDiscreteOp(I)Lcom/android/server/appop/DiscreteRegistry$DiscreteOp;
+HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;-><init>(Lcom/android/server/appop/DiscreteRegistry;)V
+PLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->addDiscreteAccess(ILjava/lang/String;Ljava/lang/String;IIJJII)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->deserialize(Lcom/android/modules/utils/TypedXmlPullParser;J)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->getOrCreateDiscretePackageOps(Ljava/lang/String;)Lcom/android/server/appop/DiscreteRegistry$DiscretePackageOps;
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->merge(Lcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;)V
+HPLcom/android/server/appop/DiscreteRegistry$DiscreteUidOps;->serialize(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/DiscreteRegistry;->-$$Nest$smstableListMerge(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
+HSPLcom/android/server/appop/DiscreteRegistry;-><clinit>()V
+HSPLcom/android/server/appop/DiscreteRegistry;-><init>(Ljava/lang/Object;)V
+HPLcom/android/server/appop/DiscreteRegistry;->clearHistory()V
+HPLcom/android/server/appop/DiscreteRegistry;->clearHistory(ILjava/lang/String;)V
+HPLcom/android/server/appop/DiscreteRegistry;->clearOnDiskHistoryLocked()V
+HPLcom/android/server/appop/DiscreteRegistry;->createDiscreteAccessDir()V
+HSPLcom/android/server/appop/DiscreteRegistry;->createDiscreteAccessDirLocked()V
+PLcom/android/server/appop/DiscreteRegistry;->deleteOldDiscreteHistoryFilesLocked()V
+HPLcom/android/server/appop/DiscreteRegistry;->getAllDiscreteOps()Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;
+HPLcom/android/server/appop/DiscreteRegistry;->isDiscreteOp(II)Z
+PLcom/android/server/appop/DiscreteRegistry;->parseOpsList(Ljava/lang/String;)[I
+HPLcom/android/server/appop/DiscreteRegistry;->persistDiscreteOpsLocked(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
+HPLcom/android/server/appop/DiscreteRegistry;->readDiscreteOpsFromDisk(Lcom/android/server/appop/DiscreteRegistry$DiscreteOps;)V
+HSPLcom/android/server/appop/DiscreteRegistry;->readLargestChainIdFromDiskLocked()I
+HPLcom/android/server/appop/DiscreteRegistry;->recordDiscreteAccess(ILjava/lang/String;ILjava/lang/String;IIJJII)V
+PLcom/android/server/appop/DiscreteRegistry;->setDiscreteHistoryParameters(Landroid/provider/DeviceConfig$Properties;)V
+HPLcom/android/server/appop/DiscreteRegistry;->stableListMerge(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/appop/DiscreteRegistry;->systemReady()V
+PLcom/android/server/appop/DiscreteRegistry;->writeAndClearAccessHistory()V
+PLcom/android/server/appop/HistoricalRegistry$1;-><init>(Lcom/android/server/appop/HistoricalRegistry;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->-$$Nest$mcollectHistoricalOpsDLocked(Lcom/android/server/appop/HistoricalRegistry$Persistence;Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;-><clinit>()V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;-><init>(JJ)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked()V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked(ILjava/lang/String;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsBaseDLocked(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)Ljava/util/LinkedList;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsRecursiveDLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JLjava/util/LinkedList;ILjava/util/Set;)Ljava/util/LinkedList;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->computeGlobalIntervalBeginMillis(I)J
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->generateFile(Ljava/io/File;I)Ljava/io/File;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->getHistoricalFileNames(Ljava/io/File;)Ljava/util/Set;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->getLastPersistTimeMillisDLocked()J
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->normalizeSnapshotForSlotDuration(Ljava/util/List;J)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->persistHistoricalOpsDLocked(Ljava/util/List;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Ljava/util/List;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;JJILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[JILjava/util/Set;)Ljava/util/List;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoryDLocked()Ljava/util/List;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoryRawDLocked()Ljava/util/List;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;ILcom/android/modules/utils/TypedXmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalAttributionOpsDLocked(Landroid/app/AppOpsManager$AttributedHistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpsDLocked(Ljava/util/List;JLjava/io/File;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalPackageOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/appop/HistoricalRegistry;-><clinit>()V
+HSPLcom/android/server/appop/HistoricalRegistry;-><init>(Ljava/lang/Object;)V
+HPLcom/android/server/appop/HistoricalRegistry;->clearHistory(ILjava/lang/String;)V
+PLcom/android/server/appop/HistoricalRegistry;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IIJJI[Ljava/lang/String;Landroid/os/RemoteCallback;)V
+HPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;IIJJII)V
+HPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;IIJII)V
+HPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;Ljava/lang/String;II)V
+HPLcom/android/server/appop/HistoricalRegistry;->isPersistenceInitializedMLocked()Z
+PLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory(Ljava/util/List;)V
+PLcom/android/server/appop/HistoricalRegistry;->systemReady(Landroid/content/ContentResolver;)V
+PLcom/android/server/appop/HistoricalRegistry;->updateParametersFromSetting(Landroid/content/ContentResolver;)V
+PLcom/android/server/appop/HistoricalRegistry;->writeAndClearDiscreteHistory()V
+HPLcom/android/server/appop/OnOpModeChangedListener;-><init>(IIIII)V
+PLcom/android/server/appop/OnOpModeChangedListener;->getCallingPid()I
+PLcom/android/server/appop/OnOpModeChangedListener;->getCallingUid()I
+PLcom/android/server/appop/OnOpModeChangedListener;->getFlags()I
+PLcom/android/server/appop/OnOpModeChangedListener;->getWatchedOpCode()I
+PLcom/android/server/appop/OnOpModeChangedListener;->getWatchingUid()I
+HPLcom/android/server/appop/OnOpModeChangedListener;->isWatchingUid(I)Z
+PLcom/android/server/attention/AttentionManagerService;->getServiceConfigPackage(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/attention/AttentionManagerService;->isServiceConfigured(Landroid/content/Context;)Z
+PLcom/android/server/audio/AdiDeviceState;->getPeristedMaxSize()I
+PLcom/android/server/audio/AudioDeviceBroker$AudioModeInfo;-><init>(III)V
+PLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
+PLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler-IA;)V
+HPLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/AudioDeviceBroker$BrokerThread;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
+PLcom/android/server/audio/AudioDeviceBroker$BrokerThread;->run()V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fgetmBtHelper(Lcom/android/server/audio/AudioDeviceBroker;)Lcom/android/server/audio/BtHelper;
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fgetmDeviceStateLock(Lcom/android/server/audio/AudioDeviceBroker;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$fputmBrokerHandler(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler;)V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monSetForceUse(Lcom/android/server/audio/AudioDeviceBroker;IIZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$monUpdateCommunicationRouteClient(Lcom/android/server/audio/AudioDeviceBroker;ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$sfgetMESSAGES_MUTE_MUSIC()Ljava/util/Set;
+PLcom/android/server/audio/AudioDeviceBroker;->-$$Nest$smisMessageHandledUnderWakelock(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;-><clinit>()V
+PLcom/android/server/audio/AudioDeviceBroker;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioSystemAdapter;)V
+PLcom/android/server/audio/AudioDeviceBroker;->clearA2dpSuspended(Z)V
+PLcom/android/server/audio/AudioDeviceBroker;->clearLeAudioSuspended(Z)V
+PLcom/android/server/audio/AudioDeviceBroker;->communnicationDeviceHaCompatOn()Z
+PLcom/android/server/audio/AudioDeviceBroker;->communnicationDeviceLeAudioCompatOn()Z
+PLcom/android/server/audio/AudioDeviceBroker;->dispatchCommunicationDevice()V
+PLcom/android/server/audio/AudioDeviceBroker;->getCommunicationDeviceInt()Landroid/media/AudioDeviceInfo;
+PLcom/android/server/audio/AudioDeviceBroker;->getContext()Landroid/content/Context;
+PLcom/android/server/audio/AudioDeviceBroker;->getDefaultCommunicationDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioDeviceBroker;->getImmutableDeviceInventory()Ljava/util/Collection;
+PLcom/android/server/audio/AudioDeviceBroker;->handleCancelFailureToConnectToBtHeadsetService()V
+PLcom/android/server/audio/AudioDeviceBroker;->handleFailureToConnectToBtHeadsetService(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->init()V
+PLcom/android/server/audio/AudioDeviceBroker;->initAudioHalBluetoothState()V
+PLcom/android/server/audio/AudioDeviceBroker;->initRoutingStrategyIds()V
+PLcom/android/server/audio/AudioDeviceBroker;->isBluetoothA2dpOn()Z
+PLcom/android/server/audio/AudioDeviceBroker;->isBluetoothScoRequested()Z
+PLcom/android/server/audio/AudioDeviceBroker;->isDeviceActiveForCommunication(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->isDeviceRequestedForCommunication(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->isMessageHandledUnderWakelock(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->isSpeakerphoneActive()Z
+PLcom/android/server/audio/AudioDeviceBroker;->isValidCommunicationDevice(Landroid/media/AudioDeviceInfo;)Z
+PLcom/android/server/audio/AudioDeviceBroker;->isValidCommunicationDeviceType(I)Z
+PLcom/android/server/audio/AudioDeviceBroker;->onReadAudioDeviceSettings()V
+PLcom/android/server/audio/AudioDeviceBroker;->onSetForceUse(IIZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->onSystemReady()V
+PLcom/android/server/audio/AudioDeviceBroker;->onUpdateCommunicationRouteClient(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->onUpdatePhoneStrategyDevice(Landroid/media/AudioDeviceAttributes;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBroadcastScoConnectionState(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBtProfileConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postUpdateCommunicationRouteClient(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->preferredCommunicationDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioDeviceBroker;->readDeviceSettings()Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceBroker;->reapplyAudioHalBluetoothState()V
+PLcom/android/server/audio/AudioDeviceBroker;->requestedCommunicationDevice()Landroid/media/AudioDeviceAttributes;
+PLcom/android/server/audio/AudioDeviceBroker;->sendIILMsg(IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendIILMsgNoDelay(IIIILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendILMsgNoDelay(IIILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendIMsgNoDelay(III)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendMsg(III)V
+PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothScoOn(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->setForceUse_Async(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->setupMessaging(Landroid/content/Context;)V
+PLcom/android/server/audio/AudioDeviceBroker;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
+PLcom/android/server/audio/AudioDeviceBroker;->topCommunicationRouteClient()Lcom/android/server/audio/AudioDeviceBroker$CommunicationRouteClient;
+PLcom/android/server/audio/AudioDeviceBroker;->updateActiveCommunicationDevice()V
+PLcom/android/server/audio/AudioDeviceBroker;->updateAudioHalBluetoothState()V
+PLcom/android/server/audio/AudioDeviceBroker;->updateCommunicationRoute(Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->updateCommunicationRouteClientsActivity(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/audio/AudioDeviceBroker;->waitForBrokerHandlerCreation()V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda36;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory$1;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/AudioDeviceInventory;-><clinit>()V
+PLcom/android/server/audio/AudioDeviceInventory;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
+PLcom/android/server/audio/AudioDeviceInventory;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioSystemAdapter;)V
+PLcom/android/server/audio/AudioDeviceInventory;->applyConnectedDevicesRoles()V
+PLcom/android/server/audio/AudioDeviceInventory;->applyConnectedDevicesRoles_l()V
+PLcom/android/server/audio/AudioDeviceInventory;->clearDevicesRole(Landroid/util/ArrayMap;Lcom/android/server/audio/AudioDeviceInventory$AudioSystemInterface;II)I
+PLcom/android/server/audio/AudioDeviceInventory;->clearDevicesRoleForStrategy(IIZ)I
+PLcom/android/server/audio/AudioDeviceInventory;->getImmutableDeviceInventory()Ljava/util/Collection;
+PLcom/android/server/audio/AudioDeviceInventory;->reapplyExternalDevicesRoles()V
+PLcom/android/server/audio/AudioDeviceInventory;->removePreferredDevicesForStrategyInt(I)I
+PLcom/android/server/audio/AudioDeviceInventory;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda20;-><init>()V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/audio/AudioService$$ExternalSyntheticLambda8;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/audio/AudioService$1;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$1;->onError(I)V
+PLcom/android/server/audio/AudioService$2;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$3;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$3;->onDisplayChanged(I)V
+PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$5;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$5;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
+PLcom/android/server/audio/AudioService$6;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$7;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$8;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+PLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
+PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver-IA;)V
+HPLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->getRingerModeInternal()I
+HPLcom/android/server/audio/AudioService$AudioServiceInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->setInputMethodServiceUid(I)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeDelegate(Landroid/media/AudioManagerInternal$RingerModeDelegate;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeInternal(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->updateRingerModeAffectedStreamsInternal()V
+PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener-IA;)V
+PLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/audio/AudioService$AudioSystemThread;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AudioSystemThread;->run()V
+PLcom/android/server/audio/AudioService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/audio/AudioService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/audio/AudioService$Lifecycle;->onStart()V
+PLcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$MyHdmiCecVolumeControlFeatureListener-IA;)V
+PLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback-IA;)V
+PLcom/android/server/audio/AudioService$RestorableParameters$1;-><init>(Lcom/android/server/audio/AudioService$RestorableParameters;)V
+PLcom/android/server/audio/AudioService$RestorableParameters;-><init>()V
+PLcom/android/server/audio/AudioService$RestorableParameters;-><init>(Lcom/android/server/audio/AudioService$RestorableParameters-IA;)V
+PLcom/android/server/audio/AudioService$RoleObserver;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$RoleObserver;->getAssistantRoleHolder()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$RoleObserver;->register()V
+PLcom/android/server/audio/AudioService$SettingsObserver;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$VolumeController;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$VolumeController;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/audio/AudioService$VolumeController;->binder(Landroid/media/IVolumeController;)Landroid/os/IBinder;
+PLcom/android/server/audio/AudioService$VolumeController;->isSameBinder(Landroid/media/IVolumeController;)Z
+PLcom/android/server/audio/AudioService$VolumeController;->loadSettings(Landroid/content/ContentResolver;)V
+PLcom/android/server/audio/AudioService$VolumeController;->postDismiss()V
+PLcom/android/server/audio/AudioService$VolumeController;->setController(Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$VolumeController;->setLayoutDirection(I)V
+HPLcom/android/server/audio/AudioService$VolumeGroupState;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioVolumeGroup;)V
+PLcom/android/server/audio/AudioService$VolumeGroupState;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioVolumeGroup;Lcom/android/server/audio/AudioService$VolumeGroupState-IA;)V
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->applyAllVolumes(Z)V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->clearIndexCache()V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->getDeviceForVolume()I
+PLcom/android/server/audio/AudioService$VolumeGroupState;->getIndex(I)I
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->getLegacyStreamTypes()[I
+PLcom/android/server/audio/AudioService$VolumeGroupState;->getMinIndex()I
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->getSettingNameForDevice(I)Ljava/lang/String;
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->getValidIndex(I)I
+PLcom/android/server/audio/AudioService$VolumeGroupState;->isMusic()Z
+PLcom/android/server/audio/AudioService$VolumeGroupState;->isMutable()Z
+PLcom/android/server/audio/AudioService$VolumeGroupState;->isMuted()Z
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->isValidStream(I)Z
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->isVssMuteBijective(I)Z
+PLcom/android/server/audio/AudioService$VolumeGroupState;->mute(Z)Z
+PLcom/android/server/audio/AudioService$VolumeGroupState;->name()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$VolumeGroupState;->persistVolumeGroup(I)V
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->readSettings()V
+PLcom/android/server/audio/AudioService$VolumeGroupState;->setSettingName(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->setVolumeIndexInt(III)V
+HPLcom/android/server/audio/AudioService$VolumeGroupState;->updateVolumeIndex(II)V
+PLcom/android/server/audio/AudioService$VolumeStreamState$1;-><init>(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState$1;->put(II)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState$1;->record(Ljava/lang/String;II)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIndexMax(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIndexMin(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmIsMuted(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$fgetmStreamType(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->-$$Nest$mhasValidSettingsName(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$VolumeStreamState-IA;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(I)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getAbsoluteVolumeIndex(I)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String;
+PLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(IZ)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->isFullyMuted()Z
+PLcom/android/server/audio/AudioService$VolumeStreamState;->isMutable()Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)Ljava/util/Set;
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;Z)Z
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->setStreamVolumeIndex(II)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->setVolumeGroupState(Lcom/android/server/audio/AudioService$VolumeGroupState;)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->updateNoPermMinIndex(I)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->updateVolumeGroupIndex(IZ)V
+PLcom/android/server/audio/AudioService;->$r8$lambda$8YoXBPw5AJRvFMFFUjQwGxGhzQY(Landroid/media/AudioAttributes;)Z
+PLcom/android/server/audio/AudioService;->$r8$lambda$maUm3rQ2PSmFbQzqlmwf8bqyg_g(Lcom/android/server/audio/AudioService;Landroid/media/PlayerBase;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAccessibilityServiceUidsLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioEventWakeLock(Lcom/android/server/audio/AudioService;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioHandler(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler;
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmAudioSystem(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioSystemAdapter;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmCameraSoundForced(Lcom/android/server/audio/AudioService;)Z
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmContentResolver(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmDisplayManager(Lcom/android/server/audio/AudioService;)Landroid/hardware/display/DisplayManager;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmInputMethodServiceUid(Lcom/android/server/audio/AudioService;)I
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmInputMethodServiceUidLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmIsSingleVolume(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmMediaFocusControl(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmMonitorRotation(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmRingerModeDelegate(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmSettings(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SettingsAdapter;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSettingsLock(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSoundDoseHelper(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SoundDoseHelper;
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmStreamStates(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState;
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmSupportsMicPrivacyToggle(Lcom/android/server/audio/AudioService;)Z
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmSystemServer(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SystemServerAdapter;
+HPLcom/android/server/audio/AudioService;->-$$Nest$fgetmUseFixedVolume(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$fgetmUserSwitchedReceived(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmAccessibilityServiceUids(Lcom/android/server/audio/AudioService;[I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmAudioHandler(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmEnabledSurroundFormats(Lcom/android/server/audio/AudioService;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmEncodedSurroundMode(Lcom/android/server/audio/AudioService;I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmInputMethodServiceUid(Lcom/android/server/audio/AudioService;I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmRingerModeDelegate(Lcom/android/server/audio/AudioService;Landroid/media/AudioManagerInternal$RingerModeDelegate;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$fputmUserSwitchedReceived(Lcom/android/server/audio/AudioService;Z)V
+PLcom/android/server/audio/AudioService;->-$$Nest$mgetDeviceSetForStreamDirect(Lcom/android/server/audio/AudioService;I)Ljava/util/Set;
+PLcom/android/server/audio/AudioService;->-$$Nest$misA2dpAbsoluteVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$misAbsoluteVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
+HPLcom/android/server/audio/AudioService;->-$$Nest$misFixedVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
+HPLcom/android/server/audio/AudioService;->-$$Nest$misFullVolumeDevice(Lcom/android/server/audio/AudioService;I)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$monInitStreamsAndVolumes(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$monObserveDevicesForAllStreams(Lcom/android/server/audio/AudioService;I)V
+PLcom/android/server/audio/AudioService;->-$$Nest$mreadAudioSettings(Lcom/android/server/audio/AudioService;Z)V
+PLcom/android/server/audio/AudioService;->-$$Nest$mrescaleIndex(Lcom/android/server/audio/AudioService;III)I
+PLcom/android/server/audio/AudioService;->-$$Nest$msendBroadcastToAll(Lcom/android/server/audio/AudioService;Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/audio/AudioService;->-$$Nest$mupdateAssistantUIdLocked(Lcom/android/server/audio/AudioService;Z)V
+PLcom/android/server/audio/AudioService;->-$$Nest$mupdateRingerAndZenModeAffectedStreams(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$smisCallStream(I)Z
+PLcom/android/server/audio/AudioService;->-$$Nest$smsendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;-><clinit>()V
+PLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioPolicyFacade;Landroid/os/Looper;)V
+HPLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/SystemServerAdapter;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioPolicyFacade;Landroid/os/Looper;Landroid/app/AppOpsManager;Landroid/os/PermissionEnforcer;)V
+PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
+PLcom/android/server/audio/AudioService;->addAssistantServiceUidsLocked([I)V
+PLcom/android/server/audio/AudioService;->broadcastRingerMode(Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V
+HPLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V
+PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V
+PLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V
+PLcom/android/server/audio/AudioService;->checkVolumeRangeInitialization(Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioService;->createAudioSystemThread()V
+PLcom/android/server/audio/AudioService;->createStreamStates()V
+PLcom/android/server/audio/AudioService;->dispatchStreamAliasingUpdate()V
+PLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->ensureValidAttributes(Landroid/media/audiopolicy/AudioVolumeGroup;)V
+PLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V
+HPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
+PLcom/android/server/audio/AudioService;->forceFocusDuckingForAccessibility(Landroid/media/AudioAttributes;II)Z
+PLcom/android/server/audio/AudioService;->getAudioAidlHalPids(Ljava/util/HashSet;)V
+PLcom/android/server/audio/AudioService;->getAudioHalHidlPids(Ljava/util/HashSet;)V
+PLcom/android/server/audio/AudioService;->getAudioHalPids()Ljava/util/Set;
+PLcom/android/server/audio/AudioService;->getAudioModeOwner()Lcom/android/server/audio/AudioDeviceBroker$AudioModeInfo;
+PLcom/android/server/audio/AudioService;->getAudioModeOwnerHandler()Lcom/android/server/audio/AudioService$SetModeDeathHandler;
+PLcom/android/server/audio/AudioService;->getAudioVolumeGroups()Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getContentResolver()Landroid/content/ContentResolver;
+PLcom/android/server/audio/AudioService;->getCurrentUserId()I
+HPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I
+HPLcom/android/server/audio/AudioService;->getDeviceSetForStream(I)Ljava/util/Set;
+HPLcom/android/server/audio/AudioService;->getDeviceSetForStreamDirect(I)Ljava/util/Set;
+PLcom/android/server/audio/AudioService;->getDeviceVolumeBehaviorInt(Landroid/media/AudioDeviceAttributes;)I
+HPLcom/android/server/audio/AudioService;->getDevicesForAttributesInt(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+PLcom/android/server/audio/AudioService;->getRingerModeExternal()I
+PLcom/android/server/audio/AudioService;->getRingerModeInternal()I
+PLcom/android/server/audio/AudioService;->getSettings()Lcom/android/server/audio/SettingsAdapter;
+PLcom/android/server/audio/AudioService;->getSettingsNameForDeviceVolumeBehavior(I)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I
+PLcom/android/server/audio/AudioService;->getUiDefaultRescaledIndex(II)I
+PLcom/android/server/audio/AudioService;->getVibrateSetting(I)I
+PLcom/android/server/audio/AudioService;->getVolumeGroupForStreamType(I)I
+PLcom/android/server/audio/AudioService;->getVssVolumeForStream(I)Lcom/android/server/audio/AudioService$VolumeStreamState;
+PLcom/android/server/audio/AudioService;->ignorePlayerLogs(Landroid/media/PlayerBase;)V
+PLcom/android/server/audio/AudioService;->initA11yMonitoring()V
+PLcom/android/server/audio/AudioService;->initExternalEventReceivers()V
+PLcom/android/server/audio/AudioService;->initMinStreamVolumeWithoutModifyAudioSettings()V
+HPLcom/android/server/audio/AudioService;->initVolumeGroupStates()V
+PLcom/android/server/audio/AudioService;->initVolumeStreamStates()V
+HPLcom/android/server/audio/AudioService;->isA2dpAbsoluteVolumeDevice(I)Z
+HPLcom/android/server/audio/AudioService;->isAbsoluteVolumeDevice(I)Z
+PLcom/android/server/audio/AudioService;->isBluetoothA2dpOn()Z
+PLcom/android/server/audio/AudioService;->isCallStream(I)Z
+HPLcom/android/server/audio/AudioService;->isFixedVolumeDevice(I)Z
+HPLcom/android/server/audio/AudioService;->isFullVolumeDevice(I)Z
+PLcom/android/server/audio/AudioService;->isInCommunication()Z
+PLcom/android/server/audio/AudioService;->isMicrophoneSupposedToBeMuted()Z
+PLcom/android/server/audio/AudioService;->isPlatformAutomotive()Z
+PLcom/android/server/audio/AudioService;->isPlatformTelevision()Z
+PLcom/android/server/audio/AudioService;->isStreamAffectedByMute(I)Z
+HPLcom/android/server/audio/AudioService;->isStreamMute(I)Z
+PLcom/android/server/audio/AudioService;->isStreamMutedByRingerOrZenMode(I)Z
+PLcom/android/server/audio/AudioService;->isValidAudioAttributesUsage(Landroid/media/AudioAttributes;)Z
+PLcom/android/server/audio/AudioService;->isValidRingerMode(I)Z
+PLcom/android/server/audio/AudioService;->isVolumeFixed()Z
+PLcom/android/server/audio/AudioService;->lambda$ensureValidAttributes$11(Landroid/media/AudioAttributes;)Z
+PLcom/android/server/audio/AudioService;->lambda$new$0(Landroid/media/PlayerBase;)V
+HPLcom/android/server/audio/AudioService;->muteRingerModeStreams()V
+PLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V
+PLcom/android/server/audio/AudioService;->onConfigurationChanged()V
+PLcom/android/server/audio/AudioService;->onIndicateSystemReady()V
+PLcom/android/server/audio/AudioService;->onInitAdiDeviceStates()V
+PLcom/android/server/audio/AudioService;->onInitSpatializer()V
+PLcom/android/server/audio/AudioService;->onInitStreamsAndVolumes()V
+HPLcom/android/server/audio/AudioService;->onObserveDevicesForAllStreams(I)V
+PLcom/android/server/audio/AudioService;->onPlaybackConfigChange(Ljava/util/List;)V
+PLcom/android/server/audio/AudioService;->onSystemReady()V
+PLcom/android/server/audio/AudioService;->onUpdateAccessibilityServiceUids()V
+PLcom/android/server/audio/AudioService;->onUpdateRingerModeServiceInt()V
+PLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V
+PLcom/android/server/audio/AudioService;->playerEvent(III)V
+PLcom/android/server/audio/AudioService;->portEvent(IILandroid/os/PersistableBundle;)V
+PLcom/android/server/audio/AudioService;->postObserveDevicesForAllStreams(I)V
+PLcom/android/server/audio/AudioService;->postUpdateRingerModeServiceInt()V
+PLcom/android/server/audio/AudioService;->queueMsgUnderWakeLock(Landroid/os/Handler;IIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V
+PLcom/android/server/audio/AudioService;->readAudioSettings(Z)V
+PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z
+PLcom/android/server/audio/AudioService;->readDockAudioSettings(Landroid/content/ContentResolver;)V
+HPLcom/android/server/audio/AudioService;->readPersistedSettings()V
+PLcom/android/server/audio/AudioService;->readUserRestrictions()V
+HPLcom/android/server/audio/AudioService;->readVolumeGroupsSettings(Z)V
+PLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
+PLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
+HPLcom/android/server/audio/AudioService;->rescaleIndex(III)I
+PLcom/android/server/audio/AudioService;->rescaleIndex(IIIII)I
+PLcom/android/server/audio/AudioService;->resetActiveAssistantUidsLocked()V
+PLcom/android/server/audio/AudioService;->restoreDeviceVolumeBehavior()V
+PLcom/android/server/audio/AudioService;->retrieveStoredDeviceVolumeBehavior(I)I
+PLcom/android/server/audio/AudioService;->scheduleLoadSoundEffects()V
+HPLcom/android/server/audio/AudioService;->selectOneAudioDevice(Ljava/util/Set;)I
+HPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/audio/AudioService;->sendEnabledSurroundFormats(Landroid/content/ContentResolver;Z)V
+PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+PLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
+HPLcom/android/server/audio/AudioService;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+PLcom/android/server/audio/AudioService;->setMasterMuteInternalNoCallerCheck(ZIILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setMicMuteFromSwitchInput()V
+PLcom/android/server/audio/AudioService;->setMicrophoneMuteNoCallerCheck(I)V
+PLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V
+PLcom/android/server/audio/AudioService;->setRingerModeExt(I)V
+PLcom/android/server/audio/AudioService;->setRingerModeInt(IZ)V
+PLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService;->shouldZenMuteStream(I)Z
+PLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
+PLcom/android/server/audio/AudioService;->systemReady()V
+PLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+PLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V
+PLcom/android/server/audio/AudioService;->updateActiveAssistantServiceUids()V
+PLcom/android/server/audio/AudioService;->updateAssistantServicesUidsLocked()V
+PLcom/android/server/audio/AudioService;->updateAssistantUIdLocked(Z)V
+PLcom/android/server/audio/AudioService;->updateAudioHalPids()V
+PLcom/android/server/audio/AudioService;->updateAudioModeHandlers(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V
+PLcom/android/server/audio/AudioService;->updateDefaultVolumes()V
+PLcom/android/server/audio/AudioService;->updateMasterBalance(Landroid/content/ContentResolver;)V
+PLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V
+HPLcom/android/server/audio/AudioService;->updateRingerAndZenModeAffectedStreams()Z
+PLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->updateVibratorInfos()V
+HPLcom/android/server/audio/AudioService;->updateVolumeStates(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->updateZenModeAffectedStreams()Z
+PLcom/android/server/audio/AudioService;->validateAudioAttributesUsage(Landroid/media/AudioAttributes;)V
+PLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V
+PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;-><init>(IILjava/lang/String;)V
+PLcom/android/server/audio/AudioServiceEvents$RingerZenMutedStreamsEvent;-><init>(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioServiceEvents$VolChangedBroadcastEvent;-><init>(IIII)V
+PLcom/android/server/audio/AudioSystemAdapter;-><clinit>()V
+PLcom/android/server/audio/AudioSystemAdapter;-><init>()V
+PLcom/android/server/audio/AudioSystemAdapter;->getDefaultAdapter()Lcom/android/server/audio/AudioSystemAdapter;
+HPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributes(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+HPLcom/android/server/audio/AudioSystemAdapter;->getDevicesForAttributesImpl(Landroid/media/AudioAttributes;Z)Ljava/util/ArrayList;
+HPLcom/android/server/audio/AudioSystemAdapter;->invalidateRoutingCache()V
+PLcom/android/server/audio/AudioSystemAdapter;->isMicrophoneMuted()Z
+PLcom/android/server/audio/AudioSystemAdapter;->muteMicrophone(Z)I
+PLcom/android/server/audio/AudioSystemAdapter;->onRoutingUpdated()V
+PLcom/android/server/audio/AudioSystemAdapter;->setCurrentImeUid(I)I
+PLcom/android/server/audio/AudioSystemAdapter;->setForceUse(II)I
+PLcom/android/server/audio/AudioSystemAdapter;->setRoutingListener(Lcom/android/server/audio/AudioSystemAdapter$OnRoutingUpdatedListener;)V
+HPLcom/android/server/audio/AudioSystemAdapter;->setStreamVolumeIndexAS(III)I
+PLcom/android/server/audio/AudioSystemAdapter;->setVolRangeInitReqListener(Lcom/android/server/audio/AudioSystemAdapter$OnVolRangeInitRequestListener;)V
+PLcom/android/server/audio/BtHelper$1;-><init>(Lcom/android/server/audio/BtHelper;)V
+PLcom/android/server/audio/BtHelper$1;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/audio/BtHelper;->-$$Nest$fgetmDeviceBroker(Lcom/android/server/audio/BtHelper;)Lcom/android/server/audio/AudioDeviceBroker;
+PLcom/android/server/audio/BtHelper;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Landroid/content/Context;)V
+PLcom/android/server/audio/BtHelper;->broadcastScoConnectionState(I)V
+PLcom/android/server/audio/BtHelper;->checkScoAudioState()V
+PLcom/android/server/audio/BtHelper;->getBluetoothHeadset()Z
+PLcom/android/server/audio/BtHelper;->isBluetoothScoOn()Z
+PLcom/android/server/audio/BtHelper;->onBroadcastScoConnectionState(I)V
+PLcom/android/server/audio/BtHelper;->onBtProfileConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/audio/BtHelper;->onHeadsetProfileConnected(Landroid/bluetooth/BluetoothHeadset;)V
+PLcom/android/server/audio/BtHelper;->onSystemReady()V
+PLcom/android/server/audio/BtHelper;->resetBluetoothSco()V
+PLcom/android/server/audio/BtHelper;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
+PLcom/android/server/audio/DefaultAudioPolicyFacade;-><init>()V
+PLcom/android/server/audio/DefaultAudioPolicyFacade;->getAudioPolicyOrInit()Landroid/media/IAudioPolicyService;
+PLcom/android/server/audio/FadeConfigurations;-><clinit>()V
+PLcom/android/server/audio/FadeConfigurations;-><init>()V
+PLcom/android/server/audio/FadeOutManager;-><init>()V
+PLcom/android/server/audio/FadeOutManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
+PLcom/android/server/audio/FadeOutManager;->unfadeOutUid(ILjava/util/Map;)V
+PLcom/android/server/audio/FocusRequester;-><init>(Landroid/media/AudioAttributes;IILandroid/media/IAudioFocusDispatcher;Landroid/os/IBinder;Ljava/lang/String;Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;Ljava/lang/String;ILcom/android/server/audio/MediaFocusControl;I)V
+PLcom/android/server/audio/FocusRequester;->finalize()V
+PLcom/android/server/audio/FocusRequester;->getClientUid()I
+PLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V
+PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z
+PLcom/android/server/audio/FocusRequester;->maybeRelease()V
+PLcom/android/server/audio/FocusRequester;->release()V
+PLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo;
+PLcom/android/server/audio/HardeningEnforcer;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/audio/LoudnessCodecHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/audio/LoudnessCodecHelper;)V
+PLcom/android/server/audio/LoudnessCodecHelper$LoudnessRemoteCallbackList;-><init>(Lcom/android/server/audio/LoudnessCodecHelper;)V
+PLcom/android/server/audio/LoudnessCodecHelper;-><clinit>()V
+PLcom/android/server/audio/LoudnessCodecHelper;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/LoudnessCodecHelper;->updateCodecParameters(Ljava/util/List;)V
+PLcom/android/server/audio/MediaFocusControl$4;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/Looper;)V
+PLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V
+PLcom/android/server/audio/MediaFocusControl$ForgetFadeUidInfo;-><init>(I)V
+PLcom/android/server/audio/MediaFocusControl;-><clinit>()V
+PLcom/android/server/audio/MediaFocusControl;-><init>(Landroid/content/Context;Lcom/android/server/audio/PlayerFocusEnforcer;)V
+PLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
+PLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z
+PLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
+PLcom/android/server/audio/MediaFocusControl;->initFocusThreading()V
+PLcom/android/server/audio/MediaFocusControl;->isFocusFrozenForTest()Z
+PLcom/android/server/audio/MediaFocusControl;->maybeDiscardAudioFocusOwner()Z
+PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V
+PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V
+PLcom/android/server/audio/MediaFocusControl;->notifyTopOfAudioFocusStack()V
+PLcom/android/server/audio/MediaFocusControl;->propagateFocusLossFromGain_syncAf(ILcom/android/server/audio/FocusRequester;Z)V
+PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/String;ZZ)V
+HPLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZI)I
+PLcom/android/server/audio/MediaFocusControl;->restoreVShapedPlayers(Lcom/android/server/audio/FocusRequester;)V
+PLcom/android/server/audio/MusicFxHelper$1;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
+PLcom/android/server/audio/MusicFxHelper$2;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
+PLcom/android/server/audio/MusicFxHelper$MySparseArray;-><init>(Lcom/android/server/audio/MusicFxHelper;)V
+PLcom/android/server/audio/MusicFxHelper$MySparseArray;-><init>(Lcom/android/server/audio/MusicFxHelper;Lcom/android/server/audio/MusicFxHelper$MySparseArray-IA;)V
+PLcom/android/server/audio/MusicFxHelper;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService$AudioHandler;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$1;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor;Landroid/os/Looper;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioAttributes;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>()V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager-IA;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->isPrivileged()Z
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->reachedMaxErrorCount()Z
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(III)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->-$$Nest$fgetmPlayerLock(Lcom/android/server/audio/PlaybackActivityMonitor;)Ljava/lang/Object;
+PLcom/android/server/audio/PlaybackActivityMonitor;->-$$Nest$fgetmPortIdToPiid(Lcom/android/server/audio/PlaybackActivityMonitor;)Landroid/util/SparseIntArray;
+PLcom/android/server/audio/PlaybackActivityMonitor;-><clinit>()V
+PLcom/android/server/audio/PlaybackActivityMonitor;-><init>(Landroid/content/Context;ILjava/util/function/Consumer;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z
+PLcom/android/server/audio/PlaybackActivityMonitor;->checkVolumeForPrivilegedAlarm(Landroid/media/AudioPlaybackConfiguration;I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange(Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->ignorePlayerIId(I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->initEventHandler()V
+PLcom/android/server/audio/PlaybackActivityMonitor;->maybeMutePlayerAwaitingConnection(Landroid/media/AudioPlaybackConfiguration;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(IIII)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->portEvent(IILandroid/os/PersistableBundle;I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->restoreVShapedPlayers(Lcom/android/server/audio/FocusRequester;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;-><init>(Landroid/media/IRecordingConfigDispatcher;Z)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;->init()Z
+PLcom/android/server/audio/RecordingActivityMonitor;-><clinit>()V
+PLcom/android/server/audio/RecordingActivityMonitor;-><init>(Landroid/content/Context;)V
+PLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V
+PLcom/android/server/audio/RecordingActivityMonitor;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;Z)V
+PLcom/android/server/audio/SettingsAdapter;-><init>()V
+PLcom/android/server/audio/SettingsAdapter;->getDefaultAdapter()Lcom/android/server/audio/SettingsAdapter;
+PLcom/android/server/audio/SettingsAdapter;->getGlobalInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
+PLcom/android/server/audio/SettingsAdapter;->getGlobalString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/audio/SettingsAdapter;->getSecureIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
+PLcom/android/server/audio/SettingsAdapter;->getSecureStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/audio/SettingsAdapter;->getSystemIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
+PLcom/android/server/audio/SettingsAdapter;->putGlobalInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
+PLcom/android/server/audio/SettingsAdapter;->putSystemIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
+PLcom/android/server/audio/SoundDoseHelper$1;-><init>(Lcom/android/server/audio/SoundDoseHelper;)V
+PLcom/android/server/audio/SoundDoseHelper;-><init>(Lcom/android/server/audio/AudioService;Landroid/content/Context;Lcom/android/server/audio/AudioService$AudioHandler;Lcom/android/server/audio/SettingsAdapter;Lcom/android/server/audio/AudioService$ISafeHearingVolumeController;)V
+PLcom/android/server/audio/SoundDoseHelper;->configureSafeMedia(ZLjava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;->enforceSafeMediaVolume(Ljava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;->enforceSafeMediaVolumeIfActive(Ljava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;->getSafeDeviceMediaVolumeIndex(I)I
+PLcom/android/server/audio/SoundDoseHelper;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/SoundDoseHelper;->initCachedAudioDeviceCategories(Ljava/util/Collection;)V
+PLcom/android/server/audio/SoundDoseHelper;->initCsd()V
+PLcom/android/server/audio/SoundDoseHelper;->initSafeMediaVolumeIndex()V
+PLcom/android/server/audio/SoundDoseHelper;->initSafeVolumes()V
+PLcom/android/server/audio/SoundDoseHelper;->onConfigureSafeMedia(ZLjava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;->onPersistSafeVolumeState(I)V
+PLcom/android/server/audio/SoundDoseHelper;->restoreMusicActiveMs()V
+PLcom/android/server/audio/SoundDoseHelper;->safeMediaVolumeIndex(I)I
+PLcom/android/server/audio/SoundDoseHelper;->updateCsdEnabled(Ljava/lang/String;)V
+PLcom/android/server/audio/SoundDoseHelper;->updateDoseAttenuation(IIIZ)V
+PLcom/android/server/audio/SoundDoseHelper;->updateSafeMediaVolume_l(Ljava/lang/String;)V
+PLcom/android/server/audio/SoundEffectsHelper$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+PLcom/android/server/audio/SoundEffectsHelper$1;->run(Z)V
+PLcom/android/server/audio/SoundEffectsHelper$Resource;-><init>(Ljava/lang/String;)V
+PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SfxHandler-IA;)V
+PLcom/android/server/audio/SoundEffectsHelper$SfxHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/audio/SoundEffectsHelper$SfxWorker;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+PLcom/android/server/audio/SoundEffectsHelper$SfxWorker;->run()V
+PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->addHandler(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->onComplete(Z)V
+PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fgetmSoundPool(Lcom/android/server/audio/SoundEffectsHelper;)Landroid/media/SoundPool;
+PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fputmSfxHandler(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$fputmSoundPoolLoader(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;)V
+PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$mlogEvent(Lcom/android/server/audio/SoundEffectsHelper;Ljava/lang/String;)V
+PLcom/android/server/audio/SoundEffectsHelper;->-$$Nest$monLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper;-><init>(Landroid/content/Context;Ljava/util/function/Consumer;)V
+PLcom/android/server/audio/SoundEffectsHelper;->allNavigationRepeatSoundsParsed(Ljava/util/Map;)Z
+PLcom/android/server/audio/SoundEffectsHelper;->findOrAddResourceByFileName(Ljava/lang/String;)I
+HPLcom/android/server/audio/SoundEffectsHelper;->getResourceFilePath(Lcom/android/server/audio/SoundEffectsHelper$Resource;)Ljava/lang/String;
+PLcom/android/server/audio/SoundEffectsHelper;->loadSoundAssetDefaults()V
+PLcom/android/server/audio/SoundEffectsHelper;->loadSoundAssets()V
+PLcom/android/server/audio/SoundEffectsHelper;->loadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper;->logEvent(Ljava/lang/String;)V
+HPLcom/android/server/audio/SoundEffectsHelper;->onLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+PLcom/android/server/audio/SoundEffectsHelper;->sendMsg(IIILjava/lang/Object;I)V
+PLcom/android/server/audio/SoundEffectsHelper;->startWorker()V
+PLcom/android/server/audio/SpatializerHelper$1;-><init>(I)V
+PLcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback;-><init>(Lcom/android/server/audio/SpatializerHelper;)V
+PLcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback;-><init>(Lcom/android/server/audio/SpatializerHelper;Lcom/android/server/audio/SpatializerHelper$SpatializerHeadTrackingCallback-IA;)V
+PLcom/android/server/audio/SpatializerHelper;-><clinit>()V
+PLcom/android/server/audio/SpatializerHelper;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioSystemAdapter;Lcom/android/server/audio/AudioDeviceBroker;ZZZ)V
+PLcom/android/server/audio/SpatializerHelper;->init(Z)V
+PLcom/android/server/audio/SpatializerHelper;->loglogi(Ljava/lang/String;)V
+PLcom/android/server/audio/SpatializerHelper;->setFeatureEnabled(Z)V
+PLcom/android/server/audio/SystemServerAdapter$1;-><init>(Lcom/android/server/audio/SystemServerAdapter;)V
+PLcom/android/server/audio/SystemServerAdapter$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/audio/SystemServerAdapter;-><init>(Landroid/content/Context;)V
+PLcom/android/server/audio/SystemServerAdapter;->getDefaultAdapter(Landroid/content/Context;)Lcom/android/server/audio/SystemServerAdapter;
+PLcom/android/server/audio/SystemServerAdapter;->isPrivileged()Z
+PLcom/android/server/audio/SystemServerAdapter;->registerUserStartedReceiver(Landroid/content/Context;)V
+PLcom/android/server/backup/BackupAgentTimeoutParameters;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->update(Landroid/util/KeyValueListParser;)V
+PLcom/android/server/backup/BackupAndRestoreFeatureFlags;->getBackupTransportFutureTimeoutMillis()J
+PLcom/android/server/backup/BackupManagerConstants;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupFuzzMilliseconds()J
+PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupIntervalMilliseconds()J
+PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequireCharging()Z
+PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequiredNetworkType()I
+PLcom/android/server/backup/BackupManagerConstants;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerConstants;->update(Landroid/util/KeyValueListParser;)V
+PLcom/android/server/backup/BackupManagerService$1;-><init>(Lcom/android/server/backup/BackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->$r8$lambda$tO1pYFIf1Pz1lck-Xhogn_8LPto(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/backup/BackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->lambda$onUserUnlocking$0(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->onStart()V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->publishService(Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/backup/BackupManagerService;->-$$Nest$fputmHasFirstUserUnlockedSinceBoot(Lcom/android/server/backup/BackupManagerService;Z)V
+PLcom/android/server/backup/BackupManagerService;->-$$Nest$mupdateDefaultBackupUserIdIfNeeded(Lcom/android/server/backup/BackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/backup/BackupManagerService;->binderGetCallingUserId()I
+PLcom/android/server/backup/BackupManagerService;->dataChanged(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->dataChangedForUser(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->enforceCallingPermissionOnUserId(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->getCurrentTransport(I)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->getCurrentTransportComponent(I)Landroid/content/ComponentName;
+PLcom/android/server/backup/BackupManagerService;->getCurrentTransportComponentForUser(I)Landroid/content/ComponentName;
+PLcom/android/server/backup/BackupManagerService;->getCurrentTransportForUser(I)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/BackupManagerService;->getSuppressFileForUser(I)Ljava/io/File;
+PLcom/android/server/backup/BackupManagerService;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/backup/BackupManagerService;->isBackupActivatedForUser(I)Z
+PLcom/android/server/backup/BackupManagerService;->isBackupDisabled()Z
+PLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z
+PLcom/android/server/backup/BackupManagerService;->isBackupEnabled(I)Z
+PLcom/android/server/backup/BackupManagerService;->isBackupEnabledForUser(I)Z
+HPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z
+PLcom/android/server/backup/BackupManagerService;->postToHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/backup/BackupManagerService;->startServiceForUser(I)V
+PLcom/android/server/backup/BackupManagerService;->startServiceForUser(ILcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService;->updateDefaultBackupUserIdIfNeeded()V
+PLcom/android/server/backup/BackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/BackupManagerService;->updateTransportAttributesForUser(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec;-><init>()V
+PLcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec;-><init>(Lcom/android/server/backup/BackupPasswordManager$PasswordHashFileCodec-IA;)V
+PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>()V
+PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>(Lcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec-IA;)V
+PLcom/android/server/backup/BackupPasswordManager;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/security/SecureRandom;)V
+PLcom/android/server/backup/BackupPasswordManager;->getPasswordHashFile()Ljava/io/File;
+PLcom/android/server/backup/BackupPasswordManager;->getPasswordHashFileCodec()Lcom/android/server/backup/utils/DataStreamFileCodec;
+PLcom/android/server/backup/BackupPasswordManager;->getPasswordVersionFileCodec()Lcom/android/server/backup/utils/DataStreamFileCodec;
+PLcom/android/server/backup/BackupPasswordManager;->loadStateFromFilesystem()V
+PLcom/android/server/backup/DataChangedJournal;-><init>(Ljava/io/File;)V
+HPLcom/android/server/backup/DataChangedJournal;->addPackage(Ljava/lang/String;)V
+PLcom/android/server/backup/DataChangedJournal;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/backup/DataChangedJournal;->forEach(Ljava/util/function/Consumer;)V
+PLcom/android/server/backup/DataChangedJournal;->listJournals(Ljava/io/File;)Ljava/util/ArrayList;
+PLcom/android/server/backup/DataChangedJournal;->newJournal(Ljava/io/File;)Lcom/android/server/backup/DataChangedJournal;
+PLcom/android/server/backup/JobIdManager;->getJobIdForUserId(III)I
+PLcom/android/server/backup/KeyValueBackupJob;-><clinit>()V
+PLcom/android/server/backup/KeyValueBackupJob;->cancel(ILandroid/content/Context;)V
+PLcom/android/server/backup/KeyValueBackupJob;->clearScheduledForUserId(I)V
+PLcom/android/server/backup/KeyValueBackupJob;->getJobIdForUserId(I)I
+HPLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;ILcom/android/server/backup/utils/BackupEligibilityRules;)Ljava/util/List;
+PLcom/android/server/backup/ProcessedPackagesJournal;-><init>(Ljava/io/File;)V
+PLcom/android/server/backup/ProcessedPackagesJournal;->init()V
+PLcom/android/server/backup/ProcessedPackagesJournal;->loadFromDisk()V
+PLcom/android/server/backup/SetUtils;->union(Ljava/util/Set;Ljava/util/Set;)Ljava/util/Set;
+PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/backup/TransportManager$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fgetname(Lcom/android/server/backup/TransportManager$TransportDescription;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputconfigurationIntent(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputcurrentDestinationString(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputdataManagementIntent(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputdataManagementLabel(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;->-$$Nest$fputname(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/TransportManager$TransportDescription;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;Lcom/android/server/backup/TransportManager$TransportDescription-IA;)V
+PLcom/android/server/backup/TransportManager;->$r8$lambda$velBFHaSmoGaDDo2t7urM380RiQ(Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;-><init>(ILandroid/content/Context;Ljava/util/Set;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager;->addUserIdToLogMessage(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager;->checkCanUseTransport()V
+PLcom/android/server/backup/TransportManager;->getCurrentTransportComponent()Landroid/content/ComponentName;
+PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String;
+PLcom/android/server/backup/TransportManager;->getRegisteredTransportComponentLocked(Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/backup/TransportManager;->getRegisteredTransportComponentOrThrowLocked(Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;
+PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;->lambda$registerTransports$2(Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;)I
+PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/TransportManager;->registerTransports()V
+PLcom/android/server/backup/TransportManager;->registerTransportsForIntent(Landroid/content/Intent;Ljava/util/function/Predicate;)V
+PLcom/android/server/backup/TransportManager;->setOnTransportRegisteredListener(Lcom/android/server/backup/transport/OnTransportRegisteredListener;)V
+PLcom/android/server/backup/TransportManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(I)Z
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(Ljava/io/File;)Z
+PLcom/android/server/backup/UserBackupManagerFiles;->getBaseStateDir(I)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerFiles;->getDataDir(I)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/util/Set;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda1;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/backup/TransportManager;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;)V
+PLcom/android/server/backup/UserBackupManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/backup/UserBackupManagerService$1;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$2;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$4;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+PLcom/android/server/backup/UserBackupManagerService$4;->run()V
+PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;-><init>(Landroid/os/PowerManager$WakeLock;I)V
+PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$60zOjkfZNFT-L6ih-nuCamP1L9M(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$heFkS8m3IlrBwPfiAIdWm8iF68E(Lcom/android/server/backup/UserBackupManagerService;Ljava/util/Set;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->$r8$lambda$qmyqqN_oMikkXxYcMY9KUtmLjwk(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService;->-$$Nest$mdataChangedImpl(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/UserBackupManagerService;-><init>(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)V
+PLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/backup/UserBackupManagerService;->addUserIdToLogMessage(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/backup/UserBackupManagerService;->allAgentPackages()Ljava/util/List;
+PLcom/android/server/backup/UserBackupManagerService;->createAndInitializeService(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/UserBackupManagerService;->createAndInitializeService(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerService;Ljava/util/Set;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/UserBackupManagerService;->dataChanged(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;
+PLcom/android/server/backup/UserBackupManagerService;->getAgentTimeoutParameters()Lcom/android/server/backup/BackupAgentTimeoutParameters;
+PLcom/android/server/backup/UserBackupManagerService;->getConstants()Lcom/android/server/backup/BackupManagerConstants;
+PLcom/android/server/backup/UserBackupManagerService;->getContext()Landroid/content/Context;
+PLcom/android/server/backup/UserBackupManagerService;->getCurrentTransport()Ljava/lang/String;
+PLcom/android/server/backup/UserBackupManagerService;->getCurrentTransportComponent()Landroid/content/ComponentName;
+PLcom/android/server/backup/UserBackupManagerService;->getEligibilityRules(Landroid/content/pm/PackageManager;ILandroid/content/Context;I)Lcom/android/server/backup/utils/BackupEligibilityRules;
+PLcom/android/server/backup/UserBackupManagerService;->getSetupCompleteSettingForUser(Landroid/content/Context;I)Z
+PLcom/android/server/backup/UserBackupManagerService;->getTransportManager()Lcom/android/server/backup/TransportManager;
+PLcom/android/server/backup/UserBackupManagerService;->getUserId()I
+PLcom/android/server/backup/UserBackupManagerService;->initPackageTracking()V
+PLcom/android/server/backup/UserBackupManagerService;->initializeBackupEnableState()V
+PLcom/android/server/backup/UserBackupManagerService;->isBackupEnabled()Z
+PLcom/android/server/backup/UserBackupManagerService;->isFrameworkSchedulingEnabled()Z
+PLcom/android/server/backup/UserBackupManagerService;->lambda$parseLeftoverJournals$0(Ljava/util/Set;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->parseLeftoverJournals()V
+PLcom/android/server/backup/UserBackupManagerService;->readEnabledState()Z
+HPLcom/android/server/backup/UserBackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
+PLcom/android/server/backup/UserBackupManagerService;->setBackupEnabled(ZZ)V
+PLcom/android/server/backup/UserBackupManagerService;->updateStateOnBackupEnabled(ZZ)V
+PLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+PLcom/android/server/backup/UserBackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupPreferences;-><init>(Landroid/content/Context;Ljava/io/File;)V
+HPLcom/android/server/backup/fullbackup/FullBackupEntry;-><init>(Ljava/lang/String;J)V
+HPLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Lcom/android/server/backup/fullbackup/FullBackupEntry;)I
+PLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/backup/internal/BackupHandler;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/OperationStorage;Landroid/os/HandlerThread;)V
+PLcom/android/server/backup/internal/BackupHandler;->dispatchMessage(Landroid/os/Message;)V
+PLcom/android/server/backup/internal/BackupHandler;->dispatchMessageInternal(Landroid/os/Message;)V
+HPLcom/android/server/backup/internal/BackupHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/backup/internal/LifecycleOperationStorage;-><init>(I)V
+PLcom/android/server/backup/internal/RunInitializeReceiver;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/internal/SetupObserver;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/os/Handler;)V
+PLcom/android/server/backup/keyvalue/BackupRequest;-><init>(Ljava/lang/String;)V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;-><init>()V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;-><init>(Lcom/android/server/backup/transport/BackupTransportClient$TransportFutures-IA;)V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;->newFuture()Lcom/android/internal/infra/AndroidFuture;
+PLcom/android/server/backup/transport/BackupTransportClient$TransportFutures;->remove(Lcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;-><init>()V
+PLcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool;-><init>(Lcom/android/server/backup/transport/BackupTransportClient$TransportStatusCallbackPool-IA;)V
+PLcom/android/server/backup/transport/BackupTransportClient;-><init>(Lcom/android/internal/backup/IBackupTransport;)V
+PLcom/android/server/backup/transport/BackupTransportClient;->configurationIntent()Landroid/content/Intent;
+PLcom/android/server/backup/transport/BackupTransportClient;->currentDestinationString()Ljava/lang/String;
+PLcom/android/server/backup/transport/BackupTransportClient;->dataManagementIntent()Landroid/content/Intent;
+PLcom/android/server/backup/transport/BackupTransportClient;->dataManagementIntentLabel()Ljava/lang/CharSequence;
+HPLcom/android/server/backup/transport/BackupTransportClient;->getFutureResult(Lcom/android/internal/infra/AndroidFuture;)Ljava/lang/Object;
+PLcom/android/server/backup/transport/BackupTransportClient;->name()Ljava/lang/String;
+PLcom/android/server/backup/transport/BackupTransportClient;->transportDirName()Ljava/lang/String;
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda0;->onTransportConnectionResult(Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor-IA;)V
+PLcom/android/server/backup/transport/TransportConnection$TransportConnectionMonitor;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportConnection;->$r8$lambda$_NPv7c2usY4KXACL8fH382mvHRc(Ljava/util/concurrent/CompletableFuture;Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/transport/TransportConnection;->$r8$lambda$jVSSVWqIk1ltkKJM8W2iUWztX6Y(Lcom/android/server/backup/transport/TransportConnection;Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection;->-$$Nest$monServiceConnected(Lcom/android/server/backup/transport/TransportConnection;Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportConnection;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Landroid/content/Intent;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Handler;)V
+PLcom/android/server/backup/transport/TransportConnection;->checkState(ZLjava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->checkStateIntegrityLocked()V
+PLcom/android/server/backup/transport/TransportConnection;->connect(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;
+PLcom/android/server/backup/transport/TransportConnection;->connectAsync(Lcom/android/server/backup/transport/TransportConnectionListener;Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->connectOrThrow(Ljava/lang/String;)Lcom/android/server/backup/transport/BackupTransportClient;
+PLcom/android/server/backup/transport/TransportConnection;->finalize()V
+PLcom/android/server/backup/transport/TransportConnection;->lambda$connect$0(Ljava/util/concurrent/CompletableFuture;Lcom/android/server/backup/transport/BackupTransportClient;Lcom/android/server/backup/transport/TransportConnection;)V
+PLcom/android/server/backup/transport/TransportConnection;->lambda$notifyListener$1(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection;->log(ILjava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->log(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->markAsDisposed()V
+PLcom/android/server/backup/transport/TransportConnection;->notifyListener(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/server/backup/transport/BackupTransportClient;Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnection;->notifyListenersAndClearLocked(Lcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection;->onServiceConnected(Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportConnection;->onStateTransition(II)V
+HPLcom/android/server/backup/transport/TransportConnection;->saveLogEntry(Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportConnection;->setStateLocked(ILcom/android/server/backup/transport/BackupTransportClient;)V
+PLcom/android/server/backup/transport/TransportConnection;->stateToString(I)Ljava/lang/String;
+PLcom/android/server/backup/transport/TransportConnection;->toString()Ljava/lang/String;
+PLcom/android/server/backup/transport/TransportConnection;->transitionThroughState(III)I
+PLcom/android/server/backup/transport/TransportConnection;->unbind(Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnectionManager$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/backup/transport/TransportConnectionManager$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/backup/transport/TransportConnectionManager;->$r8$lambda$Pwv1Wjcrv8QltS66ojkBLq7QJvg(Landroid/content/ComponentName;)Landroid/content/Intent;
+PLcom/android/server/backup/transport/TransportConnectionManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;)V
+PLcom/android/server/backup/transport/TransportConnectionManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Ljava/util/function/Function;)V
+PLcom/android/server/backup/transport/TransportConnectionManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportConnection;Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportConnectionManager;->getRealTransportIntent(Landroid/content/ComponentName;)Landroid/content/Intent;
+PLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Landroid/os/Bundle;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportConnection;
+PLcom/android/server/backup/transport/TransportConnectionManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportConnection;
+PLcom/android/server/backup/transport/TransportStats$Stats;->-$$Nest$mregister(Lcom/android/server/backup/transport/TransportStats$Stats;J)V
+PLcom/android/server/backup/transport/TransportStats$Stats;-><init>()V
+PLcom/android/server/backup/transport/TransportStats$Stats;->register(J)V
+PLcom/android/server/backup/transport/TransportStats;-><init>()V
+PLcom/android/server/backup/transport/TransportStats;->registerConnectionTime(Landroid/content/ComponentName;J)V
+HPLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/transport/TransportUtils;->log(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/utils/BackupEligibilityRules;-><clinit>()V
+PLcom/android/server/backup/utils/BackupEligibilityRules;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/PackageManagerInternal;ILandroid/content/Context;I)V
+PLcom/android/server/backup/utils/BackupEligibilityRules;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/PackageManagerInternal;ILandroid/content/Context;IZ)V
+HPLcom/android/server/backup/utils/BackupEligibilityRules;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/backup/utils/BackupEligibilityRules;->appIsDisabled(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/backup/utils/BackupEligibilityRules;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/backup/utils/BackupEligibilityRules;->isAppBackupAllowed(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;-><clinit>()V
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;-><init>()V
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->deleteExpiredBMMEvents()Z
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->getSetUpDateFile()Ljava/io/File;
+PLcom/android/server/backup/utils/BackupManagerMonitorDumpsysUtils;->isAfterRetentionPeriod()Z
+PLcom/android/server/backup/utils/DataStreamFileCodec;-><init>(Ljava/io/File;Lcom/android/server/backup/utils/DataStreamCodec;)V
+PLcom/android/server/backup/utils/DataStreamFileCodec;->deserialize()Ljava/lang/Object;
+HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;)V
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;Lcom/android/server/biometrics/AuthService$AuthServiceImpl-IA;)V
+PLcom/android/server/biometrics/AuthService$Injector;-><init>()V
+PLcom/android/server/biometrics/AuthService$Injector;->getBiometricService()Landroid/hardware/biometrics/IBiometricService;
+PLcom/android/server/biometrics/AuthService$Injector;->getConfiguration(Landroid/content/Context;)[Ljava/lang/String;
+PLcom/android/server/biometrics/AuthService$Injector;->getFaceService()Landroid/hardware/face/IFaceService;
+PLcom/android/server/biometrics/AuthService$Injector;->getFingerprintService()Landroid/hardware/fingerprint/IFingerprintService;
+PLcom/android/server/biometrics/AuthService$Injector;->getIrisService()Landroid/hardware/iris/IIrisService;
+PLcom/android/server/biometrics/AuthService$Injector;->isHidlDisabled(Landroid/content/Context;)Z
+PLcom/android/server/biometrics/AuthService$Injector;->publishBinderService(Lcom/android/server/biometrics/AuthService;Landroid/hardware/biometrics/IAuthService$Stub;)V
+PLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/AuthService$Injector;)V
+PLcom/android/server/biometrics/AuthService;->access$000(Lcom/android/server/biometrics/AuthService;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/AuthService;->onStart()V
+PLcom/android/server/biometrics/AuthService;->registerAuthenticators([Lcom/android/server/biometrics/SensorConfig;)V
+PLcom/android/server/biometrics/BiometricCameraManagerImpl$1;-><init>(Lcom/android/server/biometrics/BiometricCameraManagerImpl;)V
+PLcom/android/server/biometrics/BiometricCameraManagerImpl;-><init>(Landroid/hardware/camera2/CameraManager;Landroid/hardware/SensorPrivacyManager;)V
+PLcom/android/server/biometrics/BiometricHandlerProvider;-><clinit>()V
+PLcom/android/server/biometrics/BiometricHandlerProvider;-><init>()V
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getBiometricCallbackHandler()Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getInstance()Lcom/android/server/biometrics/BiometricHandlerProvider;
+PLcom/android/server/biometrics/BiometricHandlerProvider;->getNewHandler(Ljava/lang/String;)Landroid/os/Handler;
+PLcom/android/server/biometrics/BiometricService$3;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;Lcom/android/server/biometrics/BiometricService$BiometricServiceWrapper-IA;)V
+PLcom/android/server/biometrics/BiometricService$Injector$$ExternalSyntheticLambda0;-><init>(Ljava/util/concurrent/atomic/AtomicLong;)V
+PLcom/android/server/biometrics/BiometricService$Injector;-><init>()V
+PLcom/android/server/biometrics/BiometricService$Injector;->getActivityManagerService()Landroid/app/IActivityManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricCameraManager(Landroid/content/Context;)Lcom/android/server/biometrics/BiometricCameraManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricContext(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContext;
+PLcom/android/server/biometrics/BiometricService$Injector;->getBiometricStrengthController(Lcom/android/server/biometrics/BiometricService;)Lcom/android/server/biometrics/BiometricStrengthController;
+PLcom/android/server/biometrics/BiometricService$Injector;->getDevicePolicyManager(Landroid/content/Context;)Landroid/app/admin/DevicePolicyManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
+PLcom/android/server/biometrics/BiometricService$Injector;->getKeyStore()Landroid/security/KeyStore;
+PLcom/android/server/biometrics/BiometricService$Injector;->getKeystoreAuthorizationService()Landroid/security/authorization/IKeystoreAuthorization;
+PLcom/android/server/biometrics/BiometricService$Injector;->getRequestGenerator()Ljava/util/function/Supplier;
+PLcom/android/server/biometrics/BiometricService$Injector;->getSettingObserver(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)Lcom/android/server/biometrics/BiometricService$SettingObserver;
+PLcom/android/server/biometrics/BiometricService$Injector;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
+PLcom/android/server/biometrics/BiometricService$Injector;->getTrustManager()Landroid/app/trust/ITrustManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->getUserManager(Landroid/content/Context;)Landroid/os/UserManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->publishBinderService(Lcom/android/server/biometrics/BiometricService;Landroid/hardware/biometrics/IBiometricService$Stub;)V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;->updateContentObserver()V
+PLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/BiometricService$Injector;Lcom/android/server/biometrics/BiometricHandlerProvider;)V
+PLcom/android/server/biometrics/BiometricService;->access$000(Lcom/android/server/biometrics/BiometricService;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/BiometricService;->onStart()V
+PLcom/android/server/biometrics/BiometricStrengthController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/biometrics/BiometricStrengthController;)V
+PLcom/android/server/biometrics/BiometricStrengthController;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricStrengthController;->startListening()V
+PLcom/android/server/biometrics/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/biometrics/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/biometrics/FeatureFlagsImpl;->deHidl()Z
+PLcom/android/server/biometrics/FeatureFlagsImpl;->load_overrides_biometrics_framework()V
+PLcom/android/server/biometrics/Flags;-><clinit>()V
+PLcom/android/server/biometrics/Flags;->deHidl()Z
+PLcom/android/server/biometrics/log/BiometricContext;->getInstance(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContext;
+PLcom/android/server/biometrics/log/BiometricContextProvider$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$1;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$2;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onDisplayStateChanged(I)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onFoldChanged(I)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$2;->onHardwareIgnoreTouchesChanged(Z)V
+PLcom/android/server/biometrics/log/BiometricContextProvider$3;-><init>(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmDisplayState(Lcom/android/server/biometrics/log/BiometricContextProvider;)I
+PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmFoldState(Lcom/android/server/biometrics/log/BiometricContextProvider;)I
+PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fgetmIsHardwareIgnoringTouches(Lcom/android/server/biometrics/log/BiometricContextProvider;)Z
+PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$fputmDisplayState(Lcom/android/server/biometrics/log/BiometricContextProvider;I)V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->-$$Nest$mnotifyChanged(Lcom/android/server/biometrics/log/BiometricContextProvider;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider;-><init>(Landroid/content/Context;Landroid/view/WindowManager;Lcom/android/internal/statusbar/IStatusBarService;Landroid/os/Handler;Lcom/android/server/biometrics/sensors/AuthSessionCoordinator;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->defaultProvider(Landroid/content/Context;)Lcom/android/server/biometrics/log/BiometricContextProvider;
+PLcom/android/server/biometrics/log/BiometricContextProvider;->notifyChanged()V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->notifySubscribers()V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->subscribeBiometricContextListener(Lcom/android/internal/statusbar/IStatusBarService;)V
+PLcom/android/server/biometrics/log/BiometricContextProvider;->subscribeDockState(Landroid/content/Context;)V
+PLcom/android/server/biometrics/sensors/AuthResultCoordinator;-><init>()V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator$RingBuffer;-><init>(I)V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator;-><init>()V
+PLcom/android/server/biometrics/sensors/AuthSessionCoordinator;-><init>(Ljava/time/Clock;)V
+PLcom/android/server/biometrics/sensors/MultiBiometricLockoutState;-><init>(Ljava/time/Clock;)V
+PLcom/android/server/blob/BlobStoreConfig$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties$$ExternalSyntheticLambda0;-><init>(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties;-><clinit>()V
+PLcom/android/server/blob/BlobStoreConfig$DeviceConfigProperties;->refresh(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/blob/BlobStoreConfig;-><clinit>()V
+PLcom/android/server/blob/BlobStoreConfig;->getBlobStoreRootDir()Ljava/io/File;
+PLcom/android/server/blob/BlobStoreConfig;->getIdleJobPeriodMs()J
+PLcom/android/server/blob/BlobStoreConfig;->initialize(Landroid/content/Context;)V
+PLcom/android/server/blob/BlobStoreIdleJobService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/blob/BlobStoreManagerInternal;-><init>()V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$BlobStorageStatsAugmenter-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$Injector;-><init>()V
+PLcom/android/server/blob/BlobStoreManagerService$Injector;->getBackgroundHandler()Landroid/os/Handler;
+PLcom/android/server/blob/BlobStoreManagerService$Injector;->initializeMessageHandler()Landroid/os/Handler;
+PLcom/android/server/blob/BlobStoreManagerService$LocalService;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$LocalService;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$LocalService-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$PackageChangedReceiver-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$SessionStateChangeListener;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$Stub;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$Stub;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$Stub-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService$UserActionReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;)V
+PLcom/android/server/blob/BlobStoreManagerService$UserActionReceiver;-><init>(Lcom/android/server/blob/BlobStoreManagerService;Lcom/android/server/blob/BlobStoreManagerService$UserActionReceiver-IA;)V
+PLcom/android/server/blob/BlobStoreManagerService;->-$$Nest$sminitializeMessageHandler()Landroid/os/Handler;
+PLcom/android/server/blob/BlobStoreManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/blob/BlobStoreManagerService;-><init>(Landroid/content/Context;Lcom/android/server/blob/BlobStoreManagerService$Injector;)V
+PLcom/android/server/blob/BlobStoreManagerService;->getAllPackages()Landroid/util/SparseArray;
+PLcom/android/server/blob/BlobStoreManagerService;->initializeMessageHandler()Landroid/os/Handler;
+PLcom/android/server/blob/BlobStoreManagerService;->onBootPhase(I)V
+PLcom/android/server/blob/BlobStoreManagerService;->onStart()V
+PLcom/android/server/blob/BlobStoreManagerService;->readBlobSessionsLocked(Landroid/util/SparseArray;)V
+PLcom/android/server/blob/BlobStoreManagerService;->readBlobsInfoLocked(Landroid/util/SparseArray;)V
+PLcom/android/server/blob/BlobStoreManagerService;->registerBlobStorePuller()V
+PLcom/android/server/blob/BlobStoreManagerService;->registerReceivers()V
+PLcom/android/server/clipboard/ClipboardService$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/clipboard/ClipboardService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
+PLcom/android/server/clipboard/ClipboardService$2;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl$ClipboardClearHandler;-><init>(Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;Landroid/os/Looper;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$ClipboardImpl-IA;)V
+PLcom/android/server/clipboard/ClipboardService;->-$$Nest$fgetmWorkerHandler(Lcom/android/server/clipboard/ClipboardService;)Landroid/os/Handler;
+HPLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/clipboard/ClipboardService;->onStart()V
+PLcom/android/server/clipboard/ClipboardService;->registerVirtualDeviceListener()V
+PLcom/android/server/clipboard/ClipboardService;->updateConfig()V
+PLcom/android/server/companion/AssociationRequestsProcessor$1;-><init>(Lcom/android/server/companion/AssociationRequestsProcessor;Landroid/os/Handler;)V
+PLcom/android/server/companion/AssociationRequestsProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/AssociationStoreImpl;)V
+PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda2;-><init>(Ljava/lang/String;)V
+PLcom/android/server/companion/AssociationStoreImpl$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/companion/AssociationStoreImpl;->$r8$lambda$60CakuEfGvN-UOxE0riiWYdRC3c(Landroid/companion/AssociationInfo;)V
+PLcom/android/server/companion/AssociationStoreImpl;->$r8$lambda$ca2RCDmyc2KpZMlfSXZiv2X6IYw(Ljava/lang/String;Landroid/companion/AssociationInfo;)Z
+PLcom/android/server/companion/AssociationStoreImpl;-><init>()V
+PLcom/android/server/companion/AssociationStoreImpl;->checkNotRevoked(Landroid/companion/AssociationInfo;)V
+PLcom/android/server/companion/AssociationStoreImpl;->clearLocked()V
+PLcom/android/server/companion/AssociationStoreImpl;->getAssociations()Ljava/util/Collection;
+PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForPackage(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForUser(I)Ljava/util/List;
+PLcom/android/server/companion/AssociationStoreImpl;->getAssociationsForUserLocked(I)Ljava/util/List;
+PLcom/android/server/companion/AssociationStoreImpl;->lambda$getAssociationsForPackage$2(Ljava/lang/String;Landroid/companion/AssociationInfo;)Z
+PLcom/android/server/companion/AssociationStoreImpl;->registerListener(Lcom/android/server/companion/AssociationStore$OnChangeListener;)V
+PLcom/android/server/companion/AssociationStoreImpl;->setAssociations(Ljava/util/Collection;)V
+PLcom/android/server/companion/AssociationStoreImpl;->setAssociationsLocked(Ljava/util/Collection;)V
+PLcom/android/server/companion/BackupRestoreProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/AssociationStoreImpl;Lcom/android/server/companion/PersistentDataStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/AssociationRequestsProcessor;)V
+PLcom/android/server/companion/CompanionApplicationController$AndroidPackageMap;-><init>()V
+PLcom/android/server/companion/CompanionApplicationController$AndroidPackageMap;-><init>(Lcom/android/server/companion/CompanionApplicationController$AndroidPackageMap-IA;)V
+PLcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister;-><init>(Lcom/android/server/companion/CompanionApplicationController;)V
+PLcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister;-><init>(Lcom/android/server/companion/CompanionApplicationController;Lcom/android/server/companion/CompanionApplicationController$CompanionServicesRegister-IA;)V
+PLcom/android/server/companion/CompanionApplicationController;-><init>(Landroid/content/Context;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor;Landroid/os/PowerManagerInternal;)V
+PLcom/android/server/companion/CompanionDeviceConfig;->isEnabled(Ljava/lang/String;)Z
+PLcom/android/server/companion/CompanionDeviceManagerService$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/companion/CompanionDeviceManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$2;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$3;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->addOnAssociationsChangedListener(Landroid/companion/IOnAssociationsChangedListener;I)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAllAssociationsForUser(I)Ljava/util/List;
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/companion/CompanionDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/server/companion/CompanionDeviceManagerService$LocalService-IA;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$OnPackageVisibilityChangeListener;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/app/ActivityManager;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$PerUserAssociationSet;-><init>()V
+PLcom/android/server/companion/CompanionDeviceManagerService$PersistUserStateHandler;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->$r8$lambda$qPiDU_hiTPYcITYcno5QR8cQB_I(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->-$$Nest$fgetmAssociationStore(Lcom/android/server/companion/CompanionDeviceManagerService;)Lcom/android/server/companion/AssociationStoreImpl;
+PLcom/android/server/companion/CompanionDeviceManagerService;->-$$Nest$fgetmListeners(Lcom/android/server/companion/CompanionDeviceManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/companion/CompanionDeviceManagerService;-><clinit>()V
+HPLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->getFirstAssociationIdForUser(I)I
+PLcom/android/server/companion/CompanionDeviceManagerService;->getLastAssociationIdForUser(I)I
+PLcom/android/server/companion/CompanionDeviceManagerService;->loadAssociationsFromDisk()V
+PLcom/android/server/companion/CompanionDeviceManagerService;->maybeGrantAutoRevokeExemptions()V
+PLcom/android/server/companion/CompanionDeviceManagerService;->onBootPhase(I)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V
+PLcom/android/server/companion/CompanionDeviceManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->updateAtm(ILjava/util/List;)V
+PLcom/android/server/companion/DataStoreUtils;->createStorageFileForUser(ILjava/lang/String;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/DataStoreUtils;->getBaseStorageFileForUser(ILjava/lang/String;)Ljava/io/File;
+PLcom/android/server/companion/DataStoreUtils;->isEndOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/companion/DataStoreUtils;->isStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/companion/InactiveAssociationsRemovalService;-><clinit>()V
+PLcom/android/server/companion/InactiveAssociationsRemovalService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/ObservableUuidStore;I)V
+PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
+PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda3;-><init>(I)V
+PLcom/android/server/companion/ObservableUuidStore$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/ObservableUuidStore;->$r8$lambda$JBvSPiYXxTY9FJ_T7R_PkgjUDKs(Lcom/android/server/companion/ObservableUuidStore;I)Ljava/util/List;
+PLcom/android/server/companion/ObservableUuidStore;->$r8$lambda$SWFzFG4e-xRsk2J9VzL5XRljRuw(ILjava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/ObservableUuidStore;-><init>()V
+PLcom/android/server/companion/ObservableUuidStore;->getObservableUuidsForUser(I)Ljava/util/List;
+PLcom/android/server/companion/ObservableUuidStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
+PLcom/android/server/companion/ObservableUuidStore;->lambda$getStorageFileForUser$6(ILjava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/ObservableUuidStore;->lambda$readObservableUuidsFromCache$5(I)Ljava/util/List;
+PLcom/android/server/companion/ObservableUuidStore;->readObservableUuidFromStore(I)Ljava/util/List;
+PLcom/android/server/companion/ObservableUuidStore;->readObservableUuidsFromCache(I)Ljava/util/List;
+PLcom/android/server/companion/PermissionsUtils;-><clinit>()V
+PLcom/android/server/companion/PermissionsUtils;->checkCallerCanManageAssociationsForPackage(Landroid/content/Context;ILjava/lang/String;)Z
+PLcom/android/server/companion/PermissionsUtils;->checkCallerCanManageCompanionDevice(Landroid/content/Context;)Z
+PLcom/android/server/companion/PermissionsUtils;->checkCallerIsSystemOr(ILjava/lang/String;)Z
+PLcom/android/server/companion/PermissionsUtils;->enforceCallerCanManageAssociationsForPackage(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/companion/PermissionsUtils;->enforceCallerIsSystemOrCanInteractWithUserId(Landroid/content/Context;I)V
+PLcom/android/server/companion/PersistentDataStore$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/companion/PersistentDataStore$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/PersistentDataStore;->$r8$lambda$kZ79xCqh_OiIBnJ6GaylVqvy9jA(ILjava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/PersistentDataStore;-><init>()V
+PLcom/android/server/companion/PersistentDataStore;->createAssociationInfoNoThrow(IILjava/lang/String;Ljava/lang/String;Landroid/net/MacAddress;Ljava/lang/CharSequence;Ljava/lang/String;ZZZZJJI)Landroid/companion/AssociationInfo;
+PLcom/android/server/companion/PersistentDataStore;->getStorageFileForUser(I)Landroid/util/AtomicFile;
+PLcom/android/server/companion/PersistentDataStore;->lambda$getStorageFileForUser$1(ILjava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/PersistentDataStore;->readAssociationV1(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/util/Collection;)V
+PLcom/android/server/companion/PersistentDataStore;->readAssociationsV1(Lcom/android/modules/utils/TypedXmlPullParser;ILjava/util/Collection;)V
+PLcom/android/server/companion/PersistentDataStore;->readPreviouslyUsedIdsV1(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
+PLcom/android/server/companion/PersistentDataStore;->readStateForUser(ILjava/util/Collection;Ljava/util/Map;)V
+PLcom/android/server/companion/PersistentDataStore;->readStateForUsers(Ljava/util/List;Ljava/util/Set;Landroid/util/SparseArray;)V
+PLcom/android/server/companion/PersistentDataStore;->readStateFromFileLocked(ILandroid/util/AtomicFile;Ljava/lang/String;Ljava/util/Collection;Ljava/util/Map;)I
+PLcom/android/server/companion/PersistentDataStore;->readStateFromInputStream(ILjava/io/InputStream;Ljava/lang/String;Ljava/util/Collection;Ljava/util/Map;)I
+PLcom/android/server/companion/PersistentDataStore;->requireStartOfTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
+PLcom/android/server/companion/PersistentDataStore;->stringToMacAddress(Ljava/lang/String;)Landroid/net/MacAddress;
+PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor$1;-><init>(Lcom/android/server/companion/datatransfer/SystemDataTransferProcessor;)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor$2;-><init>(Lcom/android/server/companion/datatransfer/SystemDataTransferProcessor;Landroid/os/Handler;)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferProcessor;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;Lcom/android/server/companion/transport/CompanionTransportManager;)V
+PLcom/android/server/companion/datatransfer/SystemDataTransferRequestStore;-><init>()V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$1;-><init>(Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$1;->onTransportsChanged(Ljava/util/List;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$2;-><init>(Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$CallManager;-><init>(Landroid/content/Context;Lcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$PhoneAccountManager;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController$PhoneAccountManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;-><init>(Landroid/content/Context;Lcom/android/server/companion/transport/CompanionTransportManager;)V
+PLcom/android/server/companion/datatransfer/contextsync/CrossDeviceSyncController;->onBootCompleted()V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner$1;-><init>(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner$2;-><init>(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->-$$Nest$mcheckBleState(Lcom/android/server/companion/presence/BleCompanionDeviceScanner;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;-><clinit>()V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;-><init>(Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/presence/BleCompanionDeviceScanner$Callback;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->checkBleState()V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->enforceInitialized()V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->init(Landroid/content/Context;Landroid/bluetooth/BluetoothAdapter;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->registerBluetoothStateBroadcastReceiver(Landroid/content/Context;)V
+PLcom/android/server/companion/presence/BleCompanionDeviceScanner;->startScan()V
+PLcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener;-><init>(Landroid/os/UserManager;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener$Callback;)V
+PLcom/android/server/companion/presence/BluetoothCompanionDeviceConnectionListener;->init(Landroid/bluetooth/BluetoothAdapter;)V
+PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor$SimulatedDevicePresenceSchedulerHelper;-><init>(Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor;)V
+PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;-><init>(Landroid/os/UserManager;Lcom/android/server/companion/AssociationStore;Lcom/android/server/companion/ObservableUuidStore;Lcom/android/server/companion/presence/CompanionDevicePresenceMonitor$Callback;)V
+PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;->getPendingConnectedDevices()Landroid/util/SparseArray;
+PLcom/android/server/companion/presence/CompanionDevicePresenceMonitor;->init(Landroid/content/Context;)V
+PLcom/android/server/companion/transport/CompanionTransportManager$$ExternalSyntheticLambda0;-><init>(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;)V
+PLcom/android/server/companion/transport/CompanionTransportManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;->$r8$lambda$Nes8XDMe0_gDmUo7HQHaB-4pP6I(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;Landroid/companion/IOnTransportsChangedListener;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;-><init>(Landroid/content/Context;Lcom/android/server/companion/AssociationStore;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;->addListener(ILandroid/companion/IOnMessageReceivedListener;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;->addListener(Landroid/companion/IOnTransportsChangedListener;)V
+PLcom/android/server/companion/transport/CompanionTransportManager;->lambda$addListener$0(Landroid/companion/IOnTransportsChangedListener;Ljava/util/List;Landroid/companion/IOnTransportsChangedListener;)V
+PLcom/android/server/companion/virtual/VirtualDeviceLog;-><clinit>()V
+PLcom/android/server/companion/virtual/VirtualDeviceLog;-><init>(Landroid/content/Context;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerInternal;-><init>()V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$1;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$2;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$2;->onInterceptActivityLaunch(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptResult;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;Lcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService-IA;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getAllPersistentDeviceIds()Ljava/util/Set;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdForDisplayId(I)I
+HPLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getDeviceIdsForUid(I)Landroid/util/ArraySet;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->getPreferredLocaleListForUid(I)Landroid/os/LocaleList;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$LocalService;->registerPersistentDeviceIdRemovedListener(Ljava/util/function/Consumer;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;->remove(Ljava/lang/String;)Lcom/android/server/companion/virtual/VirtualDeviceImpl$PendingTrampoline;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl$1;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->getDeviceIdForDisplayId(I)I
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;->registerVirtualDeviceListener(Landroid/companion/virtual/IVirtualDeviceListener;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerNativeImpl;-><init>(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)V
+HPLcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerNativeImpl;->getDeviceIdsForUid(I)[I
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmActiveAssociations(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmAppsOnVirtualDevices(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmImpl(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerService$VirtualDeviceManagerImpl;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmLocalService(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerInternal;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmPendingTrampolines(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Lcom/android/server/companion/virtual/VirtualDeviceManagerService$PendingTrampolineMap;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmVirtualDeviceListeners(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$fgetmVirtualDeviceManagerLock(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Ljava/lang/Object;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->-$$Nest$mgetVirtualDevicesSnapshot(Lcom/android/server/companion/virtual/VirtualDeviceManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;-><clinit>()V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/companion/virtual/VirtualDeviceManagerService;->getVirtualDevicesSnapshot()Ljava/util/ArrayList;
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->onCdmAssociationsChanged(Ljava/util/List;)V
+PLcom/android/server/companion/virtual/VirtualDeviceManagerService;->onStart()V
+HSPLcom/android/server/compat/CompatChange;-><init>(JLjava/lang/String;IIZZLjava/lang/String;Z)V
+HSPLcom/android/server/compat/CompatChange;-><init>(Lcom/android/server/compat/config/Change;)V
+HSPLcom/android/server/compat/CompatChange;->clearOverrides()V
+PLcom/android/server/compat/CompatChange;->defaultValue()Z
+HPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;Lcom/android/internal/compat/AndroidBuildClassifier;)Z
+PLcom/android/server/compat/CompatChange;->registerListener(Lcom/android/server/compat/CompatChange$ChangeListener;)V
+HPLcom/android/server/compat/CompatChange;->willBeEnabled(Ljava/lang/String;)Z
+PLcom/android/server/compat/CompatConfig$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/compat/CompatConfig;Ljava/util/concurrent/atomic/AtomicBoolean;J)V
+HSPLcom/android/server/compat/CompatConfig;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)V
+HSPLcom/android/server/compat/CompatConfig;->create(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)Lcom/android/server/compat/CompatConfig;
+HPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
+HSPLcom/android/server/compat/CompatConfig;->initConfigFromLib(Ljava/io/File;)V
+HSPLcom/android/server/compat/CompatConfig;->initOverrides()V
+HSPLcom/android/server/compat/CompatConfig;->initOverrides(Ljava/io/File;Ljava/io/File;)V
+HSPLcom/android/server/compat/CompatConfig;->invalidateCache()V
+HPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
+HSPLcom/android/server/compat/CompatConfig;->loadOverrides(Ljava/io/File;)V
+HSPLcom/android/server/compat/CompatConfig;->makeBackupFile(Ljava/io/File;)Ljava/io/File;
+HSPLcom/android/server/compat/CompatConfig;->readConfig(Ljava/io/File;)V
+PLcom/android/server/compat/CompatConfig;->registerContentObserver()V
+PLcom/android/server/compat/CompatConfig;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
+HPLcom/android/server/compat/CompatConfig;->willChangeBeEnabled(JLjava/lang/String;)Z
+PLcom/android/server/compat/OverrideValidatorImpl$SettingsObserver;-><init>(Lcom/android/server/compat/OverrideValidatorImpl;)V
+HSPLcom/android/server/compat/OverrideValidatorImpl;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;Lcom/android/server/compat/CompatConfig;)V
+PLcom/android/server/compat/OverrideValidatorImpl;->registerContentObserver()V
+PLcom/android/server/compat/PlatformCompat$1;-><init>(Lcom/android/server/compat/PlatformCompat;)V
+HSPLcom/android/server/compat/PlatformCompat;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/compat/PlatformCompat;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUid(JI)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByUidInternal(JI)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLandroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternal(JLjava/lang/String;I)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledInternalNoLogging(JLandroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/compat/PlatformCompat;->registerContentObserver()V
+PLcom/android/server/compat/PlatformCompat;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
+PLcom/android/server/compat/PlatformCompat;->registerPackageReceiver(Landroid/content/Context;)V
+PLcom/android/server/compat/PlatformCompat;->reportChangeInternal(JII)V
+HPLcom/android/server/compat/PlatformCompat;->resetReporting(Landroid/content/pm/ApplicationInfo;)V
+HSPLcom/android/server/compat/PlatformCompatNative;-><init>(Lcom/android/server/compat/PlatformCompat;)V
+HSPLcom/android/server/compat/config/Change;-><init>()V
+HSPLcom/android/server/compat/config/Change;->getDescription()Ljava/lang/String;
+HSPLcom/android/server/compat/config/Change;->getDisabled()Z
+HSPLcom/android/server/compat/config/Change;->getEnableAfterTargetSdk()I
+HSPLcom/android/server/compat/config/Change;->getEnableSinceTargetSdk()I
+HSPLcom/android/server/compat/config/Change;->getId()J
+HSPLcom/android/server/compat/config/Change;->getLoggingOnly()Z
+HSPLcom/android/server/compat/config/Change;->getName()Ljava/lang/String;
+HSPLcom/android/server/compat/config/Change;->getOverridable()Z
+HSPLcom/android/server/compat/config/Change;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Change;
+HSPLcom/android/server/compat/config/Change;->setDescription(Ljava/lang/String;)V
+HSPLcom/android/server/compat/config/Change;->setDisabled(Z)V
+HSPLcom/android/server/compat/config/Change;->setEnableAfterTargetSdk(I)V
+HSPLcom/android/server/compat/config/Change;->setEnableSinceTargetSdk(I)V
+HSPLcom/android/server/compat/config/Change;->setId(J)V
+HSPLcom/android/server/compat/config/Change;->setName(Ljava/lang/String;)V
+HSPLcom/android/server/compat/config/Change;->setOverridable(Z)V
+HSPLcom/android/server/compat/config/Change;->setValue(Ljava/lang/String;)V
+HSPLcom/android/server/compat/config/Config;-><init>()V
+HSPLcom/android/server/compat/config/Config;->getCompatChange()Ljava/util/List;
+HSPLcom/android/server/compat/config/Config;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/compat/config/Config;
+HSPLcom/android/server/compat/config/XmlParser;->read(Ljava/io/InputStream;)Lcom/android/server/compat/config/Config;
+HSPLcom/android/server/compat/config/XmlParser;->readText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
+PLcom/android/server/compat/overrides/AppCompatOverridesParser;-><clinit>()V
+PLcom/android/server/compat/overrides/AppCompatOverridesParser;-><init>(Landroid/content/pm/PackageManager;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;->-$$Nest$mregister(Lcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Ljava/lang/String;Lcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener-IA;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$DeviceConfigListener;->register()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$Lifecycle;->onStart()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;->-$$Nest$mregister(Lcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;-><init>(Lcom/android/server/compat/overrides/AppCompatOverridesService;Landroid/content/Context;Lcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver-IA;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService$PackageReceiver;->register()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;-><clinit>()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;Lcom/android/internal/compat/IPlatformCompat;Ljava/util/List;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;-><init>(Landroid/content/Context;Lcom/android/server/compat/overrides/AppCompatOverridesService-IA;)V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;->registerDeviceConfigListeners()V
+PLcom/android/server/compat/overrides/AppCompatOverridesService;->registerPackageReceiver()V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;-><init>()V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->newDefaultNetwork(JLandroid/net/Network;IZLandroid/net/LinkProperties;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/connectivity/IpConnectivityMetrics$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforceNetdEventListeningPermission()V
+PLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;Lcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl-IA;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->$r8$lambda$vBvdubbZbE8NJB5mMZ6KhHRxliM(Landroid/content/Context;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics;-><clinit>()V
+PLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;Ljava/util/function/ToIntFunction;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->bufferCapacity()I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->initBuffer()V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->lambda$static$1(Landroid/content/Context;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBuckets()Landroid/util/ArrayMap;
+PLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V
+PLcom/android/server/connectivity/MultipathPolicyTracker$1;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$2;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Lcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver-IA;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;-><init>()V
+PLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;->getClock()Ljava/time/Clock;
+PLcom/android/server/connectivity/MultipathPolicyTracker$SettingsObserver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/os/Handler;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker;-><clinit>()V
+PLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker;->registerNetworkPolicyListener()V
+PLcom/android/server/connectivity/MultipathPolicyTracker;->registerTrackMobileCallback()V
+PLcom/android/server/connectivity/MultipathPolicyTracker;->start()V
+PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;-><init>()V
+PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->collect(JLandroid/util/SparseArray;)Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
+PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;-><init>(Lcom/android/server/connectivity/NetdEventListenerService;)V
+PLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;-><init>(Lcom/android/server/connectivity/NetdEventListenerService;Lcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback-IA;)V
+HPLcom/android/server/connectivity/NetdEventListenerService$TransportForNetIdNetworkCallback;->getNetworkCapabilities(I)Landroid/net/NetworkCapabilities;
+PLcom/android/server/connectivity/NetdEventListenerService;-><clinit>()V
+PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/net/ConnectivityManager;)V
+PLcom/android/server/connectivity/NetdEventListenerService;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
+HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(JZ)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;
+PLcom/android/server/connectivity/NetdEventListenerService;->isValidCallerType(I)Z
+PLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
+PLcom/android/server/connectivity/NetdEventListenerService;->projectSnapshotTime(J)J
+PLcom/android/server/connectivity/PacProxyService$1;-><init>(Lcom/android/server/connectivity/PacProxyService;)V
+PLcom/android/server/connectivity/PacProxyService$PacRefreshIntentReceiver;-><init>(Lcom/android/server/connectivity/PacProxyService;)V
+PLcom/android/server/connectivity/PacProxyService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/connectivity/PacProxyService;->addListener(Landroid/net/IPacProxyInstalledListener;)V
+PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;)V
+PLcom/android/server/connectivity/Vpn$Dependencies;-><init>()V
+PLcom/android/server/connectivity/Vpn$Ikev2SessionCreator;-><init>()V
+PLcom/android/server/connectivity/Vpn$SystemServices;-><init>(Landroid/content/Context;)V
+PLcom/android/server/connectivity/Vpn$SystemServices;->getContentResolverAsUser(I)Landroid/content/ContentResolver;
+PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
+PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetStringForUser(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/connectivity/Vpn;-><clinit>()V
+PLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetd;ILcom/android/server/connectivity/VpnProfileStore;)V
+HPLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/connectivity/Vpn$Dependencies;Landroid/os/INetworkManagementService;Landroid/net/INetd;ILcom/android/server/connectivity/VpnProfileStore;Lcom/android/server/connectivity/Vpn$SystemServices;Lcom/android/server/connectivity/Vpn$Ikev2SessionCreator;)V
+PLcom/android/server/connectivity/Vpn;->doesPackageTargetAtLeastQ(Ljava/lang/String;)Z
+PLcom/android/server/connectivity/Vpn;->enforceControlPermissionOrInternalCaller()V
+PLcom/android/server/connectivity/Vpn;->getAlwaysOnPackage()Ljava/lang/String;
+PLcom/android/server/connectivity/Vpn;->getAppUid(Landroid/content/Context;Ljava/lang/String;I)I
+PLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z
+PLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z
+PLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V
+PLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z
+PLcom/android/server/connectivity/Vpn;->setAlwaysOnPackageInternal(Ljava/lang/String;ZLjava/util/List;)Z
+PLcom/android/server/connectivity/Vpn;->setVpnForcedLocked(Z)V
+PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z
+PLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V
+PLcom/android/server/connectivity/VpnProfileStore;-><init>()V
+PLcom/android/server/connectivity/VpnProfileStore;->get(Ljava/lang/String;)[B
+PLcom/android/server/content/ContentService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/ContentService;)V
+PLcom/android/server/content/ContentService$1;-><init>(Lcom/android/server/content/ContentService;)V
+PLcom/android/server/content/ContentService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/content/ContentService$Lifecycle;->onStart()V
+PLcom/android/server/content/ContentService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/content/ContentService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
+PLcom/android/server/content/ContentService$ObserverCollector$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/content/ContentService$ObserverCollector$Key;-><init>(Landroid/database/IContentObserver;IZII)V
+HPLcom/android/server/content/ContentService$ObserverCollector$Key;->hashCode()I
+PLcom/android/server/content/ContentService$ObserverCollector;->$r8$lambda$Enmwrm6HznBNY378PKC1kmqC6_o(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
+HPLcom/android/server/content/ContentService$ObserverCollector;-><init>()V
+HPLcom/android/server/content/ContentService$ObserverCollector;->collect(Landroid/database/IContentObserver;IZLandroid/net/Uri;II)V
+HPLcom/android/server/content/ContentService$ObserverCollector;->dispatch()V
+HPLcom/android/server/content/ContentService$ObserverCollector;->lambda$dispatch$0(Lcom/android/server/content/ContentService$ObserverCollector$Key;Ljava/util/List;)V
+PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->-$$Nest$fgetuserHandle(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V
+PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
+HPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V
+HPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
+HPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V
+HPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;IILandroid/database/IContentObserver;ZIILcom/android/server/content/ContentService$ObserverCollector;)V
+HPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I
+HPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;
+HPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z
+PLcom/android/server/content/ContentService;->-$$Nest$sfgetsObserverDeathDispatcher()Lcom/android/internal/os/BinderDeathDispatcher;
+PLcom/android/server/content/ContentService;-><clinit>()V
+PLcom/android/server/content/ContentService;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V
+PLcom/android/server/content/ContentService;->getProcStateForStatsd(I)I
+HPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;I)Ljava/lang/String;
+PLcom/android/server/content/ContentService;->getRestrictionLevelForStatsd(I)I
+HPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/content/ContentService;->getSyncExemptionAndCleanUpExtrasForCaller(ILandroid/os/Bundle;)I
+HPLcom/android/server/content/ContentService;->getSyncExemptionForCaller(I)I
+HPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
+HPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I
+HPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V
+HPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
+PLcom/android/server/content/ContentService;->onBootPhase(I)V
+PLcom/android/server/content/ContentService;->onStartUser(I)V
+PLcom/android/server/content/ContentService;->onUnlockUser(I)V
+HPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V
+HPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;-><init>(Lcom/android/server/content/SyncLogger$RotatingFileLogger;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->log(J[Ljava/lang/Object;)V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><clinit>()V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;-><init>()V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z
+PLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V
+PLcom/android/server/content/SyncLogger;-><init>()V
+PLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger;
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/content/SyncManager$10;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$1;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$2;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$3;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$4;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/content/SyncManager$5;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/content/SyncManager$6;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$6;->run()V
+PLcom/android/server/content/SyncManager$7;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$8;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$9;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$PackageMonitorImpl;-><init>()V
+PLcom/android/server/content/SyncManager$PackageMonitorImpl;-><init>(Lcom/android/server/content/SyncManager$PackageMonitorImpl-IA;)V
+PLcom/android/server/content/SyncManager$PackageMonitorImpl;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZLandroid/os/Bundle;)Z
+PLcom/android/server/content/SyncManager$PackageMonitorImpl;->onPackageUnstopped(Ljava/lang/String;ILandroid/os/Bundle;)V
+PLcom/android/server/content/SyncManager$SyncHandler;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$SyncTimeTracker-IA;)V
+PLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
+PLcom/android/server/content/SyncManager;->$r8$lambda$W-Rf2gPTxsU_UZt2y9rLu7Qfz_o(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager;->$r8$lambda$stKFIA2giNVVLgh3fNVz1esLG_U(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager;->-$$Nest$fgetmAccountsLock(Lcom/android/server/content/SyncManager;)Ljava/lang/Object;
+PLcom/android/server/content/SyncManager;->-$$Nest$fgetmLogger(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger;
+PLcom/android/server/content/SyncManager;->-$$Nest$fgetmRunningAccounts(Lcom/android/server/content/SyncManager;)[Landroid/accounts/AccountAndUser;
+PLcom/android/server/content/SyncManager;->-$$Nest$fgetmSyncManagerWakeLock(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/content/SyncManager;->-$$Nest$fgetmSyncStorageEngine(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine;
+PLcom/android/server/content/SyncManager;->-$$Nest$fputmDataConnectionIsConnected(Lcom/android/server/content/SyncManager;Z)V
+PLcom/android/server/content/SyncManager;->-$$Nest$fputmRunningAccounts(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)V
+PLcom/android/server/content/SyncManager;->-$$Nest$mgetAllPendingSyncs(Lcom/android/server/content/SyncManager;)Ljava/util/List;
+PLcom/android/server/content/SyncManager;->-$$Nest$monUserUnlocked(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager;->-$$Nest$mreadDataConnectionState(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->-$$Nest$mremoveStaleAccounts(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager;-><clinit>()V
+HPLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/content/SyncManager;->allowListExistingSyncAdaptersIfNeeded()V
+PLcom/android/server/content/SyncManager;->cleanupJobs()V
+PLcom/android/server/content/SyncManager;->getAccountManagerInternal()Landroid/accounts/AccountManagerInternal;
+PLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
+PLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager;
+PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String;
+HPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;II)[Ljava/lang/String;
+PLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z
+PLcom/android/server/content/SyncManager;->lambda$onStartUser$1(I)V
+PLcom/android/server/content/SyncManager;->lambda$onUnlockUser$2(I)V
+PLcom/android/server/content/SyncManager;->likelyHasPeriodicSyncs()Z
+PLcom/android/server/content/SyncManager;->migrateSyncJobNamespaceIfNeeded()V
+PLcom/android/server/content/SyncManager;->onBootPhase(I)V
+PLcom/android/server/content/SyncManager;->onStartUser(I)V
+PLcom/android/server/content/SyncManager;->onUnlockUser(I)V
+PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V
+PLcom/android/server/content/SyncManager;->readDataConnectionState()Z
+PLcom/android/server/content/SyncManager;->removeStaleAccounts()V
+HPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;IIILjava/lang/String;)V
+PLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IIIILjava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V
+PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->verifyJobScheduler()V
+PLcom/android/server/content/SyncManagerConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/content/SyncManagerConstants;)V
+PLcom/android/server/content/SyncManagerConstants$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/content/SyncManagerConstants;->$r8$lambda$C0hj3KUN5qSzbVr_vPnWooTwtTU(Lcom/android/server/content/SyncManagerConstants;)V
+PLcom/android/server/content/SyncManagerConstants;-><init>(Landroid/content/Context;)V
+PLcom/android/server/content/SyncManagerConstants;->lambda$start$0()V
+PLcom/android/server/content/SyncManagerConstants;->refresh()V
+PLcom/android/server/content/SyncManagerConstants;->start()V
+PLcom/android/server/content/SyncStorageEngine$EndPoint;-><clinit>()V
+PLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
+PLcom/android/server/content/SyncStorageEngine$MyHandler;-><init>(Lcom/android/server/content/SyncStorageEngine;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncStorageEngine;-><clinit>()V
+HPLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncStorageEngine;->getAuthorityCount()I
+PLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine;
+PLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/content/SyncStorageEngine;->isJobAttributionFixed()Z
+PLcom/android/server/content/SyncStorageEngine;->isJobNamespaceMigrated()Z
+PLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V
+PLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V
+PLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V
+PLcom/android/server/content/SyncStorageEngine;->readStatusInfoLocked(Ljava/io/InputStream;)V
+PLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V
+PLcom/android/server/content/SyncStorageEngine;->removeStaleAccounts([Landroid/accounts/Account;I)V
+PLcom/android/server/content/SyncStorageEngine;->setClockValid()V
+PLcom/android/server/content/SyncStorageEngine;->setOnAuthorityRemovedListener(Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;)V
+PLcom/android/server/content/SyncStorageEngine;->setOnSyncRequestListener(Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;)V
+PLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;)V
+PLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z
+PLcom/android/server/content/SyncStorageEngine;->upgradeStatisticsIfNeededLocked()V
+PLcom/android/server/content/SyncStorageEngine;->upgradeStatusIfNeededLocked()V
+PLcom/android/server/coverage/CoverageService;-><clinit>()V
+HPLcom/android/server/cpu/CpuAvailabilityInfo;-><init>(IJIIJ)V
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda1;->accept(Ljava/io/File;)Z
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/cpu/CpuInfoReader$$ExternalSyntheticLambda2;->accept(Ljava/io/File;)Z
+HPLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
+PLcom/android/server/cpu/CpuInfoReader$CpuInfo;-><init>(IIZJJJLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)V
+HPLcom/android/server/cpu/CpuInfoReader$CpuInfo;->computeNormalizedAvailableCpuFreqKHz()J
+PLcom/android/server/cpu/CpuInfoReader$CpuInfo;->getNormalizedAvailableCpuFreqKHz()J
+HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;-><init>(JJJJJJJJJJ)V
+HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->delta(Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;)Lcom/android/server/cpu/CpuInfoReader$CpuUsageStats;
+PLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->diff(JJ)J
+HPLcom/android/server/cpu/CpuInfoReader$CpuUsageStats;->getTotalTimeMillis()J
+PLcom/android/server/cpu/CpuInfoReader$DynamicPolicyInfo;-><init>(JJJLandroid/util/IntArray;)V
+PLcom/android/server/cpu/CpuInfoReader$StaticPolicyInfo;-><init>(Landroid/util/IntArray;)V
+PLcom/android/server/cpu/CpuInfoReader;->$r8$lambda$jQBUynzxWR2ZUcdjqmjLMG5hjjk(Ljava/io/File;)Z
+PLcom/android/server/cpu/CpuInfoReader;-><clinit>()V
+PLcom/android/server/cpu/CpuInfoReader;-><init>()V
+PLcom/android/server/cpu/CpuInfoReader;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;J)V
+PLcom/android/server/cpu/CpuInfoReader;->calculateAvgCpuFreq(Landroid/util/LongSparseLongArray;)J
+PLcom/android/server/cpu/CpuInfoReader;->calculateDeltaTimeInState(Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;)Landroid/util/LongSparseLongArray;
+PLcom/android/server/cpu/CpuInfoReader;->clockTickStrToMillis(Ljava/lang/String;)J
+PLcom/android/server/cpu/CpuInfoReader;->init()Z
+PLcom/android/server/cpu/CpuInfoReader;->lambda$init$0(Ljava/io/File;)Z
+PLcom/android/server/cpu/CpuInfoReader;->populateCpuFreqPolicyDirsById([Ljava/io/File;)V
+HPLcom/android/server/cpu/CpuInfoReader;->readAvgTimeInStateCpuFrequency(ILjava/io/File;)J
+HPLcom/android/server/cpu/CpuInfoReader;->readCpuCores(Ljava/io/File;)Landroid/util/IntArray;
+HPLcom/android/server/cpu/CpuInfoReader;->readCpuFreqKHz(Ljava/io/File;)J
+HPLcom/android/server/cpu/CpuInfoReader;->readCpuInfos()Landroid/util/SparseArray;
+PLcom/android/server/cpu/CpuInfoReader;->readCpusetCategories()V
+HPLcom/android/server/cpu/CpuInfoReader;->readCumulativeCpuUsageStats()Landroid/util/SparseArray;
+HPLcom/android/server/cpu/CpuInfoReader;->readDynamicPolicyInfo()Landroid/util/SparseArray;
+HPLcom/android/server/cpu/CpuInfoReader;->readLatestCpuUsageStats()Landroid/util/SparseArray;
+PLcom/android/server/cpu/CpuInfoReader;->readStaticPolicyInfo()V
+HPLcom/android/server/cpu/CpuInfoReader;->readTimeInState(Ljava/io/File;)Landroid/util/LongSparseLongArray;
+PLcom/android/server/cpu/CpuMonitorInternal;-><init>()V
+PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
+PLcom/android/server/cpu/CpuMonitorService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/cpu/CpuMonitorService$1;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
+PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder$1;-><init>(Lcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;)V
+PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;-><init>(Lcom/android/server/cpu/CpuMonitorService;)V
+PLcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder;-><init>(Lcom/android/server/cpu/CpuMonitorService;Lcom/android/server/cpu/CpuMonitorService$CpuMonitorBinder-IA;)V
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;-><init>(J)V
+HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->appendCpuInfo(Lcom/android/server/cpu/CpuInfoReader$CpuInfo;)V
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo$Snapshot;->getAverageAvailableCpuFreqPercent()I
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;-><init>(I)V
+HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->appendCpuInfo(JLcom/android/server/cpu/CpuInfoReader$CpuInfo;)V
+HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getCumulativeAvgAvailabilityPercent(J)I
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getLatestCpuAvailabilityInfo()Lcom/android/server/cpu/CpuAvailabilityInfo;
+PLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->getPrevCpuAvailabilityPercent()I
+HPLcom/android/server/cpu/CpuMonitorService$CpusetInfo;->populateLatestCpuAvailabilityInfo(JJ)V
+PLcom/android/server/cpu/CpuMonitorService;->$r8$lambda$5b7hWobM0wDK4hsjD37skajm2e8(Lcom/android/server/cpu/CpuMonitorService;)V
+PLcom/android/server/cpu/CpuMonitorService;->-$$Nest$sfgetCACHE_DURATION_MILLISECONDS()J
+PLcom/android/server/cpu/CpuMonitorService;->-$$Nest$smcontainsCpuset(II)Z
+PLcom/android/server/cpu/CpuMonitorService;-><clinit>()V
+PLcom/android/server/cpu/CpuMonitorService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/cpu/CpuMonitorService;-><init>(Landroid/content/Context;Lcom/android/server/cpu/CpuInfoReader;Landroid/os/HandlerThread;ZJJJ)V
+PLcom/android/server/cpu/CpuMonitorService;->checkClientThresholdsAndNotifyLocked(Lcom/android/server/cpu/CpuMonitorService$CpusetInfo;)V
+PLcom/android/server/cpu/CpuMonitorService;->containsCpuset(II)Z
+PLcom/android/server/cpu/CpuMonitorService;->hasClientCallbacksLocked()Z
+HPLcom/android/server/cpu/CpuMonitorService;->monitorCpuStats()V
+PLcom/android/server/cpu/CpuMonitorService;->onStart()V
+HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/criticalevents/CriticalEventLog;)V
+PLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/criticalevents/CriticalEventLog;Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
+HSPLcom/android/server/criticalevents/CriticalEventLog$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;-><init>()V
+HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;->load(Ljava/io/File;Lcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;)V
+HSPLcom/android/server/criticalevents/CriticalEventLog$LogLoader;->loadLogFromFile(Ljava/io/File;)Lcom/android/server/criticalevents/nano/CriticalEventLogStorageProto;
+PLcom/android/server/criticalevents/CriticalEventLog$LogSanitizer;-><init>(ILjava/lang/String;I)V
+PLcom/android/server/criticalevents/CriticalEventLog$LogSanitizer;->process(Lcom/android/server/criticalevents/nano/CriticalEventProto;)Lcom/android/server/criticalevents/nano/CriticalEventProto;
+HSPLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;-><init>(Ljava/lang/Class;I)V
+HSPLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->append(Ljava/lang/Object;)V
+PLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->capacity()I
+PLcom/android/server/criticalevents/CriticalEventLog$ThreadSafeRingBuffer;->toArray()[Ljava/lang/Object;
+HSPLcom/android/server/criticalevents/CriticalEventLog;->$r8$lambda$lY5bRq3e1qTEzCvfI4SPBg_RsKI(Lcom/android/server/criticalevents/CriticalEventLog;Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
+HSPLcom/android/server/criticalevents/CriticalEventLog;-><clinit>()V
+HSPLcom/android/server/criticalevents/CriticalEventLog;-><init>()V
+HSPLcom/android/server/criticalevents/CriticalEventLog;-><init>(Ljava/lang/String;IIJZLcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
+PLcom/android/server/criticalevents/CriticalEventLog;->appendAndSave(Lcom/android/server/criticalevents/nano/CriticalEventProto;)V
+HSPLcom/android/server/criticalevents/CriticalEventLog;->getInstance()Lcom/android/server/criticalevents/CriticalEventLog;
+PLcom/android/server/criticalevents/CriticalEventLog;->getOutputLogProto(ILjava/lang/String;I)Lcom/android/server/criticalevents/nano/CriticalEventLogProto;
+PLcom/android/server/criticalevents/CriticalEventLog;->getWallTimeMillis()J
+HSPLcom/android/server/criticalevents/CriticalEventLog;->init()V
+HSPLcom/android/server/criticalevents/CriticalEventLog;->lambda$new$0(Lcom/android/server/criticalevents/CriticalEventLog$ILogLoader;)V
+PLcom/android/server/criticalevents/CriticalEventLog;->log(Lcom/android/server/criticalevents/nano/CriticalEventProto;)V
+PLcom/android/server/criticalevents/CriticalEventLog;->logAnr(Ljava/lang/String;ILjava/lang/String;II)V
+PLcom/android/server/criticalevents/CriticalEventLog;->logLinesForTraceFile(ILjava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/criticalevents/CriticalEventLog;->logSystemServerStarted()V
+PLcom/android/server/criticalevents/CriticalEventLog;->recentEventsWithMinTimestamp(J)[Lcom/android/server/criticalevents/nano/CriticalEventProto;
+PLcom/android/server/criticalevents/CriticalEventLog;->saveDelayMs()J
+PLcom/android/server/criticalevents/CriticalEventLog;->saveLogToFile()V
+PLcom/android/server/criticalevents/CriticalEventLog;->saveLogToFileNow()V
+HPLcom/android/server/devicepolicy/CallerIdentity;-><init>(ILjava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/CallerIdentity;->getPackageName()Ljava/lang/String;
+PLcom/android/server/devicepolicy/CallerIdentity;->getUid()I
+PLcom/android/server/devicepolicy/CallerIdentity;->getUserId()I
+PLcom/android/server/devicepolicy/CertificateMonitor$1;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;)V
+PLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/CertificateMonitor;->-$$Nest$mupdateInstalledCertificates(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V
+PLcom/android/server/devicepolicy/CertificateMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V
+PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;-><init>()V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;->environmentGetDataSystemDirectory()Ljava/io/File;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;)V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter-IA;)V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider$ResourcesReaderWriter;->readFromFileLocked()V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->-$$Nest$mgetResourcesFile(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;)Ljava/io/File;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;-><init>()V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;-><init>(Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider$Injector;)V
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getDrawable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getDrawableForSourceLocked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getResourcesFile()Ljava/io/File;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->getString(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DeviceManagementResourcesProvider;->load()V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;-><init>()V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getScreenCaptureDisallowedUser()I
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->isScreenCaptureAllowed(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->isScreenCaptureAllowedInPolicyEngine(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setAdminCanGrantSensorsPermissions(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setPasswordQuality(II)V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setPermissionPolicy(II)V
+PLcom/android/server/devicepolicy/DevicePolicyConstants;-><init>(Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyConstants;->loadFromString(Ljava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyConstants;
+HPLcom/android/server/devicepolicy/DevicePolicyData;-><init>(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyData;->load(Lcom/android/server/devicepolicy/DevicePolicyData;Lcom/android/internal/util/JournaledFile;Ljava/util/function/Function;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyData;->validatePasswordOwner()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$$ExternalSyntheticLambda6;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;-><init>(Lcom/android/server/devicepolicy/DevicePolicyEngine;Lcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter-IA;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine$DevicePoliciesReaderWriter;->readFromFileLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->$r8$lambda$HEsFA9ci1FtT28qaffzy5LIPWrk(Lcom/android/server/devicepolicy/DevicePolicyEngine;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;-><clinit>()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/DeviceAdminServiceController;Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->clear()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->getEnforcingAdminsOnUser(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->handlePackageChanged(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->handleStartUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->handleUnlockUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->lambda$handlePackageChanged$6(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->load()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->reapplyAllPoliciesLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyEngine;->updateDeviceAdminsServicesForUser(IZLjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda100;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda100;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda102;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda102;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda113;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda132;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda132;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda142;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda142;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda161;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILandroid/app/role/RoleManager;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda161;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda163;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda163;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda177;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda177;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda17;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda188;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda188;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda192;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda192;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda195;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda195;->runOrThrow()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda199;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda199;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda27;->runOrThrow()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda38;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda42;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda46;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda55;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda55;->run()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda68;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda68;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda6;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda72;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda72;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda80;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/CallerIdentity;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda80;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda86;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda89;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$$ExternalSyntheticLambda89;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$1;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1$1;->run()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$1;->sendDeviceOwnerUserCommand(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$2;-><init>()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;-><clinit>()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->doInBackground([Ljava/lang/Void;)Ljava/util/Map;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->onPostExecute(Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->onPostExecute(Ljava/util/Map;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$CalculateHasIncompatibleAccountsTask;->userHasIncompatibleAccounts(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;->register()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyManagementRoleObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyManagementRoleObserver;->register()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider-IA;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$DpmsUpgradeDataProvider;->makePoliciesVersionJournaledFile(I)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityTaskManagerInternal()Lcom/android/server/wm/ActivityTaskManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDeviceManagementResourcesProvider()Lcom/android/server/devicepolicy/DeviceManagementResourcesProvider;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPermissionManager()Landroid/permission/IPermissionManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getLockSettingsInternal()Lcom/android/internal/widget/LockSettingsInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getMyLooper()Landroid/os/Looper;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNetworkPolicyManagerInternal()Lcom/android/server/net/NetworkPolicyManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManager()Landroid/content/pm/PackageManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPersistentDataBlockManagerInternal()Lcom/android/server/pdb/PersistentDataBlockManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getPowerManagerInternal()Landroid/os/PowerManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getRoleManager()Landroid/app/role/RoleManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getTelephonyManager()Landroid/telephony/TelephonyManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->hasFeature()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->keyChainBindAsUser(Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newTransferOwnershipMetadataManager()Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->postOnSystemServerInitThreadPool(Ljava/lang/Runnable;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->securityLogIsLoggingEnabled()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetInt(Ljava/lang/String;I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesSet(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDeviceOwnerUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDevicePolicyCache()Landroid/app/admin/DevicePolicyCache;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getProfileOwnerOrDeviceOwnerSupervisionComponent(Landroid/os/UserHandle;)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isDeviceOrProfileOwnerInCallingUser(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isDeviceOwnerInCallingUser(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isProfileOwnerInCallingUser(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;-><init>(Landroid/content/Context;Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->resetCrossProfileIntentFiltersIfNeeded(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->resetUserVpnIfNeeded(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$UserLifecycleListener-IA;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$-_z8hGRIb6pQyXYE8_6ZYacGvbw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$-q-2R58XHKASAfVcXG9652E3rcY(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$4qgfaLwflxT886ZjrVckFVIasDk(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$6U9Tynmb-Pyx3o9fk3BZ0wh6q3E(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Lcom/android/server/devicepolicy/DevicePolicyData;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$8VXyNGD0KwgqhXPdcXu1QbxETRQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$Brh1ZdbohpkBgCPUEetYswzjMkc(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CJDroM2Uh4rlsgC9LEZ9aehyHXM(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CRXhnBHjweCG-8NoO_CQy53GYYk(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$CYNFk6GsglGWHquGPD3vL3X-AUg(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$DyPvkrBjVftwiLi5cgJUKifQ0U0(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$JMLEf7na_pJZ1NV2yiBbR9cYggU(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$OK7dCZ1VEShdEVYkeM54BypjnE8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$U1W3GVfS6PTjHhnIoEaSz9WC9vo(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$Yyzr3b2Kx_xWuoVgRMQEA4r_WrQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$bycuYzhfY5R_qaetM6pnmUlgRYw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$i6aIKV8B6wjNaZ4yPJzuaqQ_iKs(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$iNjWxaW0J6MCxP6Dq9qZBTkpUPU(Landroid/content/Context;)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$l-CexO0TUb2n-ZZT32CKYYMXM8Q(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILandroid/app/role/RoleManager;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$nLvlTqg9n5B_Pl5TtcgHJOhZ3Bw(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$oJwZkF-N5rTQ3VjihBKUVksj8oQ(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$qyL5CPTjIZuQtn8bTDK3nNCBcR8(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->$r8$lambda$y2NbOOaPwzvcsyukbUhSG1v0a0I(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Landroid/content/pm/UserInfo;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$fgetmPolicyCache(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DevicePolicyCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$fputmHasIncompatibleAccounts(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/util/Map;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mhandlePackagesChanged(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mhandlePasswordExpirationNotification(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$misManagedProfile(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$misNetworkLoggingEnabledInternalLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mmakeJournaledFile(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/lang/String;)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mmaybeSendAdminEnabledBroadcastLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->-$$Nest$mupdatePersonalAppsSuspensionOnUserStart(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><clinit>()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->applyManagedSubscriptionsPolicyIfRequired()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->applyProfileRestrictionsIfDeviceOwnerLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->calculateHasIncompatibleAccounts()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canManageUsers(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUsbDataSignalingBeDisabledInternal(Landroid/content/Context;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkCanExecuteOrThrowUnsafe(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->doesCallerHoldRole(Lcom/android/server/devicepolicy/CallerIdentity;Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermission(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforcePermissionAndGetEnforcingAdmin(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/devicepolicy/EnforcingAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->factoryResetIfDelayedEarlier()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->fetchOemSystemHolders([I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->fixupAutoTimeRestrictionDuringOrganizationOwnedDeviceMigration()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminPackagesLocked(I)Ljava/util/Set;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForUserAndItsManagedProfilesLocked(ILjava/util/function/Predicate;)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity()Lcom/android/server/devicepolicy/CallerIdentity;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;)Lcom/android/server/devicepolicy/CallerIdentity;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCallerIdentity(Ljava/lang/String;)Lcom/android/server/devicepolicy/CallerIdentity;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDefaultRoleHolderPackageName(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOrProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponentOnUser(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerName()Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceOrSystemPermissionBasedAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserIdUncheckedLocked()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDpcType(Lcom/android/server/devicepolicy/CallerIdentity;)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDrawable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFactoryResetProtectionPolicy(Landroid/content/ComponentName;)Landroid/app/admin/FactoryResetProtectionPolicy;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFrpManagementAgentUid()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getFrpManagementAgentUidOrThrow()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMainUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getManagedUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getManagedUserId(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumTimeToLockPolicyFromAdmins(Ljava/util/List;)J
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMeteredDisabledPackages(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getNetworkLoggingAffectedUser()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getNetworkLoggingControllingAdminLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOrganizationOwnedProfileUserId()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerComponent(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPolicyFileDirectory(I)Ljava/io/File;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPolicyManagedProfiles(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPowerManagerInternal()Landroid/os/PowerManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerName(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerNameUnchecked(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOfOrganizationOwnedDeviceLocked()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOrDeviceOwnerLocked(I)Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOrDeviceOwnerSupervisionComponent(Landroid/os/UserHandle;)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentUserIfRequested(IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRoleHolderPackageNameOnUser(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getString(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUnsafeOperationReason(I)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyData;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyData;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserProvisioningState(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleOnUserUnlocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExpirationNotification(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCallingOrSelfPermission(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFullCrossUsersPermission(Lcom/android/server/devicepolicy/CallerIdentity;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasPermission(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->invalidateBinderCaches()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerDevicePolicyManagementRoleHolder(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallingFromPackage(Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCommonCriteriaModeEnabled(Landroid/content/ComponentName;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDefaultDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerLocked(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerUserId(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isFinancedDeviceOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isOrganizationOwnedDeviceWithManagedProfile()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPermissionCheckFlagEnabled()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Lcom/android/server/devicepolicy/CallerIdentity;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSupervisionComponentLocked(Landroid/content/ComponentName;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUnicornFlagEnabled()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUsbDataSignalingEnabledInternalLocked()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUserAffiliatedWithDeviceLocked(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$canUsbDataSignalingBeDisabledInternal$179(Landroid/content/Context;)Ljava/lang/Boolean;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getActiveAdminsForUserAndItsManagedProfilesLocked$22(ILjava/util/ArrayList;Ljava/util/function/Predicate;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getDrawable$185(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getNetworkLoggingAffectedUser$146()Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPolicyManagedProfiles$196(I)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileOwnerOfOrganizationOwnedDeviceLocked$83()Lcom/android/server/devicepolicy/ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$86(I)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getRoleHolderPackageNameOnUser$173(ILandroid/app/role/RoleManager;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getString$189(Ljava/lang/String;)Landroid/app/admin/ParcelableResource;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserDataUnchecked$5(I)Lcom/android/server/devicepolicy/DevicePolicyData;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserInfo$38(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isProfileOwner$73(Lcom/android/server/devicepolicy/CallerIdentity;)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isSeparateProfileChallengeEnabled$24(I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$loadAdminDataAsync$14()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateAccountManagementDisabledPolicyLocked$203()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migratePermittedInputMethodsPolicyLocked$202()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migratePoliciesToDevicePolicyEngine$200()Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateScreenCapturePolicyLocked$201()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$migrateUserControlDisabledPackagesLocked$204()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setExpirationAlarmCheckLocked$6(ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$shouldMigrateToDevicePolicyEngine$199()Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateMaximumTimeToLockLocked$40(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadAdminDataAsync()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadConstants()Lcom/android/server/devicepolicy/DevicePolicyConstants;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadSettingsLocked(Lcom/android/server/devicepolicy/DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(ILjava/lang/String;)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeOwners(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Lcom/android/server/devicepolicy/PolicyPathProvider;)Lcom/android/server/devicepolicy/Owners;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeLogStart()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSendAdminEnabledBroadcastLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeStartSecurityLogMonitorOnActivityManagerReady()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateAccountManagementDisabledPolicyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migratePermittedInputMethodsPolicyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migratePoliciesToDevicePolicyEngine()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateScreenCapturePolicyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateToProfileOnOrganizationOwnedDeviceIfCompLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserControlDisabledPackagesLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->performPolicyVersionUpgrade()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushActiveAdminPackages()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushAllMeteredRestrictedPackages()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->revertTransferOwnershipIfNecessaryLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnershipSystemPropertyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserControlDisabledPackages(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->shouldMigrateToDevicePolicyEngine()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->showNewUserDisclaimerIfNecessary(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->suspendPersonalAppsInternal(IIZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->unsuspendWorkAppsIfNecessary()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateAdminCanGrantSensorsPermissionCache(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateNetworkPreferenceForUser(ILjava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordQualityCacheForUserGroup(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePermissionPolicyCache(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePersonalAppsSuspensionOnUserStart(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateSystemUpdateFreezePeriodsRecord(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUsbDataSignal(Landroid/content/Context;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;-><init>()V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setDeviceOwnerType(I)V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setDeviceProvisioned(Z)V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setHasProfileOwner(IZ)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>()V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>(Lcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector-IA;)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><clinit>()V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/OverlayPackagesProvider$Injector;)V
+PLcom/android/server/devicepolicy/Owners$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/devicepolicy/Owners$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/devicepolicy/Owners;->$r8$lambda$6w4HWUbvXPWGKa7vKtQD2v4JRdk(Landroid/content/pm/UserInfo;)I
+PLcom/android/server/devicepolicy/Owners;-><init>(Landroid/os/UserManager;Lcom/android/server/pm/UserManagerInternal;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/ActivityManagerInternal;Lcom/android/server/devicepolicy/DeviceStateCacheImpl;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUidLocked()I
+HPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerUserId()I
+HPLcom/android/server/devicepolicy/Owners;->getProfileOwnerComponent(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set;
+PLcom/android/server/devicepolicy/Owners;->getProfileOwnerUidsLocked()Ljava/util/Set;
+PLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
+HPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
+PLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z
+PLcom/android/server/devicepolicy/Owners;->isMigratedToPolicyEngine()Z
+PLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
+PLcom/android/server/devicepolicy/Owners;->lambda$load$0(Landroid/content/pm/UserInfo;)I
+PLcom/android/server/devicepolicy/Owners;->load()V
+PLcom/android/server/devicepolicy/Owners;->markMigrationToPolicyEngine()V
+PLcom/android/server/devicepolicy/Owners;->notifyChangeLocked()V
+PLcom/android/server/devicepolicy/Owners;->pushDeviceOwnerUidToActivityTaskManagerLocked()V
+PLcom/android/server/devicepolicy/Owners;->pushProfileOwnerUidsToActivityTaskManagerLocked()V
+PLcom/android/server/devicepolicy/Owners;->pushToActivityManagerLocked()V
+PLcom/android/server/devicepolicy/Owners;->pushToAppOpsLocked()V
+PLcom/android/server/devicepolicy/Owners;->pushToDevicePolicyManager()V
+PLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V
+PLcom/android/server/devicepolicy/Owners;->systemReady()V
+PLcom/android/server/devicepolicy/OwnersData$DeviceOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/OwnersData;)V
+PLcom/android/server/devicepolicy/OwnersData$DeviceOwnerReadWriter;->shouldWrite()Z
+PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;-><init>(Ljava/io/File;)V
+PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;->readFromFileLocked()V
+PLcom/android/server/devicepolicy/OwnersData$FileReadWriter;->writeToFileLocked()Z
+PLcom/android/server/devicepolicy/OwnersData$ProfileOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/OwnersData;I)V
+PLcom/android/server/devicepolicy/OwnersData;-><init>(Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/OwnersData;->getDeviceOwnerFile()Ljava/io/File;
+PLcom/android/server/devicepolicy/OwnersData;->getProfileOwnerFile(I)Ljava/io/File;
+PLcom/android/server/devicepolicy/OwnersData;->load([I)V
+PLcom/android/server/devicepolicy/OwnersData;->writeDeviceOwner()Z
+PLcom/android/server/devicepolicy/PolicyPathProvider;->getDataSystemDirectory()Ljava/io/File;
+PLcom/android/server/devicepolicy/PolicyPathProvider;->getUserSystemDirectory(I)Ljava/io/File;
+PLcom/android/server/devicepolicy/PolicyVersionUpgrader;-><init>(Lcom/android/server/devicepolicy/PolicyUpgraderDataProvider;Lcom/android/server/devicepolicy/PolicyPathProvider;)V
+PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->getVersionFile()Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->readVersion()I
+PLcom/android/server/devicepolicy/PolicyVersionUpgrader;->upgradePolicy(I)V
+PLcom/android/server/devicepolicy/RemoteBugreportManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
+PLcom/android/server/devicepolicy/RemoteBugreportManager$1;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
+PLcom/android/server/devicepolicy/RemoteBugreportManager$2;-><init>(Lcom/android/server/devicepolicy/RemoteBugreportManager;)V
+PLcom/android/server/devicepolicy/RemoteBugreportManager;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;-><clinit>()V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;J)V
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;-><init>()V
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;->getOwnerTransferMetadataDir()Ljava/io/File;
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><clinit>()V
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>()V
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>(Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;)V
+PLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;->metadataFileExists()Z
+PLcom/android/server/devicestate/DeviceState;-><init>(ILjava/lang/String;I)V
+PLcom/android/server/devicestate/DeviceState;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/devicestate/DeviceState;->getIdentifier()I
+PLcom/android/server/devicestate/DeviceState;->getName()Ljava/lang/String;
+PLcom/android/server/devicestate/DeviceState;->hasFlag(I)Z
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda0;->setDebugTracingDeviceStateProperty(Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/devicestate/DeviceStateManagerService$1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$1;->onForegroundActivitiesChanged(IIZ)V
+PLcom/android/server/devicestate/DeviceStateManagerService$1;->onForegroundServicesChanged(III)V
+PLcom/android/server/devicestate/DeviceStateManagerService$1;->onProcessDied(II)V
+PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$BinderService-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$BinderService;->registerCallback(Landroid/hardware/devicestate/IDeviceStateManagerCallback;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;->onStateChanged(I)V
+PLcom/android/server/devicestate/DeviceStateManagerService$DeviceStateProviderListener;->onSupportedDeviceStatesChanged([Lcom/android/server/devicestate/DeviceState;I)V
+PLcom/android/server/devicestate/DeviceStateManagerService$LocalService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$LocalService;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$LocalService-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService;Lcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver-IA;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$OverrideRequestScreenObserver;->onKeyguardStateChanged(Z)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;Landroid/hardware/devicestate/DeviceStateInfo;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->$r8$lambda$nIhPLI20eH9RacaP39kxGqE_dy4(Lcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;Landroid/hardware/devicestate/DeviceStateInfo;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;-><init>(Landroid/hardware/devicestate/IDeviceStateManagerCallback;ILcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord$DeathListener;Landroid/os/Handler;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->lambda$notifyDeviceStateInfoAsync$0(Landroid/hardware/devicestate/DeviceStateInfo;)V
+PLcom/android/server/devicestate/DeviceStateManagerService$ProcessRecord;->notifyDeviceStateInfoAsync(Landroid/hardware/devicestate/DeviceStateInfo;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$6S_FM3Urv4lHJLVX2jHkYwHw8e8(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$77DysMvX-MjvuW05plFI2snaWgo(Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->$r8$lambda$Pt9nYBQnPB5YrI3sLG37X4OCyMY(Lcom/android/server/devicestate/DeviceStateManagerService;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$fgetmLock(Lcom/android/server/devicestate/DeviceStateManagerService;)Ljava/lang/Object;
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mregisterProcess(Lcom/android/server/devicestate/DeviceStateManagerService;ILandroid/hardware/devicestate/IDeviceStateManagerCallback;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$msetBaseState(Lcom/android/server/devicestate/DeviceStateManagerService;I)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mshouldCancelOverrideRequestWhenRequesterNotOnTop(Lcom/android/server/devicestate/DeviceStateManagerService;)Z
+PLcom/android/server/devicestate/DeviceStateManagerService;->-$$Nest$mupdateSupportedStates(Lcom/android/server/devicestate/DeviceStateManagerService;[Lcom/android/server/devicestate/DeviceState;I)V
+PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;Lcom/android/server/devicestate/DeviceStatePolicy;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;-><init>(Landroid/content/Context;Lcom/android/server/devicestate/DeviceStatePolicy;Lcom/android/server/devicestate/DeviceStateManagerService$SystemPropertySetter;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->commitPendingState()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->getDeviceStateInfoLocked()Landroid/hardware/devicestate/DeviceStateInfo;
+PLcom/android/server/devicestate/DeviceStateManagerService;->getStateLocked(I)Ljava/util/Optional;
+PLcom/android/server/devicestate/DeviceStateManagerService;->getSupportedStateIdentifiersLocked()[I
+PLcom/android/server/devicestate/DeviceStateManagerService;->isSupportedStateLocked(I)Z
+PLcom/android/server/devicestate/DeviceStateManagerService;->lambda$new$0(Ljava/lang/String;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->notifyDeviceStateInfoChangedAsync()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->notifyPolicyIfNeeded()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->onStart()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->readFoldedStates()Ljava/util/Set;
+PLcom/android/server/devicestate/DeviceStateManagerService;->readStatesAvailableForRequestFromApps()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->registerProcess(ILandroid/hardware/devicestate/IDeviceStateManagerCallback;)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->setBaseState(I)V
+PLcom/android/server/devicestate/DeviceStateManagerService;->setRearDisplayStateLocked()V
+PLcom/android/server/devicestate/DeviceStateManagerService;->shouldCancelOverrideRequestWhenRequesterNotOnTop()Z
+PLcom/android/server/devicestate/DeviceStateManagerService;->updatePendingStateLocked()Z
+PLcom/android/server/devicestate/DeviceStateManagerService;->updateSupportedStates([Lcom/android/server/devicestate/DeviceState;I)V
+PLcom/android/server/devicestate/DeviceStateNotificationController$NotificationInfoProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicestate/DeviceStateNotificationController;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V
+PLcom/android/server/devicestate/DeviceStateNotificationController;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;Lcom/android/server/devicestate/DeviceStateNotificationController$NotificationInfoProvider;Landroid/content/pm/PackageManager;Landroid/app/NotificationManager;)V
+PLcom/android/server/devicestate/DeviceStatePolicy$DefaultProvider;-><init>()V
+PLcom/android/server/devicestate/DeviceStatePolicy$DefaultProvider;->instantiate(Landroid/content/Context;)Lcom/android/server/devicestate/DeviceStatePolicy;
+PLcom/android/server/devicestate/DeviceStatePolicy$Provider;->fromResources(Landroid/content/res/Resources;)Lcom/android/server/devicestate/DeviceStatePolicy$Provider;
+PLcom/android/server/devicestate/DeviceStatePolicy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/devicestate/OverrideRequestController;-><init>(Lcom/android/server/devicestate/OverrideRequestController$StatusChangeListener;)V
+PLcom/android/server/devicestate/OverrideRequestController;->cancelStickyRequest()V
+PLcom/android/server/devicestate/OverrideRequestController;->handleBaseStateChanged(I)V
+PLcom/android/server/devicestate/OverrideRequestController;->handleNewSupportedStates([II)V
+PLcom/android/server/devicestate/OverrideRequestController;->setStickyRequestsAllowed(Z)V
+HSPLcom/android/server/display/BrightnessMappingStrategy;-><clinit>()V
+PLcom/android/server/display/BrightnessMappingStrategy;->create(Landroid/content/Context;Lcom/android/server/display/DisplayDeviceConfig;ILcom/android/server/display/whitebalance/DisplayWhiteBalanceController;)Lcom/android/server/display/BrightnessMappingStrategy;
+HSPLcom/android/server/display/BrightnessMappingStrategy;->getFloatArray(Landroid/content/res/TypedArray;)[F
+PLcom/android/server/display/BrightnessMappingStrategy;->isValidMapping([F[F)Z
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda4;-><init>(Ljava/lang/Runnable;)V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/BrightnessRangeController;I)V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda5;->getAsBoolean()Z
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/BrightnessRangeController;I)V
+PLcom/android/server/display/BrightnessRangeController$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/display/BrightnessRangeController;->$r8$lambda$dKtp9_j8KRcoYxWMg8d00hzlVN0(Lcom/android/server/display/BrightnessRangeController;I)V
+PLcom/android/server/display/BrightnessRangeController;->$r8$lambda$zpmKQQW2rDvBS46nbBqX3mXvWvI(Lcom/android/server/display/BrightnessRangeController;I)Z
+PLcom/android/server/display/BrightnessRangeController;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)V
+PLcom/android/server/display/BrightnessRangeController;-><init>(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/brightness/clamper/HdrClamper;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)V
+PLcom/android/server/display/BrightnessRangeController;->applyChanges(Ljava/util/function/BooleanSupplier;Ljava/lang/Runnable;)V
+HPLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMax()F
+PLcom/android/server/display/BrightnessRangeController;->getCurrentBrightnessMin()F
+PLcom/android/server/display/BrightnessRangeController;->getHighBrightnessMode()I
+PLcom/android/server/display/BrightnessRangeController;->getTransitionPoint()F
+PLcom/android/server/display/BrightnessRangeController;->lambda$setAutoBrightnessEnabled$4(I)Z
+PLcom/android/server/display/BrightnessRangeController;->lambda$setAutoBrightnessEnabled$5(I)V
+PLcom/android/server/display/BrightnessRangeController;->onBrightnessChanged(FFI)V
+PLcom/android/server/display/BrightnessRangeController;->setAutoBrightnessEnabled(I)V
+PLcom/android/server/display/BrightnessRangeController;->updateHdrClamper(Lcom/android/server/display/DisplayDeviceInfo;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceConfig;)V
+PLcom/android/server/display/BrightnessSetting$1;-><init>(Lcom/android/server/display/BrightnessSetting;Landroid/os/Looper;)V
+PLcom/android/server/display/BrightnessSetting;-><init>(ILcom/android/server/display/PersistentDataStore;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayManagerService$SyncRoot;)V
+PLcom/android/server/display/BrightnessSetting;->getBrightness()F
+PLcom/android/server/display/BrightnessSetting;->registerListener(Lcom/android/server/display/BrightnessSetting$BrightnessSettingListener;)V
+PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/BrightnessThrottler$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/display/BrightnessThrottler$DeviceConfigListener;-><init>(Lcom/android/server/display/BrightnessThrottler;)V
+PLcom/android/server/display/BrightnessThrottler$DeviceConfigListener;->startListening()V
+PLcom/android/server/display/BrightnessThrottler$Injector;-><init>()V
+PLcom/android/server/display/BrightnessThrottler$Injector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
+PLcom/android/server/display/BrightnessThrottler$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/BrightnessThrottler;Lcom/android/server/display/BrightnessThrottler$Injector;Landroid/os/Handler;)V
+PLcom/android/server/display/BrightnessThrottler$SkinThermalStatusObserver;->stopObserving()V
+PLcom/android/server/display/BrightnessThrottler;->-$$Nest$fgetmConfigParameterProvider(Lcom/android/server/display/BrightnessThrottler;)Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+PLcom/android/server/display/BrightnessThrottler;->-$$Nest$fgetmDeviceConfigHandler(Lcom/android/server/display/BrightnessThrottler;)Landroid/os/Handler;
+PLcom/android/server/display/BrightnessThrottler;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/display/BrightnessThrottler;-><clinit>()V
+PLcom/android/server/display/BrightnessThrottler;-><init>(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
+PLcom/android/server/display/BrightnessThrottler;-><init>(Lcom/android/server/display/BrightnessThrottler$Injector;Landroid/os/Handler;Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V
+PLcom/android/server/display/BrightnessThrottler;->deviceSupportsThrottling()Z
+PLcom/android/server/display/BrightnessThrottler;->getConfigFromId(Ljava/lang/String;)Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData;
+PLcom/android/server/display/BrightnessThrottler;->loadThermalBrightnessThrottlingDataFromDeviceConfig()V
+PLcom/android/server/display/BrightnessThrottler;->loadThermalBrightnessThrottlingDataFromDisplayDeviceConfig(Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/display/BrightnessThrottler;->resetThermalThrottlingData()V
+PLcom/android/server/display/BrightnessThrottler;->stop()V
+PLcom/android/server/display/BrightnessTracker$Injector;-><init>()V
+PLcom/android/server/display/BrightnessTracker$Injector;->getBackgroundHandler()Landroid/os/Handler;
+PLcom/android/server/display/BrightnessTracker$TrackerHandler;-><init>(Lcom/android/server/display/BrightnessTracker;Landroid/os/Looper;)V
+PLcom/android/server/display/BrightnessTracker;-><clinit>()V
+PLcom/android/server/display/BrightnessTracker;-><init>(Landroid/content/Context;Lcom/android/server/display/BrightnessTracker$Injector;)V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;-><clinit>()V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;-><init>(Lcom/android/server/display/layout/DisplayIdProducer;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;-><init>(Lcom/android/server/display/layout/DisplayIdProducer;Lcom/android/server/display/feature/DisplayManagerFlags;Ljava/io/File;)V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;->createLayout(I)Lcom/android/server/display/layout/Layout;
+HSPLcom/android/server/display/DeviceStateToLayoutMap;->get(I)Lcom/android/server/display/layout/Layout;
+HSPLcom/android/server/display/DeviceStateToLayoutMap;->getConfigFile()Ljava/io/File;
+HSPLcom/android/server/display/DeviceStateToLayoutMap;->loadLayoutsFromConfig(Ljava/io/File;)V
+HSPLcom/android/server/display/DeviceStateToLayoutMap;->size()I
+HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayAdapter;)V
+HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayAdapter$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/display/DisplayAdapter;->$r8$lambda$9V0Zb4R5pN2d6Ym6JsffUDuLT04(Lcom/android/server/display/DisplayAdapter;)V
+HSPLcom/android/server/display/DisplayAdapter;->$r8$lambda$m53kLy5P6p-BQH88mDK_wnWdYlc(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayAdapter;-><clinit>()V
+HSPLcom/android/server/display/DisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Ljava/lang/String;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/DisplayAdapter;->createMode(IIFF[F[I)Landroid/view/Display$Mode;
+HSPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context;
+HSPLcom/android/server/display/DisplayAdapter;->getFeatureFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler;
+PLcom/android/server/display/DisplayAdapter;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot;
+HSPLcom/android/server/display/DisplayAdapter;->lambda$sendDisplayDeviceEventLocked$0(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayAdapter;->lambda$sendTraversalRequestLocked$1()V
+HSPLcom/android/server/display/DisplayAdapter;->registerLocked()V
+HSPLcom/android/server/display/DisplayAdapter;->sendDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayAdapter;->sendTraversalRequestLocked()V
+HPLcom/android/server/display/DisplayBrightnessState$Builder;-><init>()V
+PLcom/android/server/display/DisplayBrightnessState$Builder;->build()Lcom/android/server/display/DisplayBrightnessState;
+HPLcom/android/server/display/DisplayBrightnessState$Builder;->from(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getBrightness()F
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getBrightnessReason()Lcom/android/server/display/brightness/BrightnessReason;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getCustomAnimationRate()F
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getDisplayBrightnessStrategyName()Ljava/lang/String;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getMaxBrightness()F
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getMinBrightness()F
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getSdrBrightness()F
+PLcom/android/server/display/DisplayBrightnessState$Builder;->getShouldUseAutoBrightness()Z
+PLcom/android/server/display/DisplayBrightnessState$Builder;->isSlowChange()Z
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setBrightnessReason(Lcom/android/server/display/brightness/BrightnessReason;)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setCustomAnimationRate(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setDisplayBrightnessStrategyName(Ljava/lang/String;)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setIsSlowChange(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setMaxBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setMinBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setSdrBrightness(F)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setShouldUpdateScreenBrightnessSetting(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->setShouldUseAutoBrightness(Z)Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState$Builder;->shouldUpdateScreenBrightnessSetting()Z
+HPLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;)V
+PLcom/android/server/display/DisplayBrightnessState;-><init>(Lcom/android/server/display/DisplayBrightnessState$Builder;Lcom/android/server/display/DisplayBrightnessState-IA;)V
+PLcom/android/server/display/DisplayBrightnessState;->builder()Lcom/android/server/display/DisplayBrightnessState$Builder;
+PLcom/android/server/display/DisplayBrightnessState;->getBrightness()F
+PLcom/android/server/display/DisplayBrightnessState;->getBrightnessReason()Lcom/android/server/display/brightness/BrightnessReason;
+PLcom/android/server/display/DisplayBrightnessState;->getCustomAnimationRate()F
+PLcom/android/server/display/DisplayBrightnessState;->getDisplayBrightnessStrategyName()Ljava/lang/String;
+PLcom/android/server/display/DisplayBrightnessState;->getMaxBrightness()F
+PLcom/android/server/display/DisplayBrightnessState;->getMinBrightness()F
+PLcom/android/server/display/DisplayBrightnessState;->getSdrBrightness()F
+PLcom/android/server/display/DisplayBrightnessState;->getShouldUseAutoBrightness()Z
+PLcom/android/server/display/DisplayBrightnessState;->isSlowChange()Z
+PLcom/android/server/display/DisplayBrightnessState;->shouldUpdateScreenBrightnessSetting()Z
+PLcom/android/server/display/DisplayControl;->getHdrOutputConversionSupport()Z
+HSPLcom/android/server/display/DisplayControl;->getPhysicalDisplayIds()[J
+HSPLcom/android/server/display/DisplayControl;->getPhysicalDisplayToken(J)Landroid/os/IBinder;
+HSPLcom/android/server/display/DisplayDevice;-><clinit>()V
+HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Context;)V
+PLcom/android/server/display/DisplayDevice;->getDisplayIdToMirrorLocked()I
+PLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder;
+HSPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String;
+PLcom/android/server/display/DisplayDevice;->isWindowManagerMirroringLocked()Z
+PLcom/android/server/display/DisplayDevice;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V
+PLcom/android/server/display/DisplayDevice;->setDisplayFlagsLocked(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/display/DisplayDevice;->setLayerStackLocked(Landroid/view/SurfaceControl$Transaction;II)V
+HPLcom/android/server/display/DisplayDevice;->setProjectionLocked(Landroid/view/SurfaceControl$Transaction;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;->$values()[Lcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;
+PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;-><clinit>()V
+PLcom/android/server/display/DisplayDeviceConfig$BrightnessLimitMapType;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/display/DisplayDeviceConfig;-><clinit>()V
+HSPLcom/android/server/display/DisplayDeviceConfig;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->constraintInRangeIfNeeded([F)[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->copyUninitializedValuesFromSecondaryConfig(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->create(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->create(Landroid/content/Context;ZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->createWithoutDefaultValues(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getAmbientLightSensor()Lcom/android/server/display/config/SensorData;
+PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevels(II)[F
+PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevelsLux(II)[F
+PLcom/android/server/display/DisplayDeviceConfig;->getAutoBrightnessBrighteningLevelsNits()[F
+PLcom/android/server/display/DisplayDeviceConfig;->getBacklightFromBrightness(F)F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightness()[F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessCapForWearBedtimeMode()F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessDefault()F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessLevelAndPercentage(Lcom/android/server/display/config/BrightnessThresholds;II[F[F)Landroid/util/Pair;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightnessLevelAndPercentage(Lcom/android/server/display/config/BrightnessThresholds;II[F[FZ)Landroid/util/Pair;
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampDecreaseMaxIdleMillis()J
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampDecreaseMaxMillis()J
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampFastDecrease()F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampFastIncrease()F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampIncreaseMaxIdleMillis()J
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampIncreaseMaxMillis()J
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowDecrease()F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowDecreaseIdle()F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowIncrease()F
+PLcom/android/server/display/DisplayDeviceConfig;->getBrightnessRampSlowIncreaseIdle()F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getConfigFromGlobalXml(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getConfigFromSuffix(Landroid/content/Context;Ljava/io/File;Ljava/lang/String;JLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultHighBlockingZoneRefreshRate()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultLowBlockingZoneRefreshRate()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultPeakRefreshRate()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRate()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRateInHbmHdr()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDefaultRefreshRateInHbmSunlight()I
+HSPLcom/android/server/display/DisplayDeviceConfig;->getDensityMapping()Lcom/android/server/display/DensityMapping;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getFirstExistingFile(Ljava/util/Collection;)Ljava/io/File;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getFloatArray(Landroid/content/res/TypedArray;F)[F
+PLcom/android/server/display/DisplayDeviceConfig;->getHdrBrightnessData()Lcom/android/server/display/config/HdrBrightnessData;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getHighAmbientBrightnessThresholds()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getHighBlockingZoneThermalMap()Landroid/util/SparseArray;
+PLcom/android/server/display/DisplayDeviceConfig;->getHighBrightnessModeData()Lcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getHighDisplayBrightnessThresholds()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getLowAmbientBrightnessThresholds()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getLowBlockingZoneThermalMap()Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getLowDisplayBrightnessThresholds()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getLuxLevels([I)[F
+PLcom/android/server/display/DisplayDeviceConfig;->getLuxThrottlingData()Ljava/util/Map;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getName()Ljava/lang/String;
+PLcom/android/server/display/DisplayDeviceConfig;->getNits()[F
+PLcom/android/server/display/DisplayDeviceConfig;->getNitsFromBacklight(F)F
+PLcom/android/server/display/DisplayDeviceConfig;->getPowerThrottlingConfigData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingConfigData;
+PLcom/android/server/display/DisplayDeviceConfig;->getPowerThrottlingDataMapByThrottlingId()Ljava/util/HashMap;
+PLcom/android/server/display/DisplayDeviceConfig;->getProximitySensor()Lcom/android/server/display/config/SensorData;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getRefreshRange(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;
+PLcom/android/server/display/DisplayDeviceConfig;->getThermalBrightnessThrottlingDataMapByThrottlingId()Ljava/util/HashMap;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getThermalRefreshRateThrottlingData(Ljava/lang/String;)Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayDeviceConfig;->hasQuirk(Ljava/lang/String;)Z
+PLcom/android/server/display/DisplayDeviceConfig;->hasSdrToHdrRatioSpline()Z
+HSPLcom/android/server/display/DisplayDeviceConfig;->initFromFile(Ljava/io/File;)Z
+HSPLcom/android/server/display/DisplayDeviceConfig;->initFromGlobalXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->isAllInRange([FFF)Z
+PLcom/android/server/display/DisplayDeviceConfig;->isAutoBrightnessAvailable()Z
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadAmbientBrightnessThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadAmbientBrightnessThresholdsIdle(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadAutoBrightnessAvailableFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadAutoBrightnessConfigsFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessCapForWearBedtimeModeFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessChangeThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessChangeThresholdsFromXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessConstraintsFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessDefaultFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessMapFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessRampsFromConfigXml()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadConfigFromDirectory(Landroid/content/Context;Ljava/io/File;JLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultConfigurationXml(Landroid/content/Context;)Lcom/android/server/display/config/DisplayConfiguration;
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultRefreshRate(Lcom/android/server/display/config/RefreshRateConfigs;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDefaultRefreshRateInHbm(Lcom/android/server/display/config/RefreshRateConfigs;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDisplayBrightnessThresholds(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadDisplayBrightnessThresholdsIdle(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherBlockingZoneDefaultRefreshRate(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherBrightnessThresholds(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadHigherRefreshRateBlockingZones(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerBlockingZoneDefaultRefreshRate(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerBrightnessThresholds(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadLowerRefreshRateBlockingZones(Lcom/android/server/display/config/BlockingZoneConfig;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadPeakDefaultRefreshRate(Lcom/android/server/display/config/RefreshRateConfigs;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadRefreshRateSetting(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadRefreshRateZoneProfiles(Lcom/android/server/display/config/RefreshRateConfigs;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->setSimpleMappingStrategyValues()V
+HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
+HPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
+PLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z
+PLcom/android/server/display/DisplayDeviceInfo;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/display/DisplayDeviceInfo;->flagsToString(I)Ljava/lang/String;
+HSPLcom/android/server/display/DisplayDeviceInfo;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/DisplayDeviceInfo;->touchToString(I)Ljava/lang/String;
+HSPLcom/android/server/display/DisplayDeviceRepository;-><clinit>()V
+HSPLcom/android/server/display/DisplayDeviceRepository;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Lcom/android/server/display/PersistentDataStore;)V
+HSPLcom/android/server/display/DisplayDeviceRepository;->addListener(Lcom/android/server/display/DisplayDeviceRepository$Listener;)V
+HSPLcom/android/server/display/DisplayDeviceRepository;->containsLocked(Lcom/android/server/display/DisplayDevice;)Z
+HSPLcom/android/server/display/DisplayDeviceRepository;->getByAddressLocked(Landroid/view/DisplayAddress;)Lcom/android/server/display/DisplayDevice;
+HSPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V
+HPLcom/android/server/display/DisplayDeviceRepository;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayDeviceRepository;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayDeviceRepository;->onTraversalRequested()V
+PLcom/android/server/display/DisplayDeviceRepository;->sendChangedEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayDeviceRepository;->sendEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayGroup;-><init>(I)V
+HSPLcom/android/server/display/DisplayGroup;->addDisplayLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayGroup;->containsLocked(Lcom/android/server/display/LogicalDisplay;)Z
+HSPLcom/android/server/display/DisplayGroup;->getChangeCountLocked()I
+HPLcom/android/server/display/DisplayGroup;->getIdLocked(I)I
+HPLcom/android/server/display/DisplayGroup;->getSizeLocked()I
+HSPLcom/android/server/display/DisplayGroup;->isEmptyLocked()Z
+HSPLcom/android/server/display/DisplayInfoProxy;-><init>(Landroid/view/DisplayInfo;)V
+HSPLcom/android/server/display/DisplayInfoProxy;->get()Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayInfoProxy;->set(Landroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/display/DisplayManagerService;I)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda15;->run()V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/display/DisplayManagerService$1;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$1;->requestDisplayState(IIFF)V
+HSPLcom/android/server/display/DisplayManagerService$2;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->getBrightness(I)F
+PLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds(Z)[I
+HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayManagerService$BinderService;->getOverlaySupport()Landroid/hardware/OverlayProperties;
+HSPLcom/android/server/display/DisplayManagerService$BinderService;->getPreferredWideGamutColorSpaceId()I
+PLcom/android/server/display/DisplayManagerService$BinderService;->getStableDisplaySize()Landroid/graphics/Point;
+PLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
+HPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallbackWithEventMask(Landroid/hardware/display/IDisplayManagerCallback;J)V
+HSPLcom/android/server/display/DisplayManagerService$BrightnessPair;-><init>(Lcom/android/server/display/DisplayManagerService;FF)V
+HPLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(Lcom/android/server/display/DisplayManagerService;IILandroid/hardware/display/IDisplayManagerCallback;J)V
+HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)Z
+PLcom/android/server/display/DisplayManagerService$CallbackRecord;->shouldSendEvent(I)Z
+PLcom/android/server/display/DisplayManagerService$CallbackRecord;->updateEventsMask(J)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->$r8$lambda$kO7ZAVjumuDiLx2z8mCVaTQeBAM(Lcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->lambda$new$0(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->onDesiredDisplayModeSpecsChanged()V
+PLcom/android/server/display/DisplayManagerService$DeviceStateListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$DeviceStateListener;->onBaseStateChanged(I)V
+PLcom/android/server/display/DisplayManagerService$DeviceStateListener;->onStateChanged(I)V
+HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;-><init>(Lcom/android/server/display/DisplayManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/display/DisplayManagerService$DisplayManagerHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector-IA;)V
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getDisplayNotificationManager()Lcom/android/server/display/notifications/DisplayNotificationManager;
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getLogicalDisplayMapper()Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot;
+PLcom/android/server/display/DisplayManagerService$ExternalDisplayPolicyInjector;->getThermalService()Landroid/os/IThermalService;
+HSPLcom/android/server/display/DisplayManagerService$Injector;-><init>()V
+HSPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J
+HSPLcom/android/server/display/DisplayManagerService$Injector;->getFlags()Lcom/android/server/display/feature/DisplayManagerFlags;
+PLcom/android/server/display/DisplayManagerService$Injector;->getHdrOutputConversionSupport()Z
+HSPLcom/android/server/display/DisplayManagerService$Injector;->getLocalDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;)Lcom/android/server/display/LocalDisplayAdapter;
+HSPLcom/android/server/display/DisplayManagerService$Injector;->getVirtualDisplayAdapter(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/VirtualDisplayAdapter;
+PLcom/android/server/display/DisplayManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/DisplayManagerService$LocalService;Ljava/util/Set;Landroid/util/IntArray;)V
+PLcom/android/server/display/DisplayManagerService$LocalService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->$r8$lambda$89AgyCQh3snd66tyHFfbP9_BZ4s(Lcom/android/server/display/DisplayManagerService$LocalService;Ljava/util/Set;Landroid/util/IntArray;Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->getAmbientLightSensorData(I)Landroid/hardware/display/DisplayManagerInternal$AmbientLightSensorData;
+PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayGroupIds()Landroid/util/IntArray;
+HPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayIdToMirror(I)I
+HPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
+PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayWindowPolicyController(I)Landroid/window/DisplayWindowPolicyController;
+PLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->getRefreshRateSwitchingType()I
+PLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z
+PLcom/android/server/display/DisplayManagerService$LocalService;->lambda$getDisplayGroupIds$0(Ljava/util/Set;Landroid/util/IntArray;Lcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->performTraversal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->registerDisplayGroupListener(Landroid/hardware/display/DisplayManagerInternal$DisplayGroupListener;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->registerDisplayOffloader(ILandroid/hardware/display/DisplayManagerInternal$DisplayOffloader;)Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;
+HPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V
+PLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIFFZZZ)V
+HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$LogicalDisplayListener-IA;)V
+HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onDisplayGroupEventLocked(II)V
+HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onLogicalDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
+HSPLcom/android/server/display/DisplayManagerService$LogicalDisplayListener;->onTraversalRequested()V
+PLcom/android/server/display/DisplayManagerService$SettingsObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$SyncRoot;-><init>()V
+HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$UidImportanceListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$UidImportanceListener-IA;)V
+HPLcom/android/server/display/DisplayManagerService$UidImportanceListener;->onUidImportance(II)V
+PLcom/android/server/display/DisplayManagerService;->$r8$lambda$0MAlsLZlHa5skv0nhkou167e-6I(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->$r8$lambda$7iX7XzFpN-QayQDgHGWOvHZ4RH4(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->$r8$lambda$oYWCtx3PEcj2fx_7P6LhCa_tIsw(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/DisplayPowerControllerInterface;
+PLcom/android/server/display/DisplayManagerService;->$r8$lambda$sbGEKbzmOtvlr0tn0wH0Gqp3iQE(Lcom/android/server/display/DisplayManagerService;ILcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->$r8$lambda$vHSuA5rkAynhvjoHbD27CpXaGlI(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmContext(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayGroupListeners(Lcom/android/server/display/DisplayManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayModeDirector(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/mode/DisplayModeDirector;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayNotificationManager(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/notifications/DisplayNotificationManager;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayPowerCallbacks(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayPowerControllers(Lcom/android/server/display/DisplayManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmDisplayStates(Lcom/android/server/display/DisplayManagerService;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmFlags(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/feature/DisplayManagerFlags;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmInputManagerInternal(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/input/InputManagerInternal;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmLogicalDisplayMapper(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/LogicalDisplayMapper;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmSyncRoot(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmTempViewports(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmViewports(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmDisplayPowerCallbacks(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmPowerHandler(Lcom/android/server/display/DisplayManagerService;Landroid/os/Handler;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$fputmSensorManager(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/SensorManager;)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mdeliverDisplayEvent(Lcom/android/server/display/DisplayManagerService;ILandroid/util/ArraySet;I)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mdeliverDisplayGroupEvent(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mextraLogging(Lcom/android/server/display/DisplayManagerService;Ljava/lang/String;)Z
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetDisplayInfoInternal(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetNonOverrideDisplayInfoInternal(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetStableDisplaySizeInternal(Lcom/android/server/display/DisplayManagerService;)Landroid/graphics/Point;
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mgetWifiDisplayStatusInternal(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayAddedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayChangedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayConnectedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mhandleLogicalDisplayFrameRateOverridesChangedLocked(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$minitializeDisplayPowerControllersLocked(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mloadBrightnessConfigurations(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mregisterCallbackInternal(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;IIJ)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mregisterDefaultDisplayAdapters(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$mrequestDisplayStateInternal(Lcom/android/server/display/DisplayManagerService;IIFF)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$mscheduleTraversalLocked(Lcom/android/server/display/DisplayManagerService;Z)V
+HSPLcom/android/server/display/DisplayManagerService;->-$$Nest$msendDisplayGroupEvent(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$msetDisplayAccessUIDsInternal(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
+PLcom/android/server/display/DisplayManagerService;->-$$Nest$sfgetDEBUG()Z
+HSPLcom/android/server/display/DisplayManagerService;-><clinit>()V
+HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/display/DisplayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayManagerService$Injector;)V
+HSPLcom/android/server/display/DisplayManagerService;->addDisplayPowerControllerLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/DisplayPowerControllerInterface;
+PLcom/android/server/display/DisplayManagerService;->applyDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->clampBrightness(IF)F
+PLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V
+HSPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V
+HPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->configurePreferredDisplayModeLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(ILandroid/util/ArraySet;I)V
+HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayGroupEvent(II)V
+PLcom/android/server/display/DisplayManagerService;->extraLogging(Ljava/lang/String;)Z
+PLcom/android/server/display/DisplayManagerService;->getBrightnessConfigForDisplayWithPdsFallbackLocked(Ljava/lang/String;I)Landroid/hardware/display/BrightnessConfiguration;
+HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoForFrameRateOverride([Landroid/view/DisplayEventReceiver$FrameRateOverride;Landroid/view/DisplayInfo;I)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayManagerService;->getFloatArray(Landroid/content/res/TypedArray;)[F
+PLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V
+HSPLcom/android/server/display/DisplayManagerService;->getOverlaySupportInternal()Landroid/hardware/OverlayProperties;
+HSPLcom/android/server/display/DisplayManagerService;->getPreferredWideGamutColorSpaceIdInternal()I
+HPLcom/android/server/display/DisplayManagerService;->getRefreshRateSwitchingTypeInternal()I
+PLcom/android/server/display/DisplayManagerService;->getStableDisplaySizeInternal()Landroid/graphics/Point;
+PLcom/android/server/display/DisplayManagerService;->getUserManager()Landroid/os/UserManager;
+HPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;
+PLcom/android/server/display/DisplayManagerService;->getViewportType(Lcom/android/server/display/DisplayDeviceInfo;)Ljava/util/Optional;
+PLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus;
+PLcom/android/server/display/DisplayManagerService;->handleBrightnessChange(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayAddedLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayConnectedLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayFrameRateOverridesChangedLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->initializeDisplayPowerControllersLocked()V
+HPLcom/android/server/display/DisplayManagerService;->isMinimalPostProcessingAllowed()Z
+PLcom/android/server/display/DisplayManagerService;->isResolutionAndRefreshRateValid(Landroid/view/Display$Mode;)Z
+PLcom/android/server/display/DisplayManagerService;->isUidCached(I)Z
+PLcom/android/server/display/DisplayManagerService;->lambda$addDisplayPowerControllerLocked$14(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->lambda$loadBrightnessConfigurations$10(ILcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService;->lambda$performTraversalLocked$11(Landroid/util/SparseArray;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->lambda$updateUserPreferredDisplayModeSettingsLocked$4(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->loadBrightnessConfigurations()V
+HSPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V
+HSPLcom/android/server/display/DisplayManagerService;->notifyDefaultDisplayDeviceUpdated(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V
+HSPLcom/android/server/display/DisplayManagerService;->onStart()V
+HPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
+HPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;Landroid/util/SparseArray;)V
+HPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Lcom/android/server/display/DisplayDeviceInfo;)V
+HSPLcom/android/server/display/DisplayManagerService;->recordStableDisplayStatsIfNeededLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/DisplayManagerService;->recordTopInsetLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V
+HPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;IIJ)V
+HSPLcom/android/server/display/DisplayManagerService;->registerDefaultDisplayAdapters()V
+HSPLcom/android/server/display/DisplayManagerService;->registerDisplayAdapterLocked(Lcom/android/server/display/DisplayAdapter;)V
+PLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V
+PLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V
+HPLcom/android/server/display/DisplayManagerService;->requestDisplayStateInternal(IIFF)V
+HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
+PLcom/android/server/display/DisplayManagerService;->sendDisplayEventFrameRateOverrideLocked(I)V
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventIfEnabledLocked(Lcom/android/server/display/LogicalDisplay;I)V
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(Lcom/android/server/display/LogicalDisplay;I)V
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayGroupEvent(II)V
+PLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V
+PLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V
+HPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIFFZZZ)V
+PLcom/android/server/display/DisplayManagerService;->setHdrConversionModeInternal(Landroid/hardware/display/HdrConversionMode;)V
+PLcom/android/server/display/DisplayManagerService;->setMinimalPostProcessingAllowed(Z)V
+HSPLcom/android/server/display/DisplayManagerService;->setupLogicalDisplay(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V
+PLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z
+PLcom/android/server/display/DisplayManagerService;->systemReady(Z)V
+PLcom/android/server/display/DisplayManagerService;->updateDisplayPowerControllerLeaderLocked(Lcom/android/server/display/DisplayPowerControllerInterface;I)V
+HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;
+PLcom/android/server/display/DisplayManagerService;->updateHdrConversionModeSettingsLocked()V
+HSPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplayState(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->updateSettingsLocked()V
+PLcom/android/server/display/DisplayManagerService;->updateUserDisabledHdrTypesFromSettingsLocked()V
+PLcom/android/server/display/DisplayManagerService;->updateUserPreferredDisplayModeSettingsLocked()V
+HPLcom/android/server/display/DisplayManagerService;->updateViewportPowerStateLocked(Lcom/android/server/display/LogicalDisplay;)V
+PLcom/android/server/display/DisplayManagerService;->windowManagerAndInputReady()V
+PLcom/android/server/display/DisplayOffloadSessionImpl;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloader;Lcom/android/server/display/DisplayPowerControllerInterface;)V
+PLcom/android/server/display/DisplayOffloadSessionImpl;->getAutoBrightnessLevels(I)[F
+PLcom/android/server/display/DisplayOffloadSessionImpl;->getAutoBrightnessLuxLevels(I)[F
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$1;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$2;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$3;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;-><init>()V
+PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;->checkAndSetFloat(Landroid/util/MutableFloat;F)Z
+PLcom/android/server/display/DisplayPowerController$CachedBrightnessInfo;->checkAndSetInt(Landroid/util/MutableInt;I)Z
+PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V
+PLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/DisplayPowerController$Injector$$ExternalSyntheticLambda0;->uptimeMillis()J
+PLcom/android/server/display/DisplayPowerController$Injector;-><init>()V
+PLcom/android/server/display/DisplayPowerController$Injector;->getBrightnessClamperController(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/brightness/clamper/BrightnessClamperController;
+PLcom/android/server/display/DisplayPowerController$Injector;->getBrightnessRangeController(Lcom/android/server/display/HighBrightnessModeController;Ljava/lang/Runnable;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/os/IBinder;Lcom/android/server/display/DisplayDeviceInfo;)Lcom/android/server/display/BrightnessRangeController;
+PLcom/android/server/display/DisplayPowerController$Injector;->getClock()Lcom/android/server/display/DisplayPowerController$Clock;
+PLcom/android/server/display/DisplayPowerController$Injector;->getDefaultModeBrightnessMapper(Landroid/content/Context;Lcom/android/server/display/DisplayDeviceConfig;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;)Lcom/android/server/display/BrightnessMappingStrategy;
+PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayPowerProximityStateController(Lcom/android/server/display/WakelockController;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Looper;Ljava/lang/Runnable;ILandroid/hardware/SensorManager;)Lcom/android/server/display/DisplayPowerProximityStateController;
+PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayPowerState(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;II)Lcom/android/server/display/DisplayPowerState;
+PLcom/android/server/display/DisplayPowerController$Injector;->getDisplayWhiteBalanceController(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
+PLcom/android/server/display/DisplayPowerController$Injector;->getDualRampAnimator(Lcom/android/server/display/DisplayPowerState;Landroid/util/FloatProperty;Landroid/util/FloatProperty;)Lcom/android/server/display/RampAnimator$DualRampAnimator;
+PLcom/android/server/display/DisplayPowerController$Injector;->getHighBrightnessModeController(Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)Lcom/android/server/display/HighBrightnessModeController;
+PLcom/android/server/display/DisplayPowerController$Injector;->getWakelockController(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)Lcom/android/server/display/WakelockController;
+PLcom/android/server/display/DisplayPowerController$Injector;->isColorFadeEnabled()Z
+PLcom/android/server/display/DisplayPowerController$SettingsObserver;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Handler;)V
+PLcom/android/server/display/DisplayPowerController;->$r8$lambda$3lWZJ4BpIHcX_GeenBdRfMVq_oU(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController;->-$$Nest$fputmBootCompleted(Lcom/android/server/display/DisplayPowerController;Z)V
+PLcom/android/server/display/DisplayPowerController;->-$$Nest$mupdatePowerState(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController;-><clinit>()V
+HPLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Lcom/android/server/display/DisplayPowerController$Injector;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessSetting;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(FFF)V
+PLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(FFFZ)V
+PLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V
+HPLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(F)F
+PLcom/android/server/display/DisplayPowerController;->convertBrightnessReasonToStatsEnum(I)I
+PLcom/android/server/display/DisplayPowerController;->createBrightnessThrottlerLocked()Lcom/android/server/display/BrightnessThrottler;
+PLcom/android/server/display/DisplayPowerController;->createHbmControllerLocked(Lcom/android/server/display/HighBrightnessModeMetadata;Ljava/lang/Runnable;)Lcom/android/server/display/HighBrightnessModeController;
+HPLcom/android/server/display/DisplayPowerController;->getAutoBrightnessLevels(I)[F
+HPLcom/android/server/display/DisplayPowerController;->getAutoBrightnessLuxLevels(I)[F
+HPLcom/android/server/display/DisplayPowerController;->getBrightnessInfo()Landroid/hardware/display/BrightnessInfo;
+PLcom/android/server/display/DisplayPowerController;->getLeadDisplayId()I
+PLcom/android/server/display/DisplayPowerController;->getScreenBrightnessSetting()F
+PLcom/android/server/display/DisplayPowerController;->handleBrightnessModeChange()V
+PLcom/android/server/display/DisplayPowerController;->initialize(I)V
+PLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable()Z
+PLcom/android/server/display/DisplayPowerController;->loadBrightnessRampRates()V
+PLcom/android/server/display/DisplayPowerController;->loadNitsRange(Landroid/content/res/Resources;)V
+HPLcom/android/server/display/DisplayPowerController;->logBrightnessEvent(Lcom/android/server/display/brightness/BrightnessEvent;F)V
+PLcom/android/server/display/DisplayPowerController;->logDisplayPolicyChanged(I)V
+PLcom/android/server/display/DisplayPowerController;->nitsToRangeIndex(F)I
+PLcom/android/server/display/DisplayPowerController;->noteScreenBrightness(F)V
+PLcom/android/server/display/DisplayPowerController;->noteScreenState(I)V
+PLcom/android/server/display/DisplayPowerController;->notifyBrightnessTrackerChanged(FZZZZZ)V
+PLcom/android/server/display/DisplayPowerController;->onBootCompleted()V
+PLcom/android/server/display/DisplayPowerController;->postBrightnessChangeRunnable()V
+PLcom/android/server/display/DisplayPowerController;->readyToUpdateDisplayState()Z
+HPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+PLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(F)Z
+HPLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FFLcom/android/server/display/DisplayBrightnessState;)Z
+PLcom/android/server/display/DisplayPowerController;->saveBrightnessInfo(FLcom/android/server/display/DisplayBrightnessState;)Z
+PLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V
+PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V
+PLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
+PLcom/android/server/display/DisplayPowerController;->setAnimatorRampSpeeds(Z)V
+PLcom/android/server/display/DisplayPowerController;->setDisplayOffloadSession(Landroid/hardware/display/DisplayManagerInternal$DisplayOffloadSession;)V
+PLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V
+PLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z
+PLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z
+PLcom/android/server/display/DisplayPowerController;->setUpAutoBrightness(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V
+PLcom/android/server/display/DisplayPowerController;->unblockScreenOnByDisplayOffload()V
+PLcom/android/server/display/DisplayPowerController;->updatePowerState()V
+HPLcom/android/server/display/DisplayPowerController;->updatePowerStateInternal()V
+PLcom/android/server/display/DisplayPowerProximityStateController$1;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;)V
+PLcom/android/server/display/DisplayPowerProximityStateController$DisplayPowerProximityStateHandler;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;Landroid/os/Looper;)V
+PLcom/android/server/display/DisplayPowerProximityStateController$Injector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/DisplayPowerProximityStateController$Injector;-><init>()V
+PLcom/android/server/display/DisplayPowerProximityStateController$Injector;->createClock()Lcom/android/server/display/DisplayPowerProximityStateController$Clock;
+PLcom/android/server/display/DisplayPowerProximityStateController;-><init>(Lcom/android/server/display/WakelockController;Lcom/android/server/display/DisplayDeviceConfig;Landroid/os/Looper;Ljava/lang/Runnable;ILandroid/hardware/SensorManager;Lcom/android/server/display/DisplayPowerProximityStateController$Injector;)V
+PLcom/android/server/display/DisplayPowerProximityStateController;->isProximitySensorAvailable()Z
+PLcom/android/server/display/DisplayPowerProximityStateController;->isScreenOffBecauseOfProximity()Z
+PLcom/android/server/display/DisplayPowerProximityStateController;->loadProximitySensor()V
+HPLcom/android/server/display/DisplayPowerProximityStateController;->setPendingWaitForNegativeProximityLocked(Z)Z
+PLcom/android/server/display/DisplayPowerProximityStateController;->setProximitySensorEnabled(Z)V
+PLcom/android/server/display/DisplayPowerProximityStateController;->shouldSkipRampBecauseOfProximityChangeToNegative()Z
+PLcom/android/server/display/DisplayPowerProximityStateController;->updatePendingProximityRequestsLocked()V
+PLcom/android/server/display/DisplayPowerProximityStateController;->updateProximityState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)V
+PLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;)V
+PLcom/android/server/display/DisplayPowerState$2;-><init>(Ljava/lang/String;)V
+PLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
+PLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;F)V
+PLcom/android/server/display/DisplayPowerState$3;-><init>(Ljava/lang/String;)V
+PLcom/android/server/display/DisplayPowerState$3;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
+PLcom/android/server/display/DisplayPowerState$3;->setValue(Ljava/lang/Object;F)V
+PLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState$4;->run()V
+PLcom/android/server/display/DisplayPowerState$5;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+PLcom/android/server/display/DisplayPowerState$PhotonicModulator;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
+PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(IFF)Z
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmBlanker(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker;
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmColorFadeLevel(Lcom/android/server/display/DisplayPowerState;)F
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmDisplayId(Lcom/android/server/display/DisplayPowerState;)I
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmPhotonicModulator(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmScreenBrightness(Lcom/android/server/display/DisplayPowerState;)F
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmScreenState(Lcom/android/server/display/DisplayPowerState;)I
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fgetmSdrScreenBrightness(Lcom/android/server/display/DisplayPowerState;)F
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fputmScreenReady(Lcom/android/server/display/DisplayPowerState;Z)V
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$fputmScreenUpdatePending(Lcom/android/server/display/DisplayPowerState;Z)V
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$minvokeCleanListenerIfNeeded(Lcom/android/server/display/DisplayPowerState;)V
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$mpostScreenUpdateThreadSafe(Lcom/android/server/display/DisplayPowerState;)V
+PLcom/android/server/display/DisplayPowerState;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/display/DisplayPowerState;-><clinit>()V
+PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;II)V
+PLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;IILjava/util/concurrent/Executor;)V
+PLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
+PLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F
+PLcom/android/server/display/DisplayPowerState;->getScreenBrightness()F
+PLcom/android/server/display/DisplayPowerState;->getScreenState()I
+PLcom/android/server/display/DisplayPowerState;->getSdrScreenBrightness()F
+PLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V
+PLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
+PLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
+PLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V
+PLcom/android/server/display/DisplayPowerState;->setScreenBrightness(F)V
+PLcom/android/server/display/DisplayPowerState;->setSdrScreenBrightness(F)V
+PLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z
+PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/ExternalDisplayPolicy;)V
+PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;-><init>(Lcom/android/server/display/ExternalDisplayPolicy;Lcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver-IA;)V
+PLcom/android/server/display/ExternalDisplayPolicy$SkinThermalStatusObserver;->notifyThrottling(Landroid/os/Temperature;)V
+PLcom/android/server/display/ExternalDisplayPolicy;->-$$Nest$fgetmStatus(Lcom/android/server/display/ExternalDisplayPolicy;)I
+PLcom/android/server/display/ExternalDisplayPolicy;->-$$Nest$fputmStatus(Lcom/android/server/display/ExternalDisplayPolicy;I)V
+HSPLcom/android/server/display/ExternalDisplayPolicy;-><clinit>()V
+HSPLcom/android/server/display/ExternalDisplayPolicy;-><init>(Lcom/android/server/display/ExternalDisplayPolicy$Injector;)V
+HSPLcom/android/server/display/ExternalDisplayPolicy;->isExternalDisplay(Lcom/android/server/display/LogicalDisplay;)Z
+PLcom/android/server/display/ExternalDisplayPolicy;->onBootCompleted()V
+PLcom/android/server/display/ExternalDisplayPolicy;->registerThermalServiceListener(Landroid/os/IThermalEventListener$Stub;)Z
+PLcom/android/server/display/HighBrightnessModeController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/HighBrightnessModeController;)V
+PLcom/android/server/display/HighBrightnessModeController$HdrListener;-><init>(Lcom/android/server/display/HighBrightnessModeController;)V
+PLcom/android/server/display/HighBrightnessModeController$Injector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/HighBrightnessModeController$Injector;-><init>()V
+PLcom/android/server/display/HighBrightnessModeController$Injector;->getClock()Lcom/android/server/display/DisplayManagerService$Clock;
+PLcom/android/server/display/HighBrightnessModeController$SettingsObserver;-><init>(Lcom/android/server/display/HighBrightnessModeController;Landroid/os/Handler;)V
+PLcom/android/server/display/HighBrightnessModeController$SettingsObserver;->stopObserving()V
+PLcom/android/server/display/HighBrightnessModeController;->-$$Nest$fputmIsBlockedByLowPowerMode(Lcom/android/server/display/HighBrightnessModeController;Z)V
+PLcom/android/server/display/HighBrightnessModeController;-><clinit>()V
+PLcom/android/server/display/HighBrightnessModeController;-><init>(Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)V
+PLcom/android/server/display/HighBrightnessModeController;-><init>(Lcom/android/server/display/HighBrightnessModeController$Injector;Landroid/os/Handler;IILandroid/os/IBinder;Ljava/lang/String;FFLcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;Ljava/lang/Runnable;Lcom/android/server/display/HighBrightnessModeMetadata;Landroid/content/Context;)V
+PLcom/android/server/display/HighBrightnessModeController;->deviceSupportsHbm()Z
+PLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMax()F
+PLcom/android/server/display/HighBrightnessModeController;->getCurrentBrightnessMin()F
+PLcom/android/server/display/HighBrightnessModeController;->getHighBrightnessMode()I
+PLcom/android/server/display/HighBrightnessModeController;->getTransitionPoint()F
+PLcom/android/server/display/HighBrightnessModeController;->onBrightnessChanged(FFI)V
+PLcom/android/server/display/HighBrightnessModeController;->resetHbmData(IILandroid/os/IBinder;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig$HighBrightnessModeData;Lcom/android/server/display/HighBrightnessModeController$HdrBrightnessDeviceConfig;)V
+PLcom/android/server/display/HighBrightnessModeController;->setAutoBrightnessEnabled(I)V
+PLcom/android/server/display/HighBrightnessModeController;->unregisterHdrListener()V
+HSPLcom/android/server/display/HighBrightnessModeMetadataMapper;-><init>()V
+PLcom/android/server/display/HighBrightnessModeMetadataMapper;->getHighBrightnessModeMetadataLocked(Lcom/android/server/display/LogicalDisplay;)Lcom/android/server/display/HighBrightnessModeMetadata;
+HSPLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;-><init>(Landroid/os/IBinder;ZLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;)V
+PLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->setBacklight(FFFF)V
+HSPLcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;->setForceSurfaceControl(Z)V
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$DisplayMode;[F)V
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayMode;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$Injector;-><init>()V
+HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->createDisplayDeviceConfig(Landroid/content/Context;JZLcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->getSurfaceControlProxy()Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
+HSPLcom/android/server/display/LocalDisplayAdapter$Injector;->setDisplayEventListenerLocked(Landroid/os/Looper;Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZFFJLcom/android/server/display/DisplayOffloadSessionImpl;Landroid/os/IBinder;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->backlightToNits(F)F
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->brightnessToBacklight(F)F
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setCommittedState(I)V
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(FF)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->$r8$lambda$nQXuR3rRi3rSRLFK9tosCrQw4ig(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fgetmBacklightAdapter(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/display/LocalDisplayAdapter$BacklightAdapter;
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmBrightnessState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;F)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmCommittedState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;I)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$fputmSdrBrightnessState(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;F)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->-$$Nest$mupdateDeviceInfoLocked(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><clinit>()V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;JLandroid/view/SurfaceControl$StaticDisplayInfo;Landroid/view/SurfaceControl$DynamicDisplayInfo;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;Z)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$DisplayMode;Ljava/util/List;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findMatchingModeIdLocked(I)I
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findSfDisplayModeIdLocked(II)I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceConfig()Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getDisplayModes(Landroid/util/SparseArray;)[Landroid/view/Display$Mode;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getLogicalDensity()I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getModeById([Landroid/view/SurfaceControl$DisplayMode;I)Landroid/view/SurfaceControl$DisplayMode;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->getPreferredModeId()I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->hasStableUniqueId()Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->loadDisplayDeviceConfig()V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onActiveDisplayModeChangedLocked(IF)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onFrameRateOverridesChanged([Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeLocked(I)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(IFFLcom/android/server/display/DisplayOffloadSessionImpl;)Ljava/lang/Runnable;
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setAutoLowLatencyModeLocked(Z)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsAsync(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)V
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setGameContentTypeLocked(Z)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setRequestedColorModeLocked(I)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateActiveModeLocked(IF)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateAllmSupport(Z)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayModesLocked([Landroid/view/SurfaceControl$DisplayMode;IIFLandroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayPropertiesLocked(Landroid/view/SurfaceControl$StaticDisplayInfo;Landroid/view/SurfaceControl$DynamicDisplayInfo;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateFrameRateOverridesLocked([Landroid/view/DisplayEventReceiver$FrameRateOverride;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateGameContentTypeSupport(Z)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateHdrCapabilitiesLocked(Landroid/view/Display$HdrCapabilities;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateStaticInfo(Landroid/view/SurfaceControl$StaticDisplayInfo;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;-><init>(Lcom/android/server/display/LocalDisplayAdapter;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener-IA;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;->onFrameRateOverridesChanged(JJ[Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayEventListener;->onModeChanged(JJIJ)V
+HSPLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;-><init>(Landroid/os/Looper;Lcom/android/server/display/LocalDisplayAdapter$DisplayEventListener;)V
+PLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;->onFrameRateOverridesChanged(JJ[Landroid/view/DisplayEventReceiver$FrameRateOverride;)V
+PLcom/android/server/display/LocalDisplayAdapter$ProxyDisplayEventReceiver;->onModeChanged(JJIJ)V
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;-><init>()V
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getBootDisplayModeSupport()Z
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDesiredDisplayModeSpecs(Landroid/os/IBinder;)Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDisplayBrightnessSupport(Landroid/os/IBinder;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getDynamicDisplayInfo(J)Landroid/view/SurfaceControl$DynamicDisplayInfo;
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getPhysicalDisplayIds()[J
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getPhysicalDisplayToken(J)Landroid/os/IBinder;
+HSPLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->getStaticDisplayInfo(J)Landroid/view/SurfaceControl$StaticDisplayInfo;
+PLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->setDesiredDisplayModeSpecs(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayModeSpecs;)Z
+PLcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;->setDisplayPowerMode(Landroid/os/IBinder;I)V
+PLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmDevices(Lcom/android/server/display/LocalDisplayAdapter;)Landroid/util/LongSparseArray;
+HSPLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmInjector(Lcom/android/server/display/LocalDisplayAdapter;)Lcom/android/server/display/LocalDisplayAdapter$Injector;
+HSPLcom/android/server/display/LocalDisplayAdapter;->-$$Nest$fgetmSurfaceControlProxy(Lcom/android/server/display/LocalDisplayAdapter;)Lcom/android/server/display/LocalDisplayAdapter$SurfaceControlProxy;
+HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;)V
+HSPLcom/android/server/display/LocalDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/notifications/DisplayNotificationManager;Lcom/android/server/display/LocalDisplayAdapter$Injector;)V
+HSPLcom/android/server/display/LocalDisplayAdapter;->getOverlayContext()Landroid/content/Context;
+PLcom/android/server/display/LocalDisplayAdapter;->getPowerModeForState(I)I
+HSPLcom/android/server/display/LocalDisplayAdapter;->registerLocked()V
+HSPLcom/android/server/display/LocalDisplayAdapter;->tryConnectDisplayLocked(J)V
+HSPLcom/android/server/display/LogicalDisplay;-><clinit>()V
+HSPLcom/android/server/display/LogicalDisplay;-><init>(IILcom/android/server/display/DisplayDevice;)V
+HPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V
+PLcom/android/server/display/LogicalDisplay;->getDesiredDisplayModeSpecsLocked()Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
+HSPLcom/android/server/display/LogicalDisplay;->getDisplayGroupNameLocked()Ljava/lang/String;
+HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
+HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;
+PLcom/android/server/display/LogicalDisplay;->getDisplayOffloadSessionLocked()Lcom/android/server/display/DisplayOffloadSessionImpl;
+HSPLcom/android/server/display/LogicalDisplay;->getFrameRateOverrides()[Landroid/view/DisplayEventReceiver$FrameRateOverride;
+PLcom/android/server/display/LogicalDisplay;->getInsets()Landroid/graphics/Rect;
+PLcom/android/server/display/LogicalDisplay;->getLeadDisplayIdLocked()I
+HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/server/display/DisplayDeviceInfo;)Landroid/graphics/Rect;
+HSPLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V
+PLcom/android/server/display/LogicalDisplay;->getPowerThrottlingDataIdLocked()Ljava/lang/String;
+HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
+PLcom/android/server/display/LogicalDisplay;->getRequestedMinimalPostProcessingLocked()Z
+PLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z
+HSPLcom/android/server/display/LogicalDisplay;->isDirtyLocked()Z
+HSPLcom/android/server/display/LogicalDisplay;->isEnabledLocked()Z
+PLcom/android/server/display/LogicalDisplay;->isInTransitionLocked()Z
+HSPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z
+PLcom/android/server/display/LogicalDisplay;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HSPLcom/android/server/display/LogicalDisplay;->setDevicePositionLocked(I)V
+HSPLcom/android/server/display/LogicalDisplay;->setDisplayGroupNameLocked(Ljava/lang/String;)V
+PLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z
+PLcom/android/server/display/LogicalDisplay;->setDisplayOffloadSessionLocked(Lcom/android/server/display/DisplayOffloadSessionImpl;)V
+HSPLcom/android/server/display/LogicalDisplay;->setLeadDisplayLocked(I)V
+HSPLcom/android/server/display/LogicalDisplay;->setPowerThrottlingDataIdLocked(Ljava/lang/String;)V
+HSPLcom/android/server/display/LogicalDisplay;->setPrimaryDisplayDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/DisplayDevice;
+HSPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V
+HSPLcom/android/server/display/LogicalDisplay;->setThermalBrightnessThrottlingDataIdLocked(Ljava/lang/String;)V
+HSPLcom/android/server/display/LogicalDisplay;->swapDisplaysLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/LogicalDisplay;->updateDisplayGroupIdLocked(I)V
+HSPLcom/android/server/display/LogicalDisplay;->updateFrameRateOverrides(Lcom/android/server/display/DisplayDeviceInfo;)V
+HSPLcom/android/server/display/LogicalDisplay;->updateLayoutLimitedRefreshRateLocked(Landroid/view/SurfaceControl$RefreshRateRange;)V
+HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Lcom/android/server/display/DisplayDeviceRepository;)V
+HSPLcom/android/server/display/LogicalDisplay;->updateThermalRefreshRateThrottling(Landroid/util/SparseArray;)V
+HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;-><init>()V
+HSPLcom/android/server/display/LogicalDisplayMapper$$ExternalSyntheticLambda3;->getId(Z)I
+HSPLcom/android/server/display/LogicalDisplayMapper$LogicalDisplayMapperHandler;-><init>(Lcom/android/server/display/LogicalDisplayMapper;Landroid/os/Looper;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->$r8$lambda$CLkgta2MkaptkxpiszN50MW0yV0(Z)I
+HSPLcom/android/server/display/LogicalDisplayMapper;-><clinit>()V
+HSPLcom/android/server/display/LogicalDisplayMapper;-><init>(Landroid/content/Context;Lcom/android/server/utils/FoldSettingProvider;Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/os/Handler;Lcom/android/server/display/DeviceStateToLayoutMap;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;-><init>(Landroid/content/Context;Lcom/android/server/utils/FoldSettingProvider;Lcom/android/server/display/DisplayDeviceRepository;Lcom/android/server/display/LogicalDisplayMapper$Listener;Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->applyLayoutLocked()V
+PLcom/android/server/display/LogicalDisplayMapper;->areAllTransitioningDisplaysOffLocked()Z
+HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupIdLocked(ZLjava/lang/String;ZLjava/lang/Integer;)I
+HSPLcom/android/server/display/LogicalDisplayMapper;->assignDisplayGroupLocked(Lcom/android/server/display/LogicalDisplay;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->assignLayerStackLocked(I)I
+HSPLcom/android/server/display/LogicalDisplayMapper;->createNewLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;I)Lcom/android/server/display/LogicalDisplay;
+PLcom/android/server/display/LogicalDisplayMapper;->finishStateTransitionLocked(Z)V
+PLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;)V
+HPLcom/android/server/display/LogicalDisplayMapper;->forEachLocked(Ljava/util/function/Consumer;Z)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupIdFromDisplayIdLocked(I)I
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayGroupLocked(I)Lcom/android/server/display/DisplayGroup;
+HPLcom/android/server/display/LogicalDisplayMapper;->getDisplayIdsLocked(IZ)[I
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(I)Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(IZ)Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/LogicalDisplayMapper;->getDisplayLocked(Lcom/android/server/display/DisplayDevice;Z)Lcom/android/server/display/LogicalDisplay;
+HSPLcom/android/server/display/LogicalDisplayMapper;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->initializeDefaultDisplayDeviceLocked(Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->lambda$new$0(Z)I
+PLcom/android/server/display/LogicalDisplayMapper;->onBootCompleted()V
+PLcom/android/server/display/LogicalDisplayMapper;->onDisplayDeviceChangedLocked(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->onDisplayDeviceEventLocked(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->onTraversalRequested()V
+PLcom/android/server/display/LogicalDisplayMapper;->resetLayoutLocked(IIZ)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForDisplaysLocked(I)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->sendUpdatesForGroupsLocked(I)V
+PLcom/android/server/display/LogicalDisplayMapper;->setDeviceStateLocked(IZ)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->setEnabledLocked(Lcom/android/server/display/LogicalDisplay;Z)V
+PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBePutToSleep(IIZZZ)Z
+PLcom/android/server/display/LogicalDisplayMapper;->shouldDeviceBeWoken(IIZZ)Z
+HSPLcom/android/server/display/LogicalDisplayMapper;->toSparseBooleanArray([I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/display/LogicalDisplayMapper;->transitionToPendingStateLocked()V
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked()V
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(I)V
+HSPLcom/android/server/display/LogicalDisplayMapper;->updateLogicalDisplaysLocked(IZ)V
+PLcom/android/server/display/NormalBrightnessModeController;-><init>()V
+PLcom/android/server/display/NormalBrightnessModeController;->getCurrentBrightnessMax()F
+PLcom/android/server/display/NormalBrightnessModeController;->recalculateMaxBrightness()Z
+PLcom/android/server/display/NormalBrightnessModeController;->resetNbmData(Ljava/util/Map;)Z
+PLcom/android/server/display/NormalBrightnessModeController;->setAutoBrightnessState(I)Z
+PLcom/android/server/display/OverlayDisplayAdapter$1$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter$1;Landroid/os/Handler;)V
+PLcom/android/server/display/OverlayDisplayAdapter$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter;)V
+PLcom/android/server/display/OverlayDisplayAdapter$1;->run()V
+PLcom/android/server/display/OverlayDisplayAdapter;->-$$Nest$mupdateOverlayDisplayDevices(Lcom/android/server/display/OverlayDisplayAdapter;)V
+PLcom/android/server/display/OverlayDisplayAdapter;-><clinit>()V
+PLcom/android/server/display/OverlayDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V
+PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V
+PLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V
+HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;-><init>()V
+PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->getBrightnessConfiguration(I)Landroid/hardware/display/BrightnessConfiguration;
+HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore$Injector;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore$Injector;->openRead()Ljava/io/InputStream;
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->-$$Nest$mgetDisplaySize(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point;
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>(Lcom/android/server/display/PersistentDataStore$StableDeviceValues-IA;)V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point;
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lcom/android/modules/utils/TypedXmlPullParser;)I
+HSPLcom/android/server/display/PersistentDataStore;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore;-><init>(Lcom/android/server/display/PersistentDataStore$Injector;)V
+HSPLcom/android/server/display/PersistentDataStore;-><init>(Lcom/android/server/display/PersistentDataStore$Injector;Landroid/os/Handler;)V
+HSPLcom/android/server/display/PersistentDataStore;->clearState()V
+PLcom/android/server/display/PersistentDataStore;->getBrightness(Lcom/android/server/display/DisplayDevice;I)F
+PLcom/android/server/display/PersistentDataStore;->getBrightnessConfiguration(I)Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/PersistentDataStore;->getBrightnessConfigurationForDisplayLocked(Ljava/lang/String;I)Landroid/hardware/display/BrightnessConfiguration;
+HSPLcom/android/server/display/PersistentDataStore;->getColorMode(Lcom/android/server/display/DisplayDevice;)I
+HSPLcom/android/server/display/PersistentDataStore;->getDisplayState(Ljava/lang/String;Z)Lcom/android/server/display/PersistentDataStore$DisplayState;
+HSPLcom/android/server/display/PersistentDataStore;->getStableDisplaySize()Landroid/graphics/Point;
+HSPLcom/android/server/display/PersistentDataStore;->getUserPreferredRefreshRate(Lcom/android/server/display/DisplayDevice;)F
+HSPLcom/android/server/display/PersistentDataStore;->getUserPreferredResolution(Lcom/android/server/display/DisplayDevice;)Landroid/graphics/Point;
+HSPLcom/android/server/display/PersistentDataStore;->load()V
+HSPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V
+HSPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/display/PersistentDataStore;->saveIfNeeded()V
+PLcom/android/server/display/RampAnimator$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/RampAnimator$DualRampAnimator$1;-><init>(Lcom/android/server/display/RampAnimator$DualRampAnimator;)V
+PLcom/android/server/display/RampAnimator$DualRampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;Landroid/util/FloatProperty;)V
+PLcom/android/server/display/RampAnimator$DualRampAnimator;->animateTo(FFFZ)Z
+PLcom/android/server/display/RampAnimator$DualRampAnimator;->isAnimating()Z
+PLcom/android/server/display/RampAnimator$DualRampAnimator;->setAnimationTimeLimits(JJ)V
+PLcom/android/server/display/RampAnimator$DualRampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V
+PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;)V
+PLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/FloatProperty;Lcom/android/server/display/RampAnimator$Clock;)V
+PLcom/android/server/display/RampAnimator;->isAnimating()Z
+PLcom/android/server/display/RampAnimator;->setAnimationTarget(FFFF)Z
+PLcom/android/server/display/RampAnimator;->setAnimationTarget(FFZ)Z
+PLcom/android/server/display/RampAnimator;->setAnimationTimeLimits(JJ)V
+PLcom/android/server/display/RampAnimator;->setPropertyValue(F)V
+PLcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener;-><init>(Lcom/android/server/display/SmallAreaDetectionController;)V
+PLcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener;-><init>(Lcom/android/server/display/SmallAreaDetectionController;Lcom/android/server/display/SmallAreaDetectionController$OnPropertiesChangedListener-IA;)V
+PLcom/android/server/display/SmallAreaDetectionController$PackageReceiver;-><init>(Lcom/android/server/display/SmallAreaDetectionController;)V
+PLcom/android/server/display/SmallAreaDetectionController$PackageReceiver;-><init>(Lcom/android/server/display/SmallAreaDetectionController;Lcom/android/server/display/SmallAreaDetectionController$PackageReceiver-IA;)V
+PLcom/android/server/display/SmallAreaDetectionController;-><init>(Landroid/content/Context;Landroid/provider/DeviceConfigInterface;)V
+PLcom/android/server/display/SmallAreaDetectionController;->create(Landroid/content/Context;)Lcom/android/server/display/SmallAreaDetectionController;
+PLcom/android/server/display/SmallAreaDetectionController;->updateAllowlist(Ljava/lang/String;)V
+HSPLcom/android/server/display/VirtualDisplayAdapter$1;-><init>()V
+HSPLcom/android/server/display/VirtualDisplayAdapter;-><clinit>()V
+HSPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/VirtualDisplayAdapter$SurfaceControlDisplayFactory;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/VirtualDisplayAdapter;-><init>(Lcom/android/server/display/DisplayManagerService$SyncRoot;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/DisplayAdapter$Listener;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V
+PLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/WakelockController;)V
+PLcom/android/server/display/WakelockController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/WakelockController;->$r8$lambda$DC3Jjdcy5pC5tkL4-1bzHZx_j9Q(Lcom/android/server/display/WakelockController;)V
+PLcom/android/server/display/WakelockController;-><clinit>()V
+PLcom/android/server/display/WakelockController;-><init>(ILandroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
+PLcom/android/server/display/WakelockController;->acquireStateChangedSuspendBlocker()Z
+PLcom/android/server/display/WakelockController;->acquireUnfinishedBusinessSuspendBlocker()Z
+PLcom/android/server/display/WakelockController;->acquireWakelock(I)Z
+PLcom/android/server/display/WakelockController;->acquireWakelockInternal(I)Z
+PLcom/android/server/display/WakelockController;->getOnStateChangedRunnable()Ljava/lang/Runnable;
+PLcom/android/server/display/WakelockController;->lambda$getOnStateChangedRunnable$1()V
+PLcom/android/server/display/WakelockController;->releaseUnfinishedBusinessSuspendBlocker()Z
+PLcom/android/server/display/WakelockController;->releaseWakelock(I)Z
+PLcom/android/server/display/WakelockController;->releaseWakelockInternal(I)Z
+PLcom/android/server/display/brightness/BrightnessEvent;-><clinit>()V
+PLcom/android/server/display/brightness/BrightnessEvent;-><init>(I)V
+PLcom/android/server/display/brightness/BrightnessEvent;-><init>(Lcom/android/server/display/brightness/BrightnessEvent;)V
+HPLcom/android/server/display/brightness/BrightnessEvent;->copyFrom(Lcom/android/server/display/brightness/BrightnessEvent;)V
+HPLcom/android/server/display/brightness/BrightnessEvent;->equalsMainData(Lcom/android/server/display/brightness/BrightnessEvent;)Z
+PLcom/android/server/display/brightness/BrightnessEvent;->flagsToString()Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessEvent;->getAdjustmentFlags()I
+PLcom/android/server/display/brightness/BrightnessEvent;->getBrightness()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getDisplayBrightnessStrategyName()Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessEvent;->getDisplayId()I
+PLcom/android/server/display/brightness/BrightnessEvent;->getFlags()I
+PLcom/android/server/display/brightness/BrightnessEvent;->getHbmMax()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getHbmMode()I
+PLcom/android/server/display/brightness/BrightnessEvent;->getInitialBrightness()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getLux()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getPhysicalDisplayId()Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessEvent;->getPowerFactor()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getPreThresholdBrightness()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getPreThresholdLux()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getRbcStrength()I
+PLcom/android/server/display/brightness/BrightnessEvent;->getReason()Lcom/android/server/display/brightness/BrightnessReason;
+PLcom/android/server/display/brightness/BrightnessEvent;->getRecommendedBrightness()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getThermalMax()F
+PLcom/android/server/display/brightness/BrightnessEvent;->getTime()J
+PLcom/android/server/display/brightness/BrightnessEvent;->isAutomaticBrightnessEnabled()Z
+PLcom/android/server/display/brightness/BrightnessEvent;->isLowPowerModeSet()Z
+PLcom/android/server/display/brightness/BrightnessEvent;->isRbcEnabled()Z
+HPLcom/android/server/display/brightness/BrightnessEvent;->reset()V
+PLcom/android/server/display/brightness/BrightnessEvent;->setAdjustmentFlags(I)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setAutomaticBrightnessEnabled(Z)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setBrightness(F)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setDisplayBrightnessStrategyName(Ljava/lang/String;)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setFlags(I)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setHbmMax(F)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setHbmMode(I)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setInitialBrightness(F)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setPhysicalDisplayId(Ljava/lang/String;)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setPowerFactor(F)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setRbcStrength(I)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setReason(Lcom/android/server/display/brightness/BrightnessReason;)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setTime(J)V
+PLcom/android/server/display/brightness/BrightnessEvent;->setWasShortTermModelActive(Z)Z
+HPLcom/android/server/display/brightness/BrightnessEvent;->toString(Z)Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessEvent;->wasShortTermModelActive()Z
+PLcom/android/server/display/brightness/BrightnessReason;-><init>()V
+PLcom/android/server/display/brightness/BrightnessReason;->addModifier(I)V
+PLcom/android/server/display/brightness/BrightnessReason;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/display/brightness/BrightnessReason;->getModifier()I
+PLcom/android/server/display/brightness/BrightnessReason;->getReason()I
+PLcom/android/server/display/brightness/BrightnessReason;->reasonToString(I)Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessReason;->set(Lcom/android/server/display/brightness/BrightnessReason;)V
+PLcom/android/server/display/brightness/BrightnessReason;->setModifier(I)V
+PLcom/android/server/display/brightness/BrightnessReason;->setReason(I)V
+PLcom/android/server/display/brightness/BrightnessReason;->toString()Ljava/lang/String;
+HPLcom/android/server/display/brightness/BrightnessReason;->toString(I)Ljava/lang/String;
+PLcom/android/server/display/brightness/BrightnessUtils;->clampAbsoluteBrightness(F)F
+PLcom/android/server/display/brightness/BrightnessUtils;->clampBrightnessAdjustment(F)F
+PLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFFLjava/lang/String;)Lcom/android/server/display/DisplayBrightnessState;
+HPLcom/android/server/display/brightness/BrightnessUtils;->constructDisplayBrightnessState(IFFLjava/lang/String;Z)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/BrightnessUtils;->isValidBrightnessValue(F)Z
+PLcom/android/server/display/brightness/DisplayBrightnessController$Injector;-><init>()V
+PLcom/android/server/display/brightness/DisplayBrightnessController$Injector;->getDisplayBrightnessStrategySelector(Landroid/content/Context;ILcom/android/server/display/feature/DisplayManagerFlags;)Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector;
+PLcom/android/server/display/brightness/DisplayBrightnessController;-><init>(Landroid/content/Context;Lcom/android/server/display/brightness/DisplayBrightnessController$Injector;IFLcom/android/server/display/BrightnessSetting;Ljava/lang/Runnable;Landroid/os/HandlerExecutor;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/brightness/DisplayBrightnessController;->addAutomaticBrightnessState(Lcom/android/server/display/DisplayBrightnessState;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/DisplayBrightnessController;->convertToAdjustedNits(F)F
+PLcom/android/server/display/brightness/DisplayBrightnessController;->getAutomaticBrightnessStrategy()Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessController;->getCurrentBrightness()F
+PLcom/android/server/display/brightness/DisplayBrightnessController;->getLastUserSetScreenBrightness()F
+HPLcom/android/server/display/brightness/DisplayBrightnessController;->getScreenBrightnessSetting()F
+PLcom/android/server/display/brightness/DisplayBrightnessController;->isAllowAutoBrightnessWhileDozingConfig()Z
+PLcom/android/server/display/brightness/DisplayBrightnessController;->registerBrightnessSettingChangeListener(Lcom/android/server/display/BrightnessSetting$BrightnessSettingListener;)V
+PLcom/android/server/display/brightness/DisplayBrightnessController;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/DisplayBrightnessController;->updateUserSetScreenBrightness()Z
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;-><init>()V
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getAutomaticBrightnessStrategy(Landroid/content/Context;I)Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getBoostBrightnessStrategy()Lcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getDozeBrightnessStrategy()Lcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getFollowerBrightnessStrategy(I)Lcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getInvalidBrightnessStrategy()Lcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getOffloadBrightnessStrategy()Lcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getOverrideBrightnessStrategy()Lcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getScreenOffBrightnessStrategy()Lcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;->getTemporaryBrightnessStrategy()Lcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;-><init>(Landroid/content/Context;Lcom/android/server/display/brightness/DisplayBrightnessStrategySelector$Injector;ILcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->getAutomaticBrightnessStrategy()Lcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->isAllowAutoBrightnessWhileDozingConfig()Z
+HPLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->selectStrategy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;I)Lcom/android/server/display/brightness/strategy/DisplayBrightnessStrategy;
+PLcom/android/server/display/brightness/DisplayBrightnessStrategySelector;->shouldUseDozeBrightnessStrategy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
+PLcom/android/server/display/brightness/clamper/BrightnessClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;Ljava/lang/Runnable;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/DisplayDeviceConfig;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getBrightnessWearBedtimeModeCap()F
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingConfigData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingConfigData;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingData()Lcom/android/server/display/DisplayDeviceConfig$PowerThrottlingData;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getPowerThrottlingDataId()Ljava/lang/String;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getThermalBrightnessThrottlingData()Lcom/android/server/display/DisplayDeviceConfig$ThermalBrightnessThrottlingData;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getThermalThrottlingDataId()Ljava/lang/String;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;->getUniqueDisplayId()Ljava/lang/String;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getClampers(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)Ljava/util/List;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;->getModifiers(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;)Ljava/util/List;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$DisplayDeviceData;Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HPLcom/android/server/display/brightness/clamper/BrightnessClamperController;->clamp(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;FZ)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;->getBrightnessMaxReason()I
+PLcom/android/server/display/brightness/clamper/BrightnessClamperController;->start()V
+PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessLowPowerModeModifier;->shouldApply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
+PLcom/android/server/display/brightness/clamper/BrightnessModifier;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessModifier;->apply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Lcom/android/server/display/DisplayBrightnessState$Builder;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->$r8$lambda$-hfcoJ5P6TW4qcVQWR4feG_Xmbw(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->lambda$new$1(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->loadOverrideData()V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->setDisplayData(Lcom/android/server/display/brightness/clamper/BrightnessPowerClamper$PowerData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessPowerClamper;->start()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;I)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->$r8$lambda$ENq4KcyEOUIqb1nFJWEAw_M1iU0(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;I)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->lambda$notifyThrottling$0(I)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$1;->notifyThrottling(Landroid/os/Temperature;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;->getDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;->getThermalService()Landroid/os/IThermalService;
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->$r8$lambda$Mo-cWrPIfBxywgDfbuUnjZBYHLg(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->-$$Nest$mthermalStatusChanged(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper;I)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;-><init>(Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$Injector;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->lambda$new$1(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->loadOverrideData()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->setDisplayData(Lcom/android/server/display/brightness/clamper/BrightnessThermalClamper$ThermalData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->start()V
+PLcom/android/server/display/brightness/clamper/BrightnessThermalClamper;->thermalStatusChanged(I)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$1;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;->registerBedtimeModeObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;-><init>(Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$WearBedtimeModeData;)V
+PLcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$Injector;Landroid/os/Handler;Landroid/content/Context;Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Lcom/android/server/display/brightness/clamper/BrightnessWearBedtimeModeClamper$WearBedtimeModeData;)V
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->getBrightnessAdjusted(FLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)F
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->getModifier()I
+PLcom/android/server/display/brightness/clamper/DisplayDimModifier;->shouldApply(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
+PLcom/android/server/display/brightness/clamper/HdrClamper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;->-$$Nest$fgetmHdrMinPixels(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;)F
+PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;->-$$Nest$fputmHdrMinPixels(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;F)V
+PLcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;-><init>(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrListener;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper$Injector;-><init>()V
+PLcom/android/server/display/brightness/clamper/HdrClamper$Injector;->getHdrListener(Lcom/android/server/display/brightness/clamper/HdrClamper$HdrListener;Landroid/os/Handler;)Lcom/android/server/display/brightness/clamper/HdrClamper$HdrLayerInfoListener;
+PLcom/android/server/display/brightness/clamper/HdrClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Landroid/os/Handler;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper;-><init>(Lcom/android/server/display/brightness/clamper/BrightnessClamperController$ClamperChangeListener;Landroid/os/Handler;Lcom/android/server/display/brightness/clamper/HdrClamper$Injector;)V
+PLcom/android/server/display/brightness/clamper/HdrClamper;->recalculateBrightnessCap(Lcom/android/server/display/config/HdrBrightnessData;FZ)V
+PLcom/android/server/display/brightness/clamper/HdrClamper;->reset()V
+PLcom/android/server/display/brightness/clamper/HdrClamper;->resetHdrConfig(Lcom/android/server/display/config/HdrBrightnessData;IIFLandroid/os/IBinder;)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->accommodateUserBrightnessChanges(ZFILandroid/hardware/display/BrightnessConfiguration;I)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->getAutoBrightnessAdjustmentChanged()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->getAutoBrightnessAdjustmentSetting()F
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isAutoBrightnessDisabledDueToDisplayOff()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isAutoBrightnessEnabled()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isShortTermModelActive()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->isTemporaryAutoBrightnessAdjustmentApplied()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->processPendingAutoBrightnessAdjustments()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessApplied(Z)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setAutoBrightnessState(IZIIFZ)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->setUseAutoBrightness(Z)V
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->shouldUseAutoBrightness()Z
+PLcom/android/server/display/brightness/strategy/AutomaticBrightnessStrategy;->updateTemporaryAutoBrightnessAdjustments()F
+PLcom/android/server/display/brightness/strategy/BoostBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/DozeBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;-><init>(I)V
+PLcom/android/server/display/brightness/strategy/FollowerBrightnessStrategy;->getBrightnessToFollow()F
+PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->getName()Ljava/lang/String;
+PLcom/android/server/display/brightness/strategy/InvalidBrightnessStrategy;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/OffloadBrightnessStrategy;->getOffloadScreenBrightness()F
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->getName()Ljava/lang/String;
+PLcom/android/server/display/brightness/strategy/OverrideBrightnessStrategy;->updateBrightness(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Lcom/android/server/display/DisplayBrightnessState;
+PLcom/android/server/display/brightness/strategy/ScreenOffBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;-><init>()V
+PLcom/android/server/display/brightness/strategy/TemporaryBrightnessStrategy;->getTemporaryScreenBrightness()F
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->-$$Nest$maddColorTransformController(Lcom/android/server/display/color/AppSaturationController$SaturationController;Ljava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>()V
+PLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>(Lcom/android/server/display/color/AppSaturationController$SaturationController-IA;)V
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->addColorTransformController(Ljava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->clearExpiredReferences()V
+PLcom/android/server/display/color/AppSaturationController;-><clinit>()V
+PLcom/android/server/display/color/AppSaturationController;-><init>()V
+PLcom/android/server/display/color/AppSaturationController;->addColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/color/AppSaturationController;->getOrCreateSaturationControllerLocked(Landroid/util/SparseArray;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
+PLcom/android/server/display/color/AppSaturationController;->getOrCreateUserIdMapLocked(Ljava/lang/String;)Landroid/util/SparseArray;
+PLcom/android/server/display/color/AppSaturationController;->getSaturationControllerLocked(Ljava/lang/String;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
+PLcom/android/server/display/color/ColorDisplayService$2;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Handler;)V
+PLcom/android/server/display/color/ColorDisplayService$BinderService;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->attachColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->getReduceBrightColorsStrength()I
+PLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->setReduceBrightColorsListener(Lcom/android/server/display/color/ColorDisplayService$ReduceBrightColorsListener;)Z
+PLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>()V
+PLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>(Lcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator-IA;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$NightDisplayTintController-IA;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->isAvailable(Landroid/content/Context;)Z
+PLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;)V
+PLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;Lcom/android/server/display/color/ColorDisplayService$TintHandler-IA;)V
+PLcom/android/server/display/color/ColorDisplayService$TintHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fgetmAppSaturationController(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/AppSaturationController;
+PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fgetmReduceBrightColorsTintController(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/ReduceBrightColorsTintController;
+PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$fputmReduceBrightColorsListener(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$ReduceBrightColorsListener;)V
+PLcom/android/server/display/color/ColorDisplayService;->-$$Nest$msetUp(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService;-><clinit>()V
+PLcom/android/server/display/color/ColorDisplayService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/color/ColorDisplayService;->getColorModeInternal()I
+PLcom/android/server/display/color/ColorDisplayService;->getCurrentColorModeFromSystemProperties()I
+PLcom/android/server/display/color/ColorDisplayService;->isAccessibilityEnabled()Z
+PLcom/android/server/display/color/ColorDisplayService;->isAccessiblityDaltonizerEnabled()Z
+PLcom/android/server/display/color/ColorDisplayService;->isAccessiblityInversionEnabled()Z
+PLcom/android/server/display/color/ColorDisplayService;->isColorModeAvailable(I)Z
+PLcom/android/server/display/color/ColorDisplayService;->isUserSetupCompleted(Landroid/content/ContentResolver;I)Z
+PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityDaltonizerChanged()V
+PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityInversionChanged()V
+PLcom/android/server/display/color/ColorDisplayService;->onBootPhase(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onDisplayColorModeChanged(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onStart()V
+PLcom/android/server/display/color/ColorDisplayService;->onUserChanged(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/display/color/ColorDisplayService;->setUp()V
+PLcom/android/server/display/color/ColorDisplayService;->setUpDisplayCompositionColorSpaces(Landroid/content/res/Resources;)V
+PLcom/android/server/display/color/ColorTemperatureTintController;-><init>()V
+PLcom/android/server/display/color/DisplayTransformManager;-><clinit>()V
+PLcom/android/server/display/color/DisplayTransformManager;-><init>()V
+PLcom/android/server/display/color/DisplayTransformManager;->setColorMatrix(I[F)V
+PLcom/android/server/display/color/DisplayTransformManager;->setDaltonizerMode(I)V
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;-><init>(Landroid/hardware/display/DisplayManagerInternal;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->isAvailable(Landroid/content/Context;)Z
+PLcom/android/server/display/color/GlobalSaturationTintController;-><init>()V
+PLcom/android/server/display/color/ReduceBrightColorsTintController;-><init>()V
+PLcom/android/server/display/color/ReduceBrightColorsTintController;->getStrength()I
+PLcom/android/server/display/color/ReduceBrightColorsTintController;->isActivated()Z
+PLcom/android/server/display/color/ReduceBrightColorsTintController;->isAvailable(Landroid/content/Context;)Z
+PLcom/android/server/display/color/TintController;-><init>()V
+PLcom/android/server/display/color/TintController;->isActivated()Z
+HSPLcom/android/server/display/config/AutoBrightnessModeName;->$values()[Lcom/android/server/display/config/AutoBrightnessModeName;
+HSPLcom/android/server/display/config/AutoBrightnessModeName;-><clinit>()V
+HSPLcom/android/server/display/config/AutoBrightnessModeName;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessModeName;->getRawName()Ljava/lang/String;
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;->$values()[Lcom/android/server/display/config/AutoBrightnessSettingName;
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;-><clinit>()V
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/display/config/AutoBrightnessSettingName;->getRawName()Ljava/lang/String;
+HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;-><clinit>()V
+HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;Lcom/android/server/display/config/AutoBrightness;Landroid/util/Spline;)V
+PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->autoBrightnessModeToString(I)Ljava/lang/String;
+PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->autoBrightnessPresetToString(I)Ljava/lang/String;
+HSPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->brightnessArrayIntToFloat([ILandroid/util/Spline;)[F
+HPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getBrightnessArray(II)[F
+HPLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getLuxArray(II)[F
+PLcom/android/server/display/config/DisplayBrightnessMappingConfig;->getNitsArray()[F
+HSPLcom/android/server/display/config/SensorData;-><init>()V
+HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;FF)V
+HSPLcom/android/server/display/config/SensorData;-><init>(Ljava/lang/String;Ljava/lang/String;FFLjava/util/List;)V
+HSPLcom/android/server/display/config/SensorData;->loadAmbientLightSensorConfig(Landroid/content/res/Resources;)Lcom/android/server/display/config/SensorData;
+HSPLcom/android/server/display/config/SensorData;->loadSensorUnspecifiedConfig()Lcom/android/server/display/config/SensorData;
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;-><init>(Landroid/provider/DeviceConfigInterface;)V
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->addOnPropertiesChangedListener(Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->getBrightnessThrottlingData()Ljava/lang/String;
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getHighAmbientBrightnessThresholds()[F
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getHighDisplayBrightnessThresholds()[F
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getIntArrayProperty(Ljava/lang/String;)[I
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getLowAmbientBrightnessThresholds()[F
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getLowDisplayBrightnessThresholds()[F
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getPeakRefreshRateDefault()F
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->getPowerThrottlingData()Ljava/lang/String;
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHbmHdr()I
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHbmSunlight()I
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInHighZone()I
+HSPLcom/android/server/display/feature/DeviceConfigParameterProvider;->getRefreshRateInLowZone()I
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->isDisableScreenWakeLocksWhileCachedFeatureEnabled()Z
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->isHdrOutputControlFeatureEnabled()Z
+PLcom/android/server/display/feature/DeviceConfigParameterProvider;->removeOnPropertiesChangedListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda10;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda11;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda12;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda13;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda14;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda15;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda16;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda17;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda18;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda19;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda20;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda4;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda5;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda6;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda7;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda8;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$$ExternalSyntheticLambda9;->get()Ljava/lang/Object;
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->-$$Nest$misEnabled(Lcom/android/server/display/feature/DisplayManagerFlags$FlagState;)Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;Lcom/android/server/display/feature/DisplayManagerFlags$FlagState-IA;)V
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->flagOrSystemProperty(Ljava/util/function/Supplier;Ljava/lang/String;)Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags$FlagState;->isEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->-$$Nest$sfgetDEBUG()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;-><clinit>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags;-><init>()V
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->areAutoBrightnessModesEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isAdaptiveTone1Enabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isBackUpSmoothDisplayAndForcePeakRefreshRateEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isBrightnessIntRangeUserPerceptionEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isBrightnessWearBedtimeModeClamperEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayErrorHandlingEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isConnectedDisplayManagementEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplayOffloadEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplayResolutionRangeVotingEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isDisplaysRefreshRatesSynchronizationEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isEvenDimmerEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isExternalDisplayLimitModeEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isFastHdrTransitionsEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isHdrClamperEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isNbmControllerEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isPortInDisplayLayoutEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isPowerThrottlingClamperEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isRefreshRateVotingTelemetryEnabled()Z
+PLcom/android/server/display/feature/DisplayManagerFlags;->isSmallAreaDetectionEnabled()Z
+HSPLcom/android/server/display/feature/DisplayManagerFlags;->isUserPreferredModeVoteEnabled()Z
+HSPLcom/android/server/display/layout/Layout$Display;-><init>(Landroid/view/DisplayAddress;IZLjava/lang/String;Ljava/lang/String;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/display/layout/Layout$Display;-><init>(Landroid/view/DisplayAddress;IZLjava/lang/String;Ljava/lang/String;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/display/layout/Layout$Display-IA;)V
+HSPLcom/android/server/display/layout/Layout$Display;->getAddress()Landroid/view/DisplayAddress;
+HSPLcom/android/server/display/layout/Layout$Display;->getDisplayGroupName()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout$Display;->getLeadDisplayId()I
+HSPLcom/android/server/display/layout/Layout$Display;->getLogicalDisplayId()I
+HSPLcom/android/server/display/layout/Layout$Display;->getPosition()I
+HSPLcom/android/server/display/layout/Layout$Display;->getPowerThrottlingMapId()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout$Display;->getRefreshRateThermalThrottlingMapId()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout$Display;->getRefreshRateZoneId()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout$Display;->getThermalBrightnessThrottlingMapId()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout$Display;->isEnabled()Z
+HSPLcom/android/server/display/layout/Layout$Display;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/layout/Layout;-><init>()V
+HSPLcom/android/server/display/layout/Layout;->contains(Landroid/view/DisplayAddress;)Z
+HSPLcom/android/server/display/layout/Layout;->createDefaultDisplayLocked(Landroid/view/DisplayAddress;Lcom/android/server/display/layout/DisplayIdProducer;)V
+HSPLcom/android/server/display/layout/Layout;->createDisplayLocked(Landroid/view/DisplayAddress;ZZLjava/lang/String;Lcom/android/server/display/layout/DisplayIdProducer;ILandroid/view/DisplayAddress;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/display/layout/Layout;->getAt(I)Lcom/android/server/display/layout/Layout$Display;
+HSPLcom/android/server/display/layout/Layout;->getByAddress(Landroid/view/DisplayAddress;)Lcom/android/server/display/layout/Layout$Display;
+HSPLcom/android/server/display/layout/Layout;->getById(I)Lcom/android/server/display/layout/Layout$Display;
+HSPLcom/android/server/display/layout/Layout;->size()I
+HSPLcom/android/server/display/layout/Layout;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
+PLcom/android/server/display/mode/DisplayModeDirector$$ExternalSyntheticLambda0;->onChanged()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->findModeByIdLocked(II)Landroid/view/Display$Mode;
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppPreferredRefreshRateRangeLocked(IFF)V
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequest(IIFF)V
+HPLcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;->setAppRequestedModeLocked(II)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda10;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda11;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda12;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda13;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;-><init>()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda6;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda7;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda8;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$$ExternalSyntheticLambda9;->call()Ljava/lang/Object;
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$1;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener-IA;)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->removeCallbacks()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$8DAn56bU6WgFgsFx-a9p7-LZAcI(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$Ay2prysMHDYMO6gnyiTQlctgcyI(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$IKnEMBFyGRQBJ1PKPV09LlnUYcQ(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$QQJ_8KNK1PlQxWszYy-c-kL2A3U(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$TOfl-cGYXuStF3el4JR8AneQz-w(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$horxynV7MmybweJstKDz3KJXC50(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$q9lF_A0quq49fCqX-dNNPJaLYQ8(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->$r8$lambda$ukYjuV9AUGT_8BbrisQUwkGAqfM(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)[F
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$fgetmHandler(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;)Landroid/os/Handler;
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$mobserve(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Landroid/hardware/SensorManager;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->-$$Nest$mreloadLightSensor(Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$Injector;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->getBrightness(I)F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$4()[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$5(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$6()[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadHighBrightnessThresholds$7(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$0()[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$1(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$2()[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->lambda$loadLowBrightnessThresholds$3(Lcom/android/server/display/DisplayDeviceConfig;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadBrightnessThresholds(Ljava/util/concurrent/Callable;Ljava/util/concurrent/Callable;ILcom/android/server/display/DisplayDeviceConfig;ZLjava/util/function/Function;)[F
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadHighBrightnessThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadLowBrightnessThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadRefreshRateInHighZone(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->loadRefreshRateInLowZone(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->observe(Landroid/hardware/SensorManager;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onBrightnessChangedLocked()V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onDisplayChanged(I)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onLowPowerModeEnabledLocked(Z)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->onRefreshRateSettingChangedLocked(FF)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->reloadLightSensor(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->reloadLightSensorData(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->restartObserver()V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->setDefaultDisplayState(I)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->unregisterSensorListener()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateBlockingZoneThresholds(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+PLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateDefaultDisplayState()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;->updateSensorStatus()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>()V
+PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>(IZLandroid/view/SurfaceControl$RefreshRateRanges;Landroid/view/SurfaceControl$RefreshRateRanges;)V
+PLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->copyFrom(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HPLcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda0;->getAsInt()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda1;->getAsInt()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda2;->getAsInt()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/display/DisplayDeviceConfig;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings$$ExternalSyntheticLambda3;->getAsInt()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$4IM44pR3egbsLgKCJgtproSJ4HU(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$UjQJH7qg8DdCnUYR-DTJghZFPuQ(Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$Zlf8FUrJAId9oJETwAtYDKb3u9M(Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->$r8$lambda$p85UmY-pmP6AkHPGqUwdtsPukFw(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->-$$Nest$mgetRefreshRateInHbmHdr(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->-$$Nest$mgetRefreshRateInHbmSunlight(Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings-IA;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRate(Ljava/util/function/IntSupplier;Ljava/util/function/IntSupplier;ILcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRateInHbmHdr(Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRateInHbmSunlight(Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmHdr$0()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmHdr$1(Lcom/android/server/display/DisplayDeviceConfig;)I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmSunlight$2()I
+HSPLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->lambda$getRefreshRateInHbmSunlight$3(Lcom/android/server/display/DisplayDeviceConfig;)I
+PLcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;->startListening()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/os/Looper;)V
+PLcom/android/server/display/mode/DisplayModeDirector$DisplayModeDirectorHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/VotesStorage;)V
+PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->getDisplayInfo(I)Landroid/view/DisplayInfo;
+PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->isExternalDisplayLocked(I)Z
+PLcom/android/server/display/mode/DisplayModeDirector$DisplayObserver;->observe()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;)V
+PLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->observe()V
+PLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->onDisplayChanged(I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$HbmObserver;->setupHdrRefreshRates(Lcom/android/server/display/DisplayDeviceConfig;)V
+PLcom/android/server/display/mode/DisplayModeDirector$Injector;-><clinit>()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getBrightnessInfo(I)Landroid/hardware/display/BrightnessInfo;
+HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplay(I)Landroid/view/Display;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayInfo(ILandroid/view/DisplayInfo;)Z
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayManager()Landroid/hardware/display/DisplayManager;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplayManagerInternal()Landroid/hardware/display/DisplayManagerInternal;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getDisplays()[Landroid/view/Display;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getSensorManagerInternal()Lcom/android/server/sensors/SensorManagerInternal;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getThermalService()Landroid/os/IThermalService;
+HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->getVotesStatsReporter(Z)Lcom/android/server/display/mode/VotesStatsReporter;
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->isDozeState(Landroid/view/Display;)Z
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerMinRefreshRateObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerPeakRefreshRateObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
+PLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->registerThermalServiceListener(Landroid/os/IThermalEventListener;)Z
+HSPLcom/android/server/display/mode/DisplayModeDirector$RealInjector;->supportsFrameRateOverride()Z
+HSPLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;-><init>(Landroid/content/Context;Lcom/android/server/display/mode/VotesStorage;Lcom/android/server/display/mode/DisplayModeDirector$Injector;)V
+PLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;->observe()V
+PLcom/android/server/display/mode/DisplayModeDirector$SensorObserver;->onProximityActive(Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;ZLcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->observe()V
+HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->setDefaultPeakRefreshRate(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->setRefreshRates(Lcom/android/server/display/DisplayDeviceConfig;Z)V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateLowPowerModeSettingLocked()V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateModeSwitchingTypeSettingLocked()V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked()V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked(FFFI)V
+PLcom/android/server/display/mode/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked(I)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector;Lcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver-IA;)V
+PLcom/android/server/display/mode/DisplayModeDirector$UdfpsObserver;->observe()V
+PLcom/android/server/display/mode/DisplayModeDirector;->$r8$lambda$CBSdi5wPAhAASfeb2bCpd2owPvs(Lcom/android/server/display/mode/DisplayModeDirector;)V
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmBrightnessObserver(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$BrightnessObserver;
+HSPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmConfigParameterProvider(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmContext(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/content/Context;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDefaultDisplayDeviceConfig(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/DisplayDeviceConfig;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDefaultModeByDisplay(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/util/SparseArray;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmDeviceConfigDisplaySettings(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$DeviceConfigDisplaySettings;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmInjector(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/DisplayModeDirector$Injector;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmIsBackUpSmoothDisplayAndForcePeakRefreshRateEnabled(Lcom/android/server/display/mode/DisplayModeDirector;)Z
+HSPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmLock(Lcom/android/server/display/mode/DisplayModeDirector;)Ljava/lang/Object;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmModeSwitchingType(Lcom/android/server/display/mode/DisplayModeDirector;)I
+HPLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmSupportedModesByDisplay(Lcom/android/server/display/mode/DisplayModeDirector;)Landroid/util/SparseArray;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$fgetmVotesStorage(Lcom/android/server/display/mode/DisplayModeDirector;)Lcom/android/server/display/mode/VotesStorage;
+PLcom/android/server/display/mode/DisplayModeDirector;->-$$Nest$mgetMaxRefreshRateLocked(Lcom/android/server/display/mode/DisplayModeDirector;I)F
+HSPLcom/android/server/display/mode/DisplayModeDirector;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+HSPLcom/android/server/display/mode/DisplayModeDirector;->defaultDisplayDeviceUpdated(Lcom/android/server/display/DisplayDeviceConfig;)V
+PLcom/android/server/display/mode/DisplayModeDirector;->getAppRequestObserver()Lcom/android/server/display/mode/DisplayModeDirector$AppRequestObserver;
+HPLcom/android/server/display/mode/DisplayModeDirector;->getDesiredDisplayModeSpecs(I)Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecs;
+PLcom/android/server/display/mode/DisplayModeDirector;->getMaxRefreshRateLocked(I)F
+HPLcom/android/server/display/mode/DisplayModeDirector;->getModeSwitchingType()I
+PLcom/android/server/display/mode/DisplayModeDirector;->notifyDesiredDisplayModeSpecsChangedLocked()V
+PLcom/android/server/display/mode/DisplayModeDirector;->onBootCompleted()V
+PLcom/android/server/display/mode/DisplayModeDirector;->setDesiredDisplayModeSpecsListener(Lcom/android/server/display/mode/DisplayModeDirector$DesiredDisplayModeSpecsListener;)V
+PLcom/android/server/display/mode/DisplayModeDirector;->start(Landroid/hardware/SensorManager;)V
+PLcom/android/server/display/mode/RefreshRateVote$RenderVote;-><init>(FF)V
+PLcom/android/server/display/mode/RefreshRateVote$RenderVote;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/display/mode/RefreshRateVote$RenderVote;->updateSummary(Lcom/android/server/display/mode/VoteSummary;)V
+PLcom/android/server/display/mode/RefreshRateVote;-><init>(FF)V
+HSPLcom/android/server/display/mode/SkinThermalStatusObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;)V
+HSPLcom/android/server/display/mode/SkinThermalStatusObserver;-><init>(Lcom/android/server/display/mode/DisplayModeDirector$Injector;Lcom/android/server/display/mode/VotesStorage;Landroid/os/Handler;)V
+PLcom/android/server/display/mode/SkinThermalStatusObserver;->notifyThrottling(Landroid/os/Temperature;)V
+PLcom/android/server/display/mode/SkinThermalStatusObserver;->observe()V
+PLcom/android/server/display/mode/SkinThermalStatusObserver;->populateInitialDisplayInfo()V
+PLcom/android/server/display/mode/Vote;->forRenderFrameRates(FF)Lcom/android/server/display/mode/Vote;
+PLcom/android/server/display/mode/Vote;->priorityToString(I)Ljava/lang/String;
+PLcom/android/server/display/mode/VoteSummary;-><init>(ZZZZ)V
+PLcom/android/server/display/mode/VoteSummary;->adjustSize(Landroid/view/Display$Mode;[Landroid/view/Display$Mode;)V
+PLcom/android/server/display/mode/VoteSummary;->applyVotes(Landroid/util/SparseArray;II)V
+PLcom/android/server/display/mode/VoteSummary;->equalsWithinFloatTolerance(FF)Z
+PLcom/android/server/display/mode/VoteSummary;->filterModes([Landroid/view/Display$Mode;)Ljava/util/List;
+PLcom/android/server/display/mode/VoteSummary;->isRenderRateAchievable(F)Z
+PLcom/android/server/display/mode/VoteSummary;->isValid()Z
+PLcom/android/server/display/mode/VoteSummary;->limitRefreshRanges(Lcom/android/server/display/mode/VoteSummary;)V
+PLcom/android/server/display/mode/VoteSummary;->reset()V
+PLcom/android/server/display/mode/VoteSummary;->selectBaseMode(Ljava/util/List;Landroid/view/Display$Mode;)Landroid/view/Display$Mode;
+PLcom/android/server/display/mode/VoteSummary;->validateModeRenderRateAchievable(Landroid/view/Display$Mode;)Z
+PLcom/android/server/display/mode/VoteSummary;->validateModeSize(Landroid/view/Display$Mode;)Z
+PLcom/android/server/display/mode/VoteSummary;->validateModeSupported(Landroid/view/Display$Mode;)Z
+PLcom/android/server/display/mode/VoteSummary;->validateModeWithinPhysicalRefreshRange(Landroid/view/Display$Mode;)Z
+PLcom/android/server/display/mode/VoteSummary;->validateModeWithinRenderRefreshRange(Landroid/view/Display$Mode;)Z
+HSPLcom/android/server/display/mode/VotesStatsReporter;-><init>(ZZ)V
+PLcom/android/server/display/mode/VotesStatsReporter;->getMaxRefreshRate(Lcom/android/server/display/mode/Vote;Z)I
+PLcom/android/server/display/mode/VotesStatsReporter;->reportVoteAdded(IILcom/android/server/display/mode/Vote;)V
+PLcom/android/server/display/mode/VotesStatsReporter;->reportVoteChanged(IILcom/android/server/display/mode/Vote;)V
+PLcom/android/server/display/mode/VotesStatsReporter;->reportVotesActivated(IILandroid/view/Display$Mode;Landroid/util/SparseArray;)V
+HSPLcom/android/server/display/mode/VotesStorage;-><init>(Lcom/android/server/display/mode/VotesStorage$Listener;Lcom/android/server/display/mode/VotesStatsReporter;)V
+PLcom/android/server/display/mode/VotesStorage;->getVotes(I)Landroid/util/SparseArray;
+PLcom/android/server/display/mode/VotesStorage;->updateGlobalVote(ILcom/android/server/display/mode/Vote;)V
+PLcom/android/server/display/mode/VotesStorage;->updateVote(IILcom/android/server/display/mode/Vote;)V
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;)V
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$$ExternalSyntheticLambda0;->getUsbManager()Landroid/hardware/usb/UsbManager;
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->$r8$lambda$PN4BrLCfdXQAp9PYfft5KYnxARY(Landroid/content/Context;)Landroid/hardware/usb/UsbManager;
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)V
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Injector;)V
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->lambda$new$0(Landroid/content/Context;)Landroid/hardware/usb/UsbManager;
+PLcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;->registerListener(Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector$Listener;)V
+HSPLcom/android/server/display/notifications/DisplayNotificationManager$1;-><init>(Landroid/content/Context;Lcom/android/server/display/feature/DisplayManagerFlags;)V
+PLcom/android/server/display/notifications/DisplayNotificationManager$1;->getNotificationManager()Landroid/app/NotificationManager;
+PLcom/android/server/display/notifications/DisplayNotificationManager$1;->getUsbErrorsDetector()Lcom/android/server/display/notifications/ConnectedDisplayUsbErrorsDetector;
+HSPLcom/android/server/display/notifications/DisplayNotificationManager;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;)V
+HSPLcom/android/server/display/notifications/DisplayNotificationManager;-><init>(Lcom/android/server/display/feature/DisplayManagerFlags;Landroid/content/Context;Lcom/android/server/display/notifications/DisplayNotificationManager$Injector;)V
+PLcom/android/server/display/notifications/DisplayNotificationManager;->onBootCompleted()V
+PLcom/android/server/display/state/DisplayStateController;-><clinit>()V
+PLcom/android/server/display/state/DisplayStateController;-><init>(Lcom/android/server/display/DisplayPowerProximityStateController;)V
+PLcom/android/server/display/state/DisplayStateController;->shouldPerformScreenOffTransition()Z
+PLcom/android/server/display/state/DisplayStateController;->updateDisplayState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;ZZ)I
+PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;-><init>(Ljava/lang/String;IF)V
+PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->validateArguments(F)V
+PLcom/android/server/display/utils/AmbientFilter;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/display/utils/AmbientFilter;->validateArguments(I)V
+PLcom/android/server/display/utils/AmbientFilterFactory;->createAmbientFilter(Ljava/lang/String;IF)Lcom/android/server/display/utils/AmbientFilter;
+PLcom/android/server/display/utils/AmbientFilterFactory;->createBrightnessFilter(Ljava/lang/String;Landroid/content/res/Resources;)Lcom/android/server/display/utils/AmbientFilter;
+PLcom/android/server/display/utils/AmbientFilterFactory;->getFloat(Landroid/content/res/Resources;I)F
+HSPLcom/android/server/display/utils/DebugUtils;-><clinit>()V
+HSPLcom/android/server/display/utils/DebugUtils;->isDebuggable(Ljava/lang/String;)Z
+HSPLcom/android/server/display/utils/DeviceConfigParsingUtils;->ambientBrightnessThresholdsIntToFloat([I)[F
+HSPLcom/android/server/display/utils/DeviceConfigParsingUtils;->displayBrightnessThresholdsIntToFloat([I)[F
+PLcom/android/server/display/utils/DeviceConfigParsingUtils;->parseDeviceConfigMap(Ljava/lang/String;Ljava/util/function/BiFunction;Ljava/util/function/Function;)Ljava/util/Map;
+PLcom/android/server/display/utils/History;-><init>(I)V
+PLcom/android/server/display/utils/History;-><init>(ILjava/time/Clock;)V
+HSPLcom/android/server/display/utils/Plog$SystemPlog;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/display/utils/Plog;-><init>()V
+HSPLcom/android/server/display/utils/Plog;->createSystemPlog(Ljava/lang/String;)Lcom/android/server/display/utils/Plog;
+PLcom/android/server/display/utils/RollingBuffer;-><init>()V
+PLcom/android/server/display/utils/RollingBuffer;->clear()V
+PLcom/android/server/display/utils/SensorUtils;->findSensor(Landroid/hardware/SensorManager;Lcom/android/server/display/config/SensorData;I)Landroid/hardware/Sensor;
+PLcom/android/server/display/utils/SensorUtils;->findSensor(Landroid/hardware/SensorManager;Ljava/lang/String;Ljava/lang/String;I)Landroid/hardware/Sensor;
+PLcom/android/server/display/whitebalance/AmbientSensor$1;-><init>(Lcom/android/server/display/whitebalance/AmbientSensor;)V
+PLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+HPLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;Ljava/lang/String;I)V
+PLcom/android/server/display/whitebalance/AmbientSensor;-><init>(Ljava/lang/String;Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+PLcom/android/server/display/whitebalance/AmbientSensor;->validateArguments(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->create(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createBrightnessSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createColorTemperatureSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;
+PLcom/android/server/dreams/DreamController;-><clinit>()V
+PLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V
+PLcom/android/server/dreams/DreamController;->createDreamingStartedStoppedOptions()Landroid/os/Bundle;
+PLcom/android/server/dreams/DreamManagerService$1;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$2;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$3;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$4;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$5;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V
+PLcom/android/server/dreams/DreamManagerService$6;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$BinderService-IA;)V
+PLcom/android/server/dreams/DreamManagerService$DreamHandler;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$LocalService-IA;)V
+HPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
+PLcom/android/server/dreams/DreamManagerService$LocalService;->registerDreamManagerStateListener(Landroid/service/dreams/DreamManagerInternal$DreamManagerStateListener;)V
+PLcom/android/server/dreams/DreamManagerService$SettingsObserver;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$fgetmDreamManagerStateListeners(Lcom/android/server/dreams/DreamManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$misDreamingInternal(Lcom/android/server/dreams/DreamManagerService;)Z
+PLcom/android/server/dreams/DreamManagerService;->-$$Nest$mshouldKeepDreamingWhenUnplugging(Lcom/android/server/dreams/DreamManagerService;)Z
+HPLcom/android/server/dreams/DreamManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/dreams/DreamManagerService;->getDozeComponent()Landroid/content/ComponentName;
+PLcom/android/server/dreams/DreamManagerService;->getDozeComponent(I)Landroid/content/ComponentName;
+PLcom/android/server/dreams/DreamManagerService;->getServiceInfo(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
+PLcom/android/server/dreams/DreamManagerService;->onBootPhase(I)V
+PLcom/android/server/dreams/DreamManagerService;->onStart()V
+PLcom/android/server/dreams/DreamManagerService;->shouldKeepDreamingWhenUnplugging()Z
+PLcom/android/server/dreams/DreamManagerService;->updateWhenToDreamSettings()V
+PLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content/ComponentName;)Z
+PLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V
+PLcom/android/server/dreams/DreamUiEventLoggerImpl;-><init>([Ljava/lang/String;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$1;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$2;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$BinderService;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$BinderService;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Lcom/android/server/emergency/EmergencyAffordanceService$BinderService-IA;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$fgetmHandler(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler;
+PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$mhandleInitializeState(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->-$$Nest$mhandleNetworkCountryChanged(Lcom/android/server/emergency/EmergencyAffordanceService;Ljava/lang/String;I)V
+PLcom/android/server/emergency/EmergencyAffordanceService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->handleNetworkCountryChanged(Ljava/lang/String;I)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->handleThirdPartyBootPhase()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateAirplaneModeStatus()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->isoRequiresEmergencyAffordance(Ljava/lang/String;)Z
+PLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->updateNetworkCountry()V
+PLcom/android/server/feature/flags/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/feature/flags/FeatureFlagsImpl;-><init>()V
+HPLcom/android/server/feature/flags/FeatureFlagsImpl;->enableReadDropboxPermission()Z
+PLcom/android/server/feature/flags/FeatureFlagsImpl;->load_overrides_preload_safety()V
+PLcom/android/server/feature/flags/Flags;-><clinit>()V
+HPLcom/android/server/feature/flags/Flags;->enableReadDropboxPermission()Z
+HSPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/AndFilter;-><clinit>()V
+HSPLcom/android/server/firewall/CategoryFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/CategoryFilter;-><clinit>()V
+HSPLcom/android/server/firewall/FilterFactory;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/FilterFactory;->getTagName()Ljava/lang/String;
+HSPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V
+HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V
+HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver-IA;)V
+HPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
+PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/firewall/IntentFirewall$RuleObserver;-><init>(Lcom/android/server/firewall/IntentFirewall;Ljava/io/File;)V
+HSPLcom/android/server/firewall/IntentFirewall;-><clinit>()V
+HSPLcom/android/server/firewall/IntentFirewall;-><init>(Lcom/android/server/firewall/IntentFirewall$AMSInterface;Landroid/os/Handler;)V
+HPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z
+HPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z
+HPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/firewall/IntentFirewall;->getPackageManager()Landroid/content/pm/PackageManagerInternal;
+HSPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File;
+HSPLcom/android/server/firewall/IntentFirewall;->readRulesDir(Ljava/io/File;)V
+HSPLcom/android/server/firewall/NotFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/NotFilter;-><clinit>()V
+HSPLcom/android/server/firewall/OrFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/OrFilter;-><clinit>()V
+HSPLcom/android/server/firewall/PortFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/PortFilter;-><clinit>()V
+HSPLcom/android/server/firewall/SenderFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/SenderFilter$2;-><init>()V
+HSPLcom/android/server/firewall/SenderFilter$3;-><init>()V
+HSPLcom/android/server/firewall/SenderFilter$4;-><init>()V
+HSPLcom/android/server/firewall/SenderFilter$5;-><init>()V
+HSPLcom/android/server/firewall/SenderFilter;-><clinit>()V
+HSPLcom/android/server/firewall/SenderPackageFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/SenderPackageFilter;-><clinit>()V
+HSPLcom/android/server/firewall/SenderPermissionFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/SenderPermissionFilter;-><clinit>()V
+HSPLcom/android/server/firewall/StringFilter$10;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$2;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$3;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$4;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$5;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$6;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$7;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$8;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$9;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter;-><clinit>()V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;)V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$1;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;)V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;I)V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever;-><init>(Lcom/android/server/flags/DynamicFlagBinderDelegate;ILcom/android/server/flags/DynamicFlagBinderDelegate$BinderGriever-IA;)V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->$r8$lambda$vcppf9Un-gROJ-J-LEIMgIKeYoY(Ljava/lang/Integer;)Ljava/util/Set;
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate;-><clinit>()V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate;-><init>(Lcom/android/server/flags/FlagOverrideStore;)V
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->lambda$static$0(Ljava/lang/Integer;)Ljava/util/Set;
+HSPLcom/android/server/flags/DynamicFlagBinderDelegate;->registerCallback(ILandroid/flags/IFeatureFlagsCallback;)V
+HSPLcom/android/server/flags/FeatureFlagsBinder;-><init>(Lcom/android/server/flags/FlagOverrideStore;Lcom/android/server/flags/FlagsShellCommand;Lcom/android/server/flags/FeatureFlagsService$PermissionsChecker;)V
+HSPLcom/android/server/flags/FeatureFlagsBinder;->registerCallback(Landroid/flags/IFeatureFlagsCallback;)V
+HSPLcom/android/server/flags/FeatureFlagsService$PermissionsChecker;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/flags/FeatureFlagsService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/flags/FeatureFlagsService;->onBootPhase(I)V
+HSPLcom/android/server/flags/FeatureFlagsService;->onStart()V
+HSPLcom/android/server/flags/FlagCache$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/flags/FlagCache;-><init>()V
+HSPLcom/android/server/flags/FlagOverrideStore;-><init>(Lcom/android/server/flags/SettingsProxy;)V
+HSPLcom/android/server/flags/FlagOverrideStore;->setChangeCallback(Lcom/android/server/flags/FlagOverrideStore$FlagChangeCallback;)V
+HSPLcom/android/server/flags/FlagsShellCommand;-><init>(Lcom/android/server/flags/FlagOverrideStore;)V
+HSPLcom/android/server/flags/GlobalSettingsProxy;-><init>(Landroid/content/ContentResolver;)V
+PLcom/android/server/gpu/GpuService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/gpu/GpuService;->onBootPhase(I)V
+PLcom/android/server/gpu/GpuService;->onStart()V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionBackupHelper;-><clinit>()V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionBackupHelper;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Landroid/content/pm/PackageManager;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionManagerInternal;-><init>()V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionBinderService-IA;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;-><init>(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl-IA;)V
+HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->canGetSystemGrammaticalGender(ILjava/lang/String;)Z
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->getSystemGrammaticalGender(I)I
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService$GrammaticalInflectionManagerInternalImpl;->retrieveSystemGrammaticalGender(Landroid/content/res/Configuration;)I
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->$r8$lambda$sWnJ5Api2DUCiEAZO1zYUXFfRbI(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$fgetmContext(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)Landroid/content/Context;
+HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$mcanGetSystemGrammaticalGender(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;Landroid/content/AttributionSource;)Z
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->-$$Nest$mcheckSystemTermsOfAddressIsEnabled(Lcom/android/server/grammaticalinflection/GrammaticalInflectionService;)Z
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->canGetSystemGrammaticalGender(Landroid/content/AttributionSource;)Z
+HPLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->checkSystemTermsOfAddressIsEnabled()Z
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->getGrammaticalGenderFile(I)Ljava/io/File;
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->getSystemGrammaticalGender(Landroid/content/AttributionSource;I)I
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->lambda$onUserUnlocked$0(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->onStart()V
+PLcom/android/server/grammaticalinflection/GrammaticalInflectionService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/grammaticalinflection/GrammaticalInflectionUtils;->checkSystemGrammaticalGenderPermission(Landroid/permission/PermissionManager;Landroid/content/AttributionSource;)Z
+PLcom/android/server/graphics/fonts/FontManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/graphics/fonts/FontManagerService;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/graphics/fonts/FontManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/graphics/fonts/FontManagerService$FsverityUtilImpl;-><init>([Ljava/lang/String;)V
+PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;-><init>(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)V
+HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle$1;->getSerializedSystemFontMap()Landroid/os/SharedMemory;
+HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->-$$Nest$fgetmService(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)Lcom/android/server/graphics/fonts/FontManagerService;
+HPLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->-$$Nest$fgetmServiceStarted(Lcom/android/server/graphics/fonts/FontManagerService$Lifecycle;)Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/graphics/fonts/FontManagerService$Lifecycle;->onStart()V
+PLcom/android/server/graphics/fonts/FontManagerService;->$r8$lambda$6ntzwgOp0lINWCpV58rCsi7uat4(Lcom/android/server/graphics/fonts/FontManagerService;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/graphics/fonts/FontManagerService;-><init>(Landroid/content/Context;ZLjava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/graphics/fonts/FontManagerService;-><init>(Landroid/content/Context;ZLjava/util/concurrent/CompletableFuture;Lcom/android/server/graphics/fonts/FontManagerService-IA;)V
+PLcom/android/server/graphics/fonts/FontManagerService;->createUpdatableFontDir()Lcom/android/server/graphics/fonts/UpdatableFontDir;
+HPLcom/android/server/graphics/fonts/FontManagerService;->getCurrentFontMap()Landroid/os/SharedMemory;
+PLcom/android/server/graphics/fonts/FontManagerService;->getSystemFontConfig()Landroid/text/FontConfig;
+PLcom/android/server/graphics/fonts/FontManagerService;->initialize()V
+PLcom/android/server/graphics/fonts/FontManagerService;->lambda$new$0(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/graphics/fonts/FontManagerService;->serializeFontMap(Landroid/text/FontConfig;)Landroid/os/SharedMemory;
+PLcom/android/server/graphics/fonts/FontManagerService;->setSerializedFontMap(Landroid/os/SharedMemory;)V
+PLcom/android/server/graphics/fonts/FontManagerService;->setSystemFontMap()V
+PLcom/android/server/graphics/fonts/FontManagerService;->updateSerializedFontMap()V
+PLcom/android/server/graphics/fonts/OtfFontFileParser;-><init>()V
+PLcom/android/server/graphics/fonts/PersistentSystemFontConfig$Config;-><init>()V
+PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/graphics/fonts/UpdatableFontDir$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->$r8$lambda$l6wKUt3kHk5foaoReX8Hx16jJGk(Ljava/util/Map;)Landroid/text/FontConfig;
+PLcom/android/server/graphics/fonts/UpdatableFontDir;-><init>(Ljava/io/File;Lcom/android/server/graphics/fonts/UpdatableFontDir$FontFileParser;Lcom/android/server/graphics/fonts/UpdatableFontDir$FsverityUtil;Ljava/io/File;)V
+PLcom/android/server/graphics/fonts/UpdatableFontDir;-><init>(Ljava/io/File;Lcom/android/server/graphics/fonts/UpdatableFontDir$FontFileParser;Lcom/android/server/graphics/fonts/UpdatableFontDir$FsverityUtil;Ljava/io/File;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->getPostScriptMap()Ljava/util/Map;
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->getSystemFontConfig()Landroid/text/FontConfig;
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->lambda$new$0(Ljava/util/Map;)Landroid/text/FontConfig;
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->loadFontFileMap()V
+PLcom/android/server/graphics/fonts/UpdatableFontDir;->readPersistentConfig()Lcom/android/server/graphics/fonts/PersistentSystemFontConfig$Config;
+PLcom/android/server/health/HealthHalCallbackHidl;-><clinit>()V
+PLcom/android/server/health/HealthHalCallbackHidl;-><init>(Lcom/android/server/health/HealthInfoCallback;)V
+PLcom/android/server/health/HealthHalCallbackHidl;->healthInfoChanged_2_1(Landroid/hardware/health/V2_1/HealthInfo;)V
+PLcom/android/server/health/HealthHalCallbackHidl;->onRegistration(Landroid/hardware/health/V2_0/IHealth;Landroid/hardware/health/V2_0/IHealth;Ljava/lang/String;)V
+PLcom/android/server/health/HealthHalCallbackHidl;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/health/HealthHalCallbackHidl;->traceEnd()V
+PLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;)V
+PLcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthRegCallbackAidl$HalInfoCallback-IA;)V
+PLcom/android/server/health/HealthRegCallbackAidl;-><init>(Lcom/android/server/health/HealthInfoCallback;)V
+PLcom/android/server/health/HealthServiceWrapper$1;-><init>()V
+PLcom/android/server/health/HealthServiceWrapper$2;-><init>()V
+PLcom/android/server/health/HealthServiceWrapper$3;-><init>()V
+PLcom/android/server/health/HealthServiceWrapper;-><init>()V
+PLcom/android/server/health/HealthServiceWrapper;->create(Lcom/android/server/health/HealthInfoCallback;)Lcom/android/server/health/HealthServiceWrapper;
+PLcom/android/server/health/HealthServiceWrapper;->create(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;Lcom/android/server/health/HealthServiceWrapperHidl$Callback;Lcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;)Lcom/android/server/health/HealthServiceWrapper;
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl;)V
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback;-><init>(Lcom/android/server/health/HealthServiceWrapperAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceCallback-IA;)V
+PLcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;->waitForDeclaredService(Ljava/lang/String;)Landroid/hardware/health/IHealth;
+PLcom/android/server/health/HealthServiceWrapperAidl;-><clinit>()V
+PLcom/android/server/health/HealthServiceWrapperAidl;-><init>(Lcom/android/server/health/HealthRegCallbackAidl;Lcom/android/server/health/HealthServiceWrapperAidl$ServiceManagerStub;)V
+PLcom/android/server/health/HealthServiceWrapperAidl;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/health/HealthServiceWrapperAidl;->traceEnd()V
+PLcom/android/server/health/HealthServiceWrapperHidl$$ExternalSyntheticLambda4;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+PLcom/android/server/health/HealthServiceWrapperHidl$$ExternalSyntheticLambda4;->onValues(II)V
+PLcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;->get(Ljava/lang/String;)Landroid/hardware/health/V2_0/IHealth;
+PLcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;->get()Landroid/hidl/manager/V1_0/IServiceManager;
+PLcom/android/server/health/HealthServiceWrapperHidl$Notification$1;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl$Notification;)V
+PLcom/android/server/health/HealthServiceWrapperHidl$Notification$1;->run()V
+PLcom/android/server/health/HealthServiceWrapperHidl$Notification;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl;)V
+PLcom/android/server/health/HealthServiceWrapperHidl$Notification;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl;Lcom/android/server/health/HealthServiceWrapperHidl$Notification-IA;)V
+PLcom/android/server/health/HealthServiceWrapperHidl$Notification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/health/HealthServiceWrapperHidl;->$r8$lambda$eetuJn3PsYCN-V7Scb_L05ajA3Q(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmHandlerThread(Lcom/android/server/health/HealthServiceWrapperHidl;)Landroid/os/HandlerThread;
+PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmHealthSupplier(Lcom/android/server/health/HealthServiceWrapperHidl;)Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;
+PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmInstanceName(Lcom/android/server/health/HealthServiceWrapperHidl;)Ljava/lang/String;
+PLcom/android/server/health/HealthServiceWrapperHidl;->-$$Nest$fgetmLastService(Lcom/android/server/health/HealthServiceWrapperHidl;)Ljava/util/concurrent/atomic/AtomicReference;
+HPLcom/android/server/health/HealthServiceWrapperHidl;-><init>(Lcom/android/server/health/HealthServiceWrapperHidl$Callback;Lcom/android/server/health/HealthServiceWrapperHidl$IServiceManagerSupplier;Lcom/android/server/health/HealthServiceWrapperHidl$IHealthSupplier;)V
+PLcom/android/server/health/HealthServiceWrapperHidl;->getProperty(ILandroid/os/BatteryProperty;)I
+PLcom/android/server/health/HealthServiceWrapperHidl;->lambda$getProperty$3(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+PLcom/android/server/health/HealthServiceWrapperHidl;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/health/HealthServiceWrapperHidl;->traceEnd()V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;Lcom/android/server/incident/IncidentCompanionService$BinderService-IA;)V
+PLcom/android/server/incident/IncidentCompanionService;-><clinit>()V
+PLcom/android/server/incident/IncidentCompanionService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/incident/IncidentCompanionService;->onBootPhase(I)V
+PLcom/android/server/incident/IncidentCompanionService;->onStart()V
+PLcom/android/server/incident/PendingReports;-><init>(Landroid/content/Context;)V
+PLcom/android/server/incident/PendingReports;->onBootCompleted()V
+PLcom/android/server/incident/RequestQueue$1;-><init>(Lcom/android/server/incident/RequestQueue;)V
+PLcom/android/server/incident/RequestQueue;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/incident/RequestQueue;->start()V
+PLcom/android/server/infra/AbstractMasterSystemService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->getActiveServicePackageNameLocked()Ljava/lang/String;
+PLcom/android/server/infra/AbstractMasterSystemService$1;->handlePackageUpdateLocked(Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Landroid/os/Handler;)V
+PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->getServiceListForUserLocked(I)Ljava/util/List;
+PLcom/android/server/infra/AbstractMasterSystemService;->getServiceSettingsProperty()Ljava/lang/String;
+PLcom/android/server/infra/AbstractMasterSystemService;->isDisabledLocked(I)Z
+PLcom/android/server/infra/AbstractMasterSystemService;->onBootPhase(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onServiceEnabledLocked(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/infra/AbstractMasterSystemService;->peekServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/infra/AbstractMasterSystemService;->peekServiceListForUserLocked(I)Ljava/util/List;
+PLcom/android/server/infra/AbstractMasterSystemService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
+PLcom/android/server/infra/AbstractMasterSystemService;->removeCachedServiceListLocked(I)Ljava/util/List;
+PLcom/android/server/infra/AbstractMasterSystemService;->startTrackingPackageChanges()V
+PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceListLocked(IZ)Ljava/util/List;
+PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceLocked(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->visitServicesLocked(Lcom/android/server/infra/AbstractMasterSystemService$Visitor;)V
+PLcom/android/server/infra/AbstractPerUserSystemService;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Ljava/lang/Object;I)V
+PLcom/android/server/infra/AbstractPerUserSystemService;->getComponentNameLocked()Ljava/lang/String;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getContext()Landroid/content/Context;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceComponent(Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/infra/AbstractPerUserSystemService;->isEnabledLocked()Z
+PLcom/android/server/infra/AbstractPerUserSystemService;->updateIsSetupComplete(I)V
+PLcom/android/server/infra/AbstractPerUserSystemService;->updateLocked(Z)Z
+PLcom/android/server/infra/AbstractPerUserSystemService;->updateServiceInfoListLocked()[Landroid/content/ComponentName;
+PLcom/android/server/infra/AbstractPerUserSystemService;->updateServiceInfoLocked()Landroid/content/ComponentName;
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->readServiceName(I)Ljava/lang/String;
+PLcom/android/server/infra/ServiceNameBaseResolver;-><clinit>()V
+PLcom/android/server/infra/ServiceNameBaseResolver;-><init>(Landroid/content/Context;Z)V
+PLcom/android/server/infra/ServiceNameBaseResolver;->getDefaultServiceNameList(I)[Ljava/lang/String;
+PLcom/android/server/infra/ServiceNameBaseResolver;->getServiceName(I)Ljava/lang/String;
+PLcom/android/server/infra/ServiceNameBaseResolver;->getServiceNameList(I)[Ljava/lang/String;
+PLcom/android/server/infra/ServiceNameBaseResolver;->isConfiguredInMultipleMode()Z
+PLcom/android/server/infra/ServiceNameBaseResolver;->setOnTemporaryServiceNameChangedCallback(Lcom/android/server/infra/ServiceNameResolver$NameResolverListener;)V
+PLcom/android/server/input/AmbientKeyboardBacklightController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/AmbientKeyboardBacklightController;)V
+PLcom/android/server/input/AmbientKeyboardBacklightController$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;->-$$Nest$fgetmDecreaseLuxThreshold(Lcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;)I
+PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;->-$$Nest$fgetmIncreaseLuxThreshold(Lcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;)I
+PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;-><init>(III)V
+PLcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep;-><init>(IIILcom/android/server/input/AmbientKeyboardBacklightController$BrightnessStep-IA;)V
+PLcom/android/server/input/AmbientKeyboardBacklightController;->$r8$lambda$JJuuzJTMpjI9ZCGBKjwNrMezjco(Lcom/android/server/input/AmbientKeyboardBacklightController;Landroid/os/Message;)Z
+PLcom/android/server/input/AmbientKeyboardBacklightController;-><clinit>()V
+PLcom/android/server/input/AmbientKeyboardBacklightController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/input/AmbientKeyboardBacklightController;->getAmbientLightSensor(Landroid/hardware/display/DisplayManagerInternal$AmbientLightSensorData;)Landroid/hardware/Sensor;
+PLcom/android/server/input/AmbientKeyboardBacklightController;->handleDisplayChange()V
+PLcom/android/server/input/AmbientKeyboardBacklightController;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/AmbientKeyboardBacklightController;->initConfiguration()V
+PLcom/android/server/input/AmbientKeyboardBacklightController;->systemRunning()V
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda6;-><init>()V
+PLcom/android/server/input/BatteryController$$ExternalSyntheticLambda6;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/input/BatteryController$1;-><init>(Lcom/android/server/input/BatteryController;)V
+PLcom/android/server/input/BatteryController$1;->onInputDeviceAdded(I)V
+PLcom/android/server/input/BatteryController$1;->onInputDeviceChanged(I)V
+PLcom/android/server/input/BatteryController$LocalBluetoothBatteryManager$1;-><init>(Lcom/android/server/input/BatteryController$LocalBluetoothBatteryManager;)V
+PLcom/android/server/input/BatteryController$LocalBluetoothBatteryManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/input/BatteryController;->$r8$lambda$n6_ejU_h9YIm1A7iCB3zx5esPWg(Landroid/view/InputDevice;)Ljava/lang/Boolean;
+PLcom/android/server/input/BatteryController;->-$$Nest$fgetmDeviceMonitors(Lcom/android/server/input/BatteryController;)Landroid/util/ArrayMap;
+PLcom/android/server/input/BatteryController;->-$$Nest$fgetmLock(Lcom/android/server/input/BatteryController;)Ljava/lang/Object;
+PLcom/android/server/input/BatteryController;->-$$Nest$misUsiDevice(Lcom/android/server/input/BatteryController;I)Z
+PLcom/android/server/input/BatteryController;-><clinit>()V
+PLcom/android/server/input/BatteryController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
+PLcom/android/server/input/BatteryController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Landroid/os/Looper;Lcom/android/server/input/UEventManager;Lcom/android/server/input/BatteryController$BluetoothBatteryManager;)V
+PLcom/android/server/input/BatteryController;->isUsiDevice(I)Z
+PLcom/android/server/input/BatteryController;->lambda$isUsiDevice$1(Landroid/view/InputDevice;)Ljava/lang/Boolean;
+PLcom/android/server/input/BatteryController;->monitor()V
+PLcom/android/server/input/BatteryController;->processInputDevice(ILjava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
+PLcom/android/server/input/BatteryController;->systemRunning()V
+PLcom/android/server/input/GestureMonitorSpyWindow;-><init>(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/view/SurfaceControl;Landroid/view/InputChannel;)V
+PLcom/android/server/input/InputFeatureFlagProvider;-><clinit>()V
+PLcom/android/server/input/InputFeatureFlagProvider;->isAmbientKeyboardBacklightControlEnabled()Z
+PLcom/android/server/input/InputFeatureFlagProvider;->isKeyboardBacklightControlEnabled()Z
+PLcom/android/server/input/InputManagerInternal;-><init>()V
+PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/input/InputManagerService;Landroid/view/InputChannel;)V
+PLcom/android/server/input/InputManagerService$$ExternalSyntheticLambda8;-><init>(Ljava/util/List;)V
+PLcom/android/server/input/InputManagerService$1;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$2;-><init>()V
+PLcom/android/server/input/InputManagerService$4;-><init>(Lcom/android/server/input/InputManagerService;)V
+HSPLcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;-><init>()V
+HSPLcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;->reset()V
+PLcom/android/server/input/InputManagerService$Injector;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
+PLcom/android/server/input/InputManagerService$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/input/InputManagerService$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/input/InputManagerService$Injector;->getNativeService(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/NativeInputManagerService;
+PLcom/android/server/input/InputManagerService$Injector;->getUEventManager()Lcom/android/server/input/UEventManager;
+PLcom/android/server/input/InputManagerService$Injector;->registerLocalService(Lcom/android/server/input/InputManagerInternal;)V
+PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V
+PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V
+PLcom/android/server/input/InputManagerService$InputManagerHandler;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V
+PLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/input/InputManagerService$InputMonitorHost;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$LocalService-IA;)V
+PLcom/android/server/input/InputManagerService$LocalService;->notifyUserActivity()V
+PLcom/android/server/input/InputManagerService$LocalService;->onInputMethodSubtypeChangedForKeyboardLayoutMapping(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
+PLcom/android/server/input/InputManagerService$LocalService;->setDisplayViewports(Ljava/util/List;)V
+PLcom/android/server/input/InputManagerService$LocalService;->setPulseGestureEnabled(Z)V
+PLcom/android/server/input/InputManagerService$LocalService;->setStylusButtonMotionEventsEnabled(Z)V
+PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmDoubleTouchGestureEnableFile(Lcom/android/server/input/InputManagerService;)Ljava/io/File;
+PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmKeyboardBacklightController(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/InputManagerService$KeyboardBacklightControllerInterface;
+PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmKeyboardLayoutManager(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/KeyboardLayoutManager;
+PLcom/android/server/input/InputManagerService;->-$$Nest$fgetmNative(Lcom/android/server/input/InputManagerService;)Lcom/android/server/input/NativeInputManagerService;
+PLcom/android/server/input/InputManagerService;->-$$Nest$mdeliverInputDevicesChanged(Lcom/android/server/input/InputManagerService;[Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->-$$Nest$mreloadDeviceAliases(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService;->-$$Nest$msetDisplayViewportsInternal(Lcom/android/server/input/InputManagerService;Ljava/util/List;)V
+HSPLcom/android/server/input/InputManagerService;-><clinit>()V
+PLcom/android/server/input/InputManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/input/InputManagerService;-><init>(Lcom/android/server/input/InputManagerService$Injector;)V
+PLcom/android/server/input/InputManagerService;->applyAdditionalDisplayInputProperties()V
+PLcom/android/server/input/InputManagerService;->applyAdditionalDisplayInputPropertiesLocked(Lcom/android/server/input/InputManagerService$AdditionalDisplayInputProperties;)V
+PLcom/android/server/input/InputManagerService;->canDispatchToDisplay(II)Z
+PLcom/android/server/input/InputManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/input/InputManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;Z)Z
+PLcom/android/server/input/InputManagerService;->createInputChannel(Ljava/lang/String;)Landroid/view/InputChannel;
+PLcom/android/server/input/InputManagerService;->createSpyWindowGestureMonitor(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/SurfaceControl;III)Landroid/view/InputChannel;
+HPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->flatten(Ljava/util/Map;)[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getDeviceTypeAssociations()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I
+HPLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getHoverTapSlop()I
+PLcom/android/server/input/InputManagerService;->getHoverTapTimeout()I
+PLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice;
+PLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
+PLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice;
+PLcom/android/server/input/InputManagerService;->getInputPortAssociations()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getInputUniqueIdAssociations()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I
+PLcom/android/server/input/InputManagerService;->getKeyboardLayoutAssociations()[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getLights(I)Ljava/util/List;
+PLcom/android/server/input/InputManagerService;->getLongPressTimeout()I
+PLcom/android/server/input/InputManagerService;->getScanCodeState(III)I
+PLcom/android/server/input/InputManagerService;->getSwitchState(III)I
+PLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
+PLcom/android/server/input/InputManagerService;->getVelocityTrackerStrategy()Ljava/lang/String;
+PLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I
+PLcom/android/server/input/InputManagerService;->isInputDeviceEnabled(I)Z
+PLcom/android/server/input/InputManagerService;->isMicMuted()I
+PLcom/android/server/input/InputManagerService;->loadStaticInputPortAssociations()Ljava/util/Map;
+HPLcom/android/server/input/InputManagerService;->monitor()V
+PLcom/android/server/input/InputManagerService;->monitorGestureInput(Landroid/os/IBinder;Ljava/lang/String;I)Landroid/view/InputMonitor;
+PLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;I)Landroid/view/InputChannel;
+PLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V
+PLcom/android/server/input/InputManagerService;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
+PLcom/android/server/input/InputManagerService;->registerLidSwitchCallbackInternal(Lcom/android/server/input/InputManagerInternal$LidSwitchCallback;)V
+PLcom/android/server/input/InputManagerService;->reloadDeviceAliases()V
+PLcom/android/server/input/InputManagerService;->removeInputChannel(Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService;->setAccessibilityBounceKeysThreshold(I)V
+PLcom/android/server/input/InputManagerService;->setAccessibilitySlowKeysThreshold(I)V
+PLcom/android/server/input/InputManagerService;->setAccessibilityStickyKeysEnabled(Z)V
+PLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Ljava/util/List;)V
+PLcom/android/server/input/InputManagerService;->setFocusedApplication(ILandroid/view/InputApplicationHandle;)V
+PLcom/android/server/input/InputManagerService;->setFocusedDisplay(I)V
+PLcom/android/server/input/InputManagerService;->setInTouchMode(ZIIZI)Z
+PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V
+PLcom/android/server/input/InputManagerService;->setUseLargePointerIcons(Z)V
+PLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V
+PLcom/android/server/input/InputManagerService;->start()V
+PLcom/android/server/input/InputManagerService;->systemRunning()V
+PLcom/android/server/input/InputManagerService;->updatePointerDisplayIdLocked(I)Z
+PLcom/android/server/input/InputManagerService;->updatePointerLocationEnabled(Z)V
+PLcom/android/server/input/InputManagerService;->updateShowKeyPresses(Z)V
+PLcom/android/server/input/InputManagerService;->updateShowRotaryInput(Z)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda11;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda15;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+PLcom/android/server/input/InputSettingsObserver$$ExternalSyntheticLambda9;->accept(Ljava/lang/Object;)V
+PLcom/android/server/input/InputSettingsObserver$1;-><init>(Lcom/android/server/input/InputSettingsObserver;)V
+HPLcom/android/server/input/InputSettingsObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$8-nmfADGlbXR2y7cYvJjCtqiCDU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$B6UbsHTKEzcrp2SmYSj1UeL9fa0(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$E77TZbEY0Eiqo5odbeeaxq9YVVY(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$EZo0BN6vEeXLyFlM39mQLCNLQRU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$H1paEVQ6iS1w225jbFS3KlGpUH0(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$IAIqOWxGj0NqFaNlwpNZXIwerhY(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$MotvkOT12GYIlX8NWJLa1hYA0GA(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$QdnpwXhg1-UovvW3vm6K6ReunTA(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$Rr0lgi-WpfNxFXW9-C-Qm7EPPAQ(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$ZZJw7liozvnfpwJy3dHpbXK6TBs(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$_fP8LM44ztL2nXy491rpD7KkA8M(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$bQ6Pakt0-8gsVCTKD29WSS6maqM(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$fenPZ8hwNeHQiC5wNUY7p_Nan68(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$fuEgvfKd7GY8eVSNTB3BzuuJKHQ(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$k6knUOK1nWWHQJdmB93hBPmnk4g(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$pqYW_K7ai5UbiF55BnWTwJfksFE(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$tCrW_EpGwbX9GnJRAW5H1bM6Rsc(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$uo0KjrciiUrgeyPJZXw8X_RZfIU(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->$r8$lambda$uxAhDD-5nvRXXpXuIseeY9peJ1s(Lcom/android/server/input/InputSettingsObserver;Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->-$$Nest$fgetmObservers(Lcom/android/server/input/InputSettingsObserver;)Ljava/util/Map;
+HPLcom/android/server/input/InputSettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/input/InputManagerService;Lcom/android/server/input/NativeInputManagerService;)V
+PLcom/android/server/input/InputSettingsObserver;->configureUserActivityPokeInterval()V
+PLcom/android/server/input/InputSettingsObserver;->constrainPointerSpeedValue(I)I
+PLcom/android/server/input/InputSettingsObserver;->getBoolean(Ljava/lang/String;Z)Z
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$0(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$1(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$10(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$11(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$12(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$13(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$14(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$15(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$16(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$17(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$18(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$2(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$3(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$4(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$5(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$6(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$7(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$8(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->lambda$new$9(Ljava/lang/String;)V
+HPLcom/android/server/input/InputSettingsObserver;->registerAndUpdate()V
+PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityBounceKeys()V
+PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityLargePointer()V
+PLcom/android/server/input/InputSettingsObserver;->updateAccessibilitySlowKeys()V
+PLcom/android/server/input/InputSettingsObserver;->updateAccessibilityStickyKeys()V
+PLcom/android/server/input/InputSettingsObserver;->updateKeyRepeatInfo()V
+PLcom/android/server/input/InputSettingsObserver;->updateLongPressTimeout(Ljava/lang/String;)V
+PLcom/android/server/input/InputSettingsObserver;->updateMaximumObscuringOpacityForTouch()V
+PLcom/android/server/input/InputSettingsObserver;->updateMousePointerSpeed()V
+PLcom/android/server/input/InputSettingsObserver;->updatePointerLocation()V
+PLcom/android/server/input/InputSettingsObserver;->updateShowKeyPresses()V
+PLcom/android/server/input/InputSettingsObserver;->updateShowRotaryInput()V
+PLcom/android/server/input/InputSettingsObserver;->updateShowTouches()V
+PLcom/android/server/input/InputSettingsObserver;->updateStylusPointerIconEnabled()V
+PLcom/android/server/input/InputSettingsObserver;->updateTouchpadNaturalScrollingEnabled()V
+PLcom/android/server/input/InputSettingsObserver;->updateTouchpadPointerSpeed()V
+PLcom/android/server/input/InputSettingsObserver;->updateTouchpadRightClickZoneEnabled()V
+PLcom/android/server/input/InputSettingsObserver;->updateTouchpadTapDraggingEnabled()V
+PLcom/android/server/input/InputSettingsObserver;->updateTouchpadTapToClickEnabled()V
+PLcom/android/server/input/KeyRemapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/input/KeyRemapper;)V
+PLcom/android/server/input/KeyRemapper$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyRemapper;->$r8$lambda$N4TqxA4BYCMFcqyr3TCvlujPC84(Lcom/android/server/input/KeyRemapper;Landroid/os/Message;)Z
+PLcom/android/server/input/KeyRemapper;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
+PLcom/android/server/input/KeyRemapper;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyRemapper;->onInputDeviceAdded(I)V
+PLcom/android/server/input/KeyRemapper;->onInputDeviceChanged(I)V
+PLcom/android/server/input/KeyRemapper;->supportRemapping()Z
+PLcom/android/server/input/KeyRemapper;->systemRunning()V
+PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/input/KeyboardBacklightController;)V
+PLcom/android/server/input/KeyboardBacklightController$$ExternalSyntheticLambda2;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyboardBacklightController$1;-><init>(Lcom/android/server/input/KeyboardBacklightController;)V
+PLcom/android/server/input/KeyboardBacklightController;->$r8$lambda$x56uNWQ8yZ3aSFy91aBfHRGVrXg(Lcom/android/server/input/KeyboardBacklightController;Landroid/os/Message;)Z
+PLcom/android/server/input/KeyboardBacklightController;-><clinit>()V
+PLcom/android/server/input/KeyboardBacklightController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;Lcom/android/server/input/KeyboardBacklightController$AnimatorFactory;Lcom/android/server/input/UEventManager;)V
+PLcom/android/server/input/KeyboardBacklightController;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;Lcom/android/server/input/UEventManager;)V
+PLcom/android/server/input/KeyboardBacklightController;->getInputDevice(I)Landroid/view/InputDevice;
+PLcom/android/server/input/KeyboardBacklightController;->getKeyboardBacklight(Landroid/view/InputDevice;)Landroid/hardware/lights/Light;
+PLcom/android/server/input/KeyboardBacklightController;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyboardBacklightController;->handleUserActivity()V
+PLcom/android/server/input/KeyboardBacklightController;->handleUserInactivity()V
+PLcom/android/server/input/KeyboardBacklightController;->notifyUserActivity()V
+PLcom/android/server/input/KeyboardBacklightController;->onInputDeviceAdded(I)V
+PLcom/android/server/input/KeyboardBacklightController;->onInputDeviceChanged(I)V
+PLcom/android/server/input/KeyboardBacklightController;->systemRunning()V
+PLcom/android/server/input/KeyboardBacklightController;->updateAmbientLightListener()V
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/input/KeyboardLayoutManager;)V
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda5;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda7;-><init>(Ljava/util/HashSet;)V
+HPLcom/android/server/input/KeyboardLayoutManager$$ExternalSyntheticLambda7;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager$1;-><init>(Lcom/android/server/input/KeyboardLayoutManager;)V
+PLcom/android/server/input/KeyboardLayoutManager$3;-><init>(Lcom/android/server/input/KeyboardLayoutManager;Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/input/KeyboardLayoutManager$3;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager$ImeInfo;-><init>(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
+HPLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->-$$Nest$fgetmIdentifier(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;)Landroid/hardware/input/InputDeviceIdentifier;
+PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->-$$Nest$fgetmLanguageTag(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;)Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;-><init>(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;-><init>(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier-IA;)V
+HPLcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;->toString()Ljava/lang/String;
+HPLcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager$LayoutKey;-><init>(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)V
+PLcom/android/server/input/KeyboardLayoutManager$LayoutKey;-><init>(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;Lcom/android/server/input/KeyboardLayoutManager$LayoutKey-IA;)V
+HPLcom/android/server/input/KeyboardLayoutManager$LayoutKey;->toString()Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager;->$r8$lambda$OSXbhKl2Ydsv_pJa-G91vzms3iI(Ljava/util/HashSet;Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager;->$r8$lambda$y-LzIDNoOFY2WLN0_gSck9p-JRA(Lcom/android/server/input/KeyboardLayoutManager;Landroid/os/Message;)Z
+HPLcom/android/server/input/KeyboardLayoutManager;->-$$Nest$smisLayoutCompatibleWithLanguageTag(Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;)Z
+PLcom/android/server/input/KeyboardLayoutManager;-><clinit>()V
+PLcom/android/server/input/KeyboardLayoutManager;-><init>(Landroid/content/Context;Lcom/android/server/input/NativeInputManagerService;Lcom/android/server/input/PersistentDataStore;Landroid/os/Looper;)V
+PLcom/android/server/input/KeyboardLayoutManager;->getDefaultKeyboardLayoutBasedOnImeInfo(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;[Landroid/hardware/input/KeyboardLayout;)Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutInfo;
+PLcom/android/server/input/KeyboardLayoutManager;->getInputDevice(I)Landroid/view/InputDevice;
+HPLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutInfo;
+HPLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutListForInputDeviceInternal(Lcom/android/server/input/KeyboardLayoutManager$KeyboardIdentifier;Lcom/android/server/input/KeyboardLayoutManager$ImeInfo;)[Landroid/hardware/input/KeyboardLayout;
+PLcom/android/server/input/KeyboardLayoutManager;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/input/KeyboardLayoutManager;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
+PLcom/android/server/input/KeyboardLayoutManager;->getMatchingLayoutForProvidedLanguageTag(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager;->getMatchingLayoutForProvidedLanguageTagAndLayoutType([Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/KeyboardLayoutManager;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/input/KeyboardLayoutManager;->isLayoutCompatibleWithLanguageTag(Landroid/hardware/input/KeyboardLayout;Ljava/lang/String;)Z
+HPLcom/android/server/input/KeyboardLayoutManager;->lambda$updateKeyboardLayouts$1(Ljava/util/HashSet;Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
+PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceAdded(I)V
+PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceChanged(I)V
+PLcom/android/server/input/KeyboardLayoutManager;->onInputDeviceChangedInternal(IZ)V
+PLcom/android/server/input/KeyboardLayoutManager;->onInputMethodSubtypeChanged(ILcom/android/internal/inputmethod/InputMethodSubtypeHandle;Landroid/view/inputmethod/InputMethodSubtype;)V
+PLcom/android/server/input/KeyboardLayoutManager;->reloadKeyboardLayouts()V
+PLcom/android/server/input/KeyboardLayoutManager;->systemRunning()V
+PLcom/android/server/input/KeyboardLayoutManager;->updateKeyboardLayouts()V
+PLcom/android/server/input/KeyboardLayoutManager;->useNewSettingsUi()Z
+HPLcom/android/server/input/KeyboardLayoutManager;->visitAllKeyboardLayouts(Lcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V
+HPLcom/android/server/input/KeyboardLayoutManager;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/KeyboardLayoutManager$KeyboardLayoutVisitor;)V
+PLcom/android/server/input/NativeInputManagerService$NativeImpl;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/MessageQueue;)V
+PLcom/android/server/input/PersistentDataStore$Injector;-><init>()V
+PLcom/android/server/input/PersistentDataStore$Injector;->openRead()Ljava/io/InputStream;
+PLcom/android/server/input/PersistentDataStore;-><init>()V
+PLcom/android/server/input/PersistentDataStore;-><init>(Lcom/android/server/input/PersistentDataStore$Injector;)V
+PLcom/android/server/input/PersistentDataStore;->clearState()V
+PLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;)Lcom/android/server/input/PersistentDataStore$InputDeviceState;
+PLcom/android/server/input/PersistentDataStore;->getKeyboardLayout(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
+PLcom/android/server/input/PersistentDataStore;->load()V
+PLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V
+PLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z
+PLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V
+PLcom/android/server/input/StickyModifierStateController;-><clinit>()V
+PLcom/android/server/input/StickyModifierStateController;-><init>()V
+PLcom/android/server/input/UEventManager$UEventListener$1;-><init>(Lcom/android/server/input/UEventManager$UEventListener;)V
+PLcom/android/server/input/UEventManager$UEventListener;->-$$Nest$fgetmObserver(Lcom/android/server/input/UEventManager$UEventListener;)Landroid/os/UEventObserver;
+PLcom/android/server/input/UEventManager$UEventListener;-><init>()V
+PLcom/android/server/input/UEventManager;->addListener(Lcom/android/server/input/UEventManager$UEventListener;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/AdditionalSubtypeMap;-><clinit>()V
+PLcom/android/server/inputmethod/AdditionalSubtypeMap;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/inputmethod/AdditionalSubtypeMap;->get(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getAdditionalSubtypeFile(Ljava/io/File;)Landroid/util/AtomicFile;
+PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getInputMethodDir(I)Ljava/io/File;
+PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->load(I)Lcom/android/server/inputmethod/AdditionalSubtypeMap;
+PLcom/android/server/inputmethod/AutofillSuggestionsController;-><clinit>()V
+PLcom/android/server/inputmethod/AutofillSuggestionsController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/AutofillSuggestionsController;->performOnCreateInlineSuggestionsRequest()V
+PLcom/android/server/inputmethod/ClientController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/ClientController;Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
+PLcom/android/server/inputmethod/ClientController$$ExternalSyntheticLambda0;->binderDied()V
+PLcom/android/server/inputmethod/ClientController;->$r8$lambda$eF4cD2NQlJ6H-Idt0s1NiLWRSeA(Lcom/android/server/inputmethod/ClientController;Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
+PLcom/android/server/inputmethod/ClientController;-><init>(Landroid/content/pm/PackageManagerInternal;)V
+HPLcom/android/server/inputmethod/ClientController;->addClient(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;III)Lcom/android/server/inputmethod/ClientState;
+PLcom/android/server/inputmethod/ClientController;->addClientControllerCallback(Lcom/android/server/inputmethod/ClientController$ClientControllerCallback;)V
+PLcom/android/server/inputmethod/ClientController;->getClient(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ClientState;
+PLcom/android/server/inputmethod/ClientController;->lambda$addClient$0(Lcom/android/server/inputmethod/IInputMethodClientInvoker;)V
+PLcom/android/server/inputmethod/ClientController;->removeClientAsBinder(Landroid/os/IBinder;)Z
+HPLcom/android/server/inputmethod/ClientState;-><init>(Lcom/android/server/inputmethod/IInputMethodClientInvoker;Lcom/android/internal/inputmethod/IRemoteInputConnection;IIILandroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/inputmethod/ClientState;->toString()Ljava/lang/String;
+PLcom/android/server/inputmethod/DefaultImeVisibilityApplier;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/DefaultImeVisibilityApplier;->applyImeVisibility(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;II)V
+PLcom/android/server/inputmethod/HandwritingModeController;-><clinit>()V
+PLcom/android/server/inputmethod/HandwritingModeController;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/Runnable;Ljava/util/function/IntConsumer;)V
+PLcom/android/server/inputmethod/HandwritingModeController;->clearPendingHandwritingDelegation()V
+PLcom/android/server/inputmethod/HandwritingModeController;->reset()V
+PLcom/android/server/inputmethod/HandwritingModeController;->reset(Z)V
+PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;-><init>(Lcom/android/server/inputmethod/InputMethodMap;I)V
+PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;->getUserId()I
+PLcom/android/server/inputmethod/HardwareKeyboardShortcutController;->reset(Lcom/android/server/inputmethod/InputMethodMap;)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;-><init>(Lcom/android/internal/inputmethod/IInputMethodClient;ZLandroid/os/Handler;)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->create(Lcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/Handler;)Lcom/android/server/inputmethod/IInputMethodClientInvoker;
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onBindMethod(Lcom/android/internal/inputmethod/InputBindResult;)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onBindMethodInternal(Lcom/android/internal/inputmethod/InputBindResult;)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onUnbindMethod(II)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->onUnbindMethodInternal(II)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->reportFullscreenMode(Z)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->reportFullscreenModeInternal(Z)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->setActive(ZZ)V
+PLcom/android/server/inputmethod/IInputMethodClientInvoker;->setActiveInternal(ZZ)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;-><init>(Lcom/android/internal/inputmethod/IInputMethod;)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/inputmethod/IInputMethodInvoker;->bindInput(Landroid/view/inputmethod/InputBinding;)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;->create(Lcom/android/internal/inputmethod/IInputMethod;)Lcom/android/server/inputmethod/IInputMethodInvoker;
+PLcom/android/server/inputmethod/IInputMethodInvoker;->createSession(Landroid/view/InputChannel;Lcom/android/internal/inputmethod/IInputMethodSessionCallback;)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;->initializeInternal(Landroid/os/IBinder;Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;I)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;->setSessionEnabled(Lcom/android/internal/inputmethod/IInputMethodSession;Z)V
+PLcom/android/server/inputmethod/IInputMethodInvoker;->startInput(Landroid/os/IBinder;Lcom/android/internal/inputmethod/IRemoteInputConnection;Landroid/view/inputmethod/EditorInfo;ZILandroid/window/ImeOnBackInvokedDispatcher;)V
+PLcom/android/server/inputmethod/ImePlatformCompatUtils;-><init>()V
+PLcom/android/server/inputmethod/ImePlatformCompatUtils;->isChangeEnabledByUid(JI)Z
+PLcom/android/server/inputmethod/ImePlatformCompatUtils;->shouldClearShowForcedFlag(I)Z
+PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/ImeTrackerService;Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmDuration(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)J
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmFromUser(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)Z
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmOrigin(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmPhase(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmReason(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmStartTime(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)J
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmStatus(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmType(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fgetmUid(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)I
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmDuration(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;J)V
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmPhase(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;I)V
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;->-$$Nest$fputmStatus(Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;I)V
+HPLcom/android/server/inputmethod/ImeTrackerService$History$Entry;-><init>(Ljava/lang/String;IIIIIZ)V
+PLcom/android/server/inputmethod/ImeTrackerService$History$Entry;-><init>(Ljava/lang/String;IIIIIZLcom/android/server/inputmethod/ImeTrackerService$History$Entry-IA;)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$maddEntry(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$mgetEntry(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;
+PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$msetFinished(Lcom/android/server/inputmethod/ImeTrackerService$History;Landroid/view/inputmethod/ImeTracker$Token;II)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->-$$Nest$sfgetsSequenceNumber()Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/inputmethod/ImeTrackerService$History;-><clinit>()V
+PLcom/android/server/inputmethod/ImeTrackerService$History;-><init>()V
+PLcom/android/server/inputmethod/ImeTrackerService$History;-><init>(Lcom/android/server/inputmethod/ImeTrackerService$History-IA;)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->addEntry(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;)V
+PLcom/android/server/inputmethod/ImeTrackerService$History;->getEntry(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeTrackerService$History$Entry;
+HPLcom/android/server/inputmethod/ImeTrackerService$History;->setFinished(Landroid/view/inputmethod/ImeTracker$Token;II)V
+PLcom/android/server/inputmethod/ImeTrackerService;->$r8$lambda$iu5qDG_Qa1HHpnJA5w-tOh7aP38(Lcom/android/server/inputmethod/ImeTrackerService;Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/inputmethod/ImeTrackerService;->lambda$onRequestHide$1(Landroid/view/inputmethod/ImeTracker$Token;)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onCancelled(Landroid/view/inputmethod/ImeTracker$Token;I)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onProgress(Landroid/os/IBinder;I)V
+PLcom/android/server/inputmethod/ImeTrackerService;->onRequestHide(Ljava/lang/String;IIIZ)Landroid/view/inputmethod/ImeTracker$Token;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerInternal;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$1;-><init>(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$1;->onImeInputTargetVisibilityChanged(Landroid/os/IBinder;ZZ)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$fgetmSoftInputModeState(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)I
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$msetImeDisplayId(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;I)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->-$$Nest$msetRequestedImeVisible(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;Z)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;-><init>(IIZZZI)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->getWindowFlags()I
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->hasEditorFocused()Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->hasImeFocusChanged()Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->isRequestedImeVisible()Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setImeDisplayId(I)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setRequestImeToken(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;->setRequestedImeVisible(Z)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->-$$Nest$fgetmPendingA11yRequestingHideKeyboard(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;)Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;-><init>()V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->isImeHiddenByDisplayPolicy()Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;->setImeHiddenByDisplayPolicy(Z)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;-><init>(II)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;->getReason()I
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;->getState()I
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->-$$Nest$fgetmCurVisibleImeInputTarget(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;)Landroid/os/IBinder;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->-$$Nest$fputmCurVisibleImeInputTarget(Lcom/android/server/inputmethod/ImeVisibilityStateComputer;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->canHideIme(Landroid/view/inputmethod/ImeTracker$Token;I)Z
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->clearImeShowFlags()V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->computeImeDisplayId(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;I)I
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->computeState(Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;Z)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityResult;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getImePolicy()Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeVisibilityPolicy;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getOrCreateWindowState(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->getWindowStateOrNull(Landroid/os/IBinder;)Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->requestImeVisibility(Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->setWindowState(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)V
+PLcom/android/server/inputmethod/ImeVisibilityStateComputer;->setWindowStateInner(Landroid/os/IBinder;Lcom/android/server/inputmethod/ImeVisibilityStateComputer$ImeTargetWindowState;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$1;-><init>(Lcom/android/server/inputmethod/InputMethodBindingController;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$2;-><init>(Lcom/android/server/inputmethod/InputMethodBindingController;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodBindingController$2;->updateCurrentMethodUid()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurIntent(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/content/Intent;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurMethod(Lcom/android/server/inputmethod/InputMethodBindingController;)Lcom/android/server/inputmethod/IInputMethodInvoker;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurMethodUid(Lcom/android/server/inputmethod/InputMethodBindingController;)I
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmCurToken(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/os/IBinder;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmLatchForTesting(Lcom/android/server/inputmethod/InputMethodBindingController;)Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/inputmethod/InputMethodBindingController;)Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmSelectedMethodId(Lcom/android/server/inputmethod/InputMethodBindingController;)Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmService(Lcom/android/server/inputmethod/InputMethodBindingController;)Lcom/android/server/inputmethod/InputMethodManagerService;
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fgetmSupportsStylusHw(Lcom/android/server/inputmethod/InputMethodBindingController;)Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmCurMethod(Lcom/android/server/inputmethod/InputMethodBindingController;Lcom/android/server/inputmethod/IInputMethodInvoker;)V
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmCurMethodUid(Lcom/android/server/inputmethod/InputMethodBindingController;I)V
+PLcom/android/server/inputmethod/InputMethodBindingController;->-$$Nest$fputmSupportsStylusHw(Lcom/android/server/inputmethod/InputMethodBindingController;Z)V
+PLcom/android/server/inputmethod/InputMethodBindingController;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodBindingController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodBindingController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;ILjava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/inputmethod/InputMethodBindingController;->addFreshWindowToken()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->advanceSequenceNumber()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentInputMethodService(Landroid/content/ServiceConnection;I)Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentInputMethodServiceMainConnection()Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->bindCurrentMethod()Lcom/android/internal/inputmethod/InputBindResult;
+PLcom/android/server/inputmethod/InputMethodBindingController;->clearCurMethodAndSessions()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->createImeBindingIntent(Landroid/content/ComponentName;)Landroid/content/Intent;
+PLcom/android/server/inputmethod/InputMethodBindingController;->getCurId()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodBindingController;->getCurMethod()Lcom/android/server/inputmethod/IInputMethodInvoker;
+PLcom/android/server/inputmethod/InputMethodBindingController;->getCurMethodUid()I
+PLcom/android/server/inputmethod/InputMethodBindingController;->getCurToken()Landroid/os/IBinder;
+PLcom/android/server/inputmethod/InputMethodBindingController;->getLastBindTime()J
+PLcom/android/server/inputmethod/InputMethodBindingController;->getSelectedMethodId()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodBindingController;->getSequenceNumber()I
+PLcom/android/server/inputmethod/InputMethodBindingController;->hasMainConnection()Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->isVisibleBound()Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->removeCurrentToken()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->setCurrentMethodNotVisible()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->setSelectedMethodId(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodBindingController;->supportsStylusHandwriting()Z
+PLcom/android/server/inputmethod/InputMethodBindingController;->unbindCurrentMethod()V
+PLcom/android/server/inputmethod/InputMethodBindingController;->unbindMainConnection()V
+PLcom/android/server/inputmethod/InputMethodDeviceConfigs$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/inputmethod/InputMethodDeviceConfigs;)V
+PLcom/android/server/inputmethod/InputMethodDeviceConfigs;-><init>()V
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;-><init>()V
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;-><init>(Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder-IA;)V
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->build()Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->fillAuxiliaryImes(Ljava/util/List;Landroid/content/Context;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->fillImes(Ljava/util/List;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;->isEmpty()Z
+PLcom/android/server/inputmethod/InputMethodInfoUtils;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->chooseSystemVoiceIme(Lcom/android/server/inputmethod/InputMethodMap;Ljava/lang/String;Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/List;Z)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->getFallbackLocaleForDefaultIme(Ljava/util/List;Landroid/content/Context;)Ljava/util/Locale;
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->getMinimumKeyboardSetWithSystemLocale(Ljava/util/List;Landroid/content/Context;Ljava/util/Locale;Ljava/util/Locale;)Lcom/android/server/inputmethod/InputMethodInfoUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodInfoUtils;->getMostApplicableDefaultIME(Ljava/util/List;)Landroid/view/inputmethod/InputMethodInfo;
+PLcom/android/server/inputmethod/InputMethodManagerInternal$1;-><init>()V
+PLcom/android/server/inputmethod/InputMethodManagerInternal;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodManagerInternal;-><init>()V
+PLcom/android/server/inputmethod/InputMethodManagerInternal;->get()Lcom/android/server/inputmethod/InputMethodManagerInternal;
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda11;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda2;-><init>(Ljava/util/List;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;IILcom/android/server/inputmethod/InputMethodSettings;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda7;->runOrThrow()V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$$ExternalSyntheticLambda9;->onClientRemoved(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/IInputMethodInvoker;Landroid/view/InputChannel;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$1;->sessionCreated(Lcom/android/internal/inputmethod/IInputMethodSession;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$3;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/hardware/input/InputManager;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$3;->onInputDeviceChanged(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$3;->remove(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$6;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers-IA;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$InkWindowInitializer-IA;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportFullscreenModeAsync(Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportStartInputAsync(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->updateStatusIconAsync(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onStart()V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl-IA;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->onImeParentChanged(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->removeImeSurface(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->reportImeControl(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->addKnownImePackageNameLocked(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearKnownImePackageNamesLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearPackageChangeState()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->isChangingPackagesOfCurrentUserLocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onBeginPackageChanges()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/inputmethod/ClientState;Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/Handler;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$SoftInputShowHideHistory;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodManagerService$SoftInputShowHideHistory;-><init>()V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>()V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory-IA;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->getEntrySize()I
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><init>(ILandroid/os/IBinder;ILjava/lang/String;IZIILandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$Ldb_lZJoevH2yGpbOQAZ4KPTou4(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$MzZJToGrqrCYCFD7Mqd0xPdMqLo(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$PHzs3DePqjjuRsDB9un1spyitV8(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->$r8$lambda$apwJ5GwwA3tRoPWo5dXQONTyNlc(Lcom/android/server/inputmethod/InputMethodManagerService;IILcom/android/server/inputmethod/InputMethodSettings;Landroid/view/inputmethod/InputMethodInfo;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fgetmHandler(Lcom/android/server/inputmethod/InputMethodManagerService;)Landroid/os/Handler;
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fgetmSettings(Lcom/android/server/inputmethod/InputMethodManagerService;)Lcom/android/server/inputmethod/InputMethodSettings;
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$fputmCurPerceptible(Lcom/android/server/inputmethod/InputMethodManagerService;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mpublishLocalService(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mremoveStylusDeviceIdLocked(Lcom/android/server/inputmethod/InputMethodManagerService;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mreportFullscreenMode(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mreportStartInput(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$mupdateStatusIcon(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->-$$Nest$smisStylusDevice(Landroid/view/InputDevice;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;Lcom/android/server/ServiceThread;Lcom/android/server/inputmethod/InputMethodBindingController;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->addClient(Lcom/android/internal/inputmethod/IInputMethodClient;Lcom/android/internal/inputmethod/IRemoteInputConnection;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->advanceSequenceNumberLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->attachNewAccessibilityLocked(IZ)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/inputmethod/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->buildInputMethodListLocked(Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->calledWithValidTokenLocked(Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->canCallerAccessInputMethod(Ljava/lang/String;IILcom/android/server/inputmethod/InputMethodSettings;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->chooseNewDefaultIMELocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionForAccessibilityLocked(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionsLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->computeCurrentDeviceMethodIdLocked(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodManagerService;->computeImeDisplayIdForTarget(ILcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;)I
+PLcom/android/server/inputmethod/InputMethodManagerService;->createAccessibilityInputMethodSessions(Landroid/util/SparseArray;)Landroid/util/SparseArray;
+PLcom/android/server/inputmethod/InputMethodManagerService;->createStatsTokenForFocusedClient(ZIIZ)Landroid/view/inputmethod/ImeTracker$Token;
+PLcom/android/server/inputmethod/InputMethodManagerService;->filterInputMethodServices(Lcom/android/server/inputmethod/AdditionalSubtypeMap;Ljava/util/List;Landroid/content/Context;Ljava/util/List;)Lcom/android/server/inputmethod/InputMethodMap;
+PLcom/android/server/inputmethod/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurIdLocked()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurMethodLocked()Lcom/android/server/inputmethod/IInputMethodInvoker;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurMethodUidLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurTokenDisplayIdLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurTokenLocked()Landroid/os/IBinder;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentImeUserIdLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getDisplayIdToShowImeLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodList(I)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListLocked(II)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getImeTrackerService()Lcom/android/internal/inputmethod/IImeTracker;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodNavButtonFlagsLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getLastBindTimeLocked()J
+PLcom/android/server/inputmethod/InputMethodManagerService;->getPackageManagerForUser(Landroid/content/Context;I)Landroid/content/pm/PackageManager;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getSelectedMethodIdLocked()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getSequenceNumberLocked()I
+PLcom/android/server/inputmethod/InputMethodManagerService;->getStylusInputDeviceIds(Landroid/hardware/input/InputManager;)Landroid/util/IntArray;
+PLcom/android/server/inputmethod/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->hasConnectionLocked()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(Landroid/os/IBinder;Landroid/view/inputmethod/ImeTracker$Token;ILandroid/os/ResultReceiver;I)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->hideStatusBarIconLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->initializeImeLocked(Lcom/android/server/inputmethod/IInputMethodInvoker;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->isImeTraceEnabled()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->isSelectedMethodBoundLocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->isShowRequestedForCurrentWindow()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->isStylusDevice(Landroid/view/InputDevice;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$getEnabledInputMethodListLocked$6(IILcom/android/server/inputmethod/InputMethodSettings;Landroid/view/inputmethod/InputMethodInfo;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$new$0(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$reportPerceptibleAsync$7(Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$systemRunning$4(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->maybeInitImeNavbarConfigLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->notifyInputMethodSubtypeChangedLocked(ILandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onClientRemoved(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onSessionCreated(Lcom/android/server/inputmethod/IInputMethodInvoker;Lcom/android/internal/inputmethod/IInputMethodSession;Landroid/view/InputChannel;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onUnbindCurrentMethodByReset()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onUnlockUser(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->performOnCreateInlineSuggestionsRequestLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->prepareClientSwitchLocked(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->publishLocalService()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->queryInputMethodForCurrentUserLocked(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
+PLcom/android/server/inputmethod/InputMethodManagerService;->queryInputMethodServicesInternal(Landroid/content/Context;ILcom/android/server/inputmethod/AdditionalSubtypeMap;I)Lcom/android/server/inputmethod/InputMethodSettings;
+PLcom/android/server/inputmethod/InputMethodManagerService;->reRequestCurrentClientSessionLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->registerDeviceListenerAndCheckStylusSupport()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->removeStylusDeviceIdLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->reportPerceptibleAsync(Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->reportStartInput(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionForAccessibilityLocked(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/inputmethod/ClientState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetCurrentMethodAndClientLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetSelectedInputMethodAndSubtypeLocked(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetSystemUiLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->scheduleNotifyImeUidToAudioService(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->scheduleResetStylusHandwriting()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->sendOnNavButtonFlagsChangedLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setCurTokenDisplayIdLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionForAccessibilityLocked(Landroid/util/SparseArray;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedMethodIdLocked(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->shouldPreventImeStartupLocked(Ljava/lang/String;II)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;)Lcom/android/internal/inputmethod/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocusInternalLocked(ILcom/android/internal/inputmethod/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;IILandroid/window/ImeOnBackInvokedDispatcher;Lcom/android/server/inputmethod/ClientState;)Lcom/android/internal/inputmethod/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/inputmethod/ClientState;Lcom/android/internal/inputmethod/IRemoteInputConnection;Lcom/android/internal/inputmethod/IRemoteAccessibilityInputConnection;Landroid/view/inputmethod/EditorInfo;IIILandroid/window/ImeOnBackInvokedDispatcher;)Lcom/android/internal/inputmethod/InputBindResult;
+PLcom/android/server/inputmethod/InputMethodManagerService;->systemRunning()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->tryReuseConnectionLocked(Lcom/android/server/inputmethod/ClientState;)Lcom/android/internal/inputmethod/InputBindResult;
+PLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentClientLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateDefaultVoiceImeIfNeededLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateFromSettingsLocked(Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked(II)V
+PLcom/android/server/inputmethod/InputMethodMap;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodMap;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/inputmethod/InputMethodMap;->containsKey(Ljava/lang/String;)Z
+PLcom/android/server/inputmethod/InputMethodMap;->emptyMap()Lcom/android/server/inputmethod/InputMethodMap;
+PLcom/android/server/inputmethod/InputMethodMap;->get(Ljava/lang/String;)Landroid/view/inputmethod/InputMethodInfo;
+PLcom/android/server/inputmethod/InputMethodMap;->of(Landroid/util/ArrayMap;)Lcom/android/server/inputmethod/InputMethodMap;
+PLcom/android/server/inputmethod/InputMethodMap;->values()Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodMenuController;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodMenuController;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodMenuController;->getSwitchingDialogLocked()Landroid/app/AlertDialog;
+PLcom/android/server/inputmethod/InputMethodMenuController;->hideInputMethodMenuLocked()V
+PLcom/android/server/inputmethod/InputMethodMenuController;->updateKeyboardFromSettingsLocked()V
+PLcom/android/server/inputmethod/InputMethodSettings;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodSettings;-><init>(Lcom/android/server/inputmethod/InputMethodMap;I)V
+PLcom/android/server/inputmethod/InputMethodSettings;->addSubtypeToHistory(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->create(Lcom/android/server/inputmethod/InputMethodMap;I)Lcom/android/server/inputmethod/InputMethodSettings;
+PLcom/android/server/inputmethod/InputMethodSettings;->createEmptyMap(I)Lcom/android/server/inputmethod/InputMethodSettings;
+HPLcom/android/server/inputmethod/InputMethodSettings;->createEnabledInputMethodList(Ljava/util/List;Ljava/util/function/Predicate;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodSettings;->getDefaultVoiceInputMethod()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodList()Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodListWithFilter(Ljava/util/function/Predicate;)Ljava/util/ArrayList;
+HPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsAndSubtypeList()Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSettings;->getEnabledInputMethodsStr()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSettings;->getInt(Ljava/lang/String;I)I
+PLcom/android/server/inputmethod/InputMethodSettings;->getMethodList()Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSettings;->getMethodMap()Lcom/android/server/inputmethod/InputMethodMap;
+PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethod()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethodSubtypeHashCode()I
+PLcom/android/server/inputmethod/InputMethodSettings;->getSelectedInputMethodSubtypeId(Ljava/lang/String;)I
+PLcom/android/server/inputmethod/InputMethodSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSettings;->getSubtypeHistoryStr()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodSettings;->getUserId()I
+PLcom/android/server/inputmethod/InputMethodSettings;->loadInputMethodAndSubtypeHistory()Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSettings;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedDefaultDeviceInputMethod(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedInputMethod(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->putSelectedSubtype(I)V
+PLcom/android/server/inputmethod/InputMethodSettings;->putString(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->putSubtypeHistoryStr(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->saveCurrentInputMethodAndSubtypeToHistory(Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
+PLcom/android/server/inputmethod/InputMethodSettings;->saveSubtypeHistory(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;-><init>(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->createFrom(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;Ljava/util/List;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->filterImeSubtypeList(Ljava/util/List;Z)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->-$$Nest$fgetmImeSubtypeList(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList-IA;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/inputmethod/InputMethodInfo;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->-$$Nest$fgetmImeSubtypeList(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;-><init>(Ljava/util/List;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->createInstanceLocked(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;
+HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeList(ZZZLandroid/content/Context;Lcom/android/server/inputmethod/InputMethodMap;I)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getUserId()I
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->resetCircularListLocked(Lcom/android/server/inputmethod/InputMethodMap;)V
+PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda0;-><init>(Ljava/util/ArrayList;)V
+PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda1;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/inputmethod/InputMethodUtils$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/inputmethod/InputMethodUtils;->canAddToLastInputMethod(Landroid/view/inputmethod/InputMethodSubtype;)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->checkIfPackageBelongsToUid(Landroid/content/pm/PackageManagerInternal;ILjava/lang/String;)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->concatEnabledImeIds(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodUtils;->convertIdToComponentName(Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/inputmethod/InputMethodUtils;->getEnabledInputMethodIdsForFiltering(Landroid/content/Context;I)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodUtils;->isSoftInputModeStateVisibleAllowed(II)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->resolveUserId(IILjava/io/PrintWriter;)[I
+PLcom/android/server/inputmethod/InputMethodUtils;->setNonSelectedSystemImesDisabledUntilUsed(Landroid/content/pm/PackageManager;Ljava/util/List;)V
+PLcom/android/server/inputmethod/InputMethodUtils;->splitEnabledImeStr(Ljava/lang/String;Ljava/util/function/Consumer;)V
+PLcom/android/server/inputmethod/LocaleUtils;->getSystemLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale;
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;Landroid/content/BroadcastReceiver;)V
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper$1;-><init>(Landroid/content/Context;ILjava/util/concurrent/atomic/AtomicBoolean;Ljava/util/function/Consumer;Lcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;)V
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;-><init>(ILjava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicReference;)V
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->create(Landroid/content/Context;ILandroid/os/Handler;Ljava/util/function/Consumer;)Lcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->evaluate(Landroid/content/Context;I)Z
+PLcom/android/server/inputmethod/OverlayableSystemBooleanResourceWrapper;->get()Z
+PLcom/android/server/inputmethod/SecureSettingsWrapper$1;-><init>()V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$2;-><init>(I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;-><init>(ILandroid/content/ContentResolver;)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->getInt(Ljava/lang/String;I)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$LockedUserImpl;->putString(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;-><init>(ILandroid/content/ContentResolver;)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getInt(Ljava/lang/String;I)I
+HPLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper$UnlockedUserImpl;->putString(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->-$$Nest$smgetUserIdForClonedSettings(Ljava/lang/String;I)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper;-><clinit>()V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->createImpl(Lcom/android/server/pm/UserManagerInternal;I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
+HPLcom/android/server/inputmethod/SecureSettingsWrapper;->get(I)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->getBoolean(Ljava/lang/String;ZI)Z
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->getInt(Ljava/lang/String;II)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->getUserIdForClonedSettings(Ljava/lang/String;I)I
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->onStart(Landroid/content/Context;)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->onUserStarting(I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->onUserUnlocking(I)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->putInt(Ljava/lang/String;II)V
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->putOrGet(ILcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;)Lcom/android/server/inputmethod/SecureSettingsWrapper$ReaderWriter;
+PLcom/android/server/inputmethod/SecureSettingsWrapper;->putString(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/SubtypeUtils$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/inputmethod/SubtypeUtils;-><clinit>()V
+PLcom/android/server/inputmethod/SubtypeUtils;->getImplicitlyApplicableSubtypes(Landroid/os/LocaleList;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/SubtypeUtils;->getImplicitlyApplicableSubtypesImpl(Landroid/os/LocaleList;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/SubtypeUtils;->getSubtypeIdFromHashCode(Landroid/view/inputmethod/InputMethodInfo;I)I
+PLcom/android/server/inputmethod/SubtypeUtils;->getSubtypes(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/SystemLocaleWrapper$LocaleChangeListener;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/SystemLocaleWrapper$Callback;)V
+PLcom/android/server/inputmethod/SystemLocaleWrapper;-><clinit>()V
+PLcom/android/server/inputmethod/SystemLocaleWrapper;->get(I)Landroid/os/LocaleList;
+PLcom/android/server/inputmethod/SystemLocaleWrapper;->onStart(Landroid/content/Context;Lcom/android/server/inputmethod/SystemLocaleWrapper$Callback;Landroid/os/Handler;)V
+PLcom/android/server/integrity/AppIntegrityManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/integrity/AppIntegrityManagerService;->onStart()V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;-><init>(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;)V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><clinit>()V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/integrity/engine/RuleEvaluationEngine;Lcom/android/server/integrity/IntegrityFileManager;Landroid/os/Handler;)V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->create(Landroid/content/Context;)Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;
+PLcom/android/server/integrity/IntegrityFileManager;-><clinit>()V
+PLcom/android/server/integrity/IntegrityFileManager;-><init>()V
+PLcom/android/server/integrity/IntegrityFileManager;-><init>(Lcom/android/server/integrity/parser/RuleParser;Lcom/android/server/integrity/serializer/RuleSerializer;Ljava/io/File;)V
+PLcom/android/server/integrity/IntegrityFileManager;->getInstance()Lcom/android/server/integrity/IntegrityFileManager;
+PLcom/android/server/integrity/IntegrityFileManager;->updateRuleIndexingController()V
+PLcom/android/server/integrity/engine/RuleEvaluationEngine;-><init>(Lcom/android/server/integrity/IntegrityFileManager;)V
+PLcom/android/server/integrity/engine/RuleEvaluationEngine;->getRuleEvaluationEngine()Lcom/android/server/integrity/engine/RuleEvaluationEngine;
+PLcom/android/server/integrity/parser/RuleBinaryParser;-><init>()V
+PLcom/android/server/integrity/serializer/RuleBinarySerializer;-><init>()V
+PLcom/android/server/job/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/job/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/job/FeatureFlagsImpl;->batchActiveBucketJobs()Z
+PLcom/android/server/job/FeatureFlagsImpl;->batchConnectivityJobsPerNetwork()Z
+PLcom/android/server/job/FeatureFlagsImpl;->doNotForceRushExecutionAtBoot()Z
+PLcom/android/server/job/FeatureFlagsImpl;->load_overrides_backstage_power()V
+PLcom/android/server/job/Flags;-><clinit>()V
+PLcom/android/server/job/Flags;->batchActiveBucketJobs()Z
+PLcom/android/server/job/Flags;->batchConnectivityJobsPerNetwork()Z
+PLcom/android/server/job/GrantedUriPermissions;->checkGrantFlags(I)Z
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/JobConcurrencyManager;)V
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/job/JobConcurrencyManager$$ExternalSyntheticLambda2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/job/JobConcurrencyManager$1;-><init>(Lcom/android/server/job/JobConcurrencyManager;)V
+PLcom/android/server/job/JobConcurrencyManager$AssignmentInfo;-><init>()V
+HPLcom/android/server/job/JobConcurrencyManager$AssignmentInfo;->clear()V
+PLcom/android/server/job/JobConcurrencyManager$ContextAssignment;-><init>()V
+HPLcom/android/server/job/JobConcurrencyManager$ContextAssignment;->clear()V
+PLcom/android/server/job/JobConcurrencyManager$GracePeriodObserver;-><init>(Landroid/content/Context;)V
+PLcom/android/server/job/JobConcurrencyManager$Injector;-><init>()V
+PLcom/android/server/job/JobConcurrencyManager$Injector;->createJobServiceContext(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)Lcom/android/server/job/JobServiceContext;
+PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustRunningCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
+PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$madjustStagedCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ZZ)V
+PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$mresetStagedCount(Lcom/android/server/job/JobConcurrencyManager$PackageStats;)V
+PLcom/android/server/job/JobConcurrencyManager$PackageStats;->-$$Nest$msetPackage(Lcom/android/server/job/JobConcurrencyManager$PackageStats;ILjava/lang/String;)V
+PLcom/android/server/job/JobConcurrencyManager$PackageStats;-><init>()V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustRunningCount(ZZ)V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->adjustStagedCount(ZZ)V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->resetStagedCount()V
+HPLcom/android/server/job/JobConcurrencyManager$PackageStats;->setPackage(ILjava/lang/String;)V
+PLcom/android/server/job/JobConcurrencyManager$WorkConfigLimitsPerMemoryTrimLevel;-><init>(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V
+PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;-><init>()V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->adjustPendingJobCount(IZ)I
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->canJobStart(I)I
+PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->decrementPendingJobCount(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->getRunningJobCount(I)I
+PLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->incrementPendingJobCount(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->incrementRunningJobCount(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->maybeAdjustReservations(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onCountDone()V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobFinished(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->onJobStarted(I)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetCounts()V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->resetStagingCount()V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->setConfig(Lcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkCountTracker;->stageJob(II)V
+HPLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;-><init>(Ljava/lang/String;IILjava/util/List;Ljava/util/List;)V
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMax(I)I
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMaxTotal()I
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMaxValue(Landroid/provider/DeviceConfig$Properties;Ljava/lang/String;II)I
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMinReserved(I)I
+PLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->getMinValue(Landroid/provider/DeviceConfig$Properties;Ljava/lang/String;III)I
+HPLcom/android/server/job/JobConcurrencyManager$WorkTypeConfig;->update(Landroid/provider/DeviceConfig$Properties;I)V
+PLcom/android/server/job/JobConcurrencyManager;->$r8$lambda$VhD--0a_vmTAP5SEQ54BuaJ_sSE(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
+PLcom/android/server/job/JobConcurrencyManager;->$r8$lambda$nNxi-L4_H0efU9cBGIS9vGrT-zc(Lcom/android/server/job/JobConcurrencyManager$PackageStats;)V
+HPLcom/android/server/job/JobConcurrencyManager;-><clinit>()V
+PLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager$Injector;)V
+HPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V
+HPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V
+HPLcom/android/server/job/JobConcurrencyManager;->carryOutAssignmentChangesLocked(Landroid/util/ArraySet;)V
+HPLcom/android/server/job/JobConcurrencyManager;->cleanUpAfterAssignmentChangesLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;Landroid/util/SparseIntArray;)V
+HPLcom/android/server/job/JobConcurrencyManager;->determineAssignmentsLocked(Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V
+HPLcom/android/server/job/JobConcurrencyManager;->getJobWorkTypes(Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/JobConcurrencyManager;->getPkgStatsLocked(ILjava/lang/String;)Lcom/android/server/job/JobConcurrencyManager$PackageStats;
+HPLcom/android/server/job/JobConcurrencyManager;->getRunningJobsLocked()Landroid/util/ArraySet;
+HPLcom/android/server/job/JobConcurrencyManager;->hasImmediacyPrivilegeLocked(Lcom/android/server/job/controllers/JobStatus;Landroid/util/SparseIntArray;)Z
+HPLcom/android/server/job/JobConcurrencyManager;->isJobRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobConcurrencyManager;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
+PLcom/android/server/job/JobConcurrencyManager;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
+HPLcom/android/server/job/JobConcurrencyManager;->isPkgConcurrencyLimitedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobConcurrencyManager;->lambda$static$0(Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;Lcom/android/server/job/JobConcurrencyManager$ContextAssignment;)I
+HPLcom/android/server/job/JobConcurrencyManager;->noteConcurrency(Z)V
+PLcom/android/server/job/JobConcurrencyManager;->onInteractiveStateChanged(Z)V
+HPLcom/android/server/job/JobConcurrencyManager;->onJobCompletedLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V
+PLcom/android/server/job/JobConcurrencyManager;->onSystemReady()V
+PLcom/android/server/job/JobConcurrencyManager;->onThirdPartyAppsCanStart()V
+PLcom/android/server/job/JobConcurrencyManager;->onUidBiasChangedLocked(II)V
+HPLcom/android/server/job/JobConcurrencyManager;->prepareForAssignmentDeterminationLocked(Landroid/util/ArraySet;Ljava/util/List;Ljava/util/List;Lcom/android/server/job/JobConcurrencyManager$AssignmentInfo;)V
+HPLcom/android/server/job/JobConcurrencyManager;->refreshSystemStateLocked()Z
+HPLcom/android/server/job/JobConcurrencyManager;->shouldRunAsFgUserJob(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobConcurrencyManager;->shouldStopRunningJobLocked(Lcom/android/server/job/JobServiceContext;)Ljava/lang/String;
+HPLcom/android/server/job/JobConcurrencyManager;->startJobLocked(Lcom/android/server/job/JobServiceContext;Lcom/android/server/job/controllers/JobStatus;I)V
+PLcom/android/server/job/JobConcurrencyManager;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)Z
+PLcom/android/server/job/JobConcurrencyManager;->stopNonReadyActiveJobsLocked()V
+HPLcom/android/server/job/JobConcurrencyManager;->updateCounterConfigLocked()V
+HPLcom/android/server/job/JobConcurrencyManager;->updateNonRunningPrioritiesLocked(Lcom/android/server/job/PendingJobQueue;Z)V
+PLcom/android/server/job/JobNotificationCoordinator;-><init>()V
+PLcom/android/server/job/JobNotificationCoordinator;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
+PLcom/android/server/job/JobNotificationCoordinator;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
+HPLcom/android/server/job/JobNotificationCoordinator;->removeNotificationAssociation(Lcom/android/server/job/JobServiceContext;ILcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobPackageTracker$DataSet;-><init>()V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->decPending(ILjava/lang/String;J)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
+HPLcom/android/server/job/JobPackageTracker$DataSet;->getTotalTime(J)J
+HPLcom/android/server/job/JobPackageTracker$DataSet;->incActive(ILjava/lang/String;J)V
+HPLcom/android/server/job/JobPackageTracker$DataSet;->incPending(ILjava/lang/String;J)V
+PLcom/android/server/job/JobPackageTracker$PackageEntry;-><init>()V
+HPLcom/android/server/job/JobPackageTracker$PackageEntry;->getActiveTime(J)J
+HPLcom/android/server/job/JobPackageTracker$PackageEntry;->getPendingTime(J)J
+PLcom/android/server/job/JobPackageTracker;-><init>()V
+HPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;IILjava/lang/String;)V
+HPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F
+HPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->noteConcurrency(II)V
+HPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)V
+HPLcom/android/server/job/JobPackageTracker;->noteNonpending(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->notePending(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda4;->getCategory(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/job/JobSchedulerService$1;-><init>(Ljava/time/ZoneId;)V
+HPLcom/android/server/job/JobSchedulerService$1;->millis()J
+PLcom/android/server/job/JobSchedulerService$2;-><init>(Ljava/time/ZoneId;)V
+HPLcom/android/server/job/JobSchedulerService$2;->millis()J
+PLcom/android/server/job/JobSchedulerService$3;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/JobSchedulerService$4;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService$4;->onUidActive(I)V
+HPLcom/android/server/job/JobSchedulerService$4;->onUidGone(IZ)V
+HPLcom/android/server/job/JobSchedulerService$4;->onUidIdle(IZ)V
+HPLcom/android/server/job/JobSchedulerService$4;->onUidStateChanged(IIJI)V
+PLcom/android/server/job/JobSchedulerService$5;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isBatteryNotLow()Z
+HPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isCharging()Z
+HPLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isConsideredCharging()Z
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->isPowerConnected()Z
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onChargingPolicyChanged(I)V
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->onReceiveInternal(Landroid/content/Intent;)V
+PLcom/android/server/job/JobSchedulerService$BatteryStateTracker;->startTracking()V
+PLcom/android/server/job/JobSchedulerService$CloudProviderChangeListener;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$CloudProviderChangeListener;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService$CloudProviderChangeListener-IA;)V
+PLcom/android/server/job/JobSchedulerService$Constants;->-$$Nest$mupdateTareSettingsLocked(Lcom/android/server/job/JobSchedulerService$Constants;I)Z
+PLcom/android/server/job/JobSchedulerService$Constants;-><clinit>()V
+PLcom/android/server/job/JobSchedulerService$Constants;-><init>()V
+PLcom/android/server/job/JobSchedulerService$Constants;->copyTransportBatchThresholdDefaults()V
+PLcom/android/server/job/JobSchedulerService$Constants;->updateTareSettingsLocked(I)Z
+PLcom/android/server/job/JobSchedulerService$ConstantsObserver;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$ConstantsObserver;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobSchedulerService$ConstantsObserver-IA;)V
+PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->onTareEnabledModeChanged(I)V
+PLcom/android/server/job/JobSchedulerService$ConstantsObserver;->start()V
+PLcom/android/server/job/JobSchedulerService$DeferredJobCounter;-><init>()V
+PLcom/android/server/job/JobSchedulerService$DeferredJobCounter;->numDeferred()I
+PLcom/android/server/job/JobSchedulerService$JobHandler;-><init>(Lcom/android/server/job/JobSchedulerService;Landroid/os/Looper;)V
+HPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(Ljava/lang/String;I)V
+PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancelAllInNamespace(Ljava/lang/String;)V
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceBuilderApiPermissions(IILandroid/app/job/JobInfo;)Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(IILandroid/app/job/JobInfo;)V
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobsInNamespace(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateJob(Landroid/app/job/JobInfo;IIILjava/lang/String;Landroid/app/job/JobWorkItem;)I
+HPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateNamespace(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/job/JobSchedulerService$LocalService;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
+HPLcom/android/server/job/JobSchedulerService$LocalService;->isAppConsideredBuggy(ILjava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationAssociatedWithAnyUserInitiatedJobs(IILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService$LocalService;->isNotificationChannelAssociatedWithAnyUserInitiatedJobs(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcessLocked()V
+HPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->reset()V
+PLcom/android/server/job/JobSchedulerService$MySimpleClock;-><init>(Ljava/time/ZoneId;)V
+PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->-$$Nest$mpostProcessLocked(Lcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;)V
+PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcessLocked()V
+PLcom/android/server/job/JobSchedulerService$StandbyTracker;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/job/JobSchedulerService$StandbyTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
+HPLcom/android/server/job/JobSchedulerService;->$r8$lambda$Q16HuucOPC3Nu2dDmrkdR058M08(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+PLcom/android/server/job/JobSchedulerService;->$r8$lambda$Ulq0lH6hWnerIiBupp3Llq6NoQA(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->$r8$lambda$_qsiROTbT1bHvhwbOpkod1sMBXE(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService;->$r8$lambda$kFq7qP-VcLL1Ltl-JO7FUKK_Zis(Lcom/android/server/job/JobSchedulerService;I)Z
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmChangedJobList(Lcom/android/server/job/JobSchedulerService;)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmDeviceIdleJobsController(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/controllers/DeviceIdleJobsController;
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmPendingJobQueue(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/PendingJobQueue;
+HPLcom/android/server/job/JobSchedulerService;->-$$Nest$fgetmQuotaTracker(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/utils/quota/CountQuotaTracker;
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJob(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;III)Z
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJobsForPackageAndUidLocked(Lcom/android/server/job/JobSchedulerService;Ljava/lang/String;IZZIILjava/lang/String;)V
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcancelJobsForUid(Lcom/android/server/job/JobSchedulerService;IZZLjava/lang/String;IILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mcheckChangedJobListLocked(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJob(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;I)Landroid/app/job/JobInfo;
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mgetPendingJobsInNamespace(Lcom/android/server/job/JobSchedulerService;ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mhasPermission(Lcom/android/server/job/JobSchedulerService;IILjava/lang/String;)Z
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mmaybeQueueReadyJobsForExecutionLocked(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/JobSchedulerService;->-$$Nest$mqueueReadyJobsForExecutionLocked(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/JobSchedulerService;-><clinit>()V
+HPLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/job/JobSchedulerService;->adjustJobBias(ILcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->areUsersStartedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->cancelJob(ILjava/lang/String;III)Z
+HPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;IILjava/lang/String;)V
+PLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V
+PLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUidLocked(Ljava/lang/String;IZZIILjava/lang/String;)V
+PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(IZZLjava/lang/String;IILjava/lang/String;)Z
+HPLcom/android/server/job/JobSchedulerService;->checkChangedJobListLocked()V
+HPLcom/android/server/job/JobSchedulerService;->checkIfRestricted(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/restrictions/JobRestriction;
+PLcom/android/server/job/JobSchedulerService;->clearPendingJobQueue()V
+HPLcom/android/server/job/JobSchedulerService;->deriveWorkSource(ILjava/lang/String;)Landroid/os/WorkSource;
+HPLcom/android/server/job/JobSchedulerService;->evaluateControllerStatesLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->evaluateJobBiasLocked(Lcom/android/server/job/controllers/JobStatus;)I
+PLcom/android/server/job/JobSchedulerService;->getConstants()Lcom/android/server/job/JobSchedulerService$Constants;
+HPLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore;
+PLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object;
+HPLcom/android/server/job/JobSchedulerService;->getMaxJobExecutionTimeMs(Lcom/android/server/job/controllers/JobStatus;)J
+HPLcom/android/server/job/JobSchedulerService;->getMinJobExecutionGuaranteeMs(Lcom/android/server/job/controllers/JobStatus;)J
+PLcom/android/server/job/JobSchedulerService;->getPackageName(Landroid/content/Intent;)Ljava/lang/String;
+HPLcom/android/server/job/JobSchedulerService;->getPackagesForUidLocked(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobSchedulerService;->getPendingJob(ILjava/lang/String;I)Landroid/app/job/JobInfo;
+HPLcom/android/server/job/JobSchedulerService;->getPendingJobQueue()Lcom/android/server/job/PendingJobQueue;
+HPLcom/android/server/job/JobSchedulerService;->getPendingJobsInNamespace(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
+PLcom/android/server/job/JobSchedulerService;->getTestableContext()Landroid/content/Context;
+HPLcom/android/server/job/JobSchedulerService;->getUidBias(I)I
+HPLcom/android/server/job/JobSchedulerService;->getUidProcState(I)I
+HPLcom/android/server/job/JobSchedulerService;->hasPermission(IILjava/lang/String;)Z
+HPLcom/android/server/job/JobSchedulerService;->isBatteryCharging()Z
+HPLcom/android/server/job/JobSchedulerService;->isBatteryNotLow()Z
+HPLcom/android/server/job/JobSchedulerService;->isComponentUsable(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->isCurrentlyRunningLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobSchedulerService;->isPowerConnected()Z
+HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;Z)Z
+PLcom/android/server/job/JobSchedulerService;->isUidActive(I)Z
+HPLcom/android/server/job/JobSchedulerService;->lambda$new$2(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+HPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$4(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->lambda$startControllerTrackingAsync$5()V
+HPLcom/android/server/job/JobSchedulerService;->maybeProcessBuggyJob(Lcom/android/server/job/controllers/JobStatus;I)V
+PLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V
+HPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V
+PLcom/android/server/job/JobSchedulerService;->noteJobPending(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->noteJobsPending(Landroid/util/ArraySet;)V
+HPLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V
+HPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged(Landroid/util/ArraySet;)V
+HPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;IIZ)V
+PLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->onStart()V
+PLcom/android/server/job/JobSchedulerService;->onUserCompletedEvent(Lcom/android/server/SystemService$TargetUser;Lcom/android/server/SystemService$UserCompletedEventType;)V
+PLcom/android/server/job/JobSchedulerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
+HPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V
+HPLcom/android/server/job/JobSchedulerService;->resetPendingJobReasonCache(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->safelyScaleBytesToKBForHistogram(J)I
+HPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(Ljava/lang/String;IJ)I
+PLcom/android/server/job/JobSchedulerService;->standbyBucketToBucketIndex(I)I
+PLcom/android/server/job/JobSchedulerService;->startControllerTrackingAsync()V
+HPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V
+HPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z
+PLcom/android/server/job/JobSchedulerService;->updateQuotaTracker()V
+HPLcom/android/server/job/JobSchedulerService;->updateUidState(III)V
+PLcom/android/server/job/JobServiceContext$JobCallback;-><init>(Lcom/android/server/job/JobServiceContext;)V
+PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
+PLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z
+PLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem;
+PLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
+PLcom/android/server/job/JobServiceContext$JobServiceHandler;-><init>(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V
+PLcom/android/server/job/JobServiceContext;-><clinit>()V
+PLcom/android/server/job/JobServiceContext;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/JobConcurrencyManager;Lcom/android/server/job/JobNotificationCoordinator;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/job/JobPackageTracker;Landroid/os/Looper;)V
+HPLcom/android/server/job/JobServiceContext;->applyStoppedReasonLocked(Ljava/lang/String;)V
+PLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
+PLcom/android/server/job/JobServiceContext;->canGetNetworkInformation(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobServiceContext;->clearPreferredUid()V
+HPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V
+PLcom/android/server/job/JobServiceContext;->doAcknowledgeStartMessage(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
+HPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V
+PLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z
+HPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;
+HPLcom/android/server/job/JobServiceContext;->doJobFinished(Lcom/android/server/job/JobServiceContext$JobCallback;IZ)V
+PLcom/android/server/job/JobServiceContext;->doServiceBoundLocked()V
+HPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;I)Z
+PLcom/android/server/job/JobServiceContext;->getExecutionStartTimeElapsed()J
+PLcom/android/server/job/JobServiceContext;->getId()I
+PLcom/android/server/job/JobServiceContext;->getPreferredUid()I
+PLcom/android/server/job/JobServiceContext;->getRemainingGuaranteedTimeMs(J)J
+PLcom/android/server/job/JobServiceContext;->getRunningJobLocked()Lcom/android/server/job/controllers/JobStatus;
+PLcom/android/server/job/JobServiceContext;->getRunningJobWorkType()I
+PLcom/android/server/job/JobServiceContext;->getStartActionId(Lcom/android/server/job/controllers/JobStatus;)I
+PLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
+HPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V
+HPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V
+PLcom/android/server/job/JobServiceContext;->isWithinExecutionGuaranteeTime()Z
+HPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/job/JobServiceContext;->removeOpTimeOutLocked()V
+HPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V
+PLcom/android/server/job/JobServiceContext;->verifyCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)Z
+PLcom/android/server/job/JobStore$1;-><init>(Lcom/android/server/job/JobStore;)V
+PLcom/android/server/job/JobStore$1;->run()V
+PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$fgetmJobStoreCopy(Lcom/android/server/job/JobStore$2$CopyConsumer;)Landroid/util/SparseArray;
+PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$mprepare(Lcom/android/server/job/JobStore$2$CopyConsumer;)V
+PLcom/android/server/job/JobStore$2$CopyConsumer;->-$$Nest$mreset(Lcom/android/server/job/JobStore$2$CopyConsumer;)V
+PLcom/android/server/job/JobStore$2$CopyConsumer;-><init>(Lcom/android/server/job/JobStore$2;)V
+HPLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobStore$2$CopyConsumer;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/JobStore$2$CopyConsumer;->prepare()V
+PLcom/android/server/job/JobStore$2$CopyConsumer;->reset()V
+PLcom/android/server/job/JobStore$2;-><init>(Lcom/android/server/job/JobStore;)V
+HPLcom/android/server/job/JobStore$2;->addAttributesToJobTag(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$2;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;
+HPLcom/android/server/job/JobStore$2;->run()V
+PLcom/android/server/job/JobStore$2;->writeBundleToXml(Landroid/os/PersistableBundle;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/job/JobStore$2;->writeConstraintsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobStore$2;->writeDebugInfoToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$2;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/JobStore$2;->writeJobWorkItemListToXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/List;)V
+PLcom/android/server/job/JobStore$2;->writeJobWorkItemsToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore$2;->writeJobsMapImpl(Landroid/util/AtomicFile;Ljava/util/List;)V
+PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda0;-><init>([I)V
+PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda1;-><init>([I)V
+PLcom/android/server/job/JobStore$JobSet$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/JobStore$JobSet;->$r8$lambda$Ogrjy8cbnKakGMK8Ug9l_r3Ikrk([ILcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore$JobSet;->$r8$lambda$RA6YfP6IBdA_T2lAW98eyR1LWXw([ILcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore$JobSet;-><init>()V
+HPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$JobSet;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I
+HPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V
+HPLcom/android/server/job/JobStore$JobSet;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V
+HPLcom/android/server/job/JobStore$JobSet;->get(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$JobSet;->getJobsBySourceUid(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore$JobSet;->getJobsBySourceUid(ILjava/util/Set;)V
+HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore$JobSet;->getJobsByUid(ILjava/util/Set;)V
+PLcom/android/server/job/JobStore$JobSet;->lambda$removeJobsOfUnlistedUsers$0([ILcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore$JobSet;->lambda$removeJobsOfUnlistedUsers$1([ILcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore$JobSet;->removeAll(Ljava/util/function/Predicate;)V
+PLcom/android/server/job/JobStore$JobSet;->removeJobsOfUnlistedUsers([I)V
+PLcom/android/server/job/JobStore$JobSet;->size()I
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;-><init>(Lcom/android/server/job/JobStore;Lcom/android/server/job/JobStore$JobSet;ZLjava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/app/job/JobInfo$Builder;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lcom/android/modules/utils/TypedXmlPullParser;)V
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/util/Pair;
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->intern(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/InputStream;ZJ)Ljava/util/List;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLcom/android/modules/utils/TypedXmlPullParser;IJ)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmCurrentJobSetSize(Lcom/android/server/job/JobStore;)I
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmEventLogger(Lcom/android/server/job/JobStore;)Landroid/util/SystemConfigFileCommitEventLogger;
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmJobFileDirectory(Lcom/android/server/job/JobStore;)Ljava/io/File;
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmPendingJobWriteUids(Lcom/android/server/job/JobStore;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmPersistInfo(Lcom/android/server/job/JobStore;)Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmScheduledJob30MinHighWaterMark(Lcom/android/server/job/JobStore;)I
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmScheduledJobHighWaterMarkLoggingRunnable(Lcom/android/server/job/JobStore;)Ljava/lang/Runnable;
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmSplitFileMigrationNeeded(Lcom/android/server/job/JobStore;)Z
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmUseSplitFiles(Lcom/android/server/job/JobStore;)Z
+PLcom/android/server/job/JobStore;->-$$Nest$fgetmWriteInProgress(Lcom/android/server/job/JobStore;)Z
+PLcom/android/server/job/JobStore;->-$$Nest$fputmCurrentJobSetSize(Lcom/android/server/job/JobStore;I)V
+PLcom/android/server/job/JobStore;->-$$Nest$fputmScheduledJob30MinHighWaterMark(Lcom/android/server/job/JobStore;I)V
+PLcom/android/server/job/JobStore;->-$$Nest$fputmWriteInProgress(Lcom/android/server/job/JobStore;Z)V
+PLcom/android/server/job/JobStore;->-$$Nest$fputmWriteScheduled(Lcom/android/server/job/JobStore;Z)V
+PLcom/android/server/job/JobStore;->-$$Nest$mcreateJobFile(Lcom/android/server/job/JobStore;Ljava/io/File;)Landroid/util/AtomicFile;
+PLcom/android/server/job/JobStore;->-$$Nest$mcreateJobFile(Lcom/android/server/job/JobStore;Ljava/lang/String;)Landroid/util/AtomicFile;
+PLcom/android/server/job/JobStore;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/JobStore;->-$$Nest$sfgetSPLIT_FILE_PATTERN()Ljava/util/regex/Pattern;
+PLcom/android/server/job/JobStore;->-$$Nest$sfgetsScheduledJob30MinHighWaterMarkLogger()Lcom/android/modules/expresslog/Histogram;
+PLcom/android/server/job/JobStore;->-$$Nest$smconvertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
+PLcom/android/server/job/JobStore;->-$$Nest$smisSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore;-><clinit>()V
+PLcom/android/server/job/JobStore;-><init>(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V
+HPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/JobStore;->containsJob(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
+HPLcom/android/server/job/JobStore;->countJobsForUid(I)I
+PLcom/android/server/job/JobStore;->createJobFile(Ljava/io/File;)Landroid/util/AtomicFile;
+PLcom/android/server/job/JobStore;->createJobFile(Ljava/lang/String;)Landroid/util/AtomicFile;
+HPLcom/android/server/job/JobStore;->forEachJob(Ljava/util/function/Consumer;)V
+PLcom/android/server/job/JobStore;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V
+HPLcom/android/server/job/JobStore;->forEachJobForSourceUid(ILjava/util/function/Consumer;)V
+PLcom/android/server/job/JobStore;->get(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore;
+HPLcom/android/server/job/JobStore;->getJobByUidAndJobId(ILjava/lang/String;I)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/JobStore;->getJobsBySourceUid(I)Landroid/util/ArraySet;
+HPLcom/android/server/job/JobStore;->getJobsByUid(I)Landroid/util/ArraySet;
+PLcom/android/server/job/JobStore;->getJobsByUid(ILjava/util/Set;)V
+PLcom/android/server/job/JobStore;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
+PLcom/android/server/job/JobStore;->initAsync(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/job/JobStore;->intArrayToString([I)Ljava/lang/String;
+PLcom/android/server/job/JobStore;->isSyncJob(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/JobStore;->jobTimesInflatedValid()Z
+HPLcom/android/server/job/JobStore;->maybeUpdateHighWaterMark()V
+PLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
+HPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z
+PLcom/android/server/job/JobStore;->removeJobsOfUnlistedUsers([I)V
+PLcom/android/server/job/JobStore;->stringToIntArray(Ljava/lang/String;)[I
+PLcom/android/server/job/JobStore;->touchJob(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/PendingJobQueue$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;-><init>()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;-><init>(Lcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus-IA;)V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue$AdjustedJobStatus;->clear()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><clinit>()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><init>()V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;-><init>(Lcom/android/server/job/PendingJobQueue$AppJobQueue-IA;)V
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;->addAll(Ljava/util/List;)V
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->clear()V
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->indexOf(Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->peekNextTimestamp()J
+HPLcom/android/server/job/PendingJobQueue$AppJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;->resetIterator(J)V
+PLcom/android/server/job/PendingJobQueue$AppJobQueue;->size()I
+PLcom/android/server/job/PendingJobQueue;-><init>()V
+HPLcom/android/server/job/PendingJobQueue;->add(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/PendingJobQueue;->addAll(Landroid/util/ArraySet;)V
+PLcom/android/server/job/PendingJobQueue;->clear()V
+HPLcom/android/server/job/PendingJobQueue;->contains(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/PendingJobQueue;->getAppJobQueue(IZ)Lcom/android/server/job/PendingJobQueue$AppJobQueue;
+HPLcom/android/server/job/PendingJobQueue;->next()Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/PendingJobQueue;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/PendingJobQueue;->resetIterator()V
+PLcom/android/server/job/PendingJobQueue;->size()I
+PLcom/android/server/job/controllers/BackgroundJobsController$1;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
+PLcom/android/server/job/controllers/BackgroundJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/controllers/BackgroundJobsController$2;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController$2;->updateAllJobs()V
+HPLcom/android/server/job/controllers/BackgroundJobsController$2;->updateJobsForUid(IZ)V
+PLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;)V
+PLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;-><init>(Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor-IA;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->prepare(I)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$fgetmPackageStoppedState(Lcom/android/server/job/controllers/BackgroundJobsController;)Landroid/util/SparseArrayMap;
+HPLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateAllJobRestrictionsLocked(Lcom/android/server/job/controllers/BackgroundJobsController;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateJobRestrictionsForUidLocked(Lcom/android/server/job/controllers/BackgroundJobsController;IZ)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$mupdateJobRestrictionsLocked(Lcom/android/server/job/controllers/BackgroundJobsController;II)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/BackgroundJobsController;-><clinit>()V
+PLcom/android/server/job/controllers/BackgroundJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->isPackageStoppedLocked(Ljava/lang/String;I)Z
+HPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/BackgroundJobsController;->startTrackingLocked()V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->updateAllJobRestrictionsLocked()V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsForUidLocked(IZ)V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsLocked(II)V
+HPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;JI)Z
+PLcom/android/server/job/controllers/BatteryController;-><clinit>()V
+PLcom/android/server/job/controllers/BatteryController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
+HPLcom/android/server/job/controllers/BatteryController;->hasTopExemptionLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V
+HPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/BatteryController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/BatteryController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda1;-><init>(I)V
+PLcom/android/server/job/controllers/ComponentController$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/controllers/ComponentController$1;-><init>(Lcom/android/server/job/controllers/ComponentController;)V
+PLcom/android/server/job/controllers/ComponentController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->-$$Nest$mreset(Lcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;)V
+PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;-><init>(Lcom/android/server/job/controllers/ComponentController;)V
+PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/controllers/ComponentController$ComponentStateUpdateFunctor;->reset()V
+PLcom/android/server/job/controllers/ComponentController;->$r8$lambda$M1UwXxQ2lQGkgK0HrVMJlW9dX54(ILcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/ComponentController;->-$$Nest$mupdateComponentEnabledStateLocked(Lcom/android/server/job/controllers/ComponentController;Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/ComponentController;->-$$Nest$mupdateComponentStateForUser(Lcom/android/server/job/controllers/ComponentController;I)V
+PLcom/android/server/job/controllers/ComponentController;-><clinit>()V
+PLcom/android/server/job/controllers/ComponentController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/ComponentController;->getServiceProcessLocked(Lcom/android/server/job/controllers/JobStatus;)Ljava/lang/String;
+PLcom/android/server/job/controllers/ComponentController;->lambda$updateComponentStateForUser$1(ILcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/ComponentController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ComponentController;->startTrackingLocked()V
+HPLcom/android/server/job/controllers/ComponentController;->updateComponentEnabledStateLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/ComponentController;->updateComponentStateForUser(I)V
+PLcom/android/server/job/controllers/ComponentController;->updateComponentStatesLocked(Ljava/util/function/Predicate;)V
+PLcom/android/server/job/controllers/ConnectivityController$1;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$2;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$3;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$4;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fgetmFlexIsEnabled(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;)Z
+PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fgetmShouldReprocessNetworkCapabilities(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;)Z
+PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fputmFlexIsEnabled(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;Z)V
+PLcom/android/server/job/controllers/ConnectivityController$CcConfig;->-$$Nest$fputmShouldReprocessNetworkCapabilities(Lcom/android/server/job/controllers/ConnectivityController$CcConfig;Z)V
+PLcom/android/server/job/controllers/ConnectivityController$CcConfig;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$CcHandler;-><init>(Lcom/android/server/job/controllers/ConnectivityController;Landroid/os/Looper;)V
+HPLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$fgetmBlockedReasons(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;)I
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$fgetmDefaultNetwork(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;)Landroid/net/Network;
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->-$$Nest$msetUid(Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;I)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;-><init>(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;-><init>(Lcom/android/server/job/controllers/ConnectivityController;Lcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback-IA;)V
+PLcom/android/server/job/controllers/ConnectivityController$UidDefaultNetworkCallback;->setUid(I)V
+HPLcom/android/server/job/controllers/ConnectivityController$UidStats;-><init>(I)V
+PLcom/android/server/job/controllers/ConnectivityController$UidStats;-><init>(ILcom/android/server/job/controllers/ConnectivityController$UidStats-IA;)V
+PLcom/android/server/job/controllers/ConnectivityController;->-$$Nest$mmaybeAdjustRegisteredCallbacksLocked(Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/ConnectivityController;-><clinit>()V
+HPLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->getNetworkLocked(Lcom/android/server/job/controllers/JobStatus;)Landroid/net/Network;
+PLcom/android/server/job/controllers/ConnectivityController;->getNetworkMetadata(Landroid/net/Network;)Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;
+HPLcom/android/server/job/controllers/ConnectivityController;->getUidStats(ILjava/lang/String;Z)Lcom/android/server/job/controllers/ConnectivityController$UidStats;
+HPLcom/android/server/job/controllers/ConnectivityController;->isNetworkAvailable(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/ConnectivityController;->isSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z
+HPLcom/android/server/job/controllers/ConnectivityController;->isStandbyExceptionRequestedLocked(I)Z
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeAdjustRegisteredCallbacksLocked()V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeRegisterDefaultNetworkCallbackLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ConnectivityController;->onConstantsUpdatedLocked()V
+HPLcom/android/server/job/controllers/ConnectivityController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/ConnectivityController;->postAdjustCallbacks()V
+PLcom/android/server/job/controllers/ConnectivityController;->postAdjustCallbacks(J)V
+HPLcom/android/server/job/controllers/ConnectivityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ConnectivityController;->prepareForUpdatedConstantsLocked()V
+HPLcom/android/server/job/controllers/ConnectivityController;->registerPendingUidCallbacksLocked()V
+PLcom/android/server/job/controllers/ConnectivityController;->startTrackingLocked()V
+HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;JLandroid/net/Network;Lcom/android/server/job/controllers/ConnectivityController$CachedNetworkMetadata;)Z
+HPLcom/android/server/job/controllers/ContentObserverController$JobInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;-><init>(Lcom/android/server/job/controllers/ContentObserverController;Landroid/os/Handler;Landroid/app/job/JobInfo$TriggerContentUri;I)V
+PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;-><init>(Lcom/android/server/job/controllers/ContentObserverController$JobInstance;)V
+PLcom/android/server/job/controllers/ContentObserverController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/ContentObserverController;-><clinit>()V
+PLcom/android/server/job/controllers/ContentObserverController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$1;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleJobsDelayHandler;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;-><init>(Lcom/android/server/job/controllers/DeviceIdleJobsController;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->prepare()V
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fgetmAllowInIdleJobs(Lcom/android/server/job/controllers/DeviceIdleJobsController;)Landroid/util/ArraySet;
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fgetmLocalDeviceIdleController(Lcom/android/server/job/controllers/DeviceIdleJobsController;)Lcom/android/server/DeviceIdleInternal;
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$fputmPowerSaveTempWhitelistAppIds(Lcom/android/server/job/controllers/DeviceIdleJobsController;[I)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$mupdateTaskStateLocked(Lcom/android/server/job/controllers/DeviceIdleJobsController;Lcom/android/server/job/controllers/JobStatus;J)Z
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/DeviceIdleJobsController;-><clinit>()V
+PLcom/android/server/job/controllers/DeviceIdleJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->isTempWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->isWhitelistedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V
+HPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;J)Z
+PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/FlexibilityController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/job/controllers/FlexibilityController$1;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/FlexibilityController$2;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcConfig;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/FlexibilityController$FcConfig;)Z
+PLcom/android/server/job/controllers/FlexibilityController$FcConfig;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/FlexibilityController$FcConfig;Z)V
+PLcom/android/server/job/controllers/FlexibilityController$FcConfig;-><clinit>()V
+PLcom/android/server/job/controllers/FlexibilityController$FcConfig;-><init>(Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;JLandroid/util/ArraySet;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->$r8$lambda$5CvPVqmgOUfjOuy9DIWNcoGKJmo(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->$r8$lambda$yWWuwRoUvOTH-mThpIBxsAo7feI(Lcom/android/server/job/controllers/FlexibilityController$FcHandler;JLandroid/util/ArraySet;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->lambda$handleMessage$0(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/FlexibilityController$FcHandler;->lambda$handleMessage$1(JLandroid/util/ArraySet;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;-><init>(Lcom/android/server/job/controllers/FlexibilityController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue-IA;)V
+HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityAlarmQueue;->scheduleDropNumConstraintsAlarm(Lcom/android/server/job/controllers/JobStatus;J)V
+PLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;-><init>(Lcom/android/server/job/controllers/FlexibilityController;I)V
+HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->add(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/FlexibilityController$FlexibilityTracker;->remove(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket;-><init>()V
+PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket;-><init>(Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker$JobScoreBucket-IA;)V
+PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;-><init>()V
+PLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;-><init>(Lcom/android/server/job/controllers/FlexibilityController$JobScoreTracker-IA;)V
+HPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->addScore(IJ)V
+HPLcom/android/server/job/controllers/FlexibilityController$JobScoreTracker;->getScore(J)I
+PLcom/android/server/job/controllers/FlexibilityController;->$r8$lambda$fmLZ0Eyb4DjWbt0tDV_WmGlhcUg(Lcom/android/server/job/controllers/FlexibilityController;)V
+HPLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmDeadlineProximityLimitMs(Lcom/android/server/job/controllers/FlexibilityController;)J
+PLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmMinTimeBetweenFlexibilityAlarmsMs(Lcom/android/server/job/controllers/FlexibilityController;)J
+PLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$fgetmPackagesToCheck(Lcom/android/server/job/controllers/FlexibilityController;)Landroid/util/ArraySet;
+HPLcom/android/server/job/controllers/FlexibilityController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/FlexibilityController;-><clinit>()V
+HPLcom/android/server/job/controllers/FlexibilityController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/PrefetchController;)V
+HPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleBeginningElapsedLocked(Lcom/android/server/job/controllers/JobStatus;)J
+HPLcom/android/server/job/controllers/FlexibilityController;->getLifeCycleEndElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J
+HPLcom/android/server/job/controllers/FlexibilityController;->getNextConstraintDropTimeElapsedLocked(Lcom/android/server/job/controllers/JobStatus;JJ)J
+HPLcom/android/server/job/controllers/FlexibilityController;->getPercentsToDropConstraints(I)[I
+HPLcom/android/server/job/controllers/FlexibilityController;->getRelevantAppliedConstraintsLocked(Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/controllers/FlexibilityController;->getScoreLocked(ILjava/lang/String;J)I
+PLcom/android/server/job/controllers/FlexibilityController;->isEnabled()Z
+HPLcom/android/server/job/controllers/FlexibilityController;->isFlexibilitySatisfiedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/FlexibilityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/FlexibilityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/FlexibilityController;->onConstantsUpdatedLocked()V
+PLcom/android/server/job/controllers/FlexibilityController;->onSystemServicesReady()V
+HPLcom/android/server/job/controllers/FlexibilityController;->onUidBiasChangedLocked(III)V
+HPLcom/android/server/job/controllers/FlexibilityController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/FlexibilityController;->prepareForUpdatedConstantsLocked()V
+PLcom/android/server/job/controllers/FlexibilityController;->setConstraintSatisfied(IZJ)V
+PLcom/android/server/job/controllers/FlexibilityController;->startTrackingLocked()V
+PLcom/android/server/job/controllers/FlexibilityController;->updatePowerAllowlistCache()V
+PLcom/android/server/job/controllers/IdleController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/FlexibilityController;)V
+PLcom/android/server/job/controllers/IdleController;->initIdleStateTracker()V
+HPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/IdleController;->startTrackingLocked()V
+PLcom/android/server/job/controllers/JobStatus;-><clinit>()V
+HPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIJJJJJII)V
+PLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;JJJJJLandroid/util/Pair;II)V
+HPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJIIJJJ)V
+HPLcom/android/server/job/controllers/JobStatus;->addDynamicConstraints(I)V
+PLcom/android/server/job/controllers/JobStatus;->addInternalFlags(I)V
+HPLcom/android/server/job/controllers/JobStatus;->canApplyTransportAffinities()Z
+HPLcom/android/server/job/controllers/JobStatus;->canRunInBatterySaver()Z
+HPLcom/android/server/job/controllers/JobStatus;->canRunInDoze()Z
+PLcom/android/server/job/controllers/JobStatus;->clearPersistedUtcTimes()V
+HPLcom/android/server/job/controllers/JobStatus;->clearTrackingController(I)Z
+PLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/job/controllers/JobStatus;
+HPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;
+HPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/job/JobWorkItem;)V
+PLcom/android/server/job/controllers/JobStatus;->generateLoggingId(Ljava/lang/String;I)J
+HPLcom/android/server/job/controllers/JobStatus;->generateNamespaceHash(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getAppTraceTag()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getBatteryName()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getBias()I
+PLcom/android/server/job/controllers/JobStatus;->getCallingPackageName()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getCumulativeExecutionTimeMs()J
+HPLcom/android/server/job/controllers/JobStatus;->getEarliestRunTime()J
+HPLcom/android/server/job/controllers/JobStatus;->getEffectivePriority()I
+HPLcom/android/server/job/controllers/JobStatus;->getEffectiveStandbyBucket()I
+HPLcom/android/server/job/controllers/JobStatus;->getEstimatedNetworkDownloadBytes()J
+HPLcom/android/server/job/controllers/JobStatus;->getEstimatedNetworkUploadBytes()J
+HPLcom/android/server/job/controllers/JobStatus;->getFilteredDebugTags()[Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getFilteredTraceTag()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getFirstForceBatchedTimeElapsed()J
+HPLcom/android/server/job/controllers/JobStatus;->getFlags()I
+HPLcom/android/server/job/controllers/JobStatus;->getInternalFlags()I
+PLcom/android/server/job/controllers/JobStatus;->getJob()Landroid/app/job/JobInfo;
+HPLcom/android/server/job/controllers/JobStatus;->getJobId()I
+PLcom/android/server/job/controllers/JobStatus;->getLastFailedRunTime()J
+PLcom/android/server/job/controllers/JobStatus;->getLastSuccessfulRunTime()J
+HPLcom/android/server/job/controllers/JobStatus;->getLatestRunTimeElapsed()J
+PLcom/android/server/job/controllers/JobStatus;->getLoggingJobId()J
+PLcom/android/server/job/controllers/JobStatus;->getNamespace()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getNamespaceHash()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getNumAppliedFlexibleConstraints()I
+HPLcom/android/server/job/controllers/JobStatus;->getNumDroppedFlexibleConstraints()I
+PLcom/android/server/job/controllers/JobStatus;->getNumFailures()I
+HPLcom/android/server/job/controllers/JobStatus;->getNumPreviousAttempts()I
+HPLcom/android/server/job/controllers/JobStatus;->getNumRequiredFlexibleConstraints()I
+PLcom/android/server/job/controllers/JobStatus;->getNumSystemStops()I
+PLcom/android/server/job/controllers/JobStatus;->getOriginalLatestRunTimeElapsed()J
+PLcom/android/server/job/controllers/JobStatus;->getPersistedUtcTimes()Landroid/util/Pair;
+PLcom/android/server/job/controllers/JobStatus;->getProtoConstraint(I)I
+HPLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName;
+HPLcom/android/server/job/controllers/JobStatus;->getSourcePackageName()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getSourceTag()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getSourceUid()I
+HPLcom/android/server/job/controllers/JobStatus;->getSourceUserId()I
+HPLcom/android/server/job/controllers/JobStatus;->getStandbyBucket()I
+HPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlamePackageName()Ljava/lang/String;
+HPLcom/android/server/job/controllers/JobStatus;->getTimeoutBlameUserId()I
+HPLcom/android/server/job/controllers/JobStatus;->getUid()I
+HPLcom/android/server/job/controllers/JobStatus;->getUserId()I
+HPLcom/android/server/job/controllers/JobStatus;->getWakelockTag()Ljava/lang/String;
+PLcom/android/server/job/controllers/JobStatus;->getWhenStandbyDeferred()J
+HPLcom/android/server/job/controllers/JobStatus;->getWorkCount()I
+HPLcom/android/server/job/controllers/JobStatus;->hasBatteryNotLowConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasChargingConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasConnectivityConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasConstraint(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->hasContentTriggerConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasDeadlineConstraint()Z
+PLcom/android/server/job/controllers/JobStatus;->hasExecutingWorkLocked()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasFlexibilityConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasIdleConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasPowerConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasStorageNotLowConstraint()Z
+HPLcom/android/server/job/controllers/JobStatus;->hasTimingDelayConstraint()Z
+PLcom/android/server/job/controllers/JobStatus;->incrementCumulativeExecutionTime(J)V
+HPLcom/android/server/job/controllers/JobStatus;->isConstraintSatisfied(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->isConstraintsSatisfied(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->isPersisted()Z
+HPLcom/android/server/job/controllers/JobStatus;->isPreparedLocked()Z
+HPLcom/android/server/job/controllers/JobStatus;->isProxyJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->isReady()Z
+HPLcom/android/server/job/controllers/JobStatus;->isReady(I)Z
+HPLcom/android/server/job/controllers/JobStatus;->isRequestedExpeditedJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->isUserVisibleJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V
+HPLcom/android/server/job/controllers/JobStatus;->prepareLocked()V
+HPLcom/android/server/job/controllers/JobStatus;->readinessStatusWithConstraint(IZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setBackgroundNotRestrictedConstraintSatisfied(JZZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setBatteryNotLowConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setChargingConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setConnectivityConstraintSatisfied(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IJZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setContentTriggerConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setDeadlineConstraintSatisfied(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setDeviceNotDozingConstraintSatisfied(JZZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobQuotaApproved(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setExpeditedJobTareApproved(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setFlexibilityConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setIdleConstraintSatisfied(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setNumAppliedFlexibleConstraints(I)V
+HPLcom/android/server/job/controllers/JobStatus;->setQuotaConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setStandbyBucket(I)V
+HPLcom/android/server/job/controllers/JobStatus;->setTareWealthConstraintSatisfied(JZ)Z
+PLcom/android/server/job/controllers/JobStatus;->setTimingDelayConstraintSatisfied(JZ)Z
+HPLcom/android/server/job/controllers/JobStatus;->setTrackingController(I)V
+PLcom/android/server/job/controllers/JobStatus;->setTransportAffinitiesSatisfied(Z)V
+HPLcom/android/server/job/controllers/JobStatus;->setUidActive(Z)Z
+HPLcom/android/server/job/controllers/JobStatus;->shouldBlameSourceForTimeout()Z
+HPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsExpeditedJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->shouldTreatAsUserInitiatedJob()Z
+HPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/JobStatus;->ungrantWorkItem(Landroid/app/job/JobWorkItem;)V
+PLcom/android/server/job/controllers/JobStatus;->ungrantWorkList(Ljava/util/ArrayList;)V
+HPLcom/android/server/job/controllers/JobStatus;->unprepareLocked()V
+PLcom/android/server/job/controllers/JobStatus;->updateExpeditedDependencies()V
+HPLcom/android/server/job/controllers/JobStatus;->updateMediaBackupExemptionStatus()Z
+HPLcom/android/server/job/controllers/JobStatus;->updateNetworkBytesLocked()V
+HPLcom/android/server/job/controllers/JobStatus;->wouldBeReadyWithConstraint(I)Z
+PLcom/android/server/job/controllers/PrefetchController$1;-><init>(Lcom/android/server/job/controllers/PrefetchController;)V
+PLcom/android/server/job/controllers/PrefetchController$1;->onEstimatedLaunchTimeChanged(ILjava/lang/String;J)V
+PLcom/android/server/job/controllers/PrefetchController$PcConstants;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/PrefetchController$PcConstants;)Z
+PLcom/android/server/job/controllers/PrefetchController$PcConstants;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/PrefetchController$PcConstants;Z)V
+PLcom/android/server/job/controllers/PrefetchController$PcConstants;-><init>(Lcom/android/server/job/controllers/PrefetchController;)V
+PLcom/android/server/job/controllers/PrefetchController$PcHandler;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/PrefetchController$PcHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener;-><init>(Lcom/android/server/job/controllers/PrefetchController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/PrefetchController$ThresholdAlarmListener-IA;)V
+PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$fgetmHandler(Lcom/android/server/job/controllers/PrefetchController;)Lcom/android/server/job/controllers/PrefetchController$PcHandler;
+PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$mmaybeUpdateConstraintForUid(Lcom/android/server/job/controllers/PrefetchController;I)V
+PLcom/android/server/job/controllers/PrefetchController;->-$$Nest$mprocessUpdatedEstimatedLaunchTime(Lcom/android/server/job/controllers/PrefetchController;ILjava/lang/String;J)V
+PLcom/android/server/job/controllers/PrefetchController;-><clinit>()V
+PLcom/android/server/job/controllers/PrefetchController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/PrefetchController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/PrefetchController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/PrefetchController;->maybeUpdateConstraintForUid(I)V
+PLcom/android/server/job/controllers/PrefetchController;->onConstantsUpdatedLocked()V
+PLcom/android/server/job/controllers/PrefetchController;->onSystemServicesReady()V
+PLcom/android/server/job/controllers/PrefetchController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/PrefetchController;->prepareForUpdatedConstantsLocked()V
+PLcom/android/server/job/controllers/PrefetchController;->processUpdatedEstimatedLaunchTime(ILjava/lang/String;J)V
+PLcom/android/server/job/controllers/PrefetchController;->startTrackingLocked()V
+PLcom/android/server/job/controllers/QuotaController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$1;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor-IA;)V
+PLcom/android/server/job/controllers/QuotaController$ExecutionStats;-><init>()V
+PLcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue-IA;)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fgetmShouldReevaluateConstraints(Lcom/android/server/job/controllers/QuotaController$QcConstants;)Z
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmEJLimitConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmExecutionPeriodConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmQuotaBumpConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmRateLimitingConstantsUpdated(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;->-$$Nest$fputmShouldReevaluateConstraints(Lcom/android/server/job/controllers/QuotaController$QcConstants;Z)V
+PLcom/android/server/job/controllers/QuotaController$QcConstants;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$QcHandler;-><init>(Lcom/android/server/job/controllers/QuotaController;Landroid/os/Looper;)V
+HPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/job/controllers/QuotaController$QcUidObserver;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$QcUidObserver;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$QcUidObserver-IA;)V
+HPLcom/android/server/job/controllers/QuotaController$QcUidObserver;->onUidStateChanged(IIJI)V
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;-><init>(I)V
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->getStandbyBucketLocked()I
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->getTallyLocked()J
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->setStandbyBucketLocked(I)V
+PLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;->transactLocked(J)J
+HPLcom/android/server/job/controllers/QuotaController$StandbyTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/QuotaController$StandbyTracker;IILjava/lang/String;)V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker;->$r8$lambda$t09qsupi5NrKPja4qQPLgVYLvys(Lcom/android/server/job/controllers/QuotaController$StandbyTracker;IILjava/lang/String;)V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$StandbyTracker;->lambda$onAppIdleStateChanged$0(IILjava/lang/String;)V
+HPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppAdded(I)V
+HPLcom/android/server/job/controllers/QuotaController$TempAllowlistTracker;->onAppRemoved(I)V
+PLcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate;-><init>()V
+PLcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate;-><init>(Lcom/android/server/job/controllers/QuotaController$TimedEventTooOldPredicate-IA;)V
+HPLcom/android/server/job/controllers/QuotaController$Timer;-><init>(Lcom/android/server/job/controllers/QuotaController;IILjava/lang/String;Z)V
+PLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
+PLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
+PLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
+PLcom/android/server/job/controllers/QuotaController$Timer;->onStateChangedLocked(JZ)V
+HPLcom/android/server/job/controllers/QuotaController$Timer;->shouldTrackLocked()Z
+HPLcom/android/server/job/controllers/QuotaController$Timer;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$TimerChargingUpdateFunctor-IA;)V
+PLcom/android/server/job/controllers/QuotaController$TopAppTimer;-><init>(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;)V
+PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->calculateTimeChunks(J)I
+PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->getPendingReward(J)J
+PLcom/android/server/job/controllers/QuotaController$TopAppTimer;->processEventLocked(Landroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+PLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;-><init>(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater-IA;)V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->postProcess()V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->prepare()V
+HPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->reset()V
+PLcom/android/server/job/controllers/QuotaController$UsageEventTracker;-><init>(Lcom/android/server/job/controllers/QuotaController;)V
+HPLcom/android/server/job/controllers/QuotaController$UsageEventTracker;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJGracePeriodTempAllowlistMs(Lcom/android/server/job/controllers/QuotaController;)J
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJGracePeriodTopAppMs(Lcom/android/server/job/controllers/QuotaController;)J
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJPkgTimers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJRewardInteractionMs(Lcom/android/server/job/controllers/QuotaController;)J
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJRewardTopAppMs(Lcom/android/server/job/controllers/QuotaController;)J
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmEJTopAppTimeChunkSizeMs(Lcom/android/server/job/controllers/QuotaController;)J
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmForegroundUids(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmHandler(Lcom/android/server/job/controllers/QuotaController;)Lcom/android/server/job/controllers/QuotaController$QcHandler;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmInQuotaAlarmQueue(Lcom/android/server/job/controllers/QuotaController;)Lcom/android/server/job/controllers/QuotaController$InQuotaAlarmQueue;
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmPkgTimers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTempAllowlistCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTempAllowlistGraceCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseLongArray;
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppGraceCache(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseLongArray;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$fgetmTopAppTrackers(Lcom/android/server/job/controllers/QuotaController;)Landroid/util/SparseArrayMap;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mgrantRewardForInstantEvent(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;J)V
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mhasTempAllowlistExemptionLocked(Lcom/android/server/job/controllers/QuotaController;IIJ)Z
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$misQuotaFreeLocked(Lcom/android/server/job/controllers/QuotaController;I)Z
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$misTopStartedJobLocked(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mmaybeUpdateConstraintForPkgLocked(Lcom/android/server/job/controllers/QuotaController;JILjava/lang/String;)Landroid/util/ArraySet;
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$mmaybeUpdateConstraintForUidLocked(Lcom/android/server/job/controllers/QuotaController;I)Landroid/util/ArraySet;
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$msetConstraintSatisfied(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;JZZ)Z
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$msetExpeditedQuotaApproved(Lcom/android/server/job/controllers/QuotaController;Lcom/android/server/job/controllers/JobStatus;JZ)Z
+PLcom/android/server/job/controllers/QuotaController;->-$$Nest$mtransactQuotaLocked(Lcom/android/server/job/controllers/QuotaController;ILjava/lang/String;JLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;J)Z
+HPLcom/android/server/job/controllers/QuotaController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/QuotaController;-><clinit>()V
+HPLcom/android/server/job/controllers/QuotaController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/ConnectivityController;)V
+PLcom/android/server/job/controllers/QuotaController;->cacheInstallerPackagesLocked(I)V
+HPLcom/android/server/job/controllers/QuotaController;->getEJDebitsLocked(ILjava/lang/String;)Lcom/android/server/job/controllers/QuotaController$ShrinkableDebits;
+HPLcom/android/server/job/controllers/QuotaController;->getEJLimitMsLocked(ILjava/lang/String;I)J
+PLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;I)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
+HPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
+HPLcom/android/server/job/controllers/QuotaController;->getMaxJobExecutionTimeMsLocked(Lcom/android/server/job/controllers/JobStatus;)J
+HPLcom/android/server/job/controllers/QuotaController;->getRemainingEJExecutionTimeLocked(ILjava/lang/String;)J
+PLcom/android/server/job/controllers/QuotaController;->grantRewardForInstantEvent(ILjava/lang/String;J)V
+PLcom/android/server/job/controllers/QuotaController;->hasTempAllowlistExemptionLocked(IIJ)Z
+HPLcom/android/server/job/controllers/QuotaController;->isQuotaFreeLocked(I)Z
+HPLcom/android/server/job/controllers/QuotaController;->isTopStartedJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z
+HPLcom/android/server/job/controllers/QuotaController;->isUnderJobCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;I)Z
+HPLcom/android/server/job/controllers/QuotaController;->isUnderSessionCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;I)Z
+PLcom/android/server/job/controllers/QuotaController;->isWithinEJQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(ILjava/lang/String;I)Z
+HPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V
+HPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(JILjava/lang/String;)Landroid/util/ArraySet;
+HPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForUidLocked(I)Landroid/util/ArraySet;
+PLcom/android/server/job/controllers/QuotaController;->onConstantsUpdatedLocked()V
+PLcom/android/server/job/controllers/QuotaController;->onSystemServicesReady()V
+HPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/QuotaController;->prepareForUpdatedConstantsLocked()V
+HPLcom/android/server/job/controllers/QuotaController;->setConstraintSatisfied(Lcom/android/server/job/controllers/JobStatus;JZZ)Z
+HPLcom/android/server/job/controllers/QuotaController;->setExpeditedQuotaApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z
+PLcom/android/server/job/controllers/QuotaController;->transactQuotaLocked(ILjava/lang/String;JLcom/android/server/job/controllers/QuotaController$ShrinkableDebits;J)Z
+HPLcom/android/server/job/controllers/QuotaController;->unprepareFromExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V
+HPLcom/android/server/job/controllers/QuotaController;->updateStandbyBucket(ILjava/lang/String;I)V
+PLcom/android/server/job/controllers/RestrictingController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/StateController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+PLcom/android/server/job/controllers/StateController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/StateController;->logDeviceWideConstraintStateToStatsd(IZ)V
+PLcom/android/server/job/controllers/StateController;->onConstantsUpdatedLocked()V
+PLcom/android/server/job/controllers/StateController;->onSystemServicesReady()V
+PLcom/android/server/job/controllers/StateController;->onUidBiasChangedLocked(III)V
+PLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/StateController;->prepareForUpdatedConstantsLocked()V
+PLcom/android/server/job/controllers/StateController;->startTrackingLocked()V
+HPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z
+PLcom/android/server/job/controllers/StorageController$StorageTracker;-><init>(Lcom/android/server/job/controllers/StorageController;)V
+PLcom/android/server/job/controllers/StorageController$StorageTracker;->startTracking()V
+PLcom/android/server/job/controllers/StorageController;-><clinit>()V
+PLcom/android/server/job/controllers/StorageController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/StorageController;->startTrackingLocked()V
+PLcom/android/server/job/controllers/TareController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/TareController;)V
+HPLcom/android/server/job/controllers/TareController;-><clinit>()V
+PLcom/android/server/job/controllers/TareController;-><init>(Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/BackgroundJobsController;Lcom/android/server/job/controllers/ConnectivityController;)V
+HPLcom/android/server/job/controllers/TareController;->addJobToBillList(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+PLcom/android/server/job/controllers/TareController;->canAffordExpeditedBillLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/TareController;->getPossibleStartBills(Lcom/android/server/job/controllers/JobStatus;)Landroid/util/ArraySet;
+PLcom/android/server/job/controllers/TareController;->getRunningActionId(Lcom/android/server/job/controllers/JobStatus;)I
+HPLcom/android/server/job/controllers/TareController;->getRunningBill(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/tare/EconomyManagerInternal$ActionBill;
+HPLcom/android/server/job/controllers/TareController;->hasEnoughWealthLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/TareController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TareController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+PLcom/android/server/job/controllers/TareController;->onConstantsUpdatedLocked()V
+HPLcom/android/server/job/controllers/TareController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TareController;->removeJobFromBillList(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+HPLcom/android/server/job/controllers/TareController;->setExpeditedTareApproved(Lcom/android/server/job/controllers/JobStatus;JZ)Z
+PLcom/android/server/job/controllers/TimeController$1;-><init>(Lcom/android/server/job/controllers/TimeController;)V
+PLcom/android/server/job/controllers/TimeController$2;-><init>(Lcom/android/server/job/controllers/TimeController;)V
+PLcom/android/server/job/controllers/TimeController$2;->onAlarm()V
+PLcom/android/server/job/controllers/TimeController;->-$$Nest$fputmLastFiredDelayExpiredElapsedMillis(Lcom/android/server/job/controllers/TimeController;J)V
+PLcom/android/server/job/controllers/TimeController;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/job/controllers/TimeController;-><clinit>()V
+PLcom/android/server/job/controllers/TimeController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V
+HPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V
+PLcom/android/server/job/controllers/TimeController;->ensureAlarmServiceLocked()V
+HPLcom/android/server/job/controllers/TimeController;->evaluateDeadlineConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
+HPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TimeController;->evaluateTimingDelayConstraint(Lcom/android/server/job/controllers/JobStatus;J)Z
+HPLcom/android/server/job/controllers/TimeController;->maybeAdjustAlarmTime(J)J
+HPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
+HPLcom/android/server/job/controllers/TimeController;->setDeadlineExpiredAlarmLocked(JLandroid/os/WorkSource;)V
+HPLcom/android/server/job/controllers/TimeController;->setDelayExpiredAlarmLocked(JLandroid/os/WorkSource;)V
+HPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;ILandroid/app/AlarmManager$OnAlarmListener;JLandroid/os/WorkSource;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;)V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;-><clinit>()V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;-><init>()V
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->isIdle()Z
+PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->startTracking(Landroid/content/Context;Lcom/android/server/job/JobSchedulerService;Lcom/android/server/job/controllers/idle/IdlenessListener;)V
+PLcom/android/server/job/restrictions/JobRestriction;-><init>(Lcom/android/server/job/JobSchedulerService;III)V
+PLcom/android/server/job/restrictions/ThermalStatusRestriction$1;-><init>(Lcom/android/server/job/restrictions/ThermalStatusRestriction;)V
+PLcom/android/server/job/restrictions/ThermalStatusRestriction$1;->onThermalStatusChanged(I)V
+PLcom/android/server/job/restrictions/ThermalStatusRestriction;->-$$Nest$fgetmThermalStatus(Lcom/android/server/job/restrictions/ThermalStatusRestriction;)I
+PLcom/android/server/job/restrictions/ThermalStatusRestriction;->-$$Nest$fputmThermalStatus(Lcom/android/server/job/restrictions/ThermalStatusRestriction;I)V
+PLcom/android/server/job/restrictions/ThermalStatusRestriction;-><init>(Lcom/android/server/job/JobSchedulerService;)V
+HPLcom/android/server/job/restrictions/ThermalStatusRestriction;->isJobRestricted(Lcom/android/server/job/controllers/JobStatus;)Z
+PLcom/android/server/job/restrictions/ThermalStatusRestriction;->onSystemServicesReady()V
+HSPLcom/android/server/lights/LightsManager;-><init>()V
+HSPLcom/android/server/lights/LightsService$1;-><init>(Lcom/android/server/lights/LightsService;)V
+HSPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/LogicalLight;
+HSPLcom/android/server/lights/LightsService$LightImpl;->-$$Nest$fgetmHwLight(Lcom/android/server/lights/LightsService$LightImpl;)Landroid/hardware/light/HwLight;
+HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;Landroid/hardware/light/HwLight;)V
+HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;Landroid/hardware/light/HwLight;Lcom/android/server/lights/LightsService$LightImpl-IA;)V
+PLcom/android/server/lights/LightsService$LightImpl;->setBrightness(F)V
+PLcom/android/server/lights/LightsService$LightImpl;->setBrightness(FI)V
+PLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
+HPLcom/android/server/lights/LightsService$LightImpl;->setLightUnchecked(IIIII)V
+PLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z
+HSPLcom/android/server/lights/LightsService$LightsManagerBinderService;-><init>(Lcom/android/server/lights/LightsService;)V
+HSPLcom/android/server/lights/LightsService$VintfHalCache;-><init>()V
+HSPLcom/android/server/lights/LightsService$VintfHalCache;-><init>(Lcom/android/server/lights/LightsService$VintfHalCache-IA;)V
+HSPLcom/android/server/lights/LightsService$VintfHalCache;->get()Landroid/hardware/light/ILights;
+HSPLcom/android/server/lights/LightsService$VintfHalCache;->get()Ljava/lang/Object;
+HSPLcom/android/server/lights/LightsService;->-$$Nest$fgetmLightsByType(Lcom/android/server/lights/LightsService;)[Lcom/android/server/lights/LightsService$LightImpl;
+PLcom/android/server/lights/LightsService;->-$$Nest$fgetmVintfLights(Lcom/android/server/lights/LightsService;)Ljava/util/function/Supplier;
+HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;Ljava/util/function/Supplier;Landroid/os/Looper;)V
+HSPLcom/android/server/lights/LightsService;->onBootPhase(I)V
+HSPLcom/android/server/lights/LightsService;->onStart()V
+HSPLcom/android/server/lights/LightsService;->populateAvailableLights(Landroid/content/Context;)V
+HSPLcom/android/server/lights/LightsService;->populateAvailableLightsFromAidl(Landroid/content/Context;)V
+HSPLcom/android/server/lights/LogicalLight;-><init>()V
+PLcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;Lcom/android/server/locales/LocaleManagerBackupHelper$UserMonitor-IA;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;-><clinit>()V
+PLcom/android/server/locales/LocaleManagerBackupHelper;-><init>(Landroid/content/Context;Lcom/android/server/locales/LocaleManagerService;Landroid/content/pm/PackageManager;Ljava/time/Clock;Landroid/util/SparseArray;Landroid/os/HandlerThread;Landroid/content/SharedPreferences;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;-><init>(Lcom/android/server/locales/LocaleManagerService;Landroid/content/pm/PackageManager;Landroid/os/HandlerThread;)V
+PLcom/android/server/locales/LocaleManagerBackupHelper;->createPersistedInfo()Landroid/content/SharedPreferences;
+PLcom/android/server/locales/LocaleManagerInternal;-><init>()V
+PLcom/android/server/locales/LocaleManagerService$1;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/SystemAppUpdateTracker;)V
+PLcom/android/server/locales/LocaleManagerService$1;->run()V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/LocaleManagerService$LocaleManagerBinderService-IA;)V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
+PLcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl;-><init>(Lcom/android/server/locales/LocaleManagerService;Lcom/android/server/locales/LocaleManagerService$LocaleManagerInternalImpl-IA;)V
+PLcom/android/server/locales/LocaleManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locales/LocaleManagerService;->onStart()V
+PLcom/android/server/locales/LocaleManagerServicePackageMonitor;-><init>(Lcom/android/server/locales/LocaleManagerBackupHelper;Lcom/android/server/locales/SystemAppUpdateTracker;Lcom/android/server/locales/LocaleManagerService;)V
+PLcom/android/server/locales/SystemAppUpdateTracker;-><init>(Landroid/content/Context;Lcom/android/server/locales/LocaleManagerService;Landroid/util/AtomicFile;)V
+PLcom/android/server/locales/SystemAppUpdateTracker;-><init>(Lcom/android/server/locales/LocaleManagerService;)V
+PLcom/android/server/locales/SystemAppUpdateTracker;->init()V
+PLcom/android/server/locales/SystemAppUpdateTracker;->loadUpdatedSystemApps()V
+PLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/GeocoderProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/GeocoderProxy;
+PLcom/android/server/location/GeocoderProxy;->register()Z
+PLcom/android/server/location/HardwareActivityRecognitionProxy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/HardwareActivityRecognitionProxy;
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->register()Z
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda11;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda11;->run()V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda12;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda2;->onOpNoted(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda7;->onUserChanged(II)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/LocationManagerService$Lifecycle$LifecycleUserInfoHelper;->onUserStarted(I)V
+PLcom/android/server/location/LocationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/LocationManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/location/LocationManagerService$Lifecycle;->onStart()V
+PLcom/android/server/location/LocationManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/location/LocationManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$LocalService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/LocationManagerService$LocalService;->$r8$lambda$zOgkdbQhX97ia_6zLR94eXWADOo(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$LocalService;-><init>(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService$LocalService;->addProviderEnabledListener(Ljava/lang/String;Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
+HPLcom/android/server/location/LocationManagerService$LocalService;->isProvider(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Z
+HPLcom/android/server/location/LocationManagerService$LocalService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
+PLcom/android/server/location/LocationManagerService$LocalService;->lambda$setLocationPackageTagsListener$0(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService$LocalService;->setLocationPackageTagsListener(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;)V
+PLcom/android/server/location/LocationManagerService$SystemInjector;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/SystemUserInfoHelper;)V
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getAlarmHelper()Lcom/android/server/location/injector/AlarmHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getAppForegroundHelper()Lcom/android/server/location/injector/AppForegroundHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getAppOpsHelper()Lcom/android/server/location/injector/AppOpsHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getEmergencyHelper()Lcom/android/server/location/injector/EmergencyHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationPermissionsHelper()Lcom/android/server/location/injector/LocationPermissionsHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationPowerSaveModeHelper()Lcom/android/server/location/injector/LocationPowerSaveModeHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationSettings()Lcom/android/server/location/settings/LocationSettings;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getLocationUsageLogger()Lcom/android/server/location/injector/LocationUsageLogger;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getPackageResetHelper()Lcom/android/server/location/injector/PackageResetHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getScreenInteractiveHelper()Lcom/android/server/location/injector/ScreenInteractiveHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getSettingsHelper()Lcom/android/server/location/injector/SettingsHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->getUserInfoHelper()Lcom/android/server/location/injector/UserInfoHelper;
+PLcom/android/server/location/LocationManagerService$SystemInjector;->onSystemReady()V
+PLcom/android/server/location/LocationManagerService;->$r8$lambda$eyTQ4ijUbfA4AoGXfSy3i0Mr-d8(Lcom/android/server/location/LocationManagerService;II)V
+PLcom/android/server/location/LocationManagerService;->$r8$lambda$kwp4RhvxNBiY1jhPHD3YdojaxUw(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService;->$r8$lambda$nPBMjpla8mzhPFk-pAdPm6o8AMI(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService;->$r8$lambda$ujQuQQ3Bc3ydTqqn2V1w-z0TnO4(Lcom/android/server/location/LocationManagerService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/location/LocationManagerService;->-$$Nest$mlogEmergencyState(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService;->-$$Nest$mlogLocationEnabledState(Lcom/android/server/location/LocationManagerService;)V
+PLcom/android/server/location/LocationManagerService;-><clinit>()V
+PLcom/android/server/location/LocationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/LocationManagerService;->addLocationProviderManager(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/AbstractLocationProvider;)V
+HPLcom/android/server/location/LocationManagerService;->calculateAppOpsLocationSourceTags(I)Landroid/os/PackageTagsList;
+PLcom/android/server/location/LocationManagerService;->geocoderIsPresent()Z
+PLcom/android/server/location/LocationManagerService;->getAllProviders()Ljava/util/List;
+HPLcom/android/server/location/LocationManagerService;->getLastLocation(Ljava/lang/String;Landroid/location/LastLocationRequest;Ljava/lang/String;Ljava/lang/String;)Landroid/location/Location;
+HPLcom/android/server/location/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/location/provider/LocationProviderManager;
+PLcom/android/server/location/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Landroid/location/provider/ProviderProperties;
+PLcom/android/server/location/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
+PLcom/android/server/location/LocationManagerService;->hasProvider(Ljava/lang/String;)Z
+HPLcom/android/server/location/LocationManagerService;->isLocationEnabledForUser(I)Z
+PLcom/android/server/location/LocationManagerService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
+PLcom/android/server/location/LocationManagerService;->lambda$new$2(II)V
+PLcom/android/server/location/LocationManagerService;->lambda$onStateChanged$7(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService;->lambda$onStateChanged$8(Landroid/location/LocationManagerInternal$LocationPackageTagsListener;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/location/LocationManagerService;->lambda$onSystemReady$5(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/location/LocationManagerService;->logEmergencyState()V
+PLcom/android/server/location/LocationManagerService;->logLocationEnabledState()V
+HPLcom/android/server/location/LocationManagerService;->onStateChanged(Ljava/lang/String;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/LocationManagerService;->onSystemReady()V
+HPLcom/android/server/location/LocationManagerService;->onSystemThirdPartyAppsCanStart()V
+HPLcom/android/server/location/LocationManagerService;->refreshAppOpsRestrictions(I)V
+PLcom/android/server/location/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/location/LocationManagerService;->registerLocationListener(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/ILocationListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/LocationManagerService;->setExtraLocationControllerPackageEnabled(Z)V
+PLcom/android/server/location/LocationManagerService;->setLocationEnabledForUser(ZI)V
+PLcom/android/server/location/LocationManagerService;->unregisterLocationListener(Landroid/location/ILocationListener;)V
+PLcom/android/server/location/LocationManagerService;->validateLastLocationRequest(Ljava/lang/String;Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LastLocationRequest;
+HPLcom/android/server/location/LocationManagerService;->validateLocationRequest(Ljava/lang/String;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LocationRequest;
+PLcom/android/server/location/LocationPermissions;->asAppOp(I)I
+PLcom/android/server/location/LocationPermissions;->asPermission(I)Ljava/lang/String;
+PLcom/android/server/location/LocationPermissions;->checkCallingOrSelfLocationPermission(Landroid/content/Context;I)Z
+PLcom/android/server/location/LocationPermissions;->checkLocationPermission(II)Z
+PLcom/android/server/location/LocationPermissions;->enforceLocationPermission(III)V
+PLcom/android/server/location/LocationPermissions;->getCallingOrSelfPermissionLevel(Landroid/content/Context;)I
+PLcom/android/server/location/LocationPermissions;->getPermissionLevel(Landroid/content/Context;II)I
+PLcom/android/server/location/altitude/AltitudeService$Lifecycle;-><clinit>()V
+PLcom/android/server/location/altitude/AltitudeService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/altitude/AltitudeService$Lifecycle;->onStart()V
+PLcom/android/server/location/altitude/AltitudeService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;-><init>(I)V
+PLcom/android/server/location/contexthub/ConcurrentLinkedEvictingDeque;->add(Ljava/lang/Object;)Z
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda1;->runOrThrow()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda2;->runOrThrow()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda3;-><init>(Landroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda3;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;JLandroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;Landroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$1;-><init>(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;-><init>()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;->hasPendingIntent()Z
+PLcom/android/server/location/contexthub/ContextHubClientBroker$PendingIntentRequest;->isValid()Z
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$5LN1r8kQkqBv9B8howzlawnr-GI(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$7GaKk9ODLn9h9dIT1DAjkZFa4iM(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->$r8$lambda$QjaJyLv-rQuyhtluWSnqhPk-eIU(Lcom/android/server/location/contexthub/ContextHubClientBroker;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Landroid/app/PendingIntent;JLjava/lang/String;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->acquireWakeLock()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->attachDeathRecipient()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->callbackFinished()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->getAttachedContextHubId()I
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->getHostEndPointId()S
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->hasPermissions(Ljava/util/List;)Z
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->invokeCallback(Lcom/android/server/location/contexthub/ContextHubClientBroker$CallbackConsumer;)B
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$acquireWakeLock$12()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$releaseWakeLock$13()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->lambda$sendMessageToClient$0(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->notePermissions(Ljava/util/List;Ljava/lang/String;)Z
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->releaseWakeLock()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendHostEndpointConnectedEvent()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->sendPendingIntent(Ljava/util/function/Supplier;JLjava/util/function/Consumer;)B
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->startMonitoringOpChanges()V
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->toString()Ljava/lang/String;
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->updateNanoAppAuthState(JLjava/util/List;Z)I
+PLcom/android/server/location/contexthub/ContextHubClientBroker;->updateNanoAppAuthState(JLjava/util/List;ZZ)I
+PLcom/android/server/location/contexthub/ContextHubClientManager$RegistrationRecord;-><init>(Lcom/android/server/location/contexthub/ContextHubClientManager;Ljava/lang/String;I)V
+PLcom/android/server/location/contexthub/ContextHubClientManager;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;)V
+PLcom/android/server/location/contexthub/ContextHubClientManager;->getHostEndPointId()S
+PLcom/android/server/location/contexthub/ContextHubClientManager;->onMessageFromNanoApp(ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)B
+PLcom/android/server/location/contexthub/ContextHubClientManager;->registerClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/IContextHubClientCallback;Ljava/lang/String;Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)Landroid/hardware/location/IContextHubClient;
+PLcom/android/server/location/contexthub/ContextHubEventLogger$ContextHubEventBase;-><init>(JI)V
+PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappEventBase;-><init>(JIJZ)V
+PLcom/android/server/location/contexthub/ContextHubEventLogger$NanoappMessageEvent;-><init>(JILandroid/hardware/location/NanoAppMessage;Z)V
+PLcom/android/server/location/contexthub/ContextHubEventLogger;-><clinit>()V
+PLcom/android/server/location/contexthub/ContextHubEventLogger;-><init>()V
+PLcom/android/server/location/contexthub/ContextHubEventLogger;->getInstance()Lcom/android/server/location/contexthub/ContextHubEventLogger;
+PLcom/android/server/location/contexthub/ContextHubEventLogger;->logMessageFromNanoapp(ILandroid/hardware/location/NanoAppMessage;Z)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda2;-><init>(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;)V
+HPLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$$ExternalSyntheticLambda4;->onSensorPrivacyChanged(IZ)V
+PLcom/android/server/location/contexthub/ContextHubService$10;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
+PLcom/android/server/location/contexthub/ContextHubService$10;->onQueryResponse(ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService$1;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
+PLcom/android/server/location/contexthub/ContextHubService$1;->finishCallback()V
+PLcom/android/server/location/contexthub/ContextHubService$1;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/contexthub/ContextHubService$2;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
+PLcom/android/server/location/contexthub/ContextHubService$3;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/location/contexthub/ContextHubService$4;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
+PLcom/android/server/location/contexthub/ContextHubService$5;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
+PLcom/android/server/location/contexthub/ContextHubService$6;-><init>(Lcom/android/server/location/contexthub/ContextHubService;)V
+PLcom/android/server/location/contexthub/ContextHubService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/location/contexthub/ContextHubService$7;-><init>(Lcom/android/server/location/contexthub/ContextHubService;Landroid/os/Handler;)V
+PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;-><init>(Lcom/android/server/location/contexthub/ContextHubService;I)V
+PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;->handleNanoappInfo(Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService$ContextHubServiceCallback;->handleNanoappMessage(SLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService;->$r8$lambda$bctfr7Wm6zM1mt5FwQ_kHaH8yCA(Lcom/android/server/location/contexthub/ContextHubService;IZ)V
+PLcom/android/server/location/contexthub/ContextHubService;->$r8$lambda$oZBCHNRjaf6Cw4wdWNHDMe-IVbc(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;Landroid/hardware/location/NanoAppInstanceInfo;)V
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$fgetmDefaultClientMap(Lcom/android/server/location/contexthub/ContextHubService;)Ljava/util/Map;
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$fgetmNanoAppStateManager(Lcom/android/server/location/contexthub/ContextHubService;)Lcom/android/server/location/contexthub/NanoAppStateManager;
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$mhandleClientMessageCallback(Lcom/android/server/location/contexthub/ContextHubService;ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$mhandleQueryAppsCallback(Lcom/android/server/location/contexthub/ContextHubService;ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$monMessageReceiptOldApi(Lcom/android/server/location/contexthub/ContextHubService;III[B)I
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$msendBtSettingUpdate(Lcom/android/server/location/contexthub/ContextHubService;Z)V
+PLcom/android/server/location/contexthub/ContextHubService;->-$$Nest$msendWifiSettingUpdate(Lcom/android/server/location/contexthub/ContextHubService;Z)V
+PLcom/android/server/location/contexthub/ContextHubService;-><init>(Landroid/content/Context;Lcom/android/server/location/contexthub/IContextHubWrapper;)V
+PLcom/android/server/location/contexthub/ContextHubService;->checkHalProxyAndContextHubId(ILandroid/hardware/location/IContextHubTransactionCallback;I)Z
+PLcom/android/server/location/contexthub/ContextHubService;->createDefaultClientCallback(I)Landroid/hardware/location/IContextHubClientCallback;
+PLcom/android/server/location/contexthub/ContextHubService;->createQueryTransactionCallback(I)Landroid/hardware/location/IContextHubTransactionCallback;
+PLcom/android/server/location/contexthub/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
+PLcom/android/server/location/contexthub/ContextHubService;->getCallingPackageName()Ljava/lang/String;
+PLcom/android/server/location/contexthub/ContextHubService;->getContextHubHandles()[I
+PLcom/android/server/location/contexthub/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo;
+PLcom/android/server/location/contexthub/ContextHubService;->getContextHubs()Ljava/util/List;
+PLcom/android/server/location/contexthub/ContextHubService;->getCurrentUserId()I
+PLcom/android/server/location/contexthub/ContextHubService;->handleClientMessageCallback(ISLandroid/hardware/location/NanoAppMessage;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService;->handleQueryAppsCallback(ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubService;->initAirplaneModeSettingNotifications()V
+PLcom/android/server/location/contexthub/ContextHubService;->initBtSettingNotifications()V
+PLcom/android/server/location/contexthub/ContextHubService;->initContextHubServiceState(J)Z
+PLcom/android/server/location/contexthub/ContextHubService;->initDefaultClientMap()V
+PLcom/android/server/location/contexthub/ContextHubService;->initLocationSettingNotifications()V
+PLcom/android/server/location/contexthub/ContextHubService;->initMicrophoneSettingNotifications()V
+PLcom/android/server/location/contexthub/ContextHubService;->initWifiSettingNotifications()V
+PLcom/android/server/location/contexthub/ContextHubService;->isValidContextHubId(I)Z
+PLcom/android/server/location/contexthub/ContextHubService;->lambda$findNanoAppOnHub$1(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;Landroid/hardware/location/NanoAppInstanceInfo;)V
+PLcom/android/server/location/contexthub/ContextHubService;->lambda$initMicrophoneSettingNotifications$0(IZ)V
+PLcom/android/server/location/contexthub/ContextHubService;->onMessageReceiptOldApi(III[B)I
+PLcom/android/server/location/contexthub/ContextHubService;->queryNanoApps(ILandroid/hardware/location/IContextHubTransactionCallback;)V
+PLcom/android/server/location/contexthub/ContextHubService;->queryNanoAppsInternal(I)Z
+PLcom/android/server/location/contexthub/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I
+PLcom/android/server/location/contexthub/ContextHubService;->scheduleDailyMetricSnapshot()V
+PLcom/android/server/location/contexthub/ContextHubService;->sendAirplaneModeSettingUpdate()V
+PLcom/android/server/location/contexthub/ContextHubService;->sendBtSettingUpdate(Z)V
+PLcom/android/server/location/contexthub/ContextHubService;->sendLocationSettingUpdate()V
+PLcom/android/server/location/contexthub/ContextHubService;->sendMicrophoneDisableSettingUpdate(Z)V
+PLcom/android/server/location/contexthub/ContextHubService;->sendMicrophoneDisableSettingUpdateForCurrentUser()V
+HPLcom/android/server/location/contexthub/ContextHubService;->sendWifiSettingUpdate(Z)V
+PLcom/android/server/location/contexthub/ContextHubServiceTransaction;-><init>(IILjava/lang/String;)V
+PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->getTimeout(Ljava/util/concurrent/TimeUnit;)J
+PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->getTransactionType()I
+PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->setComplete()V
+PLcom/android/server/location/contexthub/ContextHubServiceTransaction;->toString()Ljava/lang/String;
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;-><clinit>()V
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createContextHubInfoMap(Ljava/util/List;)Ljava/util/HashMap;
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppMessage(Landroid/hardware/contexthub/ContextHubMessage;)Landroid/hardware/location/NanoAppMessage;
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createNanoAppStateList([Landroid/hardware/contexthub/NanoappInfo;)Ljava/util/List;
+PLcom/android/server/location/contexthub/ContextHubServiceUtil;->createPrimitiveIntArray(Ljava/util/Collection;)[I
+PLcom/android/server/location/contexthub/ContextHubStatsLog;->write(IJI)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;IILjava/lang/String;ILandroid/hardware/location/IContextHubTransactionCallback;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;->onQueryResponse(ILjava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$6;->onTransact()I
+PLcom/android/server/location/contexthub/ContextHubTransactionManager$TransactionRecord;-><init>(Lcom/android/server/location/contexthub/ContextHubTransactionManager;Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->-$$Nest$fgetmContextHubProxy(Lcom/android/server/location/contexthub/ContextHubTransactionManager;)Lcom/android/server/location/contexthub/IContextHubWrapper;
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper;Lcom/android/server/location/contexthub/ContextHubClientManager;Lcom/android/server/location/contexthub/NanoAppStateManager;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->addTransaction(Lcom/android/server/location/contexthub/ContextHubServiceTransaction;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->createQueryTransaction(ILandroid/hardware/location/IContextHubTransactionCallback;Ljava/lang/String;)Lcom/android/server/location/contexthub/ContextHubServiceTransaction;
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->onQueryResponse(Ljava/util/List;)V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->removeTransactionAndStartNext()V
+PLcom/android/server/location/contexthub/ContextHubTransactionManager;->startNextTransaction()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->$r8$lambda$73t3WS8YfVk6BW0zU3MPErwk2sU(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->$r8$lambda$hrYSC_xKcGsK1WsvqlKFNelyQUI(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;Ljava/util/List;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;-><clinit>()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;-><init>(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;ILcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->handleContextHubMessage(Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->handleNanoappInfo([Landroid/hardware/contexthub/NanoappInfo;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->lambda$handleContextHubMessage$1(Landroid/hardware/contexthub/ContextHubMessage;[Ljava/lang/String;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl$ContextHubAidlCallback;->lambda$handleNanoappInfo$0(Ljava/util/List;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->-$$Nest$fgetmHandler(Lcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;)Landroid/os/Handler;
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;-><init>(Landroid/hardware/contexthub/IContextHub;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getHub()Landroid/hardware/contexthub/IContextHub;
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->getHubs()Landroid/util/Pair;
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->linkWrapperToHubDeath()V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onAirplaneModeSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onBtMainSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onBtScanningSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onHostEndpointConnected(Landroid/hardware/contexthub/HostEndpointInfo;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onLocationSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onMicrophoneSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onSettingChanged(BZ)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiMainSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiScanningSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->onWifiSettingChanged(Z)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->queryNanoapps(I)I
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->registerCallback(ILcom/android/server/location/contexthub/IContextHubWrapper$ICallback;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->registerExistingCallback(I)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->setHub(Landroid/hardware/contexthub/IContextHub;)V
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsAirplaneModeSettingNotifications()Z
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsBtSettingNotifications()Z
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsLocationSettingNotifications()Z
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsMicrophoneSettingNotifications()Z
+PLcom/android/server/location/contexthub/IContextHubWrapper$ContextHubWrapperAidl;->supportsWifiSettingNotifications()Z
+PLcom/android/server/location/contexthub/IContextHubWrapper;-><init>()V
+PLcom/android/server/location/contexthub/IContextHubWrapper;->getContextHubWrapper()Lcom/android/server/location/contexthub/IContextHubWrapper;
+PLcom/android/server/location/contexthub/IContextHubWrapper;->maybeConnectToAidl()Lcom/android/server/location/contexthub/IContextHubWrapper;
+PLcom/android/server/location/contexthub/IContextHubWrapper;->maybeConnectToAidlGetProxy()Landroid/hardware/contexthub/IContextHub;
+PLcom/android/server/location/contexthub/NanoAppStateManager;-><init>()V
+HPLcom/android/server/location/contexthub/NanoAppStateManager;->addNanoAppInstance(IJI)V
+PLcom/android/server/location/contexthub/NanoAppStateManager;->foreachNanoAppInstanceInfo(Ljava/util/function/Consumer;)V
+HPLcom/android/server/location/contexthub/NanoAppStateManager;->getNanoAppHandle(IJ)I
+PLcom/android/server/location/contexthub/NanoAppStateManager;->handleQueryAppEntry(IJI)V
+PLcom/android/server/location/contexthub/NanoAppStateManager;->removeNanoAppInstance(IJ)V
+HPLcom/android/server/location/contexthub/NanoAppStateManager;->updateCache(ILjava/util/List;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$1;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$2;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$2;->run()V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$3;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector$4;-><init>(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$fputmCountryFromLocation(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;Landroid/location/Country;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$mdetectCountry(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;ZZ)Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->-$$Nest$mstopLocationBasedDetector(Lcom/android/server/location/countrydetector/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->addPhoneStateListener()V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->cancelLocationRefresh()V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->createLocationBasedCountryDetector()Lcom/android/server/location/countrydetector/CountryDetectorBase;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->detectCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->detectCountry(ZZ)Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getLastKnownLocationBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getLocaleCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getNetworkBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->getSimBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isAirplaneModeOff()Z
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->removePhoneStateListener()V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->scheduleLocationRefresh()V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V
+PLcom/android/server/location/countrydetector/ComprehensiveCountryDetector;->stopLocationBasedDetector()V
+PLcom/android/server/location/countrydetector/CountryDetectorBase;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/countrydetector/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V
+PLcom/android/server/location/countrydetector/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$1;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$2;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$2;->run()V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$3;-><init>(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;Landroid/location/Location;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector$3;->run()V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->-$$Nest$mqueryCountryCode(Lcom/android/server/location/countrydetector/LocationBasedCountryDetector;Landroid/location/Location;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country;
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List;
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location;
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->getQueryLocationTimeout()J
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->stop()V
+PLcom/android/server/location/countrydetector/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V
+PLcom/android/server/location/eventlog/LocalEventLog;-><clinit>()V
+PLcom/android/server/location/eventlog/LocalEventLog;-><init>(ILjava/lang/Class;)V
+HPLcom/android/server/location/eventlog/LocalEventLog;->addLog(JLjava/lang/Object;)V
+HPLcom/android/server/location/eventlog/LocalEventLog;->addLogEventInternal(ZILjava/lang/Object;)V
+PLcom/android/server/location/eventlog/LocalEventLog;->countTrailingZeros(I)I
+PLcom/android/server/location/eventlog/LocalEventLog;->createEntry(ZI)I
+PLcom/android/server/location/eventlog/LocalEventLog;->incrementIndex(I)I
+PLcom/android/server/location/eventlog/LocalEventLog;->isEmpty()Z
+PLcom/android/server/location/eventlog/LocalEventLog;->wrapIndex(I)I
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;-><init>()V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestActive()V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestAdded(J)V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestForeground()V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestInactive()V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->markRequestRemoved()V
+PLcom/android/server/location/eventlog/LocationEventLog$AggregateStats;->updateTotals()V
+PLcom/android/server/location/eventlog/LocationEventLog$LocationsEventLog;-><init>(I)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderClientRegisterEvent;-><init>(Ljava/lang/String;ZLandroid/location/util/identity/CallerIdentity;Landroid/location/LocationRequest;)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderEnabledEvent;-><init>(Ljava/lang/String;IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderEvent;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/eventlog/LocationEventLog$ProviderUpdateEvent;-><init>(Ljava/lang/String;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/eventlog/LocationEventLog$UserVisibilityChangedEvent;-><init>(IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog;-><clinit>()V
+PLcom/android/server/location/eventlog/LocationEventLog;-><init>()V
+PLcom/android/server/location/eventlog/LocationEventLog;->addLog(Ljava/lang/Object;)V
+HPLcom/android/server/location/eventlog/LocationEventLog;->getAggregateStats(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/eventlog/LocationEventLog$AggregateStats;
+PLcom/android/server/location/eventlog/LocationEventLog;->getLocationsLogSize()I
+PLcom/android/server/location/eventlog/LocationEventLog;->getLogSize()I
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientActive(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientForeground(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientInactive(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientRegistered(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;Landroid/location/LocationRequest;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderClientUnregistered(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderEnabled(Ljava/lang/String;IZ)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logProviderUpdateRequest(Ljava/lang/String;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/eventlog/LocationEventLog;->logUserVisibilityChanged(IZ)V
+PLcom/android/server/location/fudger/LocationFudger;-><clinit>()V
+PLcom/android/server/location/fudger/LocationFudger;-><init>(F)V
+PLcom/android/server/location/fudger/LocationFudger;-><init>(FLjava/time/Clock;Ljava/util/Random;)V
+PLcom/android/server/location/fudger/LocationFudger;->nextRandomOffset()D
+PLcom/android/server/location/fudger/LocationFudger;->resetOffsets()V
+PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
+PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
+PLcom/android/server/location/geofence/GeofenceManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
+PLcom/android/server/location/geofence/GeofenceManager$1;-><init>(Lcom/android/server/location/geofence/GeofenceManager;)V
+PLcom/android/server/location/geofence/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/geofence/GeofenceProxy;)V
+PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection;-><init>(Lcom/android/server/location/geofence/GeofenceProxy;)V
+PLcom/android/server/location/geofence/GeofenceProxy$GeofenceProxyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/location/geofence/GeofenceProxy;-><init>(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)V
+PLcom/android/server/location/geofence/GeofenceProxy;->createAndBind(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)Lcom/android/server/location/geofence/GeofenceProxy;
+PLcom/android/server/location/geofence/GeofenceProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
+PLcom/android/server/location/geofence/GeofenceProxy;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
+PLcom/android/server/location/geofence/GeofenceProxy;->register(Landroid/content/Context;)Z
+PLcom/android/server/location/geofence/GeofenceProxy;->updateGeofenceHardware(Landroid/os/IBinder;)V
+PLcom/android/server/location/gnss/ExponentialBackOff;-><init>(JJ)V
+PLcom/android/server/location/gnss/GnssAntennaInfoProvider;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssAntennaInfoProvider;->onHalStarted()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda0;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda1;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda3;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda4;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/location/gnss/GnssConfiguration$$ExternalSyntheticLambda5;->set(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;-><init>(II)V
+PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$3fQhh0HIdjq4jMHxYVTiFqO2lhg(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$F9k7STpxBfONZ7Aqgxh165D_nWw(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$ZLy4bFu8qE3ZjEkSXCo-Pu4l7O0(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$eXF9XL5ObtAcQauf3xSbZCBReug(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->$r8$lambda$vT_XZFD-4uMu_ePbNOLadVMKlCY(I)Z
+PLcom/android/server/location/gnss/GnssConfiguration;-><clinit>()V
+PLcom/android/server/location/gnss/GnssConfiguration;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/gnss/GnssConfiguration;->getBooleanConfig(Ljava/lang/String;Z)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->getC2KHost()Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssConfiguration;->getC2KPort(I)I
+PLcom/android/server/location/gnss/GnssConfiguration;->getEsExtensionSec()I
+PLcom/android/server/location/gnss/GnssConfiguration;->getHalInterfaceVersion()Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;
+PLcom/android/server/location/gnss/GnssConfiguration;->getIntConfig(Ljava/lang/String;I)I
+PLcom/android/server/location/gnss/GnssConfiguration;->getProxyApps()Ljava/util/List;
+PLcom/android/server/location/gnss/GnssConfiguration;->getRangeCheckedConfigEsExtensionSec()I
+PLcom/android/server/location/gnss/GnssConfiguration;->getSuplEs(I)I
+PLcom/android/server/location/gnss/GnssConfiguration;->getSuplHost()Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssConfiguration;->getSuplMode(I)I
+PLcom/android/server/location/gnss/GnssConfiguration;->getSuplPort(I)I
+PLcom/android/server/location/gnss/GnssConfiguration;->isActiveSimEmergencySuplEnabled()Z
+PLcom/android/server/location/gnss/GnssConfiguration;->isConfigEsExtensionSecSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->isConfigGpsLockSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->isConfigSuplEsSupported(Lcom/android/server/location/gnss/GnssConfiguration$HalInterfaceVersion;)Z
+PLcom/android/server/location/gnss/GnssConfiguration;->isNiSuplMessageInjectionEnabled()Z
+PLcom/android/server/location/gnss/GnssConfiguration;->isSimAbsent(Landroid/content/Context;)Z
+HPLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromCarrierConfig(ZI)V
+PLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromGpsDebugConfig(Ljava/util/Properties;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssConfiguration;->loadPropertiesFromResource(Landroid/content/Context;Ljava/util/Properties;)V
+HPLcom/android/server/location/gnss/GnssConfiguration;->logConfigurations()V
+PLcom/android/server/location/gnss/GnssConfiguration;->reloadGpsProperties()V
+HPLcom/android/server/location/gnss/GnssConfiguration;->reloadGpsProperties(ZI)V
+PLcom/android/server/location/gnss/GnssConfiguration;->setSatelliteBlocklist([I[I)V
+PLcom/android/server/location/gnss/GnssGeofenceProxy;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssGeofenceProxy;->isHardwareGeofenceSupported()Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda13;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+HPLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda4;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda9;-><init>(IZ)V
+HPLcom/android/server/location/gnss/GnssListenerMultiplexer$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$1;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$2;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$2;->onPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;-><init>(Lcom/android/server/location/gnss/GnssListenerMultiplexer;Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getBinderFromKey(Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getBinderFromKey(Ljava/lang/Object;)Landroid/os/IBinder;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getIdentity()Landroid/location/util/identity/CallerIdentity;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->getRequest()Ljava/lang/Object;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->isForeground()Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->isPermitted()Z
+HPLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->onForegroundChanged(IZ)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;->onRegister()V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$G2kqDLkfuxQMtoPsbj2WpYf8X5s(IZLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
+HPLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$_Gfvn5VW9-dlsJfSAPdr0oFIo4s(Lcom/android/server/location/gnss/GnssListenerMultiplexer;IZ)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->$r8$lambda$vTTdgGmunMW7m6DFokt_QlVxjDg(Ljava/lang/String;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->-$$Nest$monPackageReset(Lcom/android/server/location/gnss/GnssListenerMultiplexer;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;-><init>(Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->addListener(Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->addListener(Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->createRegistration(Ljava/lang/Object;Landroid/location/util/identity/CallerIdentity;Landroid/os/IInterface;)Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Landroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isActive(Lcom/android/server/location/listeners/ListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->isSupported()Z
+HPLcom/android/server/location/gnss/GnssListenerMultiplexer;->lambda$onAppForegroundChanged$6(IZLcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->lambda$onPackageReset$7(Ljava/lang/String;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)Z
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->mergeRegistrations(Ljava/util/Collection;)Ljava/lang/Object;
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssListenerMultiplexer;->onRegister()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/gnss/NetworkTimeHelper;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda10;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda15;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;[I[I)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda18;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda22;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$$ExternalSyntheticLambda9;->run()V
+PLcom/android/server/location/gnss/GnssLocationProvider$1;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$2;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$3;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;Landroid/os/Handler;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$4;-><init>(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/location/gnss/GnssLocationProvider$LocationExtras;-><init>()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$5cN3NMHDdgiSS9srfJvXXqvdWzA(Lcom/android/server/location/gnss/GnssLocationProvider;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$P4av5E7_VcXCDWc2O4WPS0B6dK8(Lcom/android/server/location/gnss/GnssLocationProvider;[I[I)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$WJfBSnGxBdV92rwB-RR4u-lMzmQ(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->$r8$lambda$pvaCHGEUSphUSz5n1PWLLEnhwVM(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->-$$Nest$msubscriptionOrCarrierConfigChanged(Lcom/android/server/location/gnss/GnssLocationProvider;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/location/gnss/GnssLocationProvider;-><clinit>()V
+HPLcom/android/server/location/gnss/GnssLocationProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/hal/GnssNative;Lcom/android/server/location/gnss/GnssMetrics;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->demandUtcTimeInjection()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->handleEnable()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->handleInitialize()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->isGpsEnabled()Z
+PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$onCapabilitiesChanged$11()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$onUpdateSatelliteBlocklist$0([I[I)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->lambda$postWithWakeLockHeld$10(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onReportAGpsStatus(II[B)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onRequestSetID(I)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onSystemReady()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->onUpdateSatelliteBlocklist([I[I)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->postWithWakeLockHeld(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->reloadGpsProperties()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->restartLocationRequest()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->setGpsEnabled(Z)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->setStarted(Z)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->setSuplHostPort()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->stopBatching()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->stopNavigating()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->subscriptionOrCarrierConfigChanged()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V
+PLcom/android/server/location/gnss/GnssLocationProvider;->updateEnabled()V
+PLcom/android/server/location/gnss/GnssLocationProvider;->updateRequirements()V
+PLcom/android/server/location/gnss/GnssManagerService$GnssCapabilitiesHalModule;-><init>(Lcom/android/server/location/gnss/GnssManagerService;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssManagerService$GnssCapabilitiesHalModule;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/GnssManagerService$GnssGeofenceHalModule;-><init>(Lcom/android/server/location/gnss/GnssManagerService;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssManagerService;-><clinit>()V
+PLcom/android/server/location/gnss/GnssManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssManagerService;->getGnssGeofenceProxy()Landroid/location/IGpsGeofenceHardware;
+PLcom/android/server/location/gnss/GnssManagerService;->getGnssLocationProvider()Lcom/android/server/location/gnss/GnssLocationProvider;
+PLcom/android/server/location/gnss/GnssManagerService;->onSystemReady()V
+PLcom/android/server/location/gnss/GnssManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssMeasurementsProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssMetrics$GnssPowerMetrics;-><init>(Lcom/android/server/location/gnss/GnssMetrics;Lcom/android/internal/app/IBatteryStats;)V
+PLcom/android/server/location/gnss/GnssMetrics$Statistics;-><init>()V
+PLcom/android/server/location/gnss/GnssMetrics$Statistics;->reset()V
+PLcom/android/server/location/gnss/GnssMetrics$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/location/gnss/GnssMetrics;)V
+PLcom/android/server/location/gnss/GnssMetrics;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssMetrics;->registerGnssStats()V
+PLcom/android/server/location/gnss/GnssMetrics;->reset()V
+PLcom/android/server/location/gnss/GnssMetrics;->resetConstellationTypes()V
+PLcom/android/server/location/gnss/GnssNavigationMessageProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$1;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler$2;-><init>(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->$r8$lambda$UI75ZGR_wWeGCDtuWWZygqNH2WI(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->$r8$lambda$uaMjsdErTcMigR-QvUtvFZgEPNE(Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;-><clinit>()V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;-><init>(Landroid/content/Context;Lcom/android/server/location/gnss/GnssNetworkConnectivityHandler$GnssNetworkListener;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->createNetworkConnectivityCallback()Landroid/net/ConnectivityManager$NetworkCallback;
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->handleReleaseSuplConnection(I)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->isNativeAgpsRilSupported()Z
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->lambda$onReportAGpsStatus$1()V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->lambda$runEventAndReleaseWakeLock$2(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->onReportAGpsStatus(II[B)V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->registerNetworkCallbacks()V
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
+PLcom/android/server/location/gnss/GnssNetworkConnectivityHandler;->runOnHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssNmeaProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper$1;-><init>(Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;Landroid/os/Handler;)V
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/GnssSatelliteBlocklistHelper$GnssSatelliteBlocklistCallback;)V
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;->parseSatelliteBlocklist(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/location/gnss/GnssSatelliteBlocklistHelper;->updateSatelliteBlocklist()V
+PLcom/android/server/location/gnss/GnssStatusProvider;-><init>(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/hal/GnssNative;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->addListener(Landroid/location/util/identity/CallerIdentity;Landroid/location/IGnssStatusListener;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationAdded(Landroid/os/IBinder;Lcom/android/server/location/gnss/GnssListenerMultiplexer$GnssListenerRegistration;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/gnss/GnssStatusProvider;->registerWithService(Ljava/lang/Object;Ljava/util/Collection;)Z
+PLcom/android/server/location/gnss/GnssStatusProvider;->registerWithService(Ljava/lang/Void;Ljava/util/Collection;)Z
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Z)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/util/List;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/location/gnss/GnssVisibilityControl$1;-><init>(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$-C_A0LLAtzxFw2GtgzhvWwBB6Yo(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/util/List;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$QSIGEde0V8a2umZ6weceH27oZBU(Lcom/android/server/location/gnss/GnssVisibilityControl;Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$UFJaGDOfHy8H_6ZhRklIms-8o_A(Lcom/android/server/location/gnss/GnssVisibilityControl;Z)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->$r8$lambda$dJecQTgcsVi1z20DN2Mq2OZgcLo(Lcom/android/server/location/gnss/GnssVisibilityControl;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;-><clinit>()V
+PLcom/android/server/location/gnss/GnssVisibilityControl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->getLocationPermissionEnabledProxyApps()[Ljava/lang/String;
+PLcom/android/server/location/gnss/GnssVisibilityControl;->handleGpsEnabledChanged(Z)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->handleInitialize()V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->handleUpdateProxyApps(Ljava/util/List;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->isProxyAppListUpdated(Ljava/util/List;)Z
+PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$onConfigurationUpdated$4(Ljava/util/List;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$onGpsEnabledChanged$2(Z)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->lambda$runEventAndReleaseWakeLock$6(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->listenForProxyAppsPackageUpdates()V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->onConfigurationUpdated(Lcom/android/server/location/gnss/GnssConfiguration;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->onGpsEnabledChanged(Z)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
+PLcom/android/server/location/gnss/GnssVisibilityControl;->runOnHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/location/gnss/GnssVisibilityControl;->setNfwLocationAccessProxyAppsInGnssHal([Ljava/lang/String;)V
+PLcom/android/server/location/gnss/NetworkTimeHelper;-><init>()V
+PLcom/android/server/location/gnss/NetworkTimeHelper;->create(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/gnss/NetworkTimeHelper$InjectTimeCallback;)Lcom/android/server/location/gnss/NetworkTimeHelper;
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->$r8$lambda$dEkDddYB5Iz8T29obuGL0xQsU6Y(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->clearDelayedTimeQueryCallback()V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->getLatestNetworkTime()Lcom/android/server/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->lambda$requestImmediateTimeQueryCallback$0(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->requestDelayedTimeQueryCallback(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;J)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->requestImmediateTimeQueryCallback(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$EnvironmentImpl;->setNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;-><clinit>()V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;-><init>(Lcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper$Environment;Lcom/android/server/location/gnss/NetworkTimeHelper$InjectTimeCallback;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->calculateTimeSignalAgeMillis(Lcom/android/server/timedetector/NetworkTimeSuggestion;)J
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->demandUtcTimeInjection()V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->isInUse()Z
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->logToDumpLog(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->maybeInjectNetworkTime(Lcom/android/server/timedetector/NetworkTimeSuggestion;Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->queryAndInjectNetworkTime(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->removePeriodicNetworkTimeQuery()V
+PLcom/android/server/location/gnss/TimeDetectorNetworkTimeHelper;->setPeriodicTimeInjectionMode(Z)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda16;->runOrThrow()V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;I)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda23;->runOrThrow()V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/gnss/hal/GnssNative;II[B)V
+PLcom/android/server/location/gnss/hal/GnssNative$$ExternalSyntheticLambda4;->runOrThrow()V
+PLcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;->onHalStarted()V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;-><init>()V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->classInitOnce()V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->cleanup()V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->init()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->initBatching()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->initOnce(Lcom/android/server/location/gnss/hal/GnssNative;Z)V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isGeofencingSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isGnssVisibilityControlSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isPsdsSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->isSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->setAgpsServer(ILjava/lang/String;I)V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->setAgpsSetId(ILjava/lang/String;)V
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->startAntennaInfoListening()Z
+PLcom/android/server/location/gnss/hal/GnssNative$GnssHal;->startSvStatusCollection()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$1tvOlZmXGrQw0TxJr3KhvBNnqY4(Lcom/android/server/location/gnss/hal/GnssNative;II[B)V
+PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$f8mnaV-CqxjxteNWGUfaMwcgJL8(Lcom/android/server/location/gnss/hal/GnssNative;Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->$r8$lambda$kX3GdWZHTIR8BsDyWlCdiVJuuvA(Lcom/android/server/location/gnss/hal/GnssNative;I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$mnative_init_once(Lcom/android/server/location/gnss/hal/GnssNative;Z)V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_agps_set_id(ILjava/lang/String;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_class_init_once()V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_cleanup()V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_init()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_init_batching()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_geofence_supported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_gnss_visibility_control_supported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_is_supported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_set_agps_server(ILjava/lang/String;I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_start_antenna_info_listening()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_start_sv_status_collection()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->-$$Nest$smnative_supports_psds()Z
+PLcom/android/server/location/gnss/hal/GnssNative;-><init>(Lcom/android/server/location/gnss/hal/GnssNative$GnssHal;Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/GnssConfiguration;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addAntennaInfoCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$AntennaInfoCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addBaseCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$BaseCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addLocationCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$LocationCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addMeasurementCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$MeasurementCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addNavigationMessageCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$NavigationMessageCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addNmeaCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$NmeaCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addStatusCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$StatusCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->addSvStatusCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$SvStatusCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->create(Lcom/android/server/location/injector/Injector;Lcom/android/server/location/gnss/GnssConfiguration;)Lcom/android/server/location/gnss/hal/GnssNative;
+PLcom/android/server/location/gnss/hal/GnssNative;->getCapabilities()Landroid/location/GnssCapabilities;
+PLcom/android/server/location/gnss/hal/GnssNative;->getConfiguration()Lcom/android/server/location/gnss/GnssConfiguration;
+PLcom/android/server/location/gnss/hal/GnssNative;->init()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->initBatching()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->initializeGnss(Z)V
+PLcom/android/server/location/gnss/hal/GnssNative;->initializeHal()V
+PLcom/android/server/location/gnss/hal/GnssNative;->isGeofencingSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->isGnssVisibilityControlSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->isPsdsSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->isSupported()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->lambda$onCapabilitiesChanged$8(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->lambda$reportAGpsStatus$3(II[B)V
+PLcom/android/server/location/gnss/hal/GnssNative;->lambda$requestSetID$17(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->onCapabilitiesChanged(Landroid/location/GnssCapabilities;Landroid/location/GnssCapabilities;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->register()V
+PLcom/android/server/location/gnss/hal/GnssNative;->reportAGpsStatus(II[B)V
+PLcom/android/server/location/gnss/hal/GnssNative;->requestSetID(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setAGpsCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$AGpsCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setAgpsServer(ILjava/lang/String;I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setAgpsSetId(ILjava/lang/String;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setGeofenceCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$GeofenceCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setGnssHardwareModelName(Ljava/lang/String;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setGnssYearOfHardware(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setLocationRequestCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$LocationRequestCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setNotificationCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$NotificationCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setPsdsCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$PsdsCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setSubHalMeasurementCorrectionsCapabilities(I)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setTimeCallbacks(Lcom/android/server/location/gnss/hal/GnssNative$TimeCallbacks;)V
+PLcom/android/server/location/gnss/hal/GnssNative;->setTopHalCapabilities(IZ)V
+PLcom/android/server/location/gnss/hal/GnssNative;->startAntennaInfoListening()Z
+PLcom/android/server/location/gnss/hal/GnssNative;->startSvStatusCollection()Z
+PLcom/android/server/location/injector/AlarmHelper;-><init>()V
+PLcom/android/server/location/injector/AppForegroundHelper;-><init>()V
+PLcom/android/server/location/injector/AppForegroundHelper;->addListener(Lcom/android/server/location/injector/AppForegroundHelper$AppForegroundListener;)V
+PLcom/android/server/location/injector/AppForegroundHelper;->isForeground(I)Z
+HPLcom/android/server/location/injector/AppForegroundHelper;->notifyAppForeground(IZ)V
+PLcom/android/server/location/injector/AppOpsHelper;-><init>()V
+PLcom/android/server/location/injector/AppOpsHelper;->addListener(Lcom/android/server/location/injector/AppOpsHelper$LocationAppOpListener;)V
+PLcom/android/server/location/injector/AppOpsHelper;->notifyAppOpChanged(Ljava/lang/String;)V
+PLcom/android/server/location/injector/DeviceIdleHelper;-><init>()V
+PLcom/android/server/location/injector/DeviceStationaryHelper;-><init>()V
+PLcom/android/server/location/injector/EmergencyHelper;-><init>()V
+PLcom/android/server/location/injector/EmergencyHelper;->addOnEmergencyStateChangedListener(Lcom/android/server/location/injector/EmergencyHelper$EmergencyStateChangedListener;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/LocationPermissionsHelper;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper$$ExternalSyntheticLambda0;->onAppOpsChanged(Ljava/lang/String;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper;->$r8$lambda$WoTjr4sbCqNtECb33nGPjU7MTXA(Lcom/android/server/location/injector/LocationPermissionsHelper;Ljava/lang/String;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper;-><init>(Lcom/android/server/location/injector/AppOpsHelper;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper;->addListener(Lcom/android/server/location/injector/LocationPermissionsHelper$LocationPermissionsListener;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper;->hasLocationPermissions(ILandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/LocationPermissionsHelper;->notifyLocationPermissionsChanged(Ljava/lang/String;)V
+PLcom/android/server/location/injector/LocationPermissionsHelper;->onAppOpsChanged(Ljava/lang/String;)V
+PLcom/android/server/location/injector/LocationPowerSaveModeHelper;-><init>()V
+PLcom/android/server/location/injector/LocationPowerSaveModeHelper;->addListener(Lcom/android/server/location/injector/LocationPowerSaveModeHelper$LocationPowerSaveModeChangedListener;)V
+PLcom/android/server/location/injector/LocationUsageLogger;-><init>()V
+PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeDistance(F)I
+PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeExpireIn(J)I
+PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeInterval(J)I
+PLcom/android/server/location/injector/LocationUsageLogger;->bucketizeProvider(Ljava/lang/String;)I
+PLcom/android/server/location/injector/LocationUsageLogger;->categorizeActivityImportance(Z)I
+PLcom/android/server/location/injector/LocationUsageLogger;->getCallbackType(IZZ)I
+PLcom/android/server/location/injector/LocationUsageLogger;->hitApiUsageLogCap()Z
+PLcom/android/server/location/injector/LocationUsageLogger;->logEmergencyStateChanged(Z)V
+HPLcom/android/server/location/injector/LocationUsageLogger;->logLocationApiUsage(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/location/LocationRequest;ZZLandroid/location/Geofence;Z)V
+PLcom/android/server/location/injector/LocationUsageLogger;->logLocationEnabledStateChanged(Z)V
+PLcom/android/server/location/injector/PackageResetHelper;-><init>()V
+PLcom/android/server/location/injector/PackageResetHelper;->notifyPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/injector/PackageResetHelper;->register(Lcom/android/server/location/injector/PackageResetHelper$Responder;)V
+PLcom/android/server/location/injector/ScreenInteractiveHelper;-><init>()V
+PLcom/android/server/location/injector/ScreenInteractiveHelper;->addListener(Lcom/android/server/location/injector/ScreenInteractiveHelper$ScreenInteractiveChangedListener;)V
+PLcom/android/server/location/injector/SettingsHelper;-><init>()V
+PLcom/android/server/location/injector/SystemAlarmHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemAppForegroundHelper;)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda0;->onUidImportance(II)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemAppForegroundHelper;IZ)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper;->$r8$lambda$UCfitvFhYxwpzpERUdvbWiHsEkc(Lcom/android/server/location/injector/SystemAppForegroundHelper;IZ)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper;->$r8$lambda$kCA01rHRoDFHvlSG_pyah-tjHeE(Lcom/android/server/location/injector/SystemAppForegroundHelper;II)V
+PLcom/android/server/location/injector/SystemAppForegroundHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemAppForegroundHelper;->isAppForeground(I)Z
+PLcom/android/server/location/injector/SystemAppForegroundHelper;->lambda$onAppForegroundChanged$0(IZ)V
+HPLcom/android/server/location/injector/SystemAppForegroundHelper;->onAppForegroundChanged(II)V
+PLcom/android/server/location/injector/SystemAppForegroundHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemAppOpsHelper;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda0;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->$r8$lambda$dkvV9ErqRUvUhFKYCKm0OGHp7dQ(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->$r8$lambda$nvkNbjGehQgduXV6waQG27WlKTE(Lcom/android/server/location/injector/SystemAppOpsHelper;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->checkOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/SystemAppOpsHelper;->finishOp(ILandroid/location/util/identity/CallerIdentity;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->lambda$onSystemReady$0(Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->lambda$onSystemReady$1(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemAppOpsHelper;->startOpNoThrow(ILandroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/SystemDeviceIdleHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemDeviceIdleHelper;->onRegistrationStateChanged()V
+PLcom/android/server/location/injector/SystemDeviceIdleHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemDeviceStationaryHelper;-><init>()V
+PLcom/android/server/location/injector/SystemDeviceStationaryHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemEmergencyHelper$1;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper$2;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper$EmergencyCallTelephonyCallback;-><init>(Lcom/android/server/location/injector/SystemEmergencyHelper;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemEmergencyHelper;->isInEmergency(J)Z
+PLcom/android/server/location/injector/SystemEmergencyHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemLocationPermissionsHelper;)V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/AppOpsHelper;)V
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper;->hasPermission(Ljava/lang/String;Landroid/location/util/identity/CallerIdentity;)Z
+PLcom/android/server/location/injector/SystemLocationPermissionsHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;->getLocationPowerSaveMode()I
+PLcom/android/server/location/injector/SystemLocationPowerSaveModeHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->$r8$lambda$nQjWM_LpqGA0LL_igYwAYJnsylE(Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver;Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;-><init>(Lcom/android/server/location/injector/SystemPackageResetHelper;Lcom/android/server/location/injector/SystemPackageResetHelper$Receiver-IA;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->lambda$onReceive$1(Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemPackageResetHelper;->onRegister()V
+PLcom/android/server/location/injector/SystemScreenInteractiveHelper$1;-><init>(Lcom/android/server/location/injector/SystemScreenInteractiveHelper;)V
+PLcom/android/server/location/injector/SystemScreenInteractiveHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemScreenInteractiveHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/location/injector/SystemSettingsHelper$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/location/injector/SystemSettingsHelper$BooleanGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;->addListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$DeviceConfigSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HPLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->getValueForUser(II)I
+PLcom/android/server/location/injector/SystemSettingsHelper$IntegerSecureSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$LongGlobalSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->addListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->isRegistered()Z
+PLcom/android/server/location/injector/SystemSettingsHelper$ObservingSetting;->register(Landroid/content/Context;Landroid/net/Uri;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$PackageTagsListSetting;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;->getValueForUser(I)Ljava/util/List;
+PLcom/android/server/location/injector/SystemSettingsHelper$StringListCachedSecureSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;->getValue()Ljava/util/Set;
+PLcom/android/server/location/injector/SystemSettingsHelper$StringSetCachedGlobalSetting;->register()V
+PLcom/android/server/location/injector/SystemSettingsHelper;->$r8$lambda$D5hSJ3ILCWeTxjNZR6hpkxtM3qo()Landroid/util/ArraySet;
+PLcom/android/server/location/injector/SystemSettingsHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addAdasAllowlistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addIgnoreSettingsAllowlistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addOnBackgroundThrottleIntervalChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addOnBackgroundThrottlePackageWhitelistChangedListener(Lcom/android/server/location/injector/SettingsHelper$GlobalSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addOnLocationEnabledChangedListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->addOnLocationPackageBlacklistChangedListener(Lcom/android/server/location/injector/SettingsHelper$UserSettingChangedListener;)V
+PLcom/android/server/location/injector/SystemSettingsHelper;->getBackgroundThrottlePackageWhitelist()Ljava/util/Set;
+PLcom/android/server/location/injector/SystemSettingsHelper;->getCoarseLocationAccuracyM()F
+PLcom/android/server/location/injector/SystemSettingsHelper;->isLocationEnabled(I)Z
+PLcom/android/server/location/injector/SystemSettingsHelper;->isLocationPackageBlacklisted(ILjava/lang/String;)Z
+PLcom/android/server/location/injector/SystemSettingsHelper;->lambda$new$0()Landroid/util/ArraySet;
+PLcom/android/server/location/injector/SystemSettingsHelper;->onSystemReady()V
+PLcom/android/server/location/injector/SystemSettingsHelper;->setLocationEnabled(ZI)V
+PLcom/android/server/location/injector/SystemUserInfoHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/injector/SystemUserInfoHelper;)V
+PLcom/android/server/location/injector/SystemUserInfoHelper$$ExternalSyntheticLambda0;->onUserVisibilityChanged(IZ)V
+PLcom/android/server/location/injector/SystemUserInfoHelper;->$r8$lambda$rmbCOanELEWco8WhmNYmOOvB1A0(Lcom/android/server/location/injector/SystemUserInfoHelper;IZ)V
+PLcom/android/server/location/injector/SystemUserInfoHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/injector/SystemUserInfoHelper;->getActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/location/injector/SystemUserInfoHelper;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+PLcom/android/server/location/injector/SystemUserInfoHelper;->getCurrentUserId()I
+PLcom/android/server/location/injector/SystemUserInfoHelper;->getRunningUserIds()[I
+PLcom/android/server/location/injector/SystemUserInfoHelper;->isVisibleUserId(I)Z
+PLcom/android/server/location/injector/SystemUserInfoHelper;->lambda$onSystemReady$0(IZ)V
+PLcom/android/server/location/injector/SystemUserInfoHelper;->onSystemReady()V
+PLcom/android/server/location/injector/UserInfoHelper;-><init>()V
+PLcom/android/server/location/injector/UserInfoHelper;->addListener(Lcom/android/server/location/injector/UserInfoHelper$UserListener;)V
+PLcom/android/server/location/injector/UserInfoHelper;->dispatchOnUserStarted(I)V
+PLcom/android/server/location/injector/UserInfoHelper;->dispatchOnVisibleUserChanged(IZ)V
+PLcom/android/server/location/listeners/BinderListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/BinderListenerRegistration;->onRegister()V
+PLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;-><init>(Lcom/android/server/location/listeners/ListenerMultiplexer;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;
+HPLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->close()V
+PLcom/android/server/location/listeners/ListenerMultiplexer$ReentrancyGuard;->isReentrant()Z
+PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;-><init>(Lcom/android/server/location/listeners/ListenerMultiplexer;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->acquire()Lcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;
+HPLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->close()V
+PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->isBuffered()Z
+PLcom/android/server/location/listeners/ListenerMultiplexer$UpdateServiceBuffer;->markUpdateServiceRequired()V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;-><init>()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->onActive()V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->onRegistrationActiveChanged(Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->putRegistration(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->removeRegistration(I)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->removeRegistration(Ljava/lang/Object;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->replaceRegistration(Ljava/lang/Object;Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/listeners/ListenerMultiplexer;->unregister(Lcom/android/server/location/listeners/ListenerRegistration;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->updateRegistrations(Ljava/util/function/Predicate;)V
+HPLcom/android/server/location/listeners/ListenerMultiplexer;->updateService()V
+PLcom/android/server/location/listeners/ListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/ListenerRegistration;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/location/listeners/ListenerRegistration;->getExecutor()Ljava/util/concurrent/Executor;
+PLcom/android/server/location/listeners/ListenerRegistration;->isActive()Z
+PLcom/android/server/location/listeners/ListenerRegistration;->isRegistered()Z
+PLcom/android/server/location/listeners/ListenerRegistration;->onActive()V
+PLcom/android/server/location/listeners/ListenerRegistration;->onRegister(Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/ListenerRegistration;->onUnregister()V
+PLcom/android/server/location/listeners/ListenerRegistration;->setActive(Z)Z
+PLcom/android/server/location/listeners/ListenerRegistration;->unregisterInternal()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->getKey()Ljava/lang/Object;
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onRegister()V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onRegister(Ljava/lang/Object;)V
+PLcom/android/server/location/listeners/RemovableListenerRegistration;->onUnregister()V
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda0;-><init>(Z)V
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda2;-><init>(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Controller;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->$r8$lambda$LeNcBraXlYCSFuemITl6ZhAWq-s(Lcom/android/server/location/provider/AbstractLocationProvider$Controller;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->$r8$lambda$ymAsNas0LO3WeFO8o8yVE4_uJQA(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->isStarted()Z
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->lambda$setListener$0(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->lambda$setRequest$1(Landroid/location/provider/ProviderRequest;)V
+HPLcom/android/server/location/provider/AbstractLocationProvider$Controller;->setListener(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->setRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$Controller;->start()V
+PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withListener(Lcom/android/server/location/provider/AbstractLocationProvider$Listener;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withState(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider$InternalState;->withState(Ljava/util/function/UnaryOperator;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider$State;-><clinit>()V
+PLcom/android/server/location/provider/AbstractLocationProvider$State;-><init>(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Ljava/util/Set;)V
+PLcom/android/server/location/provider/AbstractLocationProvider$State;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/AbstractLocationProvider$State;->withAllowed(Z)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider$State;->withExtraAttributionTags(Ljava/util/Set;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider$State;->withIdentity(Landroid/location/util/identity/CallerIdentity;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider$State;->withProperties(Landroid/location/provider/ProviderProperties;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider;->$r8$lambda$CeuvNTBi50NGKIcNe9haAXCHlUo(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider;->$r8$lambda$xmpiQinuk56UCsTwnnQ2qoBXpWE(ZLcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider;->-$$Nest$fgetmInternalState(Lcom/android/server/location/provider/AbstractLocationProvider;)Ljava/util/concurrent/atomic/AtomicReference;
+HPLcom/android/server/location/provider/AbstractLocationProvider;-><init>(Ljava/util/concurrent/Executor;Landroid/location/util/identity/CallerIdentity;Landroid/location/provider/ProviderProperties;Ljava/util/Set;)V
+PLcom/android/server/location/provider/AbstractLocationProvider;->getController()Lcom/android/server/location/provider/LocationProviderController;
+HPLcom/android/server/location/provider/AbstractLocationProvider;->getState()Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider;->lambda$setAllowed$1(ZLcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/AbstractLocationProvider;->lambda$setState$0(Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/function/UnaryOperator;Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;)Lcom/android/server/location/provider/AbstractLocationProvider$InternalState;
+PLcom/android/server/location/provider/AbstractLocationProvider;->onStart()V
+PLcom/android/server/location/provider/AbstractLocationProvider;->setAllowed(Z)V
+HPLcom/android/server/location/provider/AbstractLocationProvider;->setState(Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda0;->onUserChanged(II)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda13;->run()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;-><init>(I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda20;-><init>(I)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda20;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda26;-><init>()V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda27;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda27;->run()V
+HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;-><init>(IZ)V
+HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda29;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda32;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda32;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda34;-><init>(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda34;->test(Ljava/lang/Object;)Z
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+HPLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda6;->onAppForegroundChanged(IZ)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$1;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$1;->onLocationPermissionsChanged(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager$2;-><init>(Lcom/android/server/location/provider/LocationProviderManager;)V
+PLcom/android/server/location/provider/LocationProviderManager$2;->onPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager$ExternalWakeLockReleaser;-><init>(Landroid/location/util/identity/CallerIdentity;Landroid/os/PowerManager$WakeLock;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Lcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;->onRegister()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerRegistration;->onUnregister()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;-><init>(Landroid/location/ILocationListener;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationListenerTransport;->deliverOnProviderEnabledChanged(Ljava/lang/String;Z)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;Z)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda1;->operate(Ljava/lang/Object;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->$r8$lambda$HKlWp9d0ULfN4Uyj27WwtckCg8Y(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;ZLcom/android/server/location/provider/LocationProviderManager$ProviderTransport;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->$r8$lambda$MbgOAywiWwljbCZ3_TvCtA84c4I(Lcom/android/server/location/provider/LocationProviderManager$LocationRegistration;)Lcom/android/server/location/provider/LocationProviderManager$ProviderTransport;
+HPLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->lambda$onProviderEnabledChanged$0()Lcom/android/server/location/provider/LocationProviderManager$ProviderTransport;
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->lambda$onProviderEnabledChanged$1(ZLcom/android/server/location/provider/LocationProviderManager$ProviderTransport;)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onActive()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onListenerUnregister()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onProviderEnabledChanged(Ljava/lang/String;IZ)V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onRegister()V
+PLcom/android/server/location/provider/LocationProviderManager$LocationRegistration;->onUnregister()V
+HPLcom/android/server/location/provider/LocationProviderManager$Registration;-><init>(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;Ljava/util/concurrent/Executor;Lcom/android/server/location/provider/LocationProviderManager$LocationTransport;I)V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->calculateProviderLocationRequest()Landroid/location/LocationRequest;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->getIdentity()Landroid/location/util/identity/CallerIdentity;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->getLastDeliveredLocation()Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->getPermissionLevel()I
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->getRequest()Landroid/location/LocationRequest;
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->isForeground()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->isPermitted()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->isThrottlingExempt()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->isUsingHighPower()Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onActive()V
+HPLcom/android/server/location/provider/LocationProviderManager$Registration;->onForegroundChanged(IZ)Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onHighPowerUsageChanged()V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onInactive()V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onLocationPermissionsChanged(Ljava/lang/String;)Z
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onProviderPropertiesChanged()Z
+HPLcom/android/server/location/provider/LocationProviderManager$Registration;->onRegister()V
+PLcom/android/server/location/provider/LocationProviderManager$Registration;->onUnregister()V
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$6v8wLALl9xMKUcHODJ2SqBgIS5w(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$BdUB__o6u_lJsqreFzvuZ5h1yeE(Lcom/android/server/location/provider/LocationProviderManager;Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$O3CIvdiVBWRXOJSW05H8AlBIHWw(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$TlPJnIwBbkvrT20UYrQqqAp6Ncw(IZLcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$UTCpk95Vv15pE_v1KFHCIiq6q2A(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$ZXN_h6DDTo8Q9vBhqWUlQSLwz7I(Lcom/android/server/location/provider/LocationProviderManager;II)V
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$a3Z8nDABZyLkK2LFh8YIMBZZX6E(Lcom/android/server/location/provider/LocationProviderManager;IZ)V
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$aikqiu08UDXI5758wflyUhISwW4(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->$r8$lambda$nfd58ulm5V48RW-bXnpKnI6wsiQ(Lcom/android/server/location/provider/LocationProviderManager;Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/LocationProviderManager;->-$$Nest$monLocationPermissionsChanged(Lcom/android/server/location/provider/LocationProviderManager;Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;->-$$Nest$monPackageReset(Lcom/android/server/location/provider/LocationProviderManager;Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;)V
+HPLcom/android/server/location/provider/LocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;Ljava/lang/String;Lcom/android/server/location/provider/PassiveLocationProviderManager;Ljava/util/Collection;)V
+PLcom/android/server/location/provider/LocationProviderManager;->access$000(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$100(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$200(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$300(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$400(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$500(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->access$600(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+HPLcom/android/server/location/provider/LocationProviderManager;->access$900(Lcom/android/server/location/provider/LocationProviderManager;)Ljava/lang/Object;
+PLcom/android/server/location/provider/LocationProviderManager;->addEnabledListener(Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
+PLcom/android/server/location/provider/LocationProviderManager;->calculateLastLocationRequest(Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;)Landroid/location/LastLocationRequest;
+PLcom/android/server/location/provider/LocationProviderManager;->getLastLocation(Landroid/location/LastLocationRequest;Landroid/location/util/identity/CallerIdentity;I)Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager;->getLastLocationUnsafe(IIZJ)Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager;->getName()Ljava/lang/String;
+PLcom/android/server/location/provider/LocationProviderManager;->getPermittedLocation(Landroid/location/Location;I)Landroid/location/Location;
+PLcom/android/server/location/provider/LocationProviderManager;->getProperties()Landroid/location/provider/ProviderProperties;
+PLcom/android/server/location/provider/LocationProviderManager;->getProviderIdentity()Landroid/location/util/identity/CallerIdentity;
+PLcom/android/server/location/provider/LocationProviderManager;->getState()Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/LocationProviderManager;->isActive(Lcom/android/server/location/listeners/ListenerRegistration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->isActive(Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+HPLcom/android/server/location/provider/LocationProviderManager;->isActive(ZLandroid/location/util/identity/CallerIdentity;)Z
+HPLcom/android/server/location/provider/LocationProviderManager;->isEnabled(I)Z
+HPLcom/android/server/location/provider/LocationProviderManager;->isVisibleToCaller()Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onAppForegroundChanged$10(IZLcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onEnabledChanged$21(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onLocationPermissionsChanged$12(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onPackageReset$14(Ljava/lang/String;Lcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onStateChanged$16(Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$onUserChanged$6(ILcom/android/server/location/provider/LocationProviderManager$Registration;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->lambda$setProviderRequest$5(Landroid/location/provider/ProviderRequest;)V
+HPLcom/android/server/location/provider/LocationProviderManager;->onAppForegroundChanged(IZ)V
+HPLcom/android/server/location/provider/LocationProviderManager;->onEnabledChanged(I)V
+PLcom/android/server/location/provider/LocationProviderManager;->onLocationPermissionsChanged(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onPackageReset(Ljava/lang/String;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegister()V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationAdded(Ljava/lang/Object;Lcom/android/server/location/provider/LocationProviderManager$Registration;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/listeners/ListenerRegistration;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onRegistrationRemoved(Ljava/lang/Object;Lcom/android/server/location/provider/LocationProviderManager$Registration;)V
+HPLcom/android/server/location/provider/LocationProviderManager;->onStateChanged(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/LocationProviderManager;->onUserChanged(II)V
+PLcom/android/server/location/provider/LocationProviderManager;->onUserStarted(I)V
+PLcom/android/server/location/provider/LocationProviderManager;->registerLocationRequest(Landroid/location/LocationRequest;Landroid/location/util/identity/CallerIdentity;ILandroid/location/ILocationListener;)V
+PLcom/android/server/location/provider/LocationProviderManager;->registerWithService(Landroid/location/provider/ProviderRequest;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->registerWithService(Ljava/lang/Object;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->removeEnabledListener(Landroid/location/LocationManagerInternal$ProviderEnabledListener;)V
+PLcom/android/server/location/provider/LocationProviderManager;->reregisterWithService(Landroid/location/provider/ProviderRequest;Landroid/location/provider/ProviderRequest;Ljava/util/Collection;)Z
+PLcom/android/server/location/provider/LocationProviderManager;->setProviderRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/LocationProviderManager;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+HPLcom/android/server/location/provider/LocationProviderManager;->startManager(Lcom/android/server/location/provider/LocationProviderManager$StateChangedListener;)V
+PLcom/android/server/location/provider/LocationProviderManager;->unregisterLocationRequest(Landroid/location/ILocationListener;)V
+PLcom/android/server/location/provider/MockableLocationProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/MockableLocationProvider$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->$r8$lambda$-OaxEM5nNcchTLhF3jHu6bbV1hc(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;-><init>(Lcom/android/server/location/provider/MockableLocationProvider;Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->lambda$onStateChanged$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/MockableLocationProvider$ListenerWrapper;->onStateChanged(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->$r8$lambda$va9Z2xDqK0vFpiJbyUFkO_K-fVw(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/MockableLocationProvider;->-$$Nest$fgetmProvider(Lcom/android/server/location/provider/MockableLocationProvider;)Lcom/android/server/location/provider/AbstractLocationProvider;
+PLcom/android/server/location/provider/MockableLocationProvider;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->isMock()Z
+PLcom/android/server/location/provider/MockableLocationProvider;->lambda$setProviderLocked$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/MockableLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->onStart()V
+HPLcom/android/server/location/provider/MockableLocationProvider;->setProviderLocked(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/MockableLocationProvider;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/PassiveLocationProvider;-><clinit>()V
+PLcom/android/server/location/provider/PassiveLocationProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/provider/PassiveLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/PassiveLocationProviderManager;-><init>(Landroid/content/Context;Lcom/android/server/location/injector/Injector;)V
+PLcom/android/server/location/provider/PassiveLocationProviderManager;->calculateRequestDelayMillis(JLjava/util/Collection;)J
+PLcom/android/server/location/provider/PassiveLocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Landroid/location/provider/ProviderRequest;
+PLcom/android/server/location/provider/PassiveLocationProviderManager;->mergeRegistrations(Ljava/util/Collection;)Ljava/lang/Object;
+PLcom/android/server/location/provider/PassiveLocationProviderManager;->setRealProvider(Lcom/android/server/location/provider/AbstractLocationProvider;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$$ExternalSyntheticLambda1;-><init>(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->$r8$lambda$NpVYyz_7AUBxLdPXQhWgbBcYbjI(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;-><init>(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->lambda$run$0(Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$1;->run()V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy$$ExternalSyntheticLambda0;-><init>(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->$r8$lambda$ahStkXOFheXDf68f4rSpZILgStI(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;-><init>(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->lambda$onInitialize$0(ZLandroid/location/provider/ProviderProperties;Landroid/location/util/identity/CallerIdentity;Landroid/util/ArraySet;Lcom/android/server/location/provider/AbstractLocationProvider$State;)Lcom/android/server/location/provider/AbstractLocationProvider$State;
+HPLcom/android/server/location/provider/proxy/ProxyLocationProvider$Proxy;->onInitialize(ZLandroid/location/provider/ProviderProperties;Ljava/lang/String;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->access$000(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->access$100(Lcom/android/server/location/provider/proxy/ProxyLocationProvider;Ljava/util/function/UnaryOperator;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->checkServiceResolves()Z
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->create(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/location/provider/proxy/ProxyLocationProvider;
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onBind(Landroid/os/IBinder;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onSetRequest(Landroid/location/provider/ProviderRequest;)V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onStart()V
+PLcom/android/server/location/provider/proxy/ProxyLocationProvider;->onUnbind()V
+PLcom/android/server/location/settings/LocationSettings;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/settings/LocationSettings;->registerLocationUserSettingsListener(Lcom/android/server/location/settings/LocationSettings$LocationUserSettingsListener;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/locksettings/BiometricDeferredQueue;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue;-><init>(Lcom/android/server/locksettings/SyntheticPasswordManager;Landroid/os/Handler;)V
+PLcom/android/server/locksettings/BiometricDeferredQueue;->systemReady(Landroid/hardware/fingerprint/FingerprintManager;Landroid/hardware/face/FaceManager;Landroid/hardware/biometrics/BiometricManager;)V
+PLcom/android/server/locksettings/LockSettingsService$1;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService$1;->run()V
+PLcom/android/server/locksettings/LockSettingsService$2;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V
+PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient-IA;)V
+PLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V
+PLcom/android/server/locksettings/LockSettingsService$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getBiometricManager()Landroid/hardware/biometrics/BiometricManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getFaceManager()Landroid/hardware/face/FaceManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getFingerprintManager()Landroid/hardware/fingerprint/FingerprintManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getHandler(Lcom/android/server/ServiceThread;)Landroid/os/Handler;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getJavaKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getRebootEscrowManager(Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/RebootEscrowManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getRecoverableKeyStoreManager()Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getServiceThread()Lcom/android/server/ServiceThread;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorage()Lcom/android/server/locksettings/LockSettingsStorage;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getStorageManager()Landroid/os/storage/IStorageManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuth()Lcom/android/server/locksettings/LockSettingsStrongAuth;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTracker()Lcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getUnifiedProfilePasswordCache(Ljava/security/KeyStore;)Lcom/android/server/locksettings/UnifiedProfilePasswordCache;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->isGsiRunning()Z
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$LocalService-IA;)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->onThirdPartyAppsStarted()V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
+PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks-IA;)V
+PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;->isUserSecure(I)Z
+PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->getStrongAuthForUser(I)I
+PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->handleStrongAuthRequiredChanged(II)V
+PLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->register(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$fgetmContext(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context;
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$fgetmRebootEscrowManager(Lcom/android/server/locksettings/LockSettingsService;)Lcom/android/server/locksettings/RebootEscrowManager;
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$mhideEncryptionNotification(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$misUserSecure(Lcom/android/server/locksettings/LockSettingsService;I)Z
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$mloadEscrowData(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monThirdPartyAppsStarted(Lcom/android/server/locksettings/LockSettingsService;)V
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monUserStarting(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->-$$Nest$monUserUnlocking(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;-><clinit>()V
+PLcom/android/server/locksettings/LockSettingsService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V
+PLcom/android/server/locksettings/LockSettingsService;->callToAuthSecretIfNeeded(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;Z)V
+PLcom/android/server/locksettings/LockSettingsService;->checkDatabaseReadPermission(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->checkPasswordHavePermission()V
+PLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission()V
+PLcom/android/server/locksettings/LockSettingsService;->checkWritePermission()V
+PLcom/android/server/locksettings/LockSettingsService;->deleteRepairModePersistentDataIfNeeded()V
+PLcom/android/server/locksettings/LockSettingsService;->getAuthSecretHal()V
+PLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z
+PLcom/android/server/locksettings/LockSettingsService;->getCredentialType(I)I
+PLcom/android/server/locksettings/LockSettingsService;->getCredentialTypeInternal(I)I
+PLcom/android/server/locksettings/LockSettingsService;->getCurrentLskfBasedProtectorId(I)J
+PLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
+PLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J
+PLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsService;->getUserManagerFromCache(I)Landroid/os/UserManager;
+PLcom/android/server/locksettings/LockSettingsService;->hasPermission(Ljava/lang/String;)Z
+PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->isCeStorageUnlocked(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->isCredentialSharableWithParent(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->loadEscrowData()V
+PLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(ILjava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V
+PLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->onSyntheticPasswordKnown(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;Z)V
+PLcom/android/server/locksettings/LockSettingsService;->onSyntheticPasswordUnlocked(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
+PLcom/android/server/locksettings/LockSettingsService;->onThirdPartyAppsStarted()V
+PLcom/android/server/locksettings/LockSettingsService;->onUserStarting(I)V
+PLcom/android/server/locksettings/LockSettingsService;->onUserUnlocking(I)V
+PLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsService;->systemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->unlockCeStorage(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
+PLcom/android/server/locksettings/LockSettingsService;->unlockKeystore(ILcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;)V
+PLcom/android/server/locksettings/LockSettingsService;->unlockUserKeyIfUnsecured(I)V
+PLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>()V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey-IA;)V
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->-$$Nest$mgetVersion(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>()V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$Cache-IA;)V
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->copyOf([B)[B
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/io/File;)Z
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->isFetched(I)Z
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/io/File;)[B
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/io/File;[BI)V
+HPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->remove(ILjava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->removeKey(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V
+PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->-$$Nest$sfgetDEFAULT()Ljava/lang/Object;
+PLcom/android/server/locksettings/LockSettingsStorage;-><clinit>()V
+PLcom/android/server/locksettings/LockSettingsStorage;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->getBoolean(Ljava/lang/String;ZI)Z
+PLcom/android/server/locksettings/LockSettingsStorage;->getLong(Ljava/lang/String;JI)J
+PLcom/android/server/locksettings/LockSettingsStorage;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordDirectoryForUser(I)Ljava/io/File;
+HPLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordStateFileForUser(IJLjava/lang/String;)Ljava/io/File;
+PLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V
+HPLcom/android/server/locksettings/LockSettingsStorage;->readFile(Ljava/io/File;)[B
+HPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage;->readSyntheticPasswordState(IJLjava/lang/String;)[B
+HPLcom/android/server/locksettings/LockSettingsStorage;->removeKey(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->removeKey(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$1;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/os/Looper;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;-><init>()V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;->getAlarmManager(Landroid/content/Context;)Landroid/app/AlarmManager;
+PLcom/android/server/locksettings/LockSettingsStrongAuth$Injector;->getDefaultStrongAuthFlags(Landroid/content/Context;)I
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->-$$Nest$mhandleAddStrongAuthTracker(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->-$$Nest$mhandleRequireStrongAuth(Lcom/android/server/locksettings/LockSettingsStrongAuth;II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;-><clinit>()V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStrongAuth$Injector;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleAddStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuth(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuthOneUser(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrackers(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V
+PLcom/android/server/locksettings/PasswordSlotManager;-><init>()V
+PLcom/android/server/locksettings/RebootEscrowKeyStoreManager;-><init>()V
+PLcom/android/server/locksettings/RebootEscrowManager$Injector;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStorage;)V
+PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getEventLog()Lcom/android/server/locksettings/RebootEscrowManager$RebootEscrowEventLog;
+PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getKeyStoreManager()Lcom/android/server/locksettings/RebootEscrowKeyStoreManager;
+PLcom/android/server/locksettings/RebootEscrowManager$Injector;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/locksettings/RebootEscrowManager$RebootEscrowEventLog;-><init>()V
+PLcom/android/server/locksettings/RebootEscrowManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/Handler;)V
+PLcom/android/server/locksettings/RebootEscrowManager;-><init>(Lcom/android/server/locksettings/RebootEscrowManager$Injector;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/Handler;)V
+PLcom/android/server/locksettings/RebootEscrowManager;->callToRebootEscrowIfNeeded(IB[B)V
+PLcom/android/server/locksettings/RebootEscrowManager;->clearMetricsStorage()V
+PLcom/android/server/locksettings/RebootEscrowManager;->loadRebootEscrowDataIfAvailable(Landroid/os/Handler;)V
+PLcom/android/server/locksettings/RebootEscrowManager;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
+PLcom/android/server/locksettings/SP800Derive;-><init>([B)V
+PLcom/android/server/locksettings/SP800Derive;->getMac()Ljavax/crypto/Mac;
+PLcom/android/server/locksettings/SP800Derive;->update32(Ljavax/crypto/Mac;I)V
+PLcom/android/server/locksettings/SP800Derive;->withContext([B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;-><clinit>()V
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->androidKeystoreProviderName()Ljava/lang/String;
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt(Ljavax/crypto/SecretKey;[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt([B[B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->decryptBlob(Ljava/lang/String;[B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->getKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->keyNamespace()I
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->personalizedHash([B[[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;-><init>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;-><init>(B)V
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveFileBasedEncryptionKey()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveGkPassword()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveKeyStorePassword()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->deriveSubkey([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->getSyntheticPassword()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->getVersion()B
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;->recreateDirectly([B)V
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;-><init>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;->fromBytes([B)Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPasswordBlob;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_CONTEXT()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_FBE_KEY()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_KEY_STORE_PASSWORD()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->-$$Nest$sfgetPERSONALIZATION_SP_GK_AUTH()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;-><clinit>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/LockSettingsStorage;Landroid/os/UserManager;Lcom/android/server/locksettings/PasswordSlotManager;)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->bytesToHex([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->decryptSpBlob(Ljava/lang/String;[B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getCredentialType(JI)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getProtectorKeyAlias(J)Ljava/lang/String;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSecdiscardable(JI)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadState(Ljava/lang/String;JI)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSyntheticPasswordHandle(I)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadWeaverSlot(JI)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->stretchLskf(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->transformUnderSecdiscardable([B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->unlockLskfBasedProtector(Landroid/service/gatekeeper/IGateKeeperService;JLcom/android/internal/widget/LockscreenCredential;ILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->unwrapSyntheticPasswordBlob(JB[BJI)Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallenge(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/server/locksettings/SyntheticPasswordManager$SyntheticPassword;JI)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallengeInternal(Landroid/service/gatekeeper/IGateKeeperService;[BJI)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/UnifiedProfilePasswordCache;-><clinit>()V
+PLcom/android/server/locksettings/UnifiedProfilePasswordCache;-><init>(Ljava/security/KeyStore;)V
+PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;-><init>(Ljava/security/KeyStore;)V
+PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;-><clinit>()V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;-><init>(Ljavax/crypto/KeyGenerator;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;->newInstance(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;Ljava/util/concurrent/ScheduledExecutorService;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;Lcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;Lcom/android/server/locksettings/recoverablekeystore/storage/RemoteLockscreenValidationSessionStorage;)V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getInstance(Landroid/content/Context;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
+PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;-><init>()V
+PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;-><init>()V
+PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;-><init>(Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getInstance()Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager$1;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Landroid/os/UserManager;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->getInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;)Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->verifyKnownUsers()V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getUserSerialNumbers()Ljava/util/Map;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->newInstance(Landroid/content/Context;)Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;->getDbVersion(Landroid/content/Context;)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;-><init>()V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;-><init>(Ljava/io/File;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->newInstance()Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RemoteLockscreenValidationSessionStorage;-><init>()V
+PLcom/android/server/logcat/LogcatManagerService$BinderService;-><init>(Lcom/android/server/logcat/LogcatManagerService;)V
+PLcom/android/server/logcat/LogcatManagerService$BinderService;-><init>(Lcom/android/server/logcat/LogcatManagerService;Lcom/android/server/logcat/LogcatManagerService$BinderService-IA;)V
+PLcom/android/server/logcat/LogcatManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/logcat/LogcatManagerService$Injector;-><init>()V
+PLcom/android/server/logcat/LogcatManagerService$Injector;->createClock()Ljava/util/function/Supplier;
+PLcom/android/server/logcat/LogcatManagerService$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/logcat/LogcatManagerService$LogAccessDialogCallback;-><init>(Lcom/android/server/logcat/LogcatManagerService;)V
+PLcom/android/server/logcat/LogcatManagerService$LogAccessRequestHandler;-><init>(Landroid/os/Looper;Lcom/android/server/logcat/LogcatManagerService;)V
+PLcom/android/server/logcat/LogcatManagerService;-><clinit>()V
+PLcom/android/server/logcat/LogcatManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/logcat/LogcatManagerService;-><init>(Landroid/content/Context;Lcom/android/server/logcat/LogcatManagerService$Injector;)V
+PLcom/android/server/logcat/LogcatManagerService;->onStart()V
+PLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;)V
+PLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener-IA;)V
+HPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;->onPlaybackConfigChanged(Ljava/util/List;)V
+PLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;-><init>(Landroid/os/Looper;Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;)V
+PLcom/android/server/media/AudioPlayerStateMonitor;->-$$Nest$fgetmLock(Lcom/android/server/media/AudioPlayerStateMonitor;)Ljava/lang/Object;
+PLcom/android/server/media/AudioPlayerStateMonitor;-><clinit>()V
+PLcom/android/server/media/AudioPlayerStateMonitor;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/AudioPlayerStateMonitor;->getInstance(Landroid/content/Context;)Lcom/android/server/media/AudioPlayerStateMonitor;
+PLcom/android/server/media/AudioPlayerStateMonitor;->getSortedAudioPlaybackClientUids()Ljava/util/List;
+PLcom/android/server/media/AudioPlayerStateMonitor;->isPlaybackActive(I)Z
+PLcom/android/server/media/AudioPlayerStateMonitor;->registerListener(Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;Landroid/os/Handler;)V
+PLcom/android/server/media/HandlerExecutor;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/media/MediaButtonReceiverHolder;->unflattenFromString(Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/media/MediaButtonReceiverHolder;
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda13;->onUidImportance(II)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$1;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl;->$r8$lambda$ataqgynQFVsOBE3vUnQ_-XD3XQg(Lcom/android/server/media/MediaRouter2ServiceImpl;II)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;-><clinit>()V
+PLcom/android/server/media/MediaRouter2ServiceImpl;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$new$0(II)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->updateRunningUserAndProfiles(I)V
+PLcom/android/server/media/MediaRouterService$1;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$AudioPlayerActiveStateChangedListenerImpl-IA;)V
+PLcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$AudioRoutesObserverImpl-IA;)V
+PLcom/android/server/media/MediaRouterService$ClientRecord;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;Landroid/media/IMediaRouterClient;IILjava/lang/String;Z)V
+PLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState;
+PLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;-><init>(Lcom/android/server/media/MediaRouterService;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->start()V
+PLcom/android/server/media/MediaRouterService$UserRecord;-><init>(Lcom/android/server/media/MediaRouterService;I)V
+PLcom/android/server/media/MediaRouterService;->-$$Nest$fgetmContext(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context;
+PLcom/android/server/media/MediaRouterService;-><clinit>()V
+PLcom/android/server/media/MediaRouterService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
+PLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
+PLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
+PLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
+PLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
+PLcom/android/server/media/MediaRouterService;->isUserActiveLocked(I)Z
+PLcom/android/server/media/MediaRouterService;->monitor()V
+PLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
+PLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V
+PLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
+PLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V
+PLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
+PLcom/android/server/media/MediaRouterService;->setSelectedRouteLocked(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
+PLcom/android/server/media/MediaRouterService;->systemRunning()V
+PLcom/android/server/media/MediaRouterService;->updateRunningUserAndProfiles(I)V
+PLcom/android/server/media/MediaRouterService;->validatePackageName(ILjava/lang/String;)Z
+PLcom/android/server/media/MediaServerUtils;->enforcePackageName(Landroid/content/Context;Ljava/lang/String;I)V
+PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/media/MediaSessionDeviceConfig$$ExternalSyntheticLambda1;-><init>(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/media/MediaSessionDeviceConfig;-><clinit>()V
+PLcom/android/server/media/MediaSessionDeviceConfig;->initialize(Landroid/content/Context;)V
+PLcom/android/server/media/MediaSessionDeviceConfig;->refresh(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/media/MediaSessionRecord$3;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Looper;)V
+PLcom/android/server/media/MediaSessionRecord$MessageHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(I)V
+PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(ILjava/lang/Object;)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->-$$Nest$fgetmCb(Lcom/android/server/media/MediaSessionRecord$SessionCb;)Landroid/media/session/ISessionCallback;
+PLcom/android/server/media/MediaSessionRecord$SessionCb;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionCallback;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord$SessionStub-IA;)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController;
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V
+PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmController(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$ControllerStub;
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmHandler(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler;
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmLock(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmService(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService;
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fgetmVolumeType(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmAudioAttrs(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmFlags(Lcom/android/server/media/MediaSessionRecord;J)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmVolumeControlId(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord;->-$$Nest$fputmVolumeType(Lcom/android/server/media/MediaSessionRecord;I)V
+PLcom/android/server/media/MediaSessionRecord;-><clinit>()V
+PLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;Lcom/android/server/media/MediaSessionService;Landroid/os/Looper;I)V
+PLcom/android/server/media/MediaSessionRecord;->createForegroundServiceDelegationOptions()Landroid/app/ForegroundServiceDelegationOptions;
+PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession;
+PLcom/android/server/media/MediaSessionRecord;->getUid()I
+PLcom/android/server/media/MediaSessionRecord;->getUserId()I
+PLcom/android/server/media/MediaSessionRecord;->isActive()Z
+PLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String;
+PLcom/android/server/media/MediaSessionService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$1;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$2;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord$OnMediaKeyEventSessionChangedListenerRecord;-><init>(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnMediaKeyEventSessionChangedListener;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmFullUserId(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmPriorityStack(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->-$$Nest$fgetmUidToSessionCount(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/util/SparseIntArray;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionService;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->addOnMediaKeyEventSessionChangedListenerLocked(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;I)V
+PLcom/android/server/media/MediaSessionService$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventHandler;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;I)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Landroid/os/Handler;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addOnMediaKeyEventSessionChangedListener(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;I)Landroid/media/session/ISession;
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->handleIncomingUser(IIILjava/lang/String;)I
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->verifySessionsRequest(Landroid/content/ComponentName;III)I
+PLcom/android/server/media/MediaSessionService$SessionsListenerRecord;-><init>(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;III)V
+PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmAudioPlayerStateMonitor(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlayerStateMonitor;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmContext(Lcom/android/server/media/MediaSessionService;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmHandler(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmLock(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$fgetmSessionsListeners(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mcreateSessionInternal(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$menforceMediaPermissions(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;III)V
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mfindIndexOfSessionsListenerLocked(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mgetActiveSessionsLocked(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mgetFullUserRecordLocked(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->-$$Nest$mpushSession1Changed(Lcom/android/server/media/MediaSessionService;I)V
+PLcom/android/server/media/MediaSessionService;-><clinit>()V
+PLcom/android/server/media/MediaSessionService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/MediaSessionService;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->enforceMediaPermissions(Ljava/lang/String;III)V
+PLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V
+PLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->hasMediaControlPermission(II)Z
+PLcom/android/server/media/MediaSessionService;->hasStatusBarServicePermission(II)Z
+PLcom/android/server/media/MediaSessionService;->instantiateCustomDispatcher(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionService;->instantiateCustomProvider(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z
+PLcom/android/server/media/MediaSessionService;->monitor()V
+PLcom/android/server/media/MediaSessionService;->onBootPhase(I)V
+PLcom/android/server/media/MediaSessionService;->onStart()V
+PLcom/android/server/media/MediaSessionService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V
+PLcom/android/server/media/MediaSessionService;->pushSession1Changed(I)V
+PLcom/android/server/media/MediaSessionService;->setGlobalPrioritySession(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionService;->updateUser()V
+PLcom/android/server/media/MediaSessionStack;-><clinit>()V
+PLcom/android/server/media/MediaSessionStack;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;)V
+PLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionStack;->clearCache(I)V
+PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecordImpl;)Z
+PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/List;
+PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V
+PLcom/android/server/media/RemoteDisplayProviderWatcher$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher$2;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher$2;->run()V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;->-$$Nest$mscanPackages(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/media/RemoteDisplayProviderWatcher;-><clinit>()V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService$BinderService;-><init>(Lcom/android/server/media/metrics/MediaMetricsManagerService;Lcom/android/server/media/metrics/MediaMetricsManagerService$BinderService-IA;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService;-><clinit>()V
+PLcom/android/server/media/metrics/MediaMetricsManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/metrics/MediaMetricsManagerService;->onStart()V
+PLcom/android/server/media/projection/FrameworkStatsLogWrapper;-><init>()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundActivitiesChanged(IIZ)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundServicesChanged(III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$1;->onProcessDied(II)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/content/Context;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;-><init>()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->createCallbackLooper()Landroid/os/Looper;
+PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->createClock()Lcom/android/server/media/projection/MediaProjectionManagerService$Clock;
+PLcom/android/server/media/projection/MediaProjectionManagerService$Injector;->mediaProjectionMetricsLogger(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionMetricsLogger;
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback-IA;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->-$$Nest$mhandleForegroundServicesChanged(Lcom/android/server/media/projection/MediaProjectionManagerService;III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;-><init>(Landroid/content/Context;Lcom/android/server/media/projection/MediaProjectionManagerService$Injector;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->handleForegroundServicesChanged(III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V
+PLcom/android/server/media/projection/MediaProjectionMetricsLogger;-><clinit>()V
+PLcom/android/server/media/projection/MediaProjectionMetricsLogger;-><init>(Lcom/android/server/media/projection/FrameworkStatsLogWrapper;Lcom/android/server/media/projection/MediaProjectionSessionIdGenerator;Lcom/android/server/media/projection/MediaProjectionTimestampStore;)V
+PLcom/android/server/media/projection/MediaProjectionMetricsLogger;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionMetricsLogger;
+PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;-><clinit>()V
+PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;-><init>(Landroid/content/SharedPreferences;)V
+PLcom/android/server/media/projection/MediaProjectionSessionIdGenerator;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionSessionIdGenerator;
+PLcom/android/server/media/projection/MediaProjectionTimestampStore;-><clinit>()V
+PLcom/android/server/media/projection/MediaProjectionTimestampStore;-><init>(Landroid/content/SharedPreferences;Ljava/time/InstantSource;)V
+PLcom/android/server/media/projection/MediaProjectionTimestampStore;->getInstance(Landroid/content/Context;)Lcom/android/server/media/projection/MediaProjectionTimestampStore;
+PLcom/android/server/net/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/net/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/net/FeatureFlagsImpl;->load_overrides_backstage_power()V
+PLcom/android/server/net/FeatureFlagsImpl;->networkBlockedForTopSleepingAndAbove()Z
+PLcom/android/server/net/Flags;-><clinit>()V
+PLcom/android/server/net/Flags;->networkBlockedForTopSleepingAndAbove()Z
+PLcom/android/server/net/NetworkManagementInternal;-><init>()V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda7;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda8;-><init>(Landroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$$ExternalSyntheticLambda9;-><init>(Landroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$Dependencies;-><init>()V
+HPLcom/android/server/net/NetworkManagementService$Dependencies;->getCallingUid()I
+PLcom/android/server/net/NetworkManagementService$Dependencies;->getNetd()Landroid/net/INetd;
+PLcom/android/server/net/NetworkManagementService$Dependencies;->getService(Ljava/lang/String;)Landroid/os/IBinder;
+PLcom/android/server/net/NetworkManagementService$Dependencies;->registerLocalService(Lcom/android/server/net/NetworkManagementInternal;)V
+PLcom/android/server/net/NetworkManagementService$LocalService;-><init>(Lcom/android/server/net/NetworkManagementService;)V
+PLcom/android/server/net/NetworkManagementService$LocalService;-><init>(Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService$LocalService-IA;)V
+HPLcom/android/server/net/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$6H1IPP0xbuUOBJ0zARtLg6fMa-E(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$cEZjblgQTbkhVOZAra8yyTiiXlk(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$iqW51JeHJZy_bOi_o6JJ3a9MFEY(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->$r8$lambda$k450O0AvGFGVDrE8Q-YRBpOJme4(Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/net/NetworkManagementService;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/net/NetworkManagementService;Lcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener-IA;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressRemoved$4(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressUpdated$3(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceLinkStateChanged$8(Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onRouteChanged$9(ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressRemoved(Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressUpdated(Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceLinkStateChanged(Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService$NetdUnsolicitedEventListener;->onRouteChanged(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService;->-$$Nest$fgetmDaemonHandler(Lcom/android/server/net/NetworkManagementService;)Landroid/os/Handler;
+HPLcom/android/server/net/NetworkManagementService;->-$$Nest$misNetworkRestrictedInternal(Lcom/android/server/net/NetworkManagementService;I)Z
+PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyAddressRemoved(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyAddressUpdated(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyInterfaceLinkStateChanged(Lcom/android/server/net/NetworkManagementService;Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService;->-$$Nest$mnotifyRouteChange(Lcom/android/server/net/NetworkManagementService;ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService;-><clinit>()V
+PLcom/android/server/net/NetworkManagementService;-><init>(Landroid/content/Context;Lcom/android/server/net/NetworkManagementService$Dependencies;)V
+PLcom/android/server/net/NetworkManagementService;->connectNativeNetdService()V
+PLcom/android/server/net/NetworkManagementService;->create(Landroid/content/Context;)Lcom/android/server/net/NetworkManagementService;
+PLcom/android/server/net/NetworkManagementService;->create(Landroid/content/Context;Lcom/android/server/net/NetworkManagementService$Dependencies;)Lcom/android/server/net/NetworkManagementService;
+HPLcom/android/server/net/NetworkManagementService;->enforceSystemUid()V
+PLcom/android/server/net/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats;
+PLcom/android/server/net/NetworkManagementService;->getFirewallChainName(I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkManagementService;->getFirewallChainState(I)Z
+HPLcom/android/server/net/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
+PLcom/android/server/net/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/net/NetworkManagementService$NetworkManagementEventCallback;)V
+PLcom/android/server/net/NetworkManagementService;->isBandwidthControlEnabled()Z
+HPLcom/android/server/net/NetworkManagementService;->isNetworkRestrictedInternal(I)Z
+PLcom/android/server/net/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
+PLcom/android/server/net/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V
+PLcom/android/server/net/NetworkManagementService;->notifyRouteChange(ZLandroid/net/RouteInfo;)V
+PLcom/android/server/net/NetworkManagementService;->prepareNativeDaemon()V
+PLcom/android/server/net/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/net/NetworkManagementService;->setDataSaverModeEnabled(Z)Z
+PLcom/android/server/net/NetworkManagementService;->setFirewallChainEnabled(IZ)V
+PLcom/android/server/net/NetworkManagementService;->setFirewallChainState(IZ)V
+PLcom/android/server/net/NetworkManagementService;->setFirewallEnabled(Z)V
+HPLcom/android/server/net/NetworkManagementService;->setFirewallUidRule(III)V
+HPLcom/android/server/net/NetworkManagementService;->setFirewallUidRuleLocked(III)V
+PLcom/android/server/net/NetworkManagementService;->setFirewallUidRules(I[I[I)V
+HPLcom/android/server/net/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V
+HPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkAllowlist(IZ)V
+HPLcom/android/server/net/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V
+PLcom/android/server/net/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V
+PLcom/android/server/net/NetworkManagementService;->systemReady()V
+HPLcom/android/server/net/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z
+PLcom/android/server/net/NetworkPolicyLogger$Data;-><init>()V
+HPLcom/android/server/net/NetworkPolicyLogger$Data;-><init>(Lcom/android/server/net/NetworkPolicyLogger$Data-IA;)V
+HPLcom/android/server/net/NetworkPolicyLogger$Data;->reset()V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->$r8$lambda$-TUy9RKzfUlNRcVYDQQgCGgal-o(I)[Lcom/android/server/net/NetworkPolicyLogger$Data;
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->$r8$lambda$kDNlKKkLZ8vfiKJuYgxljbBLzHE()Lcom/android/server/net/NetworkPolicyLogger$Data;
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><clinit>()V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><init>(I)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->appIdleStateChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->event(Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->firewallChainEnabled(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->lambda$new$0(I)[Lcom/android/server/net/NetworkPolicyLogger$Data;
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->meteredAllowlistChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->networkBlocked(IIII)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->paroleStateChanged(Z)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJI)V
+PLcom/android/server/net/NetworkPolicyLogger;-><clinit>()V
+PLcom/android/server/net/NetworkPolicyLogger;-><init>()V
+HPLcom/android/server/net/NetworkPolicyLogger;->appIdleStateChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->firewallChainEnabled(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->firewallRulesChanged(I[I[I)V
+PLcom/android/server/net/NetworkPolicyLogger;->getFirewallChainName(I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger;->meteredAllowlistChanged(IZ)V
+PLcom/android/server/net/NetworkPolicyLogger;->meteredRestrictedPkgsChanged(Ljava/util/Set;)V
+HPLcom/android/server/net/NetworkPolicyLogger;->networkBlocked(ILcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;)V
+PLcom/android/server/net/NetworkPolicyLogger;->paroleStateChanged(Z)V
+HPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZILjava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V
+HPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIJI)V
+PLcom/android/server/net/NetworkPolicyManagerInternal;-><init>()V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda0;->accept(I)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda2;->accept(I)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;-><init>(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$$ExternalSyntheticLambda7;->accept(I)V
+PLcom/android/server/net/NetworkPolicyManagerService$10;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$12;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$13;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$14;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$15;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/net/NetworkPolicyManagerService$16;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$16;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$4;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidGone(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V
+PLcom/android/server/net/NetworkPolicyManagerService$5;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$7;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$8;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$9;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$ActiveDataSubIdListener-IA;)V
+PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;-><init>(Landroid/content/Context;)V
+PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;->getActivateDataSubId()I
+PLcom/android/server/net/NetworkPolicyManagerService$Dependencies;->getDefaultDataSubId()I
+PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener-IA;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onParoleStateChanged(Z)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl-IA;)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onAdminDataAvailable()V
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZILjava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setMeteredRestrictedPackagesAsync(Ljava/util/Set;I)V
+PLcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver;-><init>(Landroid/content/Context;Lcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver$RestrictedModeListener;)V
+PLcom/android/server/net/NetworkPolicyManagerService$RestrictedModeObserver;->isRestrictedModeEnabled()Z
+PLcom/android/server/net/NetworkPolicyManagerService$StatsCallback;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$StatsCallback;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$StatsCallback-IA;)V
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><clinit>()V
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><init>()V
+HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;-><init>(III)V
+HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->copyFrom(Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;)V
+PLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->getEffectiveBlockedReasons(II)I
+HPLcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;->updateEffectiveBlockedReasons()V
+HPLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;-><init>()V
+PLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;-><init>(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo-IA;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;->update(IIJI)V
+PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$3GuQhs92xi8ei4ZPpN0P0tku59c(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$5Bzemdqa4u7WtPncTGtyV6odZ1o(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$RXPnC-uth1T2bDapl3O5AR4Dkhs(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$Vjvidsl51zqXS7fNCzjK8IojqZ8(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->$r8$lambda$y6NbbUE5w9mVKKbVy0XCA9aA5_c(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmAdminDataAvailableLatch(Lcom/android/server/net/NetworkPolicyManagerService;)Ljava/util/concurrent/CountDownLatch;
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmContext(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context;
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmDeps(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkPolicyManagerService$Dependencies;
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmLogger(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkPolicyLogger;
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmPowerSaveTempWhitelistAppIds(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$fgetmUidStateCallbackInfos(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$msetMeteredRestrictedPackagesInternal(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/Set;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForAppIdleParoleUL(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForPowerRestrictionsUL(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$mupdateRulesForTempAllowlistChangeUL(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->-$$Nest$sfgetLOGV()Z
+PLcom/android/server/net/NetworkPolicyManagerService;-><clinit>()V
+PLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Ljava/time/Clock;Ljava/io/File;ZLcom/android/server/net/NetworkPolicyManagerService$Dependencies;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundAllowlistUidsUL()Z
+PLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundAllowlistUidsUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->addSdkSandboxUidsIfNeeded(Landroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager()V
+PLcom/android/server/net/NetworkPolicyManagerService;->checkAnyPermissionOf([Ljava/lang/String;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->enforceAnyPermissionOf([Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->forEachUid(Ljava/lang/String;Ljava/util/function/IntConsumer;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->getBlockedReasons(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getDefaultClock()Ljava/time/Clock;
+PLcom/android/server/net/NetworkPolicyManagerService;->getDefaultSystemDir()Ljava/io/File;
+HPLcom/android/server/net/NetworkPolicyManagerService;->getOrCreateUidBlockedStateForUid(Landroid/util/SparseArray;I)Lcom/android/server/net/NetworkPolicyManagerService$UidBlockedState;
+PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundStatus(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundStatusInternal(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictedModeFirewallRule(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->handleRestrictedPackagesChangeUL(Ljava/util/Set;Ljava/util/Set;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(Lcom/android/server/net/NetworkPolicyManagerService$UidStateCallbackInfo;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissionUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->hasRestrictedModeAccess(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromLowPowerStandbyUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveExceptIdleUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isAllowlistedFromPowerSaveUL(IZ)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isRestrictedByAdminUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->isSystem(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(II)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlocked(IZ)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->isUidRestrictedOnMeteredNetworks(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidTop(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForAllowlistRulesUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForDenylistRulesUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$forEachUid$7(Landroid/util/SparseBooleanArray;ILjava/util/function/IntConsumer;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->lambda$networkScoreAndNetworkManagementServiceReady$1(Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRestrictedModeAllowlistUL$3(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRulesForRestrictBackgroundUL$6(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->lambda$updateRulesForRestrictPowerUL$5(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch;
+HPLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkAllowlist(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setMeteredRestrictedPackagesInternal(Ljava/util/Set;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(ZLjava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRuleUL(III)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateBlockedReasonsForRestrictedModeUL(I)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveAllowlistUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(ILandroid/net/NetworkPolicyManager$UidState;Landroid/net/NetworkPolicyManager$UidState;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictedModeAllowlistUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(II)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedPowerSaveUL(IZI)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllowlistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(II)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempAllowlistChangeUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(IIJI)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->waitForAdminData()V
+PLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService$1;-><init>(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onConnectEvent(Ljava/lang/String;IJI)V
+HPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onStart()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$fgetmIsLoggingEnabled(Lcom/android/server/net/watchlist/NetworkWatchlistService;)Z
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$minit(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->-$$Nest$minitIpConnectivityMetrics(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;-><clinit>()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->enforceWatchlistLoggingPermission()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->init()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->initIpConnectivityMetrics()V
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLogging()Z
+PLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLoggingImpl()Z
+PLcom/android/server/net/watchlist/ReportWatchlistJobService;-><clinit>()V
+PLcom/android/server/net/watchlist/ReportWatchlistJobService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/WatchlistConfig;-><clinit>()V
+PLcom/android/server/net/watchlist/WatchlistConfig;-><init>()V
+PLcom/android/server/net/watchlist/WatchlistConfig;-><init>(Ljava/io/File;)V
+HPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
+PLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
+PLcom/android/server/net/watchlist/WatchlistConfig;->getInstance()Lcom/android/server/net/watchlist/WatchlistConfig;
+PLcom/android/server/net/watchlist/WatchlistConfig;->reloadConfig()V
+PLcom/android/server/net/watchlist/WatchlistConfig;->removeTestModeConfig()V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><clinit>()V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getLastMidnightTime()J
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getMidnightTimestamp(I)J
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getPrimaryUserId()I
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleNetworkEvent(Ljava/lang/String;[Ljava/lang/String;IJ)V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isHostInWatchlist(Ljava/lang/String;)Z
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isIpInWatchlist(Ljava/lang/String;)Z
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->reportWatchlistIfNecessary()V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchAllSubDomainsInWatchlist(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchIpInWatchlist([Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->shouldReportNetworkWatchlist(J)Z
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->tryAggregateRecords(J)V
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><clinit>()V
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getInstance(Landroid/content/Context;)Lcom/android/server/net/watchlist/WatchlistReportDbHelper;
+PLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getSystemWatchlistDbFile()Ljava/io/File;
+PLcom/android/server/net/watchlist/WatchlistSettings;-><clinit>()V
+PLcom/android/server/net/watchlist/WatchlistSettings;-><init>()V
+PLcom/android/server/net/watchlist/WatchlistSettings;-><init>(Ljava/io/File;)V
+PLcom/android/server/net/watchlist/WatchlistSettings;->getInstance()Lcom/android/server/net/watchlist/WatchlistSettings;
+PLcom/android/server/net/watchlist/WatchlistSettings;->getSystemWatchlistFile()Ljava/io/File;
+PLcom/android/server/net/watchlist/WatchlistSettings;->parseSecretKey(Lorg/xmlpull/v1/XmlPullParser;)[B
+PLcom/android/server/net/watchlist/WatchlistSettings;->reloadSettings()V
+PLcom/android/server/notification/AlertRateLimiter;-><init>()V
+PLcom/android/server/notification/BadgeExtractor;-><init>()V
+PLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+HPLcom/android/server/notification/BadgeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/BadgeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/BadgeExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/BubbleExtractor;-><init>()V
+PLcom/android/server/notification/BubbleExtractor;->canPresentAsBubble(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/BubbleExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/BubbleExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/BubbleExtractor;->setShortcutHelper(Lcom/android/server/notification/ShortcutHelper;)V
+PLcom/android/server/notification/BubbleExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V
+PLcom/android/server/notification/CalendarTracker$CheckEventResult;-><init>()V
+PLcom/android/server/notification/CalendarTracker;-><clinit>()V
+PLcom/android/server/notification/CalendarTracker;-><init>(Landroid/content/Context;Landroid/content/Context;)V
+PLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult;
+PLcom/android/server/notification/CalendarTracker;->getCalendarsWithAccess()Landroid/util/ArraySet;
+PLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V
+PLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V
+PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;)V
+PLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$ConditionRecord-IA;)V
+PLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V
+PLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V
+HPLcom/android/server/notification/ConditionProviders;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+HPLcom/android/server/notification/ConditionProviders;->getRecordLocked(Landroid/net/Uri;Landroid/content/ComponentName;Z)Lcom/android/server/notification/ConditionProviders$ConditionRecord;
+PLcom/android/server/notification/ConditionProviders;->getRequiredPermission()Ljava/lang/String;
+PLcom/android/server/notification/ConditionProviders;->getSystemProviders()Ljava/lang/Iterable;
+PLcom/android/server/notification/ConditionProviders;->getValidConditions(Ljava/lang/String;[Landroid/service/notification/Condition;)[Landroid/service/notification/Condition;
+PLcom/android/server/notification/ConditionProviders;->isSystemProviderEnabled(Ljava/lang/String;)Z
+PLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V
+PLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+PLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V
+PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider;
+PLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/IConditionProvider;
+PLcom/android/server/notification/ConditionProviders;->safeSet([Ljava/lang/Object;)Landroid/util/ArraySet;
+PLcom/android/server/notification/ConditionProviders;->setCallback(Lcom/android/server/notification/ConditionProviders$Callback;)V
+PLcom/android/server/notification/ConditionProviders;->subscribeIfNecessary(Landroid/content/ComponentName;Landroid/net/Uri;)Z
+PLcom/android/server/notification/ConditionProviders;->subscribeLocked(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V
+PLcom/android/server/notification/ConditionProviders;->writeDefaults(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;)V
+PLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;Lcom/android/server/notification/CountdownConditionProvider$Receiver-IA;)V
+PLcom/android/server/notification/CountdownConditionProvider;-><clinit>()V
+PLcom/android/server/notification/CountdownConditionProvider;-><init>()V
+PLcom/android/server/notification/CountdownConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
+PLcom/android/server/notification/CountdownConditionProvider;->attachBase(Landroid/content/Context;)V
+PLcom/android/server/notification/CountdownConditionProvider;->getComponent()Landroid/content/ComponentName;
+PLcom/android/server/notification/CountdownConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V
+PLcom/android/server/notification/CountdownConditionProvider;->onConnected()V
+PLcom/android/server/notification/CriticalNotificationExtractor;-><init>()V
+PLcom/android/server/notification/CriticalNotificationExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/CriticalNotificationExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/CriticalNotificationExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/CriticalNotificationExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/CriticalNotificationExtractor;->supportsCriticalNotifications(Landroid/content/Context;)Z
+PLcom/android/server/notification/DefaultDeviceEffectsApplier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/DefaultDeviceEffectsApplier;Landroid/service/notification/ZenDeviceEffects;I)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier$1;-><init>(Lcom/android/server/notification/DefaultDeviceEffectsApplier;)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->$r8$lambda$4LDHIsj0iI2D9FidhGDL9DsNFGA(Lcom/android/server/notification/DefaultDeviceEffectsApplier;Landroid/service/notification/ZenDeviceEffects;I)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;-><clinit>()V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->apply(Landroid/service/notification/ZenDeviceEffects;I)V
+PLcom/android/server/notification/DefaultDeviceEffectsApplier;->lambda$apply$0(Landroid/service/notification/ZenDeviceEffects;I)V
+PLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider$2;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider$3;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/EventConditionProvider$4;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider$4;->run()V
+PLcom/android/server/notification/EventConditionProvider;->-$$Nest$mevaluateSubscriptions(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider;->-$$Nest$mevaluateSubscriptionsW(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/notification/EventConditionProvider;-><clinit>()V
+PLcom/android/server/notification/EventConditionProvider;-><init>()V
+PLcom/android/server/notification/EventConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
+PLcom/android/server/notification/EventConditionProvider;->attachBase(Landroid/content/Context;)V
+PLcom/android/server/notification/EventConditionProvider;->createCondition(Landroid/net/Uri;I)Landroid/service/notification/Condition;
+PLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptions()V
+HPLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptionsW()V
+PLcom/android/server/notification/EventConditionProvider;->getComponent()Landroid/content/ComponentName;
+PLcom/android/server/notification/EventConditionProvider;->getPendingIntent(J)Landroid/app/PendingIntent;
+PLcom/android/server/notification/EventConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/EventConditionProvider;->onBootComplete()V
+PLcom/android/server/notification/EventConditionProvider;->onConnected()V
+PLcom/android/server/notification/EventConditionProvider;->onSubscribe(Landroid/net/Uri;)V
+PLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V
+PLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V
+PLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V
+PLcom/android/server/notification/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/notification/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/notification/FeatureFlagsImpl;->crossAppPoliteNotifications()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->expireBitmaps()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->load_overrides_systemui()V
+HPLcom/android/server/notification/FeatureFlagsImpl;->notificationReduceMessagequeueUsage()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->politeNotifications()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->refactorAttentionHelper()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->sensitiveNotificationAppProtection()Z
+PLcom/android/server/notification/FeatureFlagsImpl;->vibrateWhileUnlocked()Z
+PLcom/android/server/notification/Flags;-><clinit>()V
+PLcom/android/server/notification/Flags;->crossAppPoliteNotifications()Z
+PLcom/android/server/notification/Flags;->expireBitmaps()Z
+PLcom/android/server/notification/Flags;->notificationReduceMessagequeueUsage()Z
+PLcom/android/server/notification/Flags;->politeNotifications()Z
+PLcom/android/server/notification/Flags;->refactorAttentionHelper()Z
+PLcom/android/server/notification/Flags;->sensitiveNotificationAppProtection()Z
+PLcom/android/server/notification/Flags;->vibrateWhileUnlocked()Z
+PLcom/android/server/notification/GlobalSortKeyComparator;-><init>()V
+PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/notification/GroupHelper$NotificationAttributes;-><init>(ILandroid/graphics/drawable/Icon;I)V
+PLcom/android/server/notification/GroupHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;ILcom/android/server/notification/GroupHelper$Callback;)V
+PLcom/android/server/notification/GroupHelper;->generatePackageKey(ILjava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/GroupHelper;->maybeGroup(Landroid/service/notification/StatusBarNotification;Z)V
+PLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V
+PLcom/android/server/notification/ImportanceExtractor;-><init>()V
+PLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/ImportanceExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HPLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;ILandroid/util/Pair;ZII)V
+HPLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/notification/ManagedServices$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/notification/ManagedServices$Config;-><init>()V
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)V
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->binderDied()V
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getService()Landroid/os/IInterface;
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->hashCode()I
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isGuest(Lcom/android/server/notification/ManagedServices;)Z
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSystem()Z
+PLcom/android/server/notification/ManagedServices$UserProfiles;-><init>()V
+HPLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()Landroid/util/IntArray;
+PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z
+PLcom/android/server/notification/ManagedServices$UserProfiles;->isProfileUser(I)Z
+PLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V
+PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmEnabledServicesForCurrentProfiles(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmServices(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
+PLcom/android/server/notification/ManagedServices;->-$$Nest$fgetmServicesRebinding(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->-$$Nest$mgetCaption(Lcom/android/server/notification/ManagedServices;)Ljava/lang/String;
+PLcom/android/server/notification/ManagedServices;->-$$Nest$mnewServiceInfo(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->-$$Nest$mremoveServiceImpl(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+HPLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+HPLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZLjava/lang/String;)V
+HPLcom/android/server/notification/ManagedServices;->bindToServices(Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V
+PLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->getAllowedComponents(I)Ljava/util/List;
+HPLcom/android/server/notification/ManagedServices;->getAllowedComponents(Landroid/util/IntArray;)Landroid/util/SparseArray;
+PLcom/android/server/notification/ManagedServices;->getAllowedPackages(I)Ljava/util/List;
+PLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/ManagedServices;->getBindFlags()I
+PLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String;
+PLcom/android/server/notification/ManagedServices;->getDefaultComponents()Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/ManagedServices;->getRemovableConnectedServices()Ljava/util/Set;
+HPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
+PLcom/android/server/notification/ManagedServices;->isAutobindAllowed(Landroid/content/pm/ServiceInfo;)Z
+PLcom/android/server/notification/ManagedServices;->isComponentEnabledForPackage(Ljava/lang/String;)Z
+PLcom/android/server/notification/ManagedServices;->isPackageAllowed(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z
+PLcom/android/server/notification/ManagedServices;->isSameUser(Landroid/os/IInterface;I)Z
+PLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z
+HPLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;II)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V
+PLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+PLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V
+PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V
+HPLcom/android/server/notification/ManagedServices;->populateComponentsToBind(Landroid/util/SparseArray;Landroid/util/IntArray;Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;->populateComponentsToUnbind(ZLjava/util/Set;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set;
+HPLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Landroid/util/ArraySet;
+PLcom/android/server/notification/ManagedServices;->readDefaults(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/notification/ManagedServices;->readExtraAttributes(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;I)V
+HPLcom/android/server/notification/ManagedServices;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/function/TriPredicate;ZI)V
+HPLcom/android/server/notification/ManagedServices;->rebindServices(ZI)V
+PLcom/android/server/notification/ManagedServices;->registerGuestService(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/pm/ServiceInfo;I)V
+PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;III)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V
+HPLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V
+PLcom/android/server/notification/ManagedServices;->registerSystemService(Landroid/os/IInterface;Landroid/content/ComponentName;II)V
+PLcom/android/server/notification/ManagedServices;->removeServiceImpl(Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->removeServiceLocked(I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V
+PLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZZ)V
+PLcom/android/server/notification/ManagedServices;->shouldReflectToSettings()Z
+PLcom/android/server/notification/ManagedServices;->unbindFromServices(Landroid/util/SparseArray;)V
+PLcom/android/server/notification/ManagedServices;->unbindOtherUserServices(I)V
+PLcom/android/server/notification/ManagedServices;->unbindService(Landroid/content/ServiceConnection;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->unbindServicesImpl(IZ)V
+PLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/os/IInterface;I)V
+PLcom/android/server/notification/ManagedServices;->unregisterServiceImpl(Landroid/os/IInterface;I)V
+PLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V
+HPLcom/android/server/notification/ManagedServices;->writeDefaults(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/ManagedServices;->writeExtraAttributes(Lcom/android/modules/utils/TypedXmlSerializer;I)V
+PLcom/android/server/notification/ManagedServices;->writeExtraXmlTags(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/notification/ManagedServices;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;-><init>()V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/NotificationAdjustmentExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper$1;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper$3;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
+HPLcom/android/server/notification/NotificationAttentionHelper$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;-><init>(IIII)V
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getLastNotificationUpdateTimeMs(Lcom/android/server/notification/NotificationRecord;)J
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getNextState(IJ)I
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->setApplyCooldownPerPackage(Z)V
+PLcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;->shouldIgnoreNotification(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_ALL_URI()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_ENABLED_URI()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_COOLDOWN_VIBRATE_UNLOCKED_URI()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;->-$$Nest$sfgetNOTIFICATION_LIGHT_PULSE_URI()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;-><clinit>()V
+PLcom/android/server/notification/NotificationAttentionHelper$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationAttentionHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper$Signals;->-$$Nest$fgetlistenerHints(Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I
+PLcom/android/server/notification/NotificationAttentionHelper$Signals;-><init>(ZI)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;-><init>(IIIIILcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->getChannelKey(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->getLastNotificationUpdateTimeMs(Lcom/android/server/notification/NotificationRecord;)J
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->isAvalancheActive()Z
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->onNotificationPosted(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->setApplyCooldownPerPackage(Z)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyAvalanche;->setTriggerTimeMs(J)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;-><init>(IIIII)V
+PLcom/android/server/notification/NotificationAttentionHelper$StrategyPerApp;->onNotificationPosted(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fgetmNotificationLight(Lcom/android/server/notification/NotificationAttentionHelper;)Lcom/android/server/lights/LogicalLight;
+PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fgetmStrategy(Lcom/android/server/notification/NotificationAttentionHelper;)Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;
+PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$fputmUserPresent(Lcom/android/server/notification/NotificationAttentionHelper;Z)V
+PLcom/android/server/notification/NotificationAttentionHelper;->-$$Nest$mloadUserSettings(Lcom/android/server/notification/NotificationAttentionHelper;)V
+PLcom/android/server/notification/NotificationAttentionHelper;-><clinit>()V
+PLcom/android/server/notification/NotificationAttentionHelper;-><init>(Landroid/content/Context;Lcom/android/server/lights/LightsManager;Landroid/view/accessibility/AccessibilityManager;Landroid/content/pm/PackageManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationUsageStats;Lcom/android/server/notification/NotificationManagerPrivate;Lcom/android/server/notification/ZenModeHelper;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;)V
+HPLcom/android/server/notification/NotificationAttentionHelper;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)I
+PLcom/android/server/notification/NotificationAttentionHelper;->canShowLightsLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;Z)Z
+PLcom/android/server/notification/NotificationAttentionHelper;->createPolitenessStrategy()Lcom/android/server/notification/NotificationAttentionHelper$PolitenessStrategy;
+PLcom/android/server/notification/NotificationAttentionHelper;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;I)Ljava/lang/String;
+PLcom/android/server/notification/NotificationAttentionHelper;->getManagedProfileId(I)I
+PLcom/android/server/notification/NotificationAttentionHelper;->getPoliteBit(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationAttentionHelper;->getPolitenessState(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationAttentionHelper;->isNotificationForCurrentUser(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)Z
+PLcom/android/server/notification/NotificationAttentionHelper;->isNotificationForWorkProfile(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationAttentionHelper;->isPoliteNotificationFeatureEnabled(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationAttentionHelper;->loadUserSettings()V
+PLcom/android/server/notification/NotificationAttentionHelper;->onSystemReady()V
+PLcom/android/server/notification/NotificationAttentionHelper;->registerBroadcastListeners()V
+PLcom/android/server/notification/NotificationAttentionHelper;->sendAccessibilityEvent(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationAttentionHelper;->shouldMuteNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationAttentionHelper$Signals;)Z
+PLcom/android/server/notification/NotificationBitmapJobService;->getRunAfterMs()J
+PLcom/android/server/notification/NotificationBitmapJobService;->getTimeUntilRemoval(Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;)J
+PLcom/android/server/notification/NotificationBitmapJobService;->scheduleJob(Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationChannelExtractor;-><init>()V
+PLcom/android/server/notification/NotificationChannelExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/NotificationChannelExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->$values()[Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;-><clinit>()V
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->getId()I
+PLcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;->getUpdated(Z)Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;
+PLcom/android/server/notification/NotificationChannelLogger;->getConversationIdHash(Landroid/app/NotificationChannel;)I
+PLcom/android/server/notification/NotificationChannelLogger;->getIdHash(Landroid/app/NotificationChannel;)I
+HPLcom/android/server/notification/NotificationChannelLogger;->getLoggingImportance(Landroid/app/NotificationChannel;)I
+HPLcom/android/server/notification/NotificationChannelLogger;->getLoggingImportance(Landroid/app/NotificationChannel;I)I
+PLcom/android/server/notification/NotificationChannelLogger;->logNotificationChannelModified(Landroid/app/NotificationChannel;ILjava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationChannelLoggerImpl;-><init>()V
+PLcom/android/server/notification/NotificationChannelLoggerImpl;->logNotificationChannel(Lcom/android/server/notification/NotificationChannelLogger$NotificationChannelEvent;Landroid/app/NotificationChannel;ILjava/lang/String;II)V
+PLcom/android/server/notification/NotificationComparator$1;-><init>(Lcom/android/server/notification/NotificationComparator;)V
+PLcom/android/server/notification/NotificationComparator;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/notification/NotificationComparator;->isCallCategory(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isCallStyle(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationComparator;->isSystemMax(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationHistoryJobService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationHistoryJobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/notification/NotificationHistoryJobService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/notification/NotificationHistoryJobService;->$r8$lambda$PfUuCVFQEsG_hup-ySw0DwJnttY(Lcom/android/server/notification/NotificationHistoryJobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/notification/NotificationHistoryJobService;-><clinit>()V
+PLcom/android/server/notification/NotificationHistoryJobService;-><init>()V
+PLcom/android/server/notification/NotificationHistoryJobService;->attachBaseContext(Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationHistoryJobService;->lambda$onStartJob$0(Landroid/app/job/JobParameters;)V
+PLcom/android/server/notification/NotificationHistoryJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/notification/NotificationHistoryJobService;->scheduleJob(Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationHistoryManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/NotificationHistory$HistoricalNotification;)V
+PLcom/android/server/notification/NotificationHistoryManager$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Landroid/os/Handler;)V
+PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->observe()V
+PLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->update(Landroid/net/Uri;I)V
+PLcom/android/server/notification/NotificationHistoryManager;->$r8$lambda$h_Z1DxUiaHb-t4mnDIKe8ap8bgM(Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/NotificationHistory$HistoricalNotification;)V
+PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmContext(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/content/Context;
+PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmLock(Lcom/android/server/notification/NotificationHistoryManager;)Ljava/lang/Object;
+PLcom/android/server/notification/NotificationHistoryManager;->-$$Nest$fgetmUserManager(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/os/UserManager;
+PLcom/android/server/notification/NotificationHistoryManager;-><clinit>()V
+PLcom/android/server/notification/NotificationHistoryManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/notification/NotificationHistoryManager;->addNotification(Landroid/app/NotificationHistory$HistoricalNotification;)V
+PLcom/android/server/notification/NotificationHistoryManager;->cleanupHistoryFiles()V
+PLcom/android/server/notification/NotificationHistoryManager;->getUserHistoryAndInitializeIfNeededLocked(I)Lcom/android/server/notification/NotificationHistoryDatabase;
+PLcom/android/server/notification/NotificationHistoryManager;->lambda$addNotification$0(Landroid/app/NotificationHistory$HistoricalNotification;)V
+PLcom/android/server/notification/NotificationHistoryManager;->onBootPhaseAppsCanStart()V
+PLcom/android/server/notification/NotificationHistoryManager;->onHistoryEnabledChanged(IZ)V
+PLcom/android/server/notification/NotificationHistoryManager;->onUserUnlocked(I)V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;-><init>(Lcom/android/server/notification/NotificationIntrusivenessExtractor;Ljava/lang/String;J)V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->work()V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><clinit>()V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;-><init>()V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/NotificationIntrusivenessExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/notification/NotificationManagerService;ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$$ExternalSyntheticLambda9;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/notification/NotificationManagerService$10;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$12$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/notification/NotificationManagerService$12$$ExternalSyntheticLambda0;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/notification/NotificationManagerService$12$1;-><init>(Lcom/android/server/notification/NotificationManagerService$12;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$12$1;->run()V
+PLcom/android/server/notification/NotificationManagerService$12;->$r8$lambda$9e1Zv0Eb_mTwUeFMV5TGSei42ck(I)Ljava/lang/Boolean;
+PLcom/android/server/notification/NotificationManagerService$12;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$12;->addToListIfNeeded(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;I)V
+HPLcom/android/server/notification/NotificationManagerService$12;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+PLcom/android/server/notification/NotificationManagerService$12;->canManageGlobalZenPolicy(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService$12;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService$12;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$12;->checkPolicyAccess(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$12;->computeZenOrigin(Z)I
+PLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HPLcom/android/server/notification/NotificationManagerService$12;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;I)V
+HPLcom/android/server/notification/NotificationManagerService$12;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoFgService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceDeletingChannelHasNoUserInitiatedJob(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforcePolicyAccess(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$12;->enforceSystemOrSystemUI(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->enforceUserOriginOnlyFromSystem(ZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$12;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$12;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$12;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$12;->getHintsFromListener(Landroid/service/notification/INotificationListener;)I
+PLcom/android/server/notification/NotificationManagerService$12;->getInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;)I
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$12;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy;
+HPLcom/android/server/notification/NotificationManagerService$12;->getZenMode()I
+PLcom/android/server/notification/NotificationManagerService$12;->lambda$canManageGlobalZenPolicy$3(I)Ljava/lang/Boolean;
+PLcom/android/server/notification/NotificationManagerService$12;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$12;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/NotificationManagerService$12;->requestHintsFromListener(Landroid/service/notification/INotificationListener;I)V
+HPLcom/android/server/notification/NotificationManagerService$12;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationManagerService$12;->setNotificationPolicy(Ljava/lang/String;Landroid/app/NotificationManager$Policy;Z)V
+HPLcom/android/server/notification/NotificationManagerService$12;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$13;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$13;->cleanupHistoryFiles()V
+PLcom/android/server/notification/NotificationManagerService$13;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZ)V
+PLcom/android/server/notification/NotificationManagerService$13;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$17$$ExternalSyntheticLambda0;-><init>(II)V
+PLcom/android/server/notification/NotificationManagerService$17$$ExternalSyntheticLambda0;->apply(I)Z
+PLcom/android/server/notification/NotificationManagerService$17;->$r8$lambda$7xcXDOw4oRqp0sGOkb6DeyNjqYA(III)Z
+HPLcom/android/server/notification/NotificationManagerService$17;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;IIIILjava/lang/String;J)V
+PLcom/android/server/notification/NotificationManagerService$17;->lambda$run$0(III)Z
+HPLcom/android/server/notification/NotificationManagerService$17;->run()V
+PLcom/android/server/notification/NotificationManagerService$1;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$4;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$5;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$6;->isProfileUnavailable(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService$7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$7;->onConfigChanged()V
+PLcom/android/server/notification/NotificationManagerService$8;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$9;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$Archive;-><init>(I)V
+PLcom/android/server/notification/NotificationManagerService$Archive;->updateHistoryEnabled(IZ)V
+HPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;J)V
+HPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;ZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+HPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->enqueueNotification()Z
+PLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->-$$Nest$monNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->addApprovedList(Ljava/lang/String;IZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->ensureFilters(Landroid/content/pm/ServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getRequiredPermission()Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->hasUserSet(I)Z
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isVerboseLogEnabled()Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onUserUnlocked(I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->resetDefaultAssistantsIfNecessary()V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->setPackageOrComponentEnabled(Ljava/lang/String;IZZZ)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda2;->run()V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$$ExternalSyntheticLambda9;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$0iWeY82Ox6K-WVRWLCpMEXmz-hA(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$6V9RGqXihQs6v7F21expZx6F_zc(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$OSrMhYvlV-R3E77qIoH5pzE972U(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->$r8$lambda$VmcY63y9deVrzSb6PhmE8Uor26s(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;Z)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->checkType(Landroid/os/IInterface;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->ensureFilters(Landroid/content/pm/ServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getBindFlags()I
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getNotificationListenerFilter(Landroid/util/Pair;)Landroid/service/notification/NotificationListenerFilter;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getRequiredPermission()Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getTypesFromStringList(Ljava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->hasSensitiveContent(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isAppTrustedNotificationListenerService(ILjava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isUidTrusted(I)Z
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyListenerHintsChangedLocked$7(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelGroupChanged$10(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyRankingUpdateLocked$6(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$prepareNotifyPostedLocked$3(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChangedLocked(I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdate(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdateLocked(Ljava/util/List;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->prepareNotifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->readExtraTag(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->shouldReflectToSettings()Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->updateUriPermissionsForActiveNotificationsLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Z)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->writeExtraXmlTags(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$NotificationTrampolineCallback-IA;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->$r8$lambda$PZAL6WwFJkUEKBKj8Ma3rhxMHGQ(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;Ljava/lang/String;ILcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->lambda$postNotification$0(Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->postNotification()Z
+PLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker$$ExternalSyntheticLambda1;->runOrThrow()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->$r8$lambda$Sj35ThxKAaMQVMJuJW7BiRrLEAE(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->$r8$lambda$utPF6Nzeh5_1soUTRhYEbXDXUko(Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;-><init>(Landroid/os/PowerManager$WakeLock;)V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->cancel()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->finish()J
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->getStartTime()J
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->isOngoing()Z
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->lambda$cancel$0()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;->lambda$finish$1()V
+PLcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;->newTracker(Landroid/os/PowerManager$WakeLock;)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
+PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
+PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V
+PLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;Landroid/app/role/RoleManager;Landroid/content/pm/IPackageManager;Landroid/os/Looper;)V
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;->getUidForPackage(Ljava/lang/String;I)I
+HPLcom/android/server/notification/NotificationManagerService$RoleObserver;->init()V
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;->updateTrampolineExemptUidsForUsers([Landroid/os/UserHandle;)V
+PLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable-IA;)V
+HPLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V
+PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V
+HPLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;I)V
+PLcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;-><init>(Landroid/service/notification/StatusBarNotification;)V
+PLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->containsFlag(II)Z
+PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->isInLockDownMode(I)Z
+PLcom/android/server/notification/NotificationManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
+PLcom/android/server/notification/NotificationManagerService$TrimCache;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$WorkerHandler;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
+PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;)V
+PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleOnPackageChanged(ZI[Ljava/lang/String;[I)V
+PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleSendRankingUpdate()V
+PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$KSVXNwYpWbJWXlirKt8w96U7ekE(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
+PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$PUVk3ua6QO93dcxSaJqKaWqdiZ8(Lcom/android/server/notification/NotificationManagerService;ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$bR17TwoBJJHHkkEdLkhQoDbOUCY(Lcom/android/server/notification/NotificationManagerService;Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService;->$r8$lambda$o10mSbBYEzv2ExOhfnJTDZ0y_3k(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmAmi(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmArchive(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$Archive;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmAtm(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/wm/ActivityTaskManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmConditionProviders(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmGroupHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmHistoryManager(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationHistoryManager;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmInterruptionFilter(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmListenerHints(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmListeners(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmMaxPackageEnqueueRate(Lcom/android/server/notification/NotificationManagerService;)F
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmNotificationInstanceIdSequence(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/logging/InstanceIdSequence;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmNotificationRecordLogger(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationRecordLogger;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPackageManagerClient(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPermissionHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/PermissionHelper;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmPolicyFile(Lcom/android/server/notification/NotificationManagerService;)Landroid/util/AtomicFile;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmSettingsObserver(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmShortcutHelper(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ShortcutHelper;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUm(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/UserManager;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUsageStats(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUsageStatsManagerInternal(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/usage/UsageStatsManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fgetmUserProfiles(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$fputmMaxPackageEnqueueRate(Lcom/android/server/notification/NotificationManagerService;F)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$maddDisabledHints(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mapplyAdjustment(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mareNotificationsEnabledForPackageInt(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcancelAllNotificationsByListLocked(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;ZJ)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystem(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->-$$Nest$mcheckCallerIsSystemOrSameApp(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleGroupedNotificationLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleListenerHintsChanged(Lcom/android/server/notification/NotificationManagerService;I)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleRankingReconsideration(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhandleSendRankingUpdate(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mhasAutoGroupSummaryLocked(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$misCallNotification(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$misCritical(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mnotifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mremoveDisabledHints(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateEffectsSuppressorLocked(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateListenerHintsLocked(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mupdateNotificationBubbleFlags(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$mwritePolicyXml(Lcom/android/server/notification/NotificationManagerService;Ljava/io/OutputStream;ZI)V
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$sfgetMY_PID()I
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$sfgetMY_UID()I
+PLcom/android/server/notification/NotificationManagerService;->-$$Nest$smfindNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;-><clinit>()V
+PLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/internal/logging/InstanceIdSequence;)V
+PLcom/android/server/notification/NotificationManagerService;->acquireWakeLockForPost(Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
+PLcom/android/server/notification/NotificationManagerService;->addDisabledHint(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->addDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->allowAssistant(ILandroid/content/ComponentName;)Z
+PLcom/android/server/notification/NotificationManagerService;->applyAdjustment(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+PLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->areNotificationsEnabledForPackageInt(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->calculateHints()I
+PLcom/android/server/notification/NotificationManagerService;->calculateSuppressedEffects()J
+PLcom/android/server/notification/NotificationManagerService;->calculateSuppressedVisualEffects(Landroid/app/NotificationManager$Policy;Landroid/app/NotificationManager$Policy;I)I
+PLcom/android/server/notification/NotificationManagerService;->canUseManagedServices(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;Ljava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;ZJ)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIII)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;III)V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->checkComponentPermission(Ljava/lang/String;IIZ)I
+HPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;ZZ)Z
+PLcom/android/server/notification/NotificationManagerService;->checkRemoteViews(Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;)V
+PLcom/android/server/notification/NotificationManagerService;->checkRestrictedCategories(Landroid/app/Notification;)V
+PLcom/android/server/notification/NotificationManagerService;->clamp(III)I
+PLcom/android/server/notification/NotificationManagerService;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+PLcom/android/server/notification/NotificationManagerService;->createToastRateLimiter()Lcom/android/server/utils/quota/MultiRateLimiter;
+PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZ)V
+HPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZLcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Z)Z
+PLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;IZZ)V
+PLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->findNotificationRecordIndexLocked(Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;IIILandroid/app/ActivityManagerInternal$ServiceNotificationPolicy;Z)V
+PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager;
+PLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper;
+PLcom/android/server/notification/NotificationManagerService;->getGroupInstanceId(Ljava/lang/String;)Lcom/android/internal/logging/InstanceId;
+PLcom/android/server/notification/NotificationManagerService;->getHistoryText(Landroid/app/Notification;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService;->getHistoryTitle(Landroid/app/Notification;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService;->getNotificationChannelRestoreDeleted(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService;->getRealUserId(I)I
+PLcom/android/server/notification/NotificationManagerService;->getStringArrayResource(I)[Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService;->getSuppressors()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationManagerService;->grantUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+PLcom/android/server/notification/NotificationManagerService;->handleListenerHintsChanged(I)V
+PLcom/android/server/notification/NotificationManagerService;->handleOnPackageChanged(ZI[Ljava/lang/String;[I)V
+PLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V
+PLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V
+PLcom/android/server/notification/NotificationManagerService;->handleSendRankingUpdate()V
+PLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Ljava/lang/String;ILjava/util/Set;)Z
+PLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I
+HPLcom/android/server/notification/NotificationManagerService;->init(Lcom/android/server/notification/NotificationManagerService$WorkerHandler;Lcom/android/server/notification/RankingHandler;Landroid/content/pm/IPackageManager;Landroid/content/pm/PackageManager;Lcom/android/server/lights/LightsManager;Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ConditionProviders;Landroid/companion/ICompanionDeviceManager;Lcom/android/server/notification/SnoozeHelper;Lcom/android/server/notification/NotificationUsageStats;Landroid/util/AtomicFile;Landroid/app/ActivityManager;Lcom/android/server/notification/GroupHelper;Landroid/app/IActivityManager;Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/app/usage/UsageStatsManagerInternal;Landroid/app/admin/DevicePolicyManagerInternal;Landroid/app/IUriGrantsManager;Lcom/android/server/uri/UriGrantsManagerInternal;Landroid/app/AppOpsManager;Landroid/os/UserManager;Lcom/android/server/notification/NotificationHistoryManager;Landroid/app/StatsManager;Landroid/telephony/TelephonyManager;Landroid/app/ActivityManagerInternal;Lcom/android/server/utils/quota/MultiRateLimiter;Lcom/android/server/notification/PermissionHelper;Landroid/app/usage/UsageStatsManagerInternal;Landroid/telecom/TelecomManager;Lcom/android/server/notification/NotificationChannelLogger;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Landroid/permission/PermissionManager;Landroid/os/PowerManager;Lcom/android/server/notification/NotificationManagerService$PostNotificationTrackerFactory;)V
+PLcom/android/server/notification/NotificationManagerService;->isCallNotification(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(II)Z
+PLcom/android/server/notification/NotificationManagerService;->isCallerSameApp(Ljava/lang/String;II)Z
+HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z
+HPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrSystemUi()Z
+PLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
+PLcom/android/server/notification/NotificationManagerService;->isCritical(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->isDNDMigrationDone(I)Z
+HPLcom/android/server/notification/NotificationManagerService;->isInLockDownMode(I)Z
+HPLcom/android/server/notification/NotificationManagerService;->isInteractionVisibleToListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->isNASMigrationDone(I)Z
+PLcom/android/server/notification/NotificationManagerService;->isNotificationShownInternal(Ljava/lang/String;Ljava/lang/String;II)Z
+PLcom/android/server/notification/NotificationManagerService;->isPackagePausedOrSuspended(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->isRecordBlockedLocked(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->isServiceTokenValid(Landroid/os/IInterface;)Z
+HPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
+HPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;ILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->lambda$acquireWakeLockForPost$8(Ljava/lang/String;I)Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;
+HPLcom/android/server/notification/NotificationManagerService;->lambda$notifyListenersPostedAndLogLocked$13(Ljava/util/List;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService;->lambda$onUserUnlocked$4(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/notification/NotificationManagerService;->lambda$reportForegroundServiceUpdate$7(ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V
+HPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->maybeRegisterMessageSent(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->maybeReportForegroundServiceUpdate(Lcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->maybeShowInitialReviewPermissionsNotification()V
+PLcom/android/server/notification/NotificationManagerService;->migrateDefaultNAS()V
+HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;IZ)Z
+PLcom/android/server/notification/NotificationManagerService;->notifyListenersPostedAndLogLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationManagerService$PostNotificationTracker;Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V
+HPLcom/android/server/notification/NotificationManagerService;->onBootPhase(ILandroid/os/Looper;)V
+HPLcom/android/server/notification/NotificationManagerService;->onStart()V
+PLcom/android/server/notification/NotificationManagerService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;ZI)V
+PLcom/android/server/notification/NotificationManagerService;->registerDeviceConfigChange()V
+PLcom/android/server/notification/NotificationManagerService;->registerNotificationPreferencesPullers()V
+PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->removeRemoteView(Ljava/lang/String;Ljava/lang/String;ILandroid/widget/RemoteViews;)Z
+PLcom/android/server/notification/NotificationManagerService;->reportForegroundServiceUpdate(ZLandroid/app/Notification;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService;->resetDefaultDndIfNecessary()V
+HPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I
+PLcom/android/server/notification/NotificationManagerService;->revokeUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService;->scheduleListenerHintsChanged(I)V
+PLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Landroid/content/Intent;)V
+PLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->setDefaultAssistantForUser(I)V
+PLcom/android/server/notification/NotificationManagerService;->setNotificationAssistantAccessGrantedForUserInternal(Landroid/content/ComponentName;IZZ)V
+PLcom/android/server/notification/NotificationManagerService;->updateEffectsSuppressorLocked()V
+PLcom/android/server/notification/NotificationManagerService;->updateListenerHintsLocked()V
+PLcom/android/server/notification/NotificationManagerService;->updateNotificationBubbleFlags(Lcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;I)V
+HPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;IZ)V
+HPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;ZI)V
+PLcom/android/server/notification/NotificationManagerService;->writeSecureNotificationsPolicy(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/NotificationRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/notification/NotificationRecord;->$r8$lambda$m3xVdeXccEasPWsrg0D9LxsE8QE(Lcom/android/server/notification/NotificationRecord;Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationRecord;-><clinit>()V
+HPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V
+PLcom/android/server/notification/NotificationRecord;->addAdjustment(Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V
+PLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationRecord;->calculateGrantableUris()V
+HPLcom/android/server/notification/NotificationRecord;->calculateImportance()V
+HPLcom/android/server/notification/NotificationRecord;->calculateInitialImportance()I
+PLcom/android/server/notification/NotificationRecord;->calculateLights()Lcom/android/server/notification/NotificationRecord$Light;
+PLcom/android/server/notification/NotificationRecord;->calculateRankingTimeMs(J)J
+PLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;
+PLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V
+PLcom/android/server/notification/NotificationRecord;->calculateVibration()Landroid/os/VibrationEffect;
+HPLcom/android/server/notification/NotificationRecord;->canBubble()Z
+HPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z
+PLcom/android/server/notification/NotificationRecord;->getAdjustmentIssuer()Ljava/lang/String;
+PLcom/android/server/notification/NotificationRecord;->getAssistantImportance()I
+PLcom/android/server/notification/NotificationRecord;->getAudioAttributes()Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I
+PLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationRecord;->getContactAffinity()F
+PLcom/android/server/notification/NotificationRecord;->getCriticality()I
+PLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I
+HPLcom/android/server/notification/NotificationRecord;->getFlags()I
+PLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I
+PLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String;
+PLcom/android/server/notification/NotificationRecord;->getGrantableUris()Landroid/util/ArraySet;
+PLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationRecord;->getImportance()I
+HPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
+PLcom/android/server/notification/NotificationRecord;->getImportanceExplanationCode()I
+PLcom/android/server/notification/NotificationRecord;->getInitialImportance()I
+PLcom/android/server/notification/NotificationRecord;->getInitialImportanceExplanationCode()I
+PLcom/android/server/notification/NotificationRecord;->getInterruptionMs(J)I
+HPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;
+PLcom/android/server/notification/NotificationRecord;->getKeyguardManager()Landroid/app/KeyguardManager;
+PLcom/android/server/notification/NotificationRecord;->getLastAudiblyAlertedMs()J
+PLcom/android/server/notification/NotificationRecord;->getLastIntrusive()J
+PLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I
+PLcom/android/server/notification/NotificationRecord;->getLogMaker()Landroid/metrics/LogMaker;
+HPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;
+HPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;
+HPLcom/android/server/notification/NotificationRecord;->getNotificationType()I
+PLcom/android/server/notification/NotificationRecord;->getPackagePriority()I
+HPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I
+PLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationRecord;->getProposedImportance()I
+HPLcom/android/server/notification/NotificationRecord;->getRankingScore()F
+HPLcom/android/server/notification/NotificationRecord;->getSbn()Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationRecord;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/notification/NotificationRecord;->getSmartReplies()Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationRecord;->getSound()Landroid/net/Uri;
+HPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I
+PLcom/android/server/notification/NotificationRecord;->getSystemGeneratedSmartActions()Ljava/util/ArrayList;
+PLcom/android/server/notification/NotificationRecord;->getUid()I
+HPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;
+HPLcom/android/server/notification/NotificationRecord;->getUserId()I
+PLcom/android/server/notification/NotificationRecord;->getUserSentiment()I
+PLcom/android/server/notification/NotificationRecord;->getVibration()Landroid/os/VibrationEffect;
+PLcom/android/server/notification/NotificationRecord;->getVibrationForChannel(Landroid/app/NotificationChannel;Lcom/android/server/notification/VibratorHelper;Z)Landroid/os/VibrationEffect;
+PLcom/android/server/notification/NotificationRecord;->hasRecordedInterruption()Z
+PLcom/android/server/notification/NotificationRecord;->hasSensitiveContent()Z
+PLcom/android/server/notification/NotificationRecord;->hasUndecoratedRemoteView()Z
+PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationRecord;->isConversation()Z
+PLcom/android/server/notification/NotificationRecord;->isForegroundService()Z
+PLcom/android/server/notification/NotificationRecord;->isHidden()Z
+PLcom/android/server/notification/NotificationRecord;->isIntercepted()Z
+PLcom/android/server/notification/NotificationRecord;->isInterruptive()Z
+PLcom/android/server/notification/NotificationRecord;->isLocked()Z
+PLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z
+PLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z
+HPLcom/android/server/notification/NotificationRecord;->isTextChanged()Z
+PLcom/android/server/notification/NotificationRecord;->lambda$calculateGrantableUris$0(Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationRecord;->setAllowBubble(Z)V
+PLcom/android/server/notification/NotificationRecord;->setAudiblyAlerted(Z)V
+PLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V
+PLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V
+PLcom/android/server/notification/NotificationRecord;->setFlagBubbleRemoved(Z)V
+PLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationRecord;->setHasSentValidMsg(Z)V
+PLcom/android/server/notification/NotificationRecord;->setHidden(Z)V
+PLcom/android/server/notification/NotificationRecord;->setImportanceFixed(Z)V
+PLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z
+PLcom/android/server/notification/NotificationRecord;->setInterruptive(Z)V
+PLcom/android/server/notification/NotificationRecord;->setIsAppImportanceLocked(Z)V
+PLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V
+PLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V
+PLcom/android/server/notification/NotificationRecord;->setPkgAllowedAsConvo(Z)V
+PLcom/android/server/notification/NotificationRecord;->setPostSilently(Z)V
+PLcom/android/server/notification/NotificationRecord;->setRecentlyIntrusive(Z)V
+PLcom/android/server/notification/NotificationRecord;->setRecordedInterruption(Z)V
+PLcom/android/server/notification/NotificationRecord;->setShortcutInfo(Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V
+PLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V
+PLcom/android/server/notification/NotificationRecord;->setTextChanged(Z)V
+PLcom/android/server/notification/NotificationRecord;->shouldPostSilently()Z
+PLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
+PLcom/android/server/notification/NotificationRecord;->userDemotedAppFromConvoSpace(Z)V
+PLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;ZZ)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;-><init>(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getAssistantHash()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getChannelIdHash()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getGroupIdHash()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getInstanceId()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNotificationIdHash()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople(Landroid/os/Bundle;)I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle()I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle(Landroid/os/Bundle;)I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLogReported(I)Z
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationReported;-><init>(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;IILcom/android/internal/logging/InstanceId;)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->$values()[Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;-><clinit>()V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->fromRecordPair(Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;)Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;->getId()I
+PLcom/android/server/notification/NotificationRecordLogger;->getAgeInMinutes(JJ)I
+PLcom/android/server/notification/NotificationRecordLogger;->getFsiState(ZZLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvent;)I
+PLcom/android/server/notification/NotificationRecordLogger;->getLoggingImportance(Lcom/android/server/notification/NotificationRecord;)I
+PLcom/android/server/notification/NotificationRecordLogger;->isForegroundService(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationRecordLogger;->isNonDismissible(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationRecordLogger;->prepareToLogNotificationPosted(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;IILcom/android/internal/logging/InstanceId;)Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;
+PLcom/android/server/notification/NotificationRecordLoggerImpl;-><init>()V
+PLcom/android/server/notification/NotificationRecordLoggerImpl;->logNotificationPosted(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+HPLcom/android/server/notification/NotificationRecordLoggerImpl;->writeNotificationReportedAtom(Lcom/android/server/notification/NotificationRecordLogger$NotificationReported;)V
+PLcom/android/server/notification/NotificationUsageStats$1;-><init>(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V
+HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><clinit>()V
+HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
+PLcom/android/server/notification/NotificationUsageStats;-><clinit>()V
+PLcom/android/server/notification/NotificationUsageStats;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByAppAndAccepted(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V
+PLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V
+PLcom/android/server/notification/PermissionHelper;-><init>(Landroid/content/Context;Landroid/content/pm/IPackageManager;Landroid/permission/IPermissionManager;)V
+HPLcom/android/server/notification/PermissionHelper;->hasPermission(I)Z
+HPLcom/android/server/notification/PermissionHelper;->isPermissionFixed(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PermissionHelper;->isPermissionUserSet(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PreferencesHelper$Delegate;-><init>(Ljava/lang/String;IZ)V
+HPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V
+PLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>(Lcom/android/server/notification/PreferencesHelper$PackagePreferences-IA;)V
+PLcom/android/server/notification/PreferencesHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/PermissionHelper;Landroid/permission/PermissionManager;Lcom/android/server/notification/NotificationChannelLogger;Landroid/app/AppOpsManager;Lcom/android/server/notification/ManagedServices$UserProfiles;Z)V
+PLcom/android/server/notification/PreferencesHelper;->badgingEnabled(Landroid/os/UserHandle;)Z
+PLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z
+PLcom/android/server/notification/PreferencesHelper;->canShowBadge(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PreferencesHelper;->canShowNotificationsOnLockscreen(I)Z
+PLcom/android/server/notification/PreferencesHelper;->canShowPrivateNotificationsOnLockScreen(I)Z
+PLcom/android/server/notification/PreferencesHelper;->channelIsLiveLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Landroid/app/NotificationChannel;)Z
+HPLcom/android/server/notification/PreferencesHelper;->createDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZIZ)Z
+HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZIZ)V
+HPLcom/android/server/notification/PreferencesHelper;->deleteDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+PLcom/android/server/notification/PreferencesHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;IZ)Z
+PLcom/android/server/notification/PreferencesHelper;->getBubblePreference(Ljava/lang/String;I)I
+HPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/PreferencesHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZI)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+PLcom/android/server/notification/PreferencesHelper;->hasSentValidMsg(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PreferencesHelper;->hasUserDemotedInvalidMsgApp(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/PreferencesHelper;->isDeletionOk(Landroid/app/NotificationChannel;)Z
+PLcom/android/server/notification/PreferencesHelper;->isGroupBlocked(Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/notification/PreferencesHelper;->isInInvalidMsgState(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PreferencesHelper;->isMediaNotificationFilteringEnabled()Z
+HPLcom/android/server/notification/PreferencesHelper;->isShortcutOk(Landroid/app/NotificationChannel;)Z
+PLcom/android/server/notification/PreferencesHelper;->migrateNotificationPermissions(Ljava/util/List;)V
+PLcom/android/server/notification/PreferencesHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)Z
+HPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/notification/PreferencesHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
+HPLcom/android/server/notification/PreferencesHelper;->restoreChannel(Lcom/android/modules/utils/TypedXmlPullParser;ZLcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
+HPLcom/android/server/notification/PreferencesHelper;->restorePackage(Lcom/android/modules/utils/TypedXmlPullParser;ZILjava/lang/String;ZZ)V
+HPLcom/android/server/notification/PreferencesHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+PLcom/android/server/notification/PreferencesHelper;->syncChannelsBypassingDnd()V
+PLcom/android/server/notification/PreferencesHelper;->unrestoredPackageKey(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/notification/PreferencesHelper;->updateBadgingEnabled()V
+PLcom/android/server/notification/PreferencesHelper;->updateBubblesEnabled()V
+PLcom/android/server/notification/PreferencesHelper;->updateConfig()V
+PLcom/android/server/notification/PreferencesHelper;->updateCurrentUserHasChannelsBypassingDnd(IZ)V
+PLcom/android/server/notification/PreferencesHelper;->updateDefaultApps(ILandroid/util/ArraySet;Landroid/util/ArraySet;)V
+HPLcom/android/server/notification/PreferencesHelper;->updateFixedImportance(Ljava/util/List;)V
+PLcom/android/server/notification/PreferencesHelper;->updateLockScreenPrivateNotifications()V
+PLcom/android/server/notification/PreferencesHelper;->updateLockScreenShowNotifications()V
+PLcom/android/server/notification/PreferencesHelper;->updateMediaNotificationFilteringEnabled()V
+HPLcom/android/server/notification/PreferencesHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+PLcom/android/server/notification/PriorityExtractor;-><init>()V
+PLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/PriorityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/notification/RankingHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/RankingConfig;Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/NotificationUsageStats;[Ljava/lang/String;)V
+PLcom/android/server/notification/RankingHelper;->extractSignals(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/RankingHelper;->findExtractor(Ljava/lang/Class;)Lcom/android/server/notification/NotificationSignalExtractor;
+PLcom/android/server/notification/RankingHelper;->indexOf(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V
+PLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V
+PLcom/android/server/notification/RankingReconsideration;->getDelay(Ljava/util/concurrent/TimeUnit;)J
+PLcom/android/server/notification/RankingReconsideration;->getKey()Ljava/lang/String;
+PLcom/android/server/notification/RankingReconsideration;->run()V
+PLcom/android/server/notification/RateEstimator;-><init>()V
+PLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
+PLcom/android/server/notification/RateEstimator;->update(J)V
+PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;-><clinit>()V
+PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;-><init>()V
+PLcom/android/server/notification/ReviewNotificationPermissionsReceiver;->getFilter()Landroid/content/IntentFilter;
+PLcom/android/server/notification/ScheduleConditionProvider$1;-><init>(Lcom/android/server/notification/ScheduleConditionProvider;)V
+PLcom/android/server/notification/ScheduleConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->-$$Nest$mevaluateSubscriptions(Lcom/android/server/notification/ScheduleConditionProvider;)V
+PLcom/android/server/notification/ScheduleConditionProvider;-><clinit>()V
+PLcom/android/server/notification/ScheduleConditionProvider;-><init>()V
+PLcom/android/server/notification/ScheduleConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
+PLcom/android/server/notification/ScheduleConditionProvider;->attachBase(Landroid/content/Context;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->conditionSnoozed(Landroid/net/Uri;)Z
+PLcom/android/server/notification/ScheduleConditionProvider;->createCondition(Landroid/net/Uri;ILjava/lang/String;)Landroid/service/notification/Condition;
+PLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptionLocked(Landroid/net/Uri;Landroid/service/notification/ScheduleCalendar;JJ)Landroid/service/notification/Condition;
+HPLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptions()V
+PLcom/android/server/notification/ScheduleConditionProvider;->getComponent()Landroid/content/ComponentName;
+PLcom/android/server/notification/ScheduleConditionProvider;->getNextAlarm()J
+PLcom/android/server/notification/ScheduleConditionProvider;->getPendingIntent(J)Landroid/app/PendingIntent;
+PLcom/android/server/notification/ScheduleConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/ScheduleConditionProvider;->onBootComplete()V
+PLcom/android/server/notification/ScheduleConditionProvider;->onConnected()V
+PLcom/android/server/notification/ScheduleConditionProvider;->onSubscribe(Landroid/net/Uri;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->readSnoozed()V
+PLcom/android/server/notification/ScheduleConditionProvider;->setRegistered(Z)V
+PLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V
+PLcom/android/server/notification/ShortcutHelper$1;-><init>(Lcom/android/server/notification/ShortcutHelper;)V
+PLcom/android/server/notification/ShortcutHelper;-><clinit>()V
+PLcom/android/server/notification/ShortcutHelper;-><init>(Landroid/content/pm/LauncherApps;Lcom/android/server/notification/ShortcutHelper$ShortcutListener;Landroid/content/pm/ShortcutServiceInternal;Landroid/os/UserManager;)V
+PLcom/android/server/notification/ShortcutHelper;->getValidShortcutInfo(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/notification/ShortcutHelper;->maybeListenForShortcutChangesForBubbles(Lcom/android/server/notification/NotificationRecord;ZLandroid/os/Handler;)V
+PLcom/android/server/notification/SmallHash;->hash(I)I
+PLcom/android/server/notification/SmallHash;->hash(Ljava/lang/String;)I
+PLcom/android/server/notification/SnoozeHelper$$ExternalSyntheticLambda3;-><init>(JLcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/SnoozeHelper$$ExternalSyntheticLambda4;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/SnoozeHelper$1;-><init>(Lcom/android/server/notification/SnoozeHelper;)V
+PLcom/android/server/notification/SnoozeHelper;-><clinit>()V
+PLcom/android/server/notification/SnoozeHelper;-><init>(Landroid/content/Context;Lcom/android/server/notification/SnoozeHelper$Callback;Lcom/android/server/notification/ManagedServices$UserProfiles;)V
+PLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z
+HPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/notification/SnoozeHelper;->getSnoozeContextForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/SnoozeHelper;->getSnoozeTimeForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Long;
+HPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
+PLcom/android/server/notification/SnoozeHelper;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/notification/SnoozeHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;J)V
+PLcom/android/server/notification/SnoozeHelper;->scheduleRepostsForPersistedNotifications(J)V
+HPLcom/android/server/notification/SnoozeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/notification/SnoozeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/util/ArrayMap;Ljava/lang/String;Lcom/android/server/notification/SnoozeHelper$Inserter;)V
+PLcom/android/server/notification/SystemConditionProviderService;-><init>()V
+PLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String;
+HPLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople$1;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V
+PLcom/android/server/notification/ValidateNotificationPeople;-><clinit>()V
+PLcom/android/server/notification/ValidateNotificationPeople;-><init>()V
+PLcom/android/server/notification/ValidateNotificationPeople;->combineLists([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/ValidateNotificationPeople;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/List;[FLandroid/util/ArraySet;)Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
+PLcom/android/server/notification/VibratorHelper;-><clinit>()V
+HPLcom/android/server/notification/VibratorHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/VibratorHelper;->getFloatArray(Landroid/content/res/Resources;I)[F
+PLcom/android/server/notification/VibratorHelper;->getLongArray(Landroid/content/res/Resources;II[J)[J
+PLcom/android/server/notification/VisibilityExtractor;-><init>()V
+PLcom/android/server/notification/VisibilityExtractor;->adminAllowsKeyguardFeature(II)Z
+PLcom/android/server/notification/VisibilityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/VisibilityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ZenLog;-><clinit>()V
+HPLcom/android/server/notification/ZenLog;->append(ILjava/lang/String;)V
+PLcom/android/server/notification/ZenLog;->componentListToString(Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->componentToString(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->hintsToString(I)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;I)V
+PLcom/android/server/notification/ZenLog;->traceDisableEffects(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+PLcom/android/server/notification/ZenLog;->traceEffectsSuppressorChanged(Ljava/util/List;Ljava/util/List;J)V
+PLcom/android/server/notification/ZenLog;->traceListenerHintsChanged(III)V
+PLcom/android/server/notification/ZenLog;->traceSetNotificationPolicy(Ljava/lang/String;ILandroid/app/NotificationManager$Policy;)V
+HPLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V
+PLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V
+PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String;
+PLcom/android/server/notification/ZenModeConditions;-><clinit>()V
+PLcom/android/server/notification/ZenModeConditions;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V
+HPLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Z)V
+HPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Landroid/content/ComponentName;Z)V
+PLcom/android/server/notification/ZenModeConditions;->onBootComplete()V
+PLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/ZenModeConditions;->onUserSwitched()V
+PLcom/android/server/notification/ZenModeConditions;->updateSnoozing(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
+HPLcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;-><init>(ILandroid/service/notification/ZenModeConfig;Landroid/app/NotificationManager$Policy;)V
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->-$$Nest$minit(Lcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->-$$Nest$mshouldLogChanges(Lcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;)Z
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;-><init>()V
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->hasActiveRuleCountDiff()Z
+HPLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->init(Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->numActiveRulesInConfig(Landroid/service/notification/ZenModeConfig;)I
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->shouldLogChanges()Z
+PLcom/android/server/notification/ZenModeEventLogger$ZenStateChanges;->zenModeFlipped()Z
+PLcom/android/server/notification/ZenModeEventLogger;-><init>(Landroid/content/pm/PackageManager;)V
+PLcom/android/server/notification/ZenModeEventLogger;->maybeLogZenChange(Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;Lcom/android/server/notification/ZenModeEventLogger$ZenModeInfo;II)V
+PLcom/android/server/notification/ZenModeExtractor;-><clinit>()V
+PLcom/android/server/notification/ZenModeExtractor;-><init>()V
+PLcom/android/server/notification/ZenModeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
+PLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
+PLcom/android/server/notification/ZenModeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
+PLcom/android/server/notification/ZenModeExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>()V
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers-IA;)V
+PLcom/android/server/notification/ZenModeFiltering;-><clinit>()V
+PLcom/android/server/notification/ZenModeFiltering;-><init>(Landroid/content/Context;)V
+PLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/app/NotificationManager$Policy;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeHelper$Callback;-><init>()V
+PLcom/android/server/notification/ZenModeHelper$H;->-$$Nest$mpostMetricsTimer(Lcom/android/server/notification/ZenModeHelper$H;)V
+PLcom/android/server/notification/ZenModeHelper$H;->-$$Nest$mpostUpdateRingerAndAudio(Lcom/android/server/notification/ZenModeHelper$H;Z)V
+PLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;)V
+PLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;Lcom/android/server/notification/ZenModeHelper$H-IA;)V
+PLcom/android/server/notification/ZenModeHelper$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/notification/ZenModeHelper$H;->postMetricsTimer()V
+PLcom/android/server/notification/ZenModeHelper$H;->postUpdateRingerAndAudio(Z)V
+PLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper$Metrics-IA;)V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->emit()V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->emitDndType()V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->emitRules()V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->emitZenMode()V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->onConfigChanged()V
+PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->getRingerModeAffectedStreams(I)I
+PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
+PLcom/android/server/notification/ZenModeHelper$SettingsObserver;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Handler;)V
+PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->observe()V
+PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->update(Landroid/net/Uri;)V
+PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmConfigLock(Lcom/android/server/notification/ZenModeHelper;)Ljava/lang/Object;
+PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmContext(Lcom/android/server/notification/ZenModeHelper;)Landroid/content/Context;
+PLcom/android/server/notification/ZenModeHelper;->-$$Nest$fgetmHandler(Lcom/android/server/notification/ZenModeHelper;)Lcom/android/server/notification/ZenModeHelper$H;
+PLcom/android/server/notification/ZenModeHelper;->-$$Nest$msetPreviousRingerModeSetting(Lcom/android/server/notification/ZenModeHelper;Ljava/lang/Integer;)V
+PLcom/android/server/notification/ZenModeHelper;->-$$Nest$mupdateRingerAndAudio(Lcom/android/server/notification/ZenModeHelper;Z)V
+PLcom/android/server/notification/ZenModeHelper;-><clinit>()V
+HPLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/time/Clock;Lcom/android/server/notification/ConditionProviders;Lcom/android/internal/config/sysui/SystemUiSystemPropertiesFlags$FlagResolver;Lcom/android/server/notification/ZenModeEventLogger;)V
+PLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V
+PLcom/android/server/notification/ZenModeHelper;->applyConsolidatedDeviceEffects(I)V
+HPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V
+PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZI)V
+PLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZII)V
+PLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V
+PLcom/android/server/notification/ZenModeHelper;->computeZenMode()I
+PLcom/android/server/notification/ZenModeHelper;->deleteRulesWithoutOwner(Landroid/util/ArrayMap;)V
+PLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V
+HPLcom/android/server/notification/ZenModeHelper;->evaluateZenModeLocked(ILjava/lang/String;Z)V
+PLcom/android/server/notification/ZenModeHelper;->findMatchingRules(Landroid/service/notification/ZenModeConfig;Landroid/net/Uri;Landroid/service/notification/Condition;)Ljava/util/List;
+PLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy()Landroid/app/NotificationManager$Policy;
+PLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy;
+PLcom/android/server/notification/ZenModeHelper;->getSuppressedEffects()J
+PLcom/android/server/notification/ZenModeHelper;->getZenMode()I
+PLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I
+PLcom/android/server/notification/ZenModeHelper;->initZenMode()V
+PLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V
+PLcom/android/server/notification/ZenModeHelper;->onSystemReady()V
+PLcom/android/server/notification/ZenModeHelper;->onUserSwitched(I)V
+PLcom/android/server/notification/ZenModeHelper;->readDefaultConfig(Landroid/content/res/Resources;)Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/ZenModeHelper;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;ZI)V
+PLcom/android/server/notification/ZenModeHelper;->requirePublicOrigin(Ljava/lang/String;I)V
+PLcom/android/server/notification/ZenModeHelper;->ruleMatches(Landroid/net/Uri;Landroid/service/notification/Condition;Landroid/service/notification/ZenModeConfig$ZenRule;)Z
+PLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleState(Landroid/net/Uri;Landroid/service/notification/Condition;II)V
+PLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleStateLocked(Landroid/service/notification/ZenModeConfig;Ljava/util/List;Landroid/service/notification/Condition;II)V
+HPLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;ILjava/lang/String;Landroid/content/ComponentName;ZI)Z
+PLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;ILjava/lang/String;I)Z
+PLcom/android/server/notification/ZenModeHelper;->setDeviceEffectsApplier(Landroid/service/notification/DeviceEffectsApplier;)V
+PLcom/android/server/notification/ZenModeHelper;->setNotificationPolicy(Landroid/app/NotificationManager$Policy;II)V
+PLcom/android/server/notification/ZenModeHelper;->setPreviousRingerModeSetting(Ljava/lang/Integer;)V
+PLcom/android/server/notification/ZenModeHelper;->setPriorityOnlyDndExemptPackages([Ljava/lang/String;)V
+PLcom/android/server/notification/ZenModeHelper;->setSuppressedEffects(J)V
+PLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V
+PLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeHelper;->showZenUpgradeNotification(I)V
+HPLcom/android/server/notification/ZenModeHelper;->updateAndApplyConsolidatedPolicyAndDeviceEffects(ILjava/lang/String;)V
+HPLcom/android/server/notification/ZenModeHelper;->updateConfigAndZenModeLocked(Landroid/service/notification/ZenModeConfig;ILjava/lang/String;ZI)V
+PLcom/android/server/notification/ZenModeHelper;->updateDefaultAutomaticRuleNames()V
+PLcom/android/server/notification/ZenModeHelper;->updateDefaultAutomaticRulePolicies()V
+PLcom/android/server/notification/ZenModeHelper;->updateRingerAndAudio(Z)V
+PLcom/android/server/notification/ZenModeHelper;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;ZLjava/lang/Integer;I)V
+PLcom/android/server/oemlock/OemLock;-><init>()V
+PLcom/android/server/oemlock/OemLockService$1;-><init>(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/oemlock/OemLockService$2;-><init>(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;Lcom/android/server/oemlock/OemLock;)V
+PLcom/android/server/oemlock/OemLockService;->getOemLock(Landroid/content/Context;)Lcom/android/server/oemlock/OemLock;
+PLcom/android/server/oemlock/OemLockService;->onStart()V
+PLcom/android/server/oemlock/PersistentDataBlockLock;-><init>(Landroid/content/Context;)V
+PLcom/android/server/oemlock/VendorLockAidl;->getOemLockHalService()Landroid/hardware/oemlock/IOemLock;
+PLcom/android/server/oemlock/VendorLockHidl;->getOemLockHalService()Landroid/hardware/oemlock/V1_0/IOemLock;
+PLcom/android/server/om/IdmapDaemon$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/om/IdmapDaemon$$ExternalSyntheticLambda0;->binderDied()V
+PLcom/android/server/om/IdmapDaemon$Connection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/om/IdmapDaemon$Connection;)V
+PLcom/android/server/om/IdmapDaemon$Connection$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/om/IdmapDaemon$Connection;->$r8$lambda$_PxKgIA4Eqf9yi0zZSqVFth5eU0(Lcom/android/server/om/IdmapDaemon$Connection;)V
+HPLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)V
+PLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;Lcom/android/server/om/IdmapDaemon$Connection-IA;)V
+HPLcom/android/server/om/IdmapDaemon$Connection;->close()V
+PLcom/android/server/om/IdmapDaemon$Connection;->getIdmap2()Landroid/os/IIdmap2;
+PLcom/android/server/om/IdmapDaemon$Connection;->lambda$close$0()V
+PLcom/android/server/om/IdmapDaemon;->$r8$lambda$pEh2sDZUhfJliWY8-qy5fFqPH_A()V
+PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmIdmapToken(Lcom/android/server/om/IdmapDaemon;)Ljava/lang/Object;
+PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmOpenedCount(Lcom/android/server/om/IdmapDaemon;)Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/om/IdmapDaemon;->-$$Nest$fgetmService(Lcom/android/server/om/IdmapDaemon;)Landroid/os/IIdmap2;
+PLcom/android/server/om/IdmapDaemon;->-$$Nest$fputmService(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)V
+PLcom/android/server/om/IdmapDaemon;->-$$Nest$smstopIdmapService()V
+PLcom/android/server/om/IdmapDaemon;-><init>()V
+HPLcom/android/server/om/IdmapDaemon;->connect()Lcom/android/server/om/IdmapDaemon$Connection;
+PLcom/android/server/om/IdmapDaemon;->createIdmap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZI)Ljava/lang/String;
+PLcom/android/server/om/IdmapDaemon;->getFabricatedOverlayInfos()Ljava/util/List;
+PLcom/android/server/om/IdmapDaemon;->getIdmapService()Landroid/os/IBinder;
+PLcom/android/server/om/IdmapDaemon;->getInstance()Lcom/android/server/om/IdmapDaemon;
+PLcom/android/server/om/IdmapDaemon;->idmapExists(Ljava/lang/String;I)Z
+PLcom/android/server/om/IdmapDaemon;->lambda$getIdmapService$0()V
+PLcom/android/server/om/IdmapDaemon;->stopIdmapService()V
+HPLcom/android/server/om/IdmapDaemon;->verifyIdmap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZI)Z
+PLcom/android/server/om/IdmapManager;-><clinit>()V
+PLcom/android/server/om/IdmapManager;-><init>(Lcom/android/server/om/IdmapDaemon;Lcom/android/server/om/PackageManagerHelper;)V
+HPLcom/android/server/om/IdmapManager;->calculateFulfilledPolicies(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;I)I
+HPLcom/android/server/om/IdmapManager;->createIdmap(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/om/IdmapManager;->enforceOverlayable(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/om/IdmapManager;->getFabricatedOverlayInfos()Ljava/util/List;
+PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/IdmapManager;->matchesActorSignature(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;I)Z
+PLcom/android/server/om/OverlayActorEnforcer$ActorState;->$values()[Lcom/android/server/om/OverlayActorEnforcer$ActorState;
+PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><clinit>()V
+PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayActorEnforcer;-><init>(Lcom/android/server/om/PackageManagerHelper;)V
+HPLcom/android/server/om/OverlayActorEnforcer;->getPackageNameForActor(Ljava/lang/String;Ljava/util/Map;)Landroid/util/Pair;
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/om/OverlayManagerService;Ljava/util/List;ILandroid/util/ArraySet;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda2;-><init>(Landroid/util/SparseArray;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda2;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda3;-><init>(ILandroid/app/ActivityManagerInternal;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda3;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerService$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/om/OverlayManagerService$1;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfoByIdentifier(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I
+PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+PLcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$OverlayManagerPackageMonitor-IA;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;I)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;->-$$Nest$fgetmInstalledUsers(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;)Ljava/util/Set;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;->-$$Nest$fgetmPackageState(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;-><init>(Lcom/android/server/pm/pkg/PackageState;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers;-><init>(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl$PackageStateUsers-IA;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->$r8$lambda$OwbHhRYnQy2yMeQN_5EmmuVHt4k(Lcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;ILcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->addPackageUser(Lcom/android/server/pm/pkg/PackageState;I)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getConfigSignaturePackage()Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getNamedActors()Ljava/util/Map;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getOverlayableForTarget(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/om/OverlayableInfo;
+HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->getPackageStateForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageState;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->initializeForUser(I)Landroid/util/ArrayMap;
+HPLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->lambda$initializeForUser$0(ILcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelperImpl;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+PLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$UserReceiver-IA;)V
+PLcom/android/server/om/OverlayManagerService;->$r8$lambda$GzMpaQrsjSzVXIS6Ewd4ZVcwe0E(Landroid/util/SparseArray;Landroid/content/pm/UserPackage;)V
+PLcom/android/server/om/OverlayManagerService;->$r8$lambda$VKUwGCBEaC1c_ubMSsuE2Rf3650(ILandroid/app/ActivityManagerInternal;Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService;->$r8$lambda$gmoodzoVnIfdn8kZYi3Op37no2g(Lcom/android/server/om/OverlayManagerService;Ljava/util/List;ILandroid/util/ArraySet;)V
+PLcom/android/server/om/OverlayManagerService;->$r8$lambda$rFdAtDXTB46MBaeMgzs6tfJWKtk(Ljava/lang/String;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerService;->-$$Nest$fgetmImpl(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl;
+PLcom/android/server/om/OverlayManagerService;->-$$Nest$fgetmLock(Lcom/android/server/om/OverlayManagerService;)Ljava/lang/Object;
+HPLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/om/OverlayManagerService;->broadcastActionOverlayChanged(Ljava/util/Set;I)V
+PLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()[Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerService;->groupTargetsByUserId(Ljava/util/Set;)Landroid/util/SparseArray;
+PLcom/android/server/om/OverlayManagerService;->initIfNeeded()V
+HPLcom/android/server/om/OverlayManagerService;->lambda$broadcastActionOverlayChanged$3(ILandroid/app/ActivityManagerInternal;Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService;->lambda$groupTargetsByUserId$2(Landroid/util/SparseArray;Landroid/content/pm/UserPackage;)V
+PLcom/android/server/om/OverlayManagerService;->lambda$new$0(Ljava/lang/String;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerService;->lambda$updateTargetPackagesLocked$1(Ljava/util/List;ILandroid/util/ArraySet;)V
+PLcom/android/server/om/OverlayManagerService;->onStart()V
+PLcom/android/server/om/OverlayManagerService;->onStartUser(I)V
+PLcom/android/server/om/OverlayManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/om/OverlayManagerService;->persistSettingsLocked()V
+PLcom/android/server/om/OverlayManagerService;->restoreSettings()V
+PLcom/android/server/om/OverlayManagerService;->updateActivityManager(Ljava/util/List;I)V
+HPLcom/android/server/om/OverlayManagerService;->updatePackageManagerLocked(Ljava/util/Collection;I)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerService;->updateTargetPackagesLocked(Ljava/util/Set;)V
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda2;-><init>(Ljava/util/Set;)V
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda3;-><init>(ILjava/util/function/Predicate;)V
+PLcom/android/server/om/OverlayManagerServiceImpl$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->$r8$lambda$4_u0zZtyj6jePmGinO-0D6huxCc(Landroid/util/ArrayMap;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->$r8$lambda$Tz06Z6gMGNWEvNzQgIVBx0FKDBw(ILjava/util/function/Predicate;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;Lcom/android/internal/content/om/OverlayConfig;[Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/om/OverlayInfo;Lcom/android/server/pm/pkg/AndroidPackage;III)I
+PLcom/android/server/om/OverlayManagerServiceImpl;->cleanStaleResourceCache()V
+HPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPaths(Ljava/lang/String;IZ)Landroid/content/pm/overlay/OverlayPaths;
+PLcom/android/server/om/OverlayManagerServiceImpl;->getFabricatedOverlayInfos()Ljava/util/List;
+PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerServiceImpl;->getPackageConfiguredPriority(Lcom/android/server/pm/pkg/AndroidPackage;)I
+PLcom/android/server/om/OverlayManagerServiceImpl;->isPackageConfiguredEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->isPackageConfiguredMutable(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->lambda$removeOverlaysForUser$2(ILjava/util/function/Predicate;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->lambda$updateOverlaysForUser$0(Landroid/util/ArrayMap;Landroid/content/om/OverlayInfo;)Z
+HPLcom/android/server/om/OverlayManagerServiceImpl;->mustReinitializeOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/om/OverlayInfo;)Z
+PLcom/android/server/om/OverlayManagerServiceImpl;->removeOverlaysForUser(Ljava/util/function/Predicate;I)Ljava/util/Set;
+HPLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Landroid/util/ArraySet;
+HPLcom/android/server/om/OverlayManagerServiceImpl;->updatePackageOverlays(Lcom/android/server/pm/pkg/AndroidPackage;II)Ljava/util/Set;
+HPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Landroid/content/om/CriticalOverlayInfo;II)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda11;-><init>()V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda11;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda12;-><init>(I)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda2;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda4;-><init>(Ljava/util/Set;)V
+PLcom/android/server/om/OverlayManagerSettings$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/om/OverlayManagerSettings$BadKeyException;-><init>(Landroid/content/om/OverlayIdentifier;I)V
+PLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V
+HPLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+PLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V
+HPLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lcom/android/modules/utils/TypedXmlPullParser;I)Lcom/android/server/om/OverlayManagerSettings$SettingsItem;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmBaseCodePath(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmCategory(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsEnabled(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsFabricated(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmIsMutable(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmOverlay(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayIdentifier;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmPriority(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmTargetOverlayableName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmTargetPackageName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$fgetmUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetOverlayInfo(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetPriority(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetTargetPackageName(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$mgetUserId(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$misEnabled(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetBaseCodePath(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetCategory(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->-$$Nest$msetState(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;I)Z
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZILjava/lang/String;Z)V
+HPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getPriority()I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->invalidateCache()V
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setCategory(Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setState(I)Z
+HPLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$09biqz89cy9hpldr4q1PFVNuWP0(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$6NW65LIpjrluanlvM01K9BiQbu8(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$UJI7EebfpGNorHvdj0-tvz36dZM(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$YzjH3ppJzDqsTP84tx6Vx4SWtMQ(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$kDyA0E1XFyUdbniZy8flqK7NCTI(Ljava/util/Set;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+PLcom/android/server/om/OverlayManagerSettings;->$r8$lambda$kdu1J4VP2rTGaX3uyigDkFiHHyI(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings;-><init>()V
+PLcom/android/server/om/OverlayManagerSettings;->getAllBaseCodePaths()Ljava/util/Set;
+HPLcom/android/server/om/OverlayManagerSettings;->getEnabled(Landroid/content/om/OverlayIdentifier;I)Z
+HPLcom/android/server/om/OverlayManagerSettings;->getNullableOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+HPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Landroid/content/om/OverlayIdentifier;I)Landroid/content/om/OverlayInfo;
+HPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap;
+HPLcom/android/server/om/OverlayManagerSettings;->getState(Landroid/content/om/OverlayIdentifier;I)I
+PLcom/android/server/om/OverlayManagerSettings;->getUsers()[I
+PLcom/android/server/om/OverlayManagerSettings;->init(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZILjava/lang/String;Z)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerSettings;->insert(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+PLcom/android/server/om/OverlayManagerSettings;->lambda$getAllBaseCodePaths$1(Ljava/util/Set;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+PLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForUser$0(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereTarget$12(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HPLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereUser$10(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+PLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V
+PLcom/android/server/om/OverlayManagerSettings;->remove(Landroid/content/om/OverlayIdentifier;I)Z
+PLcom/android/server/om/OverlayManagerSettings;->removeIf(Ljava/util/function/Predicate;)Ljava/util/List;
+PLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V
+HPLcom/android/server/om/OverlayManagerSettings;->select(Landroid/content/om/OverlayIdentifier;I)I
+HPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;)Z
+HPLcom/android/server/om/OverlayManagerSettings;->setCategory(Landroid/content/om/OverlayIdentifier;ILjava/lang/String;)Z
+PLcom/android/server/om/OverlayManagerSettings;->setState(Landroid/content/om/OverlayIdentifier;II)Z
+HSPLcom/android/server/om/OverlayReferenceMapper$1;-><init>(Lcom/android/server/om/OverlayReferenceMapper;)V
+HPLcom/android/server/om/OverlayReferenceMapper$1;->getActorPkg(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/Map;
+HSPLcom/android/server/om/OverlayReferenceMapper;-><init>(ZLcom/android/server/om/OverlayReferenceMapper$Provider;)V
+HPLcom/android/server/om/OverlayReferenceMapper;->addOverlay(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V
+PLcom/android/server/om/OverlayReferenceMapper;->addOverlayToMap(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
+HPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;)Landroid/util/ArraySet;
+HPLcom/android/server/om/OverlayReferenceMapper;->addTarget(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Collection;)V
+HPLcom/android/server/om/OverlayReferenceMapper;->addTargetToMap(Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
+HPLcom/android/server/om/OverlayReferenceMapper;->ensureMapBuilt()V
+HPLcom/android/server/om/OverlayReferenceMapper;->isValidActor(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/om/OverlayReferenceMapper;->rebuild()V
+PLcom/android/server/om/OverlayReferenceMapper;->rebuildIfDeferred()V
+PLcom/android/server/om/OverlayReferenceMapper;->removeOverlay(Ljava/lang/String;Ljava/util/Collection;)V
+HPLcom/android/server/om/OverlayReferenceMapper;->removeTarget(Ljava/lang/String;Ljava/util/Collection;)V
+PLcom/android/server/os/BugreportManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/BugreportManagerService;->onStart()V
+PLcom/android/server/os/BugreportManagerServiceImpl$BugreportFileManager;-><init>(Landroid/util/AtomicFile;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$Injector;-><init>(Landroid/content/Context;Landroid/util/ArraySet;Landroid/util/AtomicFile;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getAllowlistedPackages()Landroid/util/ArraySet;
+PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/os/BugreportManagerServiceImpl$Injector;->getMappingFile()Landroid/util/AtomicFile;
+PLcom/android/server/os/BugreportManagerServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;-><init>(Lcom/android/server/os/BugreportManagerServiceImpl$Injector;)V
+HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->checkPackageBelongsToCaller(Ljava/lang/String;)Z
+PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String;
+PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerialForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/os/DeviceIdentifiersPolicyService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/os/DeviceIdentifiersPolicyService;->onStart()V
+HPLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
+PLcom/android/server/os/NativeTombstoneManager$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/os/NativeTombstoneManager$1;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
+PLcom/android/server/os/NativeTombstoneManager$2;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
+HPLcom/android/server/os/NativeTombstoneManager$TombstoneFile;->parse(Landroid/os/ParcelFileDescriptor;)Ljava/util/Optional;
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;Ljava/lang/String;)V
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->$r8$lambda$A74hOANgR204PBre_Brq7oIduOU(Lcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;Ljava/lang/String;)V
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;-><init>(Lcom/android/server/os/NativeTombstoneManager;)V
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->lambda$onEvent$0(Ljava/lang/String;)V
+PLcom/android/server/os/NativeTombstoneManager$TombstoneWatcher;->onEvent(ILjava/lang/String;)V
+PLcom/android/server/os/NativeTombstoneManager;->$r8$lambda$d5FKVJLhf8wmcpGmXSaNGRF1qVM(Lcom/android/server/os/NativeTombstoneManager;IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/os/NativeTombstoneManager;->$r8$lambda$gBT9xmTreiWpNj0UDSi2eO2Yau4(Lcom/android/server/os/NativeTombstoneManager;)V
+PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$fgetmHandler(Lcom/android/server/os/NativeTombstoneManager;)Landroid/os/Handler;
+PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$sfgetTAG()Ljava/lang/String;
+PLcom/android/server/os/NativeTombstoneManager;->-$$Nest$sfgetTOMBSTONE_DIR()Ljava/io/File;
+PLcom/android/server/os/NativeTombstoneManager;-><clinit>()V
+PLcom/android/server/os/NativeTombstoneManager;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/os/NativeTombstoneManager;->collectTombstones(Ljava/util/ArrayList;III)V
+HPLcom/android/server/os/NativeTombstoneManager;->handleProtoTombstone(Ljava/io/File;Z)Ljava/util/Optional;
+HPLcom/android/server/os/NativeTombstoneManager;->handleTombstone(Ljava/io/File;)V
+PLcom/android/server/os/NativeTombstoneManager;->lambda$collectTombstones$3(IIILjava/util/ArrayList;ILjava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/os/NativeTombstoneManager;->lambda$onSystemReady$0()V
+PLcom/android/server/os/NativeTombstoneManager;->onSystemReady()V
+PLcom/android/server/os/NativeTombstoneManager;->registerForPackageRemoval()V
+PLcom/android/server/os/NativeTombstoneManager;->registerForUserRemoval()V
+PLcom/android/server/os/NativeTombstoneManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/NativeTombstoneManagerService;->onBootPhase(I)V
+PLcom/android/server/os/NativeTombstoneManagerService;->onStart()V
+PLcom/android/server/os/SchedulingPolicyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
+PLcom/android/server/os/SchedulingPolicyService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/os/SchedulingPolicyService$1;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
+PLcom/android/server/os/SchedulingPolicyService;->$r8$lambda$KlPgkKRnOe1m4zokkdzlozJ7zLQ(Lcom/android/server/os/SchedulingPolicyService;)V
+PLcom/android/server/os/SchedulingPolicyService;-><clinit>()V
+PLcom/android/server/os/SchedulingPolicyService;-><init>()V
+PLcom/android/server/os/SchedulingPolicyService;->disableCpusetBoost(I)I
+PLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z
+PLcom/android/server/os/SchedulingPolicyService;->lambda$new$0()V
+PLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I
+PLcom/android/server/pdb/PersistentDataBlockService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
+PLcom/android/server/pdb/PersistentDataBlockService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pdb/PersistentDataBlockService$1;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
+PLcom/android/server/pdb/PersistentDataBlockService$1;->getMaximumDataBlockSize()J
+PLcom/android/server/pdb/PersistentDataBlockService$1;->read()[B
+PLcom/android/server/pdb/PersistentDataBlockService$1;->write([B)I
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;)V
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;-><init>(Lcom/android/server/pdb/PersistentDataBlockService;Lcom/android/server/pdb/PersistentDataBlockService$InternalService-IA;)V
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->getAllowedUid()I
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->getTestHarnessModeData()[B
+PLcom/android/server/pdb/PersistentDataBlockService$InternalService;->readInternal(JI)[B
+PLcom/android/server/pdb/PersistentDataBlockService;->$r8$lambda$konnAXJEAnzKBClo_dB4T2g6MZ4(Lcom/android/server/pdb/PersistentDataBlockService;)V
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmAllowedUid(Lcom/android/server/pdb/PersistentDataBlockService;)I
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmDataBlockFile(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/lang/String;
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmIsWritable(Lcom/android/server/pdb/PersistentDataBlockService;)Z
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$fgetmLock(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/lang/Object;
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mcomputeAndWriteDigestLocked(Lcom/android/server/pdb/PersistentDataBlockService;)Z
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mdoGetMaximumDataBlockSize(Lcom/android/server/pdb/PersistentDataBlockService;)J
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$menforceChecksumValidity(Lcom/android/server/pdb/PersistentDataBlockService;)Z
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$menforceUid(Lcom/android/server/pdb/PersistentDataBlockService;I)V
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mgetBlockOutputChannel(Lcom/android/server/pdb/PersistentDataBlockService;)Ljava/nio/channels/FileChannel;
+PLcom/android/server/pdb/PersistentDataBlockService;->-$$Nest$mgetTotalDataSizeLocked(Lcom/android/server/pdb/PersistentDataBlockService;Ljava/io/DataInputStream;)I
+PLcom/android/server/pdb/PersistentDataBlockService;-><clinit>()V
+PLcom/android/server/pdb/PersistentDataBlockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pdb/PersistentDataBlockService;->computeAndWriteDigestLocked()Z
+HPLcom/android/server/pdb/PersistentDataBlockService;->computeDigestLocked([B)[B
+PLcom/android/server/pdb/PersistentDataBlockService;->doGetMaximumDataBlockSize()J
+PLcom/android/server/pdb/PersistentDataBlockService;->doGetOemUnlockEnabled()Z
+PLcom/android/server/pdb/PersistentDataBlockService;->enforceChecksumValidity()Z
+PLcom/android/server/pdb/PersistentDataBlockService;->enforceFactoryResetProtectionInactive()V
+PLcom/android/server/pdb/PersistentDataBlockService;->enforceUid(I)V
+PLcom/android/server/pdb/PersistentDataBlockService;->formatIfOemUnlockEnabled()V
+PLcom/android/server/pdb/PersistentDataBlockService;->getAllowedUid()I
+PLcom/android/server/pdb/PersistentDataBlockService;->getBlockDeviceSize()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getBlockOutputChannel()Ljava/nio/channels/FileChannel;
+PLcom/android/server/pdb/PersistentDataBlockService;->getBlockOutputChannelIgnoringFrp()Ljava/nio/channels/FileChannel;
+PLcom/android/server/pdb/PersistentDataBlockService;->getFrpCredentialDataOffset()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getOemUnlockDataOffset()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getTestHarnessModeDataOffset()J
+PLcom/android/server/pdb/PersistentDataBlockService;->getTotalDataSizeLocked(Ljava/io/DataInputStream;)I
+PLcom/android/server/pdb/PersistentDataBlockService;->lambda$onStart$0()V
+PLcom/android/server/pdb/PersistentDataBlockService;->onBootPhase(I)V
+PLcom/android/server/pdb/PersistentDataBlockService;->onStart()V
+PLcom/android/server/pdb/PersistentDataBlockService;->setOemUnlockEnabledProperty(Z)V
+PLcom/android/server/pdb/PersistentDataBlockService;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pdb/PersistentDataBlockService;->signalInitDone()V
+PLcom/android/server/pdb/PersistentDataBlockService;->waitForInitDoneSignal()V
+PLcom/android/server/people/PeopleService$1;-><init>(Lcom/android/server/people/PeopleService;)V
+PLcom/android/server/people/PeopleService$ConversationListenerHelper;-><init>()V
+PLcom/android/server/people/PeopleService$LocalService;-><init>(Lcom/android/server/people/PeopleService;)V
+PLcom/android/server/people/PeopleService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/people/PeopleService;->getDataManager()Lcom/android/server/people/data/DataManager;
+PLcom/android/server/people/PeopleService;->initLazyStuff()V
+PLcom/android/server/people/PeopleService;->onStart()V
+PLcom/android/server/people/PeopleService;->onStart(Z)V
+PLcom/android/server/people/PeopleService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/people/PeopleServiceInternal;-><init>()V
+PLcom/android/server/people/data/CallLogQueryHelper;-><clinit>()V
+PLcom/android/server/people/data/CallLogQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
+PLcom/android/server/people/data/ConversationStatusExpirationBroadcastReceiver;-><init>()V
+PLcom/android/server/people/data/ConversationStatusExpirationBroadcastReceiver;->getFilter()Landroid/content/IntentFilter;
+PLcom/android/server/people/data/DataMaintenanceService;-><clinit>()V
+PLcom/android/server/people/data/DataMaintenanceService;->getJobId(I)I
+PLcom/android/server/people/data/DataMaintenanceService;->scheduleJob(Landroid/content/Context;I)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/people/data/DataManager;I)V
+PLcom/android/server/people/data/DataManager$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$CallLogContentObserver-IA;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$ContactsContentObserver-IA;)V
+PLcom/android/server/people/data/DataManager$Injector;-><init>()V
+PLcom/android/server/people/data/DataManager$Injector;->createCallLogQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/CallLogQueryHelper;
+PLcom/android/server/people/data/DataManager$Injector;->createMmsQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/MmsQueryHelper;
+PLcom/android/server/people/data/DataManager$Injector;->createScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;
+PLcom/android/server/people/data/DataManager$Injector;->createSmsQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/SmsQueryHelper;
+PLcom/android/server/people/data/DataManager$Injector;->createUsageStatsQueryHelper(ILjava/util/function/Function;Lcom/android/server/people/data/UsageStatsQueryHelper$EventListener;)Lcom/android/server/people/data/UsageStatsQueryHelper;
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;-><init>(Lcom/android/server/people/data/DataManager;Landroid/os/Handler;Lcom/android/server/people/data/DataManager$MmsSmsContentObserver-IA;)V
+PLcom/android/server/people/data/DataManager$NotificationListener$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/people/data/DataManager$NotificationListener;Landroid/service/notification/StatusBarNotification;Ljava/lang/String;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;I)V
+PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$NotificationListener-IA;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
+PLcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;I)V
+PLcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$PerUserBroadcastReceiver-IA;)V
+PLcom/android/server/people/data/DataManager$PerUserPackageMonitor;-><init>(Lcom/android/server/people/data/DataManager;)V
+PLcom/android/server/people/data/DataManager$PerUserPackageMonitor;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$PerUserPackageMonitor-IA;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;-><init>(Lcom/android/server/people/data/DataManager;)V
+PLcom/android/server/people/data/DataManager$ShortcutServiceCallback;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$ShortcutServiceCallback-IA;)V
+PLcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;)V
+PLcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$ShutdownBroadcastReceiver-IA;)V
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;I)V
+HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->$r8$lambda$cVW9hPliqF0sjWNbpn4Xp9GLrWc(Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;ILjava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;-><init>(Lcom/android/server/people/data/DataManager;I)V
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;-><init>(Lcom/android/server/people/data/DataManager;ILcom/android/server/people/data/DataManager$UsageStatsQueryRunnable-IA;)V
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->lambda$new$0(ILjava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->run()V
+PLcom/android/server/people/data/DataManager;->$r8$lambda$1-ISRhLNWfPETJJig6xBTzQCJ7w(Lcom/android/server/people/data/DataManager;I)V
+PLcom/android/server/people/data/DataManager;->-$$Nest$fgetmContext(Lcom/android/server/people/data/DataManager;)Landroid/content/Context;
+PLcom/android/server/people/data/DataManager;->-$$Nest$fgetmInjector(Lcom/android/server/people/data/DataManager;)Lcom/android/server/people/data/DataManager$Injector;
+PLcom/android/server/people/data/DataManager;->-$$Nest$mgetPackageIfConversationExists(Lcom/android/server/people/data/DataManager;Landroid/service/notification/StatusBarNotification;Ljava/util/function/Consumer;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/people/data/DataManager;-><init>(Landroid/content/Context;Lcom/android/server/people/data/DataManager$Injector;Landroid/os/Looper;)V
+PLcom/android/server/people/data/DataManager;->addConversationsListener(Lcom/android/server/people/PeopleService$ConversationsListener;)V
+PLcom/android/server/people/data/DataManager;->getPackage(Ljava/lang/String;I)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/DataManager;->getPackageIfConversationExists(Landroid/service/notification/StatusBarNotification;Ljava/util/function/Consumer;)Lcom/android/server/people/data/PackageData;
+HPLcom/android/server/people/data/DataManager;->getUnlockedUserData(I)Lcom/android/server/people/data/UserData;
+PLcom/android/server/people/data/DataManager;->initialize()V
+PLcom/android/server/people/data/DataManager;->lambda$onUserUnlocked$0(I)V
+PLcom/android/server/people/data/DataManager;->onUserUnlocked(I)V
+HPLcom/android/server/people/data/DataManager;->setupUser(I)V
+PLcom/android/server/people/data/DataManager;->updateDefaultDialer(Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager;->updateDefaultSmsApp(Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/MmsQueryHelper;-><clinit>()V
+PLcom/android/server/people/data/MmsQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
+PLcom/android/server/people/data/PackageData;->packagesDataFromDisk(ILjava/util/function/Predicate;Ljava/util/function/Predicate;Ljava/util/concurrent/ScheduledExecutorService;Ljava/io/File;)Ljava/util/Map;
+PLcom/android/server/people/data/SmsQueryHelper;-><clinit>()V
+PLcom/android/server/people/data/SmsQueryHelper;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;)V
+PLcom/android/server/people/data/UsageStatsQueryHelper;-><init>(ILjava/util/function/Function;Lcom/android/server/people/data/UsageStatsQueryHelper$EventListener;)V
+PLcom/android/server/people/data/UsageStatsQueryHelper;->getLastEventTimestamp()J
+PLcom/android/server/people/data/UsageStatsQueryHelper;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
+PLcom/android/server/people/data/UsageStatsQueryHelper;->querySince(J)Z
+PLcom/android/server/people/data/UserData$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/UserData$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/UserData;-><clinit>()V
+PLcom/android/server/people/data/UserData;-><init>(ILjava/util/concurrent/ScheduledExecutorService;)V
+HPLcom/android/server/people/data/UserData;->getPackageData(Ljava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/UserData;->getUserId()I
+PLcom/android/server/people/data/UserData;->isUnlocked()Z
+PLcom/android/server/people/data/UserData;->loadUserData()V
+PLcom/android/server/people/data/UserData;->setDefaultDialer(Ljava/lang/String;)V
+PLcom/android/server/people/data/UserData;->setDefaultSmsApp(Ljava/lang/String;)V
+PLcom/android/server/people/data/UserData;->setUserUnlocked()V
+PLcom/android/server/people/data/Utils;->getCurrentCountryIso(Landroid/content/Context;)Ljava/lang/String;
+HSPLcom/android/server/permission/access/AccessCheckingService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/permission/access/AccessCheckingService;->access$getPersistence$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessPersistence;
+HPLcom/android/server/permission/access/AccessCheckingService;->access$getPolicy$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessPolicy;
+HPLcom/android/server/permission/access/AccessCheckingService;->access$getState$p(Lcom/android/server/permission/access/AccessCheckingService;)Lcom/android/server/permission/access/AccessState;
+HPLcom/android/server/permission/access/AccessCheckingService;->access$getStateLock$p(Lcom/android/server/permission/access/AccessCheckingService;)Ljava/lang/Object;
+HPLcom/android/server/permission/access/AccessCheckingService;->access$setState$p(Lcom/android/server/permission/access/AccessCheckingService;Lcom/android/server/permission/access/AccessState;)V
+HSPLcom/android/server/permission/access/AccessCheckingService;->getAllPackageStates(Lcom/android/server/pm/PackageManagerLocal;)Lcom/android/server/permission/jarjar/kotlin/Pair;
+HSPLcom/android/server/permission/access/AccessCheckingService;->getImplicitToSourcePermissions(Lcom/android/server/SystemConfig;)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/AccessCheckingService;->getKnownPackages(Landroid/content/pm/PackageManagerInternal;)Lcom/android/server/permission/access/immutable/IntMap;
+HSPLcom/android/server/permission/access/AccessCheckingService;->getPrivilegedPermissionAllowlistPackages(Lcom/android/server/SystemConfig;)Lcom/android/server/permission/access/immutable/IndexedListSet;
+HSPLcom/android/server/permission/access/AccessCheckingService;->getSchemePolicy$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/permission/access/SchemePolicy;
+HSPLcom/android/server/permission/access/AccessCheckingService;->initialize()V
+HSPLcom/android/server/permission/access/AccessCheckingService;->isLeanback(Lcom/android/server/SystemConfig;)Z
+HSPLcom/android/server/permission/access/AccessCheckingService;->onStart()V
+PLcom/android/server/permission/access/AccessCheckingService;->onStorageVolumeMounted$frameworks__base__services__permission__android_common__services_permission_pre_jarjar(Ljava/lang/String;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/AccessCheckingService;->onSystemReady$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()V
+HSPLcom/android/server/permission/access/AccessPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/AccessPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/AccessPersistence$WriteHandler;-><init>(Lcom/android/server/permission/access/AccessPersistence;Landroid/os/Looper;)V
+PLcom/android/server/permission/access/AccessPersistence$WriteHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/permission/access/AccessPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/AccessPersistence;-><init>(Lcom/android/server/permission/access/AccessPolicy;)V
+PLcom/android/server/permission/access/AccessPersistence;->access$writePendingState(Lcom/android/server/permission/access/AccessPersistence;I)V
+HSPLcom/android/server/permission/access/AccessPersistence;->getSystemFile()Ljava/io/File;
+PLcom/android/server/permission/access/AccessPersistence;->getUserFile(I)Ljava/io/File;
+HSPLcom/android/server/permission/access/AccessPersistence;->initialize()V
+HSPLcom/android/server/permission/access/AccessPersistence;->read(Lcom/android/server/permission/access/MutableAccessState;)V
+HSPLcom/android/server/permission/access/AccessPersistence;->readSystemState(Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/AccessPersistence;->readUserState(Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/AccessState;)V
+HPLcom/android/server/permission/access/AccessPersistence;->write(Lcom/android/server/permission/access/WritableState;Lcom/android/server/permission/access/AccessState;I)V
+HPLcom/android/server/permission/access/AccessPersistence;->writePendingState(I)V
+HPLcom/android/server/permission/access/AccessPersistence;->writeSystemState(Lcom/android/server/permission/access/AccessState;)V
+HPLcom/android/server/permission/access/AccessPersistence;->writeUserState(Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/AccessPolicy$Companion;-><init>()V
+HSPLcom/android/server/permission/access/AccessPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/AccessPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/AccessPolicy;-><init>()V
+HSPLcom/android/server/permission/access/AccessPolicy;-><init>(Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/AccessPolicy;->_init_$lambda$1$addPolicy(Lcom/android/server/permission/access/immutable/MutableIndexedMap;Lcom/android/server/permission/access/SchemePolicy;)V
+HSPLcom/android/server/permission/access/AccessPolicy;->getSchemePolicy(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/permission/access/SchemePolicy;
+HSPLcom/android/server/permission/access/AccessPolicy;->initialize(Lcom/android/server/permission/access/MutableAccessState;Lcom/android/server/permission/access/immutable/IntSet;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+PLcom/android/server/permission/access/AccessPolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
+HPLcom/android/server/permission/access/AccessPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
+HPLcom/android/server/permission/access/AccessPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/IntMap;Ljava/lang/String;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/AccessPolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
+PLcom/android/server/permission/access/AccessPolicy;->parseDefaultPermissionGrant(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/AccessPolicy;->parsePackageVersion(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HPLcom/android/server/permission/access/AccessPolicy;->parsePackageVersions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HSPLcom/android/server/permission/access/AccessPolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
+HPLcom/android/server/permission/access/AccessPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/AccessPolicy;->serializeDefaultPermissionGrantFingerprint(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;)V
+HPLcom/android/server/permission/access/AccessPolicy;->serializePackageVersions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HPLcom/android/server/permission/access/AccessPolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
+HPLcom/android/server/permission/access/AccessPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HPLcom/android/server/permission/access/AccessPolicy;->upgradePackageVersion(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;I)V
+HSPLcom/android/server/permission/access/AccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;)V
+HSPLcom/android/server/permission/access/AccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/AccessState;->getExternalState()Lcom/android/server/permission/access/ExternalState;
+HSPLcom/android/server/permission/access/AccessState;->getExternalStateReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/AccessState;->getSystemState()Lcom/android/server/permission/access/SystemState;
+HSPLcom/android/server/permission/access/AccessState;->getSystemStateReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/AccessState;->getUserStates()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+HSPLcom/android/server/permission/access/AccessState;->getUserStatesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/AccessState;->toMutable()Lcom/android/server/permission/access/MutableAccessState;
+HSPLcom/android/server/permission/access/ExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;Z)V
+HSPLcom/android/server/permission/access/ExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;ZLcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNames()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+HSPLcom/android/server/permission/access/ExternalState;->getAppIdPackageNamesReference()Lcom/android/server/permission/access/immutable/MutableReference;
+PLcom/android/server/permission/access/ExternalState;->getConfigPermissions()Ljava/util/Map;
+PLcom/android/server/permission/access/ExternalState;->getDisabledSystemPackageStates()Ljava/util/Map;
+PLcom/android/server/permission/access/ExternalState;->getImplicitToSourcePermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/ExternalState;->getKnownPackages()Lcom/android/server/permission/access/immutable/IntMap;
+HSPLcom/android/server/permission/access/ExternalState;->getPackageStates()Ljava/util/Map;
+PLcom/android/server/permission/access/ExternalState;->getPermissionAllowlist()Lcom/android/server/pm/permission/PermissionAllowlist;
+PLcom/android/server/permission/access/ExternalState;->getPrivilegedPermissionAllowlistPackages()Lcom/android/server/permission/access/immutable/IndexedListSet;
+HPLcom/android/server/permission/access/ExternalState;->getUserIds()Lcom/android/server/permission/access/immutable/IntSet;
+HSPLcom/android/server/permission/access/ExternalState;->getUserIdsReference()Lcom/android/server/permission/access/immutable/MutableReference;
+PLcom/android/server/permission/access/ExternalState;->isLeanback()Z
+PLcom/android/server/permission/access/ExternalState;->isSystemReady()Z
+HSPLcom/android/server/permission/access/ExternalState;->setConfigPermissions(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/ExternalState;->setDisabledSystemPackageStates(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/ExternalState;->setImplicitToSourcePermissions(Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/ExternalState;->setKnownPackages(Lcom/android/server/permission/access/immutable/IntMap;)V
+HSPLcom/android/server/permission/access/ExternalState;->setLeanback(Z)V
+HSPLcom/android/server/permission/access/ExternalState;->setPackageStates(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/ExternalState;->setPermissionAllowlist(Lcom/android/server/pm/permission/PermissionAllowlist;)V
+HSPLcom/android/server/permission/access/ExternalState;->setPrivilegedPermissionAllowlistPackages(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
+PLcom/android/server/permission/access/ExternalState;->setSystemReady(Z)V
+PLcom/android/server/permission/access/ExternalState;->toMutable()Lcom/android/server/permission/access/MutableExternalState;
+PLcom/android/server/permission/access/ExternalState;->toMutable()Ljava/lang/Object;
+PLcom/android/server/permission/access/GetStateScope;-><init>(Lcom/android/server/permission/access/AccessState;)V
+PLcom/android/server/permission/access/GetStateScope;->getState()Lcom/android/server/permission/access/AccessState;
+HSPLcom/android/server/permission/access/MutableAccessState;-><init>()V
+HPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/AccessState;)V
+HSPLcom/android/server/permission/access/MutableAccessState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;)V
+HSPLcom/android/server/permission/access/MutableAccessState;->mutateExternalState()Lcom/android/server/permission/access/MutableExternalState;
+HPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState$default(Lcom/android/server/permission/access/MutableAccessState;IILjava/lang/Object;)Lcom/android/server/permission/access/MutableSystemState;
+HSPLcom/android/server/permission/access/MutableAccessState;->mutateSystemState(I)Lcom/android/server/permission/access/MutableSystemState;
+PLcom/android/server/permission/access/MutableAccessState;->mutateUserState$default(Lcom/android/server/permission/access/MutableAccessState;IIILjava/lang/Object;)Lcom/android/server/permission/access/MutableUserState;
+PLcom/android/server/permission/access/MutableAccessState;->mutateUserState(II)Lcom/android/server/permission/access/MutableUserState;
+HSPLcom/android/server/permission/access/MutableAccessState;->mutateUserStatesNoWrite()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+HSPLcom/android/server/permission/access/MutableExternalState;-><init>()V
+PLcom/android/server/permission/access/MutableExternalState;-><init>(Lcom/android/server/permission/access/ExternalState;)V
+HSPLcom/android/server/permission/access/MutableExternalState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/IntMap;ZLjava/util/Map;Lcom/android/server/permission/access/immutable/IndexedListSet;Lcom/android/server/pm/permission/PermissionAllowlist;Lcom/android/server/permission/access/immutable/IndexedMap;Z)V
+HSPLcom/android/server/permission/access/MutableExternalState;->mutateAppIdPackageNames()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+HSPLcom/android/server/permission/access/MutableExternalState;->mutateUserIds()Lcom/android/server/permission/access/immutable/MutableIntSet;
+HSPLcom/android/server/permission/access/MutableExternalState;->setConfigPermissionsPublic(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setDisabledSystemPackageStatesPublic(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setImplicitToSourcePermissionsPublic(Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setKnownPackagesPublic(Lcom/android/server/permission/access/immutable/IntMap;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setLeanbackPublic(Z)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setPackageStatesPublic(Ljava/util/Map;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setPermissionAllowlistPublic(Lcom/android/server/pm/permission/PermissionAllowlist;)V
+HSPLcom/android/server/permission/access/MutableExternalState;->setPrivilegedPermissionAllowlistPackagesPublic(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
+PLcom/android/server/permission/access/MutableExternalState;->setSystemReadyPublic(Z)V
+HSPLcom/android/server/permission/access/MutableSystemState;-><init>()V
+PLcom/android/server/permission/access/MutableSystemState;-><init>(Lcom/android/server/permission/access/SystemState;)V
+HSPLcom/android/server/permission/access/MutableSystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;I)V
+PLcom/android/server/permission/access/MutableSystemState;->mutatePermissionGroups()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissionTrees()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+HSPLcom/android/server/permission/access/MutableSystemState;->mutatePermissions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+HSPLcom/android/server/permission/access/MutableSystemState;->requestWriteMode(I)V
+HSPLcom/android/server/permission/access/MutableUserState;-><init>()V
+PLcom/android/server/permission/access/MutableUserState;-><init>(Lcom/android/server/permission/access/UserState;)V
+HSPLcom/android/server/permission/access/MutableUserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;I)V
+PLcom/android/server/permission/access/MutableUserState;->mutateAppIdAppOpModes()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->mutateAppIdDevicePermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->mutateAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/MutableUserState;->mutatePackageAppOpModes()Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;
+HPLcom/android/server/permission/access/MutableUserState;->mutatePackageVersions()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+PLcom/android/server/permission/access/MutableUserState;->requestWriteMode(I)V
+PLcom/android/server/permission/access/MutableUserState;->setDefaultPermissionGrantFingerprintPublic(Ljava/lang/String;)V
+HPLcom/android/server/permission/access/MutateStateScope;-><init>(Lcom/android/server/permission/access/AccessState;Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/MutateStateScope;->getNewState()Lcom/android/server/permission/access/MutableAccessState;
+PLcom/android/server/permission/access/MutateStateScope;->getOldState()Lcom/android/server/permission/access/AccessState;
+HSPLcom/android/server/permission/access/SchemePolicy;-><init>()V
+PLcom/android/server/permission/access/SchemePolicy;->onAppIdAdded(Lcom/android/server/permission/access/MutateStateScope;I)V
+PLcom/android/server/permission/access/SchemePolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
+PLcom/android/server/permission/access/SchemePolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/SchemePolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
+HSPLcom/android/server/permission/access/SchemePolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/SchemePolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
+HSPLcom/android/server/permission/access/SystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;I)V
+HSPLcom/android/server/permission/access/SystemState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/SystemState;->getPermissionGroups()Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/SystemState;->getPermissionGroupsReference()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/SystemState;->getPermissionTrees()Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/SystemState;->getPermissionTreesReference()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/SystemState;->getPermissions()Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/SystemState;->getPermissionsReference()Lcom/android/server/permission/access/immutable/MutableReference;
+HSPLcom/android/server/permission/access/SystemState;->getWriteMode()I
+HSPLcom/android/server/permission/access/SystemState;->setWriteMode(I)V
+PLcom/android/server/permission/access/SystemState;->toMutable()Lcom/android/server/permission/access/MutableSystemState;
+PLcom/android/server/permission/access/SystemState;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/UserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;I)V
+HSPLcom/android/server/permission/access/UserState;-><init>(Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Lcom/android/server/permission/access/immutable/MutableReference;Ljava/lang/String;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/UserState;->getAppIdAppOpModes()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+PLcom/android/server/permission/access/UserState;->getAppIdAppOpModesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+PLcom/android/server/permission/access/UserState;->getAppIdDevicePermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+PLcom/android/server/permission/access/UserState;->getAppIdDevicePermissionFlagsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/UserState;->getAppIdPermissionFlags()Lcom/android/server/permission/access/immutable/IntReferenceMap;
+PLcom/android/server/permission/access/UserState;->getAppIdPermissionFlagsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+PLcom/android/server/permission/access/UserState;->getDefaultPermissionGrantFingerprint()Ljava/lang/String;
+HPLcom/android/server/permission/access/UserState;->getPackageAppOpModes()Lcom/android/server/permission/access/immutable/IndexedReferenceMap;
+PLcom/android/server/permission/access/UserState;->getPackageAppOpModesReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+HPLcom/android/server/permission/access/UserState;->getPackageVersions()Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/UserState;->getPackageVersionsReference$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Lcom/android/server/permission/access/immutable/MutableReference;
+PLcom/android/server/permission/access/UserState;->getWriteMode()I
+PLcom/android/server/permission/access/UserState;->setDefaultPermissionGrantFingerprint(Ljava/lang/String;)V
+PLcom/android/server/permission/access/UserState;->setWriteMode(I)V
+PLcom/android/server/permission/access/UserState;->toMutable()Lcom/android/server/permission/access/MutableUserState;
+PLcom/android/server/permission/access/UserState;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpMigration;-><init>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;-><init>()V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseAppId(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;)V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseAppIdAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeAppIdAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
+PLcom/android/server/permission/access/appop/AppIdAppOpPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;-><init>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;-><init>()V
+PLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->addOnAppOpModeChangedListener(Lcom/android/server/permission/access/appop/AppIdAppOpPolicy$OnAppOpModeChangedListener;)V
+HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I
+HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->getSubjectScheme()Ljava/lang/String;
+HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
+PLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->removeAppOpModes(Lcom/android/server/permission/access/MutateStateScope;II)Z
+HPLcom/android/server/permission/access/appop/AppIdAppOpPolicy;->setAppOpMode(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z
+HSPLcom/android/server/permission/access/appop/AppIdAppOpUpgrade;-><init>(Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;)V
+PLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
+HPLcom/android/server/permission/access/appop/AppOpService$OnAppIdAppOpModeChangedListener;->onStateMutated()V
+PLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;-><init>(Lcom/android/server/permission/access/appop/AppOpService;)V
+HPLcom/android/server/permission/access/appop/AppOpService$OnPackageAppOpModeChangedListener;->onStateMutated()V
+HSPLcom/android/server/permission/access/appop/AppOpService;-><init>(Lcom/android/server/permission/access/AccessCheckingService;)V
+PLcom/android/server/permission/access/appop/AppOpService;->access$getAppIdPolicy$p(Lcom/android/server/permission/access/appop/AppOpService;)Lcom/android/server/permission/access/appop/AppIdAppOpPolicy;
+HPLcom/android/server/permission/access/appop/AppOpService;->access$getListeners$p(Lcom/android/server/permission/access/appop/AppOpService;)Landroid/util/ArraySet;
+PLcom/android/server/permission/access/appop/AppOpService;->access$getPackagePolicy$p(Lcom/android/server/permission/access/appop/AppOpService;)Lcom/android/server/permission/access/appop/PackageAppOpPolicy;
+HSPLcom/android/server/permission/access/appop/AppOpService;->addAppOpsModeChangedListener(Lcom/android/server/appop/AppOpsCheckingServiceInterface$AppOpsModeChangedListener;)Z
+HSPLcom/android/server/permission/access/appop/AppOpService;->clearAllModes()V
+HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(ILjava/lang/String;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/permission/access/appop/AppOpService;->getForegroundOps(Ljava/lang/String;I)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/permission/access/appop/AppOpService;->getNonDefaultPackageModes(Ljava/lang/String;I)Landroid/util/SparseIntArray;
+HPLcom/android/server/permission/access/appop/AppOpService;->getPackageMode(Ljava/lang/String;II)I
+HPLcom/android/server/permission/access/appop/AppOpService;->getPackageModes(Ljava/lang/String;I)Landroid/util/ArrayMap;
+HPLcom/android/server/permission/access/appop/AppOpService;->getUidMode(ILjava/lang/String;I)I
+HPLcom/android/server/permission/access/appop/AppOpService;->getUidModes(I)Landroid/util/ArrayMap;
+PLcom/android/server/permission/access/appop/AppOpService;->initialize()V
+PLcom/android/server/permission/access/appop/AppOpService;->opNameMapToOpSparseArray(Landroid/util/ArrayMap;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/permission/access/appop/AppOpService;->readState()V
+HPLcom/android/server/permission/access/appop/AppOpService;->removePackage(Ljava/lang/String;I)Z
+PLcom/android/server/permission/access/appop/AppOpService;->removeUid(I)V
+HPLcom/android/server/permission/access/appop/AppOpService;->setUidMode(ILjava/lang/String;II)Z
+PLcom/android/server/permission/access/appop/AppOpService;->systemReady()V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPersistence;-><init>()V
+HPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->parseAppOp(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HPLcom/android/server/permission/access/appop/BaseAppOpPersistence;->parseAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+PLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOp(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V
+PLcom/android/server/permission/access/appop/BaseAppOpPersistence;->serializeAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPolicy;-><init>(Lcom/android/server/permission/access/appop/BaseAppOpPersistence;)V
+HSPLcom/android/server/permission/access/appop/BaseAppOpPolicy;->getObjectScheme()Ljava/lang/String;
+PLcom/android/server/permission/access/appop/BaseAppOpPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/appop/BaseAppOpPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/appop/PackageAppOpMigration;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpMigration;-><init>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPersistence;-><init>()V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parsePackage(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;)V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parsePackageAppOps(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializePackage(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializePackageAppOps(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IndexedReferenceMap;)V
+PLcom/android/server/permission/access/appop/PackageAppOpPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;-><init>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;-><init>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;-><init>()V
+PLcom/android/server/permission/access/appop/PackageAppOpPolicy;->addOnAppOpModeChangedListener(Lcom/android/server/permission/access/appop/PackageAppOpPolicy$OnAppOpModeChangedListener;)V
+HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpMode(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;ILjava/lang/String;)I
+HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getAppOpModes(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;I)Lcom/android/server/permission/access/immutable/IndexedMap;
+HSPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->getSubjectScheme()Ljava/lang/String;
+HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
+HPLcom/android/server/permission/access/appop/PackageAppOpPolicy;->removeAppOpModes(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;I)Z
+HSPLcom/android/server/permission/access/appop/PackageAppOpUpgrade;-><init>(Lcom/android/server/permission/access/appop/PackageAppOpPolicy;)V
+HSPLcom/android/server/permission/access/collection/ArraySetExtensionsKt;->arraySetOf([Ljava/lang/Object;)Landroid/util/ArraySet;
+PLcom/android/server/permission/access/immutable/IndexedList;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/permission/access/immutable/IndexedList;-><init>(Ljava/util/ArrayList;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/IndexedList;->get(I)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedList;->getList$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Ljava/util/ArrayList;
+HPLcom/android/server/permission/access/immutable/IndexedList;->getSize()I
+HSPLcom/android/server/permission/access/immutable/IndexedListSet;-><init>(Ljava/util/ArrayList;)V
+HSPLcom/android/server/permission/access/immutable/IndexedListSet;-><init>(Ljava/util/ArrayList;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/IndexedListSet;->contains(Ljava/lang/Object;)Z
+HPLcom/android/server/permission/access/immutable/IndexedListSet;->elementAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedListSet;->getList$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Ljava/util/ArrayList;
+HPLcom/android/server/permission/access/immutable/IndexedListSet;->getSize()I
+HPLcom/android/server/permission/access/immutable/IndexedListSet;->toMutable()Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
+PLcom/android/server/permission/access/immutable/IndexedListSet;->toMutable()Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedListSetExtensionsKt;->plus(Lcom/android/server/permission/access/immutable/IndexedListSet;Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/MutableIndexedListSet;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/permission/access/immutable/IndexedMap;-><init>(Landroid/util/ArrayMap;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->getMap$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArrayMap;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->getSize()I
+HPLcom/android/server/permission/access/immutable/IndexedMap;->indexOfKey(Ljava/lang/Object;)I
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->keyAt(I)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedMap;->toMutable()Lcom/android/server/permission/access/immutable/MutableIndexedMap;
+PLcom/android/server/permission/access/immutable/IndexedMap;->toMutable()Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedMap;->valueAt(I)Ljava/lang/Object;
+HPLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->getWithDefault(Lcom/android/server/permission/access/immutable/IndexedMap;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedMapExtensionsKt;->putWithDefault(Lcom/android/server/permission/access/immutable/MutableIndexedMap;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/permission/access/immutable/IndexedReferenceMap;-><init>(Landroid/util/ArrayMap;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->get(Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/Immutable;
+PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->getMap$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArrayMap;
+PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->getSize()I
+HPLcom/android/server/permission/access/immutable/IndexedReferenceMap;->indexOfKey(Ljava/lang/Object;)I
+PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->keyAt(I)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/IndexedSet;-><init>(Landroid/util/ArraySet;)V
+HSPLcom/android/server/permission/access/immutable/IndexedSet;-><init>(Landroid/util/ArraySet;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/IndexedSet;->elementAt(I)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/IndexedSet;->getSet$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/ArraySet;
+HPLcom/android/server/permission/access/immutable/IndexedSet;->getSize()I
+PLcom/android/server/permission/access/immutable/IndexedSet;->isEmpty()Z
+HSPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->indexedSetOf([Ljava/lang/Object;)Lcom/android/server/permission/access/immutable/IndexedSet;
+HPLcom/android/server/permission/access/immutable/IndexedSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIndexedSet;Ljava/util/Collection;)V
+HSPLcom/android/server/permission/access/immutable/IntMap;-><init>(Landroid/util/SparseArray;)V
+HSPLcom/android/server/permission/access/immutable/IntMap;-><init>(Landroid/util/SparseArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/IntMap;->get(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IntMap;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseArray;
+HPLcom/android/server/permission/access/immutable/IntMap;->getSize()I
+HSPLcom/android/server/permission/access/immutable/IntMapExtensionsKt;->set(Lcom/android/server/permission/access/immutable/MutableIntMap;ILjava/lang/Object;)V
+PLcom/android/server/permission/access/immutable/IntMapKt;->gc(Landroid/util/SparseArray;)V
+HSPLcom/android/server/permission/access/immutable/IntMapKt;->putReturnOld(Landroid/util/SparseArray;ILjava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/IntReferenceMap;-><init>(Landroid/util/SparseArray;)V
+HSPLcom/android/server/permission/access/immutable/IntReferenceMap;-><init>(Landroid/util/SparseArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/IntReferenceMap;->contains(I)Z
+HPLcom/android/server/permission/access/immutable/IntReferenceMap;->get(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/IntReferenceMap;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseArray;
+HPLcom/android/server/permission/access/immutable/IntReferenceMap;->getSize()I
+PLcom/android/server/permission/access/immutable/IntReferenceMap;->indexOfKey(I)I
+HPLcom/android/server/permission/access/immutable/IntReferenceMap;->keyAt(I)I
+PLcom/android/server/permission/access/immutable/IntReferenceMap;->toMutable()Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;
+PLcom/android/server/permission/access/immutable/IntReferenceMap;->toMutable()Ljava/lang/Object;
+HPLcom/android/server/permission/access/immutable/IntReferenceMap;->valueAt(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/IntReferenceMapExtensionsKt;->set(Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;ILcom/android/server/permission/access/immutable/Immutable;)V
+HSPLcom/android/server/permission/access/immutable/IntSet;-><init>(Landroid/util/SparseBooleanArray;)V
+HSPLcom/android/server/permission/access/immutable/IntSet;-><init>(Landroid/util/SparseBooleanArray;Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/immutable/IntSet;->elementAt(I)I
+HSPLcom/android/server/permission/access/immutable/IntSet;->getArray$frameworks__base__services__permission__android_common__services_permission_pre_jarjar()Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/permission/access/immutable/IntSet;->getSize()I
+HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->MutableIntSet([I)Lcom/android/server/permission/access/immutable/MutableIntSet;
+HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;I)V
+HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;Lcom/android/server/permission/access/immutable/IntSet;)V
+HSPLcom/android/server/permission/access/immutable/IntSetExtensionsKt;->plusAssign(Lcom/android/server/permission/access/immutable/MutableIntSet;[I)V
+HPLcom/android/server/permission/access/immutable/MutableIndexedList;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/permission/access/immutable/MutableIndexedList;-><init>(Ljava/util/ArrayList;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/MutableIndexedList;->add(Ljava/lang/Object;)V
+PLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Lcom/android/server/permission/access/immutable/IndexedListSet;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Ljava/util/ArrayList;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;-><init>(Ljava/util/ArrayList;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedListSet;->add(Ljava/lang/Object;)Z
+HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Landroid/util/ArrayMap;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/MutableIndexedMap;-><init>(Lcom/android/server/permission/access/immutable/IndexedMap;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/permission/access/immutable/MutableIndexedMap;->putAt(ILjava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/permission/access/immutable/MutableIndexedMap;->removeAt(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;-><init>(Landroid/util/ArrayMap;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/MutableIndexedReferenceMap;->put(Ljava/lang/Object;Lcom/android/server/permission/access/immutable/Immutable;)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIndexedSet;-><init>(Landroid/util/ArraySet;)V
+HSPLcom/android/server/permission/access/immutable/MutableIndexedSet;-><init>(Landroid/util/ArraySet;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/MutableIndexedSet;->add(Ljava/lang/Object;)Z
+HSPLcom/android/server/permission/access/immutable/MutableIntMap;-><init>(Landroid/util/SparseArray;)V
+HSPLcom/android/server/permission/access/immutable/MutableIntMap;-><init>(Landroid/util/SparseArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/MutableIntMap;->clear()V
+PLcom/android/server/permission/access/immutable/MutableIntMap;->remove(I)Ljava/lang/Object;
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Landroid/util/SparseArray;)V
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Landroid/util/SparseArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/immutable/MutableIntReferenceMap;-><init>(Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->mutate(I)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIntReferenceMap;->put(ILcom/android/server/permission/access/immutable/Immutable;)Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableIntSet;-><init>(Landroid/util/SparseBooleanArray;)V
+HSPLcom/android/server/permission/access/immutable/MutableIntSet;-><init>(Landroid/util/SparseBooleanArray;ILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HPLcom/android/server/permission/access/immutable/MutableIntSet;->clear()V
+HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;)V
+HSPLcom/android/server/permission/access/immutable/MutableReference;-><init>(Lcom/android/server/permission/access/immutable/Immutable;Lcom/android/server/permission/access/immutable/Immutable;)V
+HSPLcom/android/server/permission/access/immutable/MutableReference;->get()Lcom/android/server/permission/access/immutable/Immutable;
+HSPLcom/android/server/permission/access/immutable/MutableReference;->mutate()Lcom/android/server/permission/access/immutable/Immutable;
+HPLcom/android/server/permission/access/immutable/MutableReference;->toImmutable()Lcom/android/server/permission/access/immutable/MutableReference;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionMigration;-><init>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;-><init>()V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppId(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIntReferenceMap;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppIdPermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseAppIdPermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermission(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/immutable/MutableIndexedMap;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parsePermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;Z)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppId(Lcom/android/modules/utils/BinaryXmlSerializer;ILcom/android/server/permission/access/immutable/IndexedMap;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermission(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;I)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeAppIdPermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/immutable/IntReferenceMap;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermission(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/permission/Permission;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializePermissions(Lcom/android/modules/utils/BinaryXmlSerializer;Ljava/lang/String;Lcom/android/server/permission/access/immutable/IndexedMap;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;-><init>()V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addOnPermissionFlagsChangedListener(Lcom/android/server/permission/access/permission/AppIdPermissionPolicy$OnPermissionFlagsChangedListener;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissionGroups(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->addPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->adoptPermissions(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->canAdoptPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->checkPrivilegedPermissionAllowlist(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackage(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluateAllPermissionStatesForPackageAndUser(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionState(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->evaluatePermissionStateForAllPackages(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageState;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->findPermissionTree(Lcom/android/server/permission/access/GetStateScope;Ljava/lang/String;)Lcom/android/server/permission/access/permission/Permission;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getObjectScheme()Ljava/lang/String;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getOldStatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;)I
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/AccessState;IILjava/lang/String;)I
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionFlags(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;)I
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionGroups(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissionTrees(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPermissions(Lcom/android/server/permission/access/GetStateScope;)Lcom/android/server/permission/access/immutable/IndexedMap;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getPrivilegedPermissionAllowlistState(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getSubjectScheme()Ljava/lang/String;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->getUidPermissionFlags(Lcom/android/server/permission/access/GetStateScope;II)Lcom/android/server/permission/access/immutable/IndexedMap;
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->inheritImplicitPermissionStates(Lcom/android/server/permission/access/MutateStateScope;II)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onInitialized(Lcom/android/server/permission/access/MutateStateScope;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->onSystemReady(Lcom/android/server/permission/access/MutateStateScope;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->parseSystemState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->revokePermissionsOnPackageUpdate(Lcom/android/server/permission/access/MutateStateScope;I)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->serializeSystemState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;)V
+PLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->setPermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;I)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionByProtectionFlags(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPermissionBySignature(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->shouldGrantPrivilegedOrOemPermission(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/permission/access/permission/Permission;)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->trimPermissions(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Lcom/android/server/permission/access/immutable/MutableIndexedSet;)V
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;II)Z
+HPLcom/android/server/permission/access/permission/AppIdPermissionPolicy;->updatePermissionIfDynamic(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/permission/access/permission/Permission;)Lcom/android/server/permission/access/permission/Permission;
+HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/AppIdPermissionUpgrade;-><init>(Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPersistence;-><init>()V
+PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->parseAppIdDevicePermissions(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/permission/DevicePermissionPersistence;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;-><init>()V
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->addOnPermissionFlagsChangedListener(Lcom/android/server/permission/access/permission/DevicePermissionPolicy$OnDevicePermissionFlagsChangedListener;)V
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->getObjectScheme()Ljava/lang/String;
+HSPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->getSubjectScheme()Ljava/lang/String;
+HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStateMutated(Lcom/android/server/permission/access/GetStateScope;)V
+HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->onStorageVolumeMounted(Lcom/android/server/permission/access/MutateStateScope;Ljava/lang/String;Ljava/util/List;Z)V
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->parseUserState(Lcom/android/modules/utils/BinaryXmlPullParser;Lcom/android/server/permission/access/MutableAccessState;I)V
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->serializeUserState(Lcom/android/modules/utils/BinaryXmlSerializer;Lcom/android/server/permission/access/AccessState;I)V
+PLcom/android/server/permission/access/permission/DevicePermissionPolicy;->trimDevicePermissionStates(Lcom/android/server/permission/access/MutateStateScope;Ljava/util/Set;)V
+HPLcom/android/server/permission/access/permission/DevicePermissionPolicy;->trimPermissionStates(Lcom/android/server/permission/access/MutateStateScope;I)V
+HSPLcom/android/server/permission/access/permission/Permission$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/Permission$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+HSPLcom/android/server/permission/access/permission/Permission;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII[IZ)V
+HSPLcom/android/server/permission/access/permission/Permission;-><init>(Landroid/content/pm/PermissionInfo;ZII[IZILcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/permission/Permission;->copy$default(Lcom/android/server/permission/access/permission/Permission;Landroid/content/pm/PermissionInfo;ZII[IZILjava/lang/Object;)Lcom/android/server/permission/access/permission/Permission;
+HPLcom/android/server/permission/access/permission/Permission;->copy(Landroid/content/pm/PermissionInfo;ZII[IZ)Lcom/android/server/permission/access/permission/Permission;
+PLcom/android/server/permission/access/permission/Permission;->getAppId()I
+PLcom/android/server/permission/access/permission/Permission;->getGids()[I
+HPLcom/android/server/permission/access/permission/Permission;->getGidsForUser(I)[I
+HSPLcom/android/server/permission/access/permission/Permission;->getPermissionInfo()Landroid/content/pm/PermissionInfo;
+PLcom/android/server/permission/access/permission/Permission;->getType()I
+PLcom/android/server/permission/access/permission/PermissionFlags;-><clinit>()V
+PLcom/android/server/permission/access/permission/PermissionFlags;-><init>()V
+HPLcom/android/server/permission/access/permission/PermissionFlags;->fromApiFlags(ILcom/android/server/permission/access/permission/Permission;I)I
+HPLcom/android/server/permission/access/permission/PermissionFlags;->isPermissionGranted(I)Z
+HPLcom/android/server/permission/access/permission/PermissionFlags;->toApiFlags(I)I
+PLcom/android/server/permission/access/permission/PermissionFlags;->updateFlags(Lcom/android/server/permission/access/permission/Permission;III)I
+PLcom/android/server/permission/access/permission/PermissionFlags;->updateRuntimePermissionGranted(IZ)I
+HSPLcom/android/server/permission/access/permission/PermissionService$Companion;-><init>()V
+HSPLcom/android/server/permission/access/permission/PermissionService$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;-><init>(Lcom/android/server/permission/access/permission/PermissionService;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onDevicePermissionFlagsChanged(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onPermissionFlagsChanged(IILjava/lang/String;II)V
+HPLcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;->onStateMutated()V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners$Companion;-><init>()V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners$Companion;-><init>(Lcom/android/server/permission/jarjar/kotlin/jvm/internal/DefaultConstructorMarker;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;-><clinit>()V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;->addListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/permission/access/permission/PermissionService$OnPermissionsChangeListeners;->removeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/permission/access/permission/PermissionService$onSystemReady$2;-><init>(Lcom/android/server/permission/access/permission/PermissionService;)V
+HSPLcom/android/server/permission/access/permission/PermissionService;-><clinit>()V
+HSPLcom/android/server/permission/access/permission/PermissionService;-><init>(Lcom/android/server/permission/access/AccessCheckingService;)V
+PLcom/android/server/permission/access/permission/PermissionService;->access$getDevicePolicy$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/DevicePermissionPolicy;
+PLcom/android/server/permission/access/permission/PermissionService;->access$getOnPermissionFlagsChangedListener$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/PermissionService$OnPermissionFlagsChangedListener;
+PLcom/android/server/permission/access/permission/PermissionService;->access$getPolicy$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/permission/AppIdPermissionPolicy;
+PLcom/android/server/permission/access/permission/PermissionService;->access$getService$p(Lcom/android/server/permission/access/permission/PermissionService;)Lcom/android/server/permission/access/AccessCheckingService;
+PLcom/android/server/permission/access/permission/PermissionService;->access$setRuntimePermissionGranted(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService;->access$updatePermissionFlags(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/permission/access/permission/PermissionService;->checkUidPermission(ILjava/lang/String;I)I
+HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfAnyPermission(Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->enforceCallingOrSelfCrossUserPermission(IZZLjava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->filtered(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;II)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+PLcom/android/server/permission/access/permission/PermissionService;->generatePermissionGroupInfo(Landroid/content/pm/PermissionGroupInfo;I)Landroid/content/pm/PermissionGroupInfo;
+PLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo$default(Lcom/android/server/permission/access/permission/PermissionService;Lcom/android/server/permission/access/permission/Permission;IIILjava/lang/Object;)Landroid/content/pm/PermissionInfo;
+HPLcom/android/server/permission/access/permission/PermissionService;->generatePermissionInfo(Lcom/android/server/permission/access/permission/Permission;II)Landroid/content/pm/PermissionInfo;
+HPLcom/android/server/permission/access/permission/PermissionService;->getAllAppOpPermissionPackages()Ljava/util/Map;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtection(I)Ljava/util/List;
+PLcom/android/server/permission/access/permission/PermissionService;->getAllPermissionsWithProtectionFlags(I)Ljava/util/List;
+PLcom/android/server/permission/access/permission/PermissionService;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/permission/access/permission/PermissionService;->getDefaultPermissionGrantFingerprint(I)Ljava/lang/String;
+HPLcom/android/server/permission/access/permission/PermissionService;->getGidsForUid(I)[I
+HPLcom/android/server/permission/access/permission/PermissionService;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;
+HPLcom/android/server/permission/access/permission/PermissionService;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
+HPLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissionState(I)Lcom/android/server/pm/permission/LegacyPermissionState;
+HPLcom/android/server/permission/access/permission/PermissionService;->getLegacyPermissions()Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPackageState(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionFlagsWithPolicy(Lcom/android/server/permission/access/GetStateScope;IILjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/permission/access/permission/PermissionService;->getPermissionGids(Ljava/lang/String;I)[I
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPermissionInfo(Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PermissionInfo;
+HPLcom/android/server/permission/access/permission/PermissionService;->getPersistentDeviceId(I)Ljava/lang/String;
+PLcom/android/server/permission/access/permission/PermissionService;->getSplitPermissions()Ljava/util/List;
+PLcom/android/server/permission/access/permission/PermissionService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/permission/access/permission/PermissionService;->initialize()V
+HPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isPackageVisibleToUid(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;Ljava/lang/String;II)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionGranted(Lcom/android/server/permission/access/GetStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemOrShellUid(I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isRootOrSystemUid(I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isShellUid(I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isSinglePermissionGranted(Lcom/android/server/permission/access/GetStateScope;IIZLjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isSystemUidPermissionGranted(ILjava/lang/String;)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->isUidInstantApp(Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;I)Z
+HPLcom/android/server/permission/access/permission/PermissionService;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/permission/access/permission/PermissionService;->onStorageVolumeMounted(Ljava/lang/String;Z)V
+PLcom/android/server/permission/access/permission/PermissionService;->onSystemReady()V
+PLcom/android/server/permission/access/permission/PermissionService;->readLegacyPermissionStateTEMP()V
+HSPLcom/android/server/permission/access/permission/PermissionService;->readLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
+PLcom/android/server/permission/access/permission/PermissionService;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/permission/access/permission/PermissionService;->setPermissionFlagsWithPolicy(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted$default(Lcom/android/server/permission/access/permission/PermissionService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;ILjava/lang/Object;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted(Lcom/android/server/permission/access/MutateStateScope;Lcom/android/server/pm/pkg/PackageState;ILjava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->setRuntimePermissionGranted(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;)V
+PLcom/android/server/permission/access/permission/PermissionService;->toLegacyPermissions(Lcom/android/server/permission/access/immutable/IndexedMap;)Ljava/util/List;
+HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Lcom/android/server/permission/access/MutateStateScope;IILjava/lang/String;Ljava/lang/String;IIZZZLjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/permission/access/permission/PermissionService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V
+HPLcom/android/server/permission/access/permission/PermissionService;->withFilteredSnapshot(Lcom/android/server/pm/PackageManagerLocal;II)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+PLcom/android/server/permission/access/permission/PermissionService;->writeLegacyPermissionStateTEMP()V
+PLcom/android/server/permission/access/permission/PermissionService;->writeLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
+PLcom/android/server/permission/access/util/IntExtensionsKt;->andInv(II)I
+PLcom/android/server/permission/access/util/IntExtensionsKt;->hasAnyBit(II)Z
+HPLcom/android/server/permission/access/util/IntExtensionsKt;->hasBits(II)Z
+HSPLcom/android/server/permission/access/util/PermissionApex;-><clinit>()V
+HSPLcom/android/server/permission/access/util/PermissionApex;-><init>()V
+HSPLcom/android/server/permission/access/util/PermissionApex;->getApexEnvironment()Landroid/content/ApexEnvironment;
+HSPLcom/android/server/permission/access/util/PermissionApex;->getSystemDataDirectory()Ljava/io/File;
+PLcom/android/server/permission/access/util/PermissionApex;->getUserDataDirectory(I)Ljava/io/File;
+HSPLcom/android/server/permission/jarjar/kotlin/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/permission/jarjar/kotlin/Pair;->component1()Ljava/lang/Object;
+HSPLcom/android/server/permission/jarjar/kotlin/Pair;->component2()Ljava/lang/Object;
+HSPLcom/android/server/permission/jarjar/kotlin/TuplesKt;->to(Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/server/permission/jarjar/kotlin/Pair;
+PLcom/android/server/permission/jarjar/kotlin/Unit;-><clinit>()V
+PLcom/android/server/permission/jarjar/kotlin/Unit;-><init>()V
+HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->asList([Ljava/lang/Object;)Ljava/util/List;
+PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt;->first([Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysJvmKt;->asList([Ljava/lang/Object;)Ljava/util/List;
+HPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->first([Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/permission/jarjar/kotlin/collections/ArraysKt___ArraysKt;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/permission/jarjar/kotlin/collections/ArraysUtilJVM;->asList([Ljava/lang/Object;)Ljava/util/List;
+PLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
+HPLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt$elementAt$1;-><init>(I)V
+PLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt;->elementAt(Ljava/lang/Iterable;I)Ljava/lang/Object;
+HPLcom/android/server/permission/jarjar/kotlin/collections/CollectionsKt___CollectionsKt;->elementAtOrElse(Ljava/lang/Iterable;ILcom/android/server/permission/jarjar/kotlin/jvm/functions/Function1;)Ljava/lang/Object;
+HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;-><clinit>()V
+HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptyMap;-><init>()V
+HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptySet;-><clinit>()V
+HSPLcom/android/server/permission/jarjar/kotlin/collections/EmptySet;-><init>()V
+HSPLcom/android/server/permission/jarjar/kotlin/collections/MapsKt;->emptyMap()Ljava/util/Map;
+HSPLcom/android/server/permission/jarjar/kotlin/collections/MapsKt__MapsKt;->emptyMap()Ljava/util/Map;
+HSPLcom/android/server/permission/jarjar/kotlin/collections/SetsKt;->emptySet()Ljava/util/Set;
+HSPLcom/android/server/permission/jarjar/kotlin/collections/SetsKt__SetsKt;->emptySet()Ljava/util/Set;
+PLcom/android/server/permission/jarjar/kotlin/io/CloseableKt;->closeFinally(Ljava/io/Closeable;Ljava/lang/Throwable;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jdk7/AutoCloseableKt;->closeFinally(Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->areEqual(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullExpressionValue(Ljava/lang/Object;Ljava/lang/String;)V
+HSPLcom/android/server/permission/jarjar/kotlin/jvm/internal/Intrinsics;->checkNotNullParameter(Ljava/lang/Object;Ljava/lang/String;)V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Lambda;-><init>(I)V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Ref$BooleanRef;-><init>()V
+PLcom/android/server/permission/jarjar/kotlin/jvm/internal/Ref$ObjectRef;-><init>()V
+PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt;->coerceAtMost(II)I
+PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt;->coerceAtMost(JJ)J
+PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt___RangesKt;->coerceAtMost(II)I
+PLcom/android/server/permission/jarjar/kotlin/ranges/RangesKt___RangesKt;->coerceAtMost(JJ)J
+HPLcom/android/server/permission/jarjar/kotlin/text/StringsKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/text/StringsKt__StringsJVMKt;->startsWith$default(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
+PLcom/android/server/permission/jarjar/kotlin/text/StringsKt__StringsJVMKt;->startsWith(Ljava/lang/String;Ljava/lang/String;Z)Z
+HSPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile;
+PLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/ApexManager$1;-><init>()V
+HSPLcom/android/server/pm/ApexManager$1;->create()Lcom/android/server/pm/ApexManager;
+HSPLcom/android/server/pm/ApexManager$1;->create()Ljava/lang/Object;
+HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Landroid/apex/ApexInfo;)V
+HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;ZLjava/io/File;Z)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;-><init>()V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->destroyCeSnapshotsNotSpecified(I[I)Z
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActiveApexInfos()Ljava/util/List;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackageNameForApexModuleName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getAllApexInfos()[Landroid/apex/ApexInfo;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApexSystemServices()Ljava/util/List;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApksInApex(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getBackingApexFile(Ljava/io/File;)Ljava/io/File;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getSessions()Landroid/util/SparseArray;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->markBootCompleted()V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->notifyScanResult(Ljava/util/List;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->notifyScanResultLocked(Ljava/util/List;)V
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->registerApkInApex(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->reportErrorWithApkInApex(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->waitForApexService()Landroid/apex/IApexService;
+PLcom/android/server/pm/ApexManager$ScanResult;-><init>(Landroid/apex/ApexInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ApexManager;-><clinit>()V
+HSPLcom/android/server/pm/ApexManager;-><init>()V
+HSPLcom/android/server/pm/ApexManager;->getInstance()Lcom/android/server/pm/ApexManager;
+PLcom/android/server/pm/ApexSystemServiceInfo;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/ApexSystemServiceInfo;->getJarPath()Ljava/lang/String;
+PLcom/android/server/pm/ApexSystemServiceInfo;->getName()Ljava/lang/String;
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/util/List;I)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppDataHelper;ZLcom/android/server/pm/PackageSetting;II)V
+PLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda1;->run()V
+HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/AppDataHelper;Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/AppDataHelper$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/pm/AppDataHelper;->$r8$lambda$2BeLf97yLOm88wYtplb9WF4eyqo(Lcom/android/server/pm/AppDataHelper;ZLcom/android/server/pm/PackageSetting;II)V
+PLcom/android/server/pm/AppDataHelper;->$r8$lambda$M0YumYvb8z5b5xIpxD3ih_G5vRU(Lcom/android/server/pm/AppDataHelper;Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V
+PLcom/android/server/pm/AppDataHelper;->$r8$lambda$YFf7DSMx-MyHV4nCg6MSaBHl8TQ(Lcom/android/server/pm/AppDataHelper;Ljava/util/List;I)V
+HSPLcom/android/server/pm/AppDataHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/AppDataHelper;->assertPackageStorageValid(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/AppDataHelper;->executeBatchLI(Lcom/android/server/pm/Installer$Batch;)V
+PLcom/android/server/pm/AppDataHelper;->fixAppsDataOnBoot()Ljava/util/concurrent/Future;
+HPLcom/android/server/pm/AppDataHelper;->lambda$fixAppsDataOnBoot$3(Ljava/util/List;I)V
+HPLcom/android/server/pm/AppDataHelper;->lambda$prepareAppData$2(Ljava/lang/String;Ljava/lang/String;IILandroid/os/CreateAppDataArgs;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Landroid/os/CreateAppDataResult;Ljava/lang/Throwable;)V
+PLcom/android/server/pm/AppDataHelper;->lambda$prepareAppDataAndMigrate$1(ZLcom/android/server/pm/PackageSetting;II)V
+HPLcom/android/server/pm/AppDataHelper;->maybeMigrateAppDataLIF(Lcom/android/server/pm/PackageSetting;I)Z
+HPLcom/android/server/pm/AppDataHelper;->prepareAppData(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/PackageSetting;III)Ljava/util/concurrent/CompletableFuture;
+HPLcom/android/server/pm/AppDataHelper;->prepareAppDataAndMigrate(Lcom/android/server/pm/Installer$Batch;Lcom/android/server/pm/pkg/AndroidPackage;IIZ)V
+HPLcom/android/server/pm/AppDataHelper;->prepareAppDataContentsLeafLIF(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;II)V
+PLcom/android/server/pm/AppDataHelper;->reconcileAppsData(IIZ)V
+PLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V
+HPLcom/android/server/pm/AppDataHelper;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
+HPLcom/android/server/pm/AppDataHelper;->shouldHaveAppStorage(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppIdSettingMap;-><init>()V
+HSPLcom/android/server/pm/AppIdSettingMap;-><init>(Lcom/android/server/pm/AppIdSettingMap;)V
+HSPLcom/android/server/pm/AppIdSettingMap;->getSetting(I)Lcom/android/server/pm/SettingBase;
+HSPLcom/android/server/pm/AppIdSettingMap;->registerExistingAppId(ILcom/android/server/pm/SettingBase;Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/AppIdSettingMap;->registerObserver(Lcom/android/server/utils/Watcher;)V
+PLcom/android/server/pm/AppIdSettingMap;->removeSetting(I)V
+PLcom/android/server/pm/AppIdSettingMap;->setFirstAvailableAppId(I)V
+HSPLcom/android/server/pm/AppIdSettingMap;->snapshot()Lcom/android/server/pm/AppIdSettingMap;
+PLcom/android/server/pm/AppStateHelper;-><clinit>()V
+PLcom/android/server/pm/AppStateHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;-><init>(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;)V
+HPLcom/android/server/pm/AppsFilterBase$$ExternalSyntheticLambda0;->toString(Ljava/lang/Object;)Ljava/lang/String;
+PLcom/android/server/pm/AppsFilterBase;->$r8$lambda$EzD-3Qgs3agQ0FfI--Dk-PGWLFc(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;Ljava/lang/Integer;)Ljava/lang/String;
+HSPLcom/android/server/pm/AppsFilterBase;-><init>()V
+PLcom/android/server/pm/AppsFilterBase;->dumpForceQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+HPLcom/android/server/pm/AppsFilterBase;->dumpPackageSet(Ljava/io/PrintWriter;Ljava/lang/Object;Landroid/util/ArraySet;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+HPLcom/android/server/pm/AppsFilterBase;->dumpQueries(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/DumpState;[ILcom/android/internal/util/function/QuadFunction;)V
+HPLcom/android/server/pm/AppsFilterBase;->dumpQueriesMap(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/utils/WatchedSparseSetArray;Ljava/lang/String;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaComponent(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+HPLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaImplicitlyQueryable(Ljava/io/PrintWriter;Ljava/lang/Integer;[ILcom/android/server/pm/AppsFilterBase$ToString;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaPackage(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+PLcom/android/server/pm/AppsFilterBase;->dumpQueriesViaUsesLibrary(Ljava/io/PrintWriter;Ljava/lang/Integer;Lcom/android/server/pm/AppsFilterBase$ToString;)V
+PLcom/android/server/pm/AppsFilterBase;->getVisibilityAllowList(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/pkg/PackageStateInternal;[ILandroid/util/ArrayMap;)Landroid/util/SparseArray;
+HPLcom/android/server/pm/AppsFilterBase;->isForceQueryable(I)Z
+HPLcom/android/server/pm/AppsFilterBase;->isImplicitlyQueryable(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponent(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaComponentWhenRequireRecompute(Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaPackage(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesLibrary(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isQueryableViaUsesPermission(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->isRetainedImplicitlyQueryable(II)Z
+HPLcom/android/server/pm/AppsFilterBase;->lambda$dumpQueries$0(Landroid/util/SparseArray;[ILcom/android/internal/util/function/QuadFunction;Ljava/lang/Integer;)Ljava/lang/String;
+PLcom/android/server/pm/AppsFilterBase;->log(Ljava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;Ljava/lang/String;)V
+HSPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplication(Lcom/android/server/pm/snapshot/PackageDataSnapshot;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z
+HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationInternal(Lcom/android/server/pm/Computer;ILjava/lang/Object;Lcom/android/server/pm/pkg/PackageStateInternal;I)Z
+HPLcom/android/server/pm/AppsFilterBase;->shouldFilterApplicationUsingCache(III)Z
+HSPLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V
+PLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Landroid/content/pm/PackageManagerInternal;IJ)V
+PLcom/android/server/pm/AppsFilterImpl$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/pm/AppsFilterImpl$1;-><init>(Lcom/android/server/pm/AppsFilterImpl;Lcom/android/server/pm/AppsFilterSnapshot;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/AppsFilterImpl$1;->createSnapshot()Lcom/android/server/pm/AppsFilterSnapshot;
+HSPLcom/android/server/pm/AppsFilterImpl$1;->createSnapshot()Ljava/lang/Object;
+PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerServiceInjector;)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl-IA;)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;)V
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->enableLogging(IZ)V
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isGloballyEnabled()Z
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->isLoggingEnabled(I)Z
+PLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->onSystemReady()V
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->packageIsEnabled(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->setAppsFilter(Lcom/android/server/pm/AppsFilterImpl;)V
+HSPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->snapshot()Lcom/android/server/pm/FeatureConfig;
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updateEnabledState(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/AppsFilterImpl$FeatureConfigImpl;->updatePackageState(Lcom/android/server/pm/pkg/PackageStateInternal;Z)V
+PLcom/android/server/pm/AppsFilterImpl;->$r8$lambda$z8pKsxG_4fqX35js78wjP4SRLPM(Lcom/android/server/pm/AppsFilterImpl;Landroid/content/pm/PackageManagerInternal;IJ)V
+PLcom/android/server/pm/AppsFilterImpl;->-$$Nest$monChanged(Lcom/android/server/pm/AppsFilterImpl;)V
+HSPLcom/android/server/pm/AppsFilterImpl;-><init>(Lcom/android/server/pm/FeatureConfig;[Ljava/lang/String;ZLcom/android/server/om/OverlayReferenceMapper$Provider;Landroid/os/Handler;)V
+HPLcom/android/server/pm/AppsFilterImpl;->addPackage(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;ZZ)V
+HPLcom/android/server/pm/AppsFilterImpl;->addPackageInternal(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/AppsFilterImpl;->create(Lcom/android/server/pm/PackageManagerServiceInjector;Landroid/content/pm/PackageManagerInternal;)Lcom/android/server/pm/AppsFilterImpl;
+HPLcom/android/server/pm/AppsFilterImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HPLcom/android/server/pm/AppsFilterImpl;->grantImplicitAccess(IIZ)Z
+HPLcom/android/server/pm/AppsFilterImpl;->invalidateCache(Ljava/lang/String;)V
+PLcom/android/server/pm/AppsFilterImpl;->isQueryableViaComponentWhenRequireRecompute(Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;II)Z
+HPLcom/android/server/pm/AppsFilterImpl;->isSystemSigned(Landroid/content/pm/SigningDetails;Lcom/android/server/pm/pkg/PackageStateInternal;)Z
+PLcom/android/server/pm/AppsFilterImpl;->lambda$updateEntireShouldFilterCacheAsync$0(Landroid/content/pm/PackageManagerInternal;IJ)V
+PLcom/android/server/pm/AppsFilterImpl;->logCacheRebuilt(IJII)V
+HPLcom/android/server/pm/AppsFilterImpl;->onChanged()V
+PLcom/android/server/pm/AppsFilterImpl;->onSystemReady(Landroid/content/pm/PackageManagerInternal;)V
+HPLcom/android/server/pm/AppsFilterImpl;->pkgInstruments(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppsFilterImpl;->readCacheEnabledSysProp()V
+PLcom/android/server/pm/AppsFilterImpl;->recomputeComponentVisibility(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/AppsFilterImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/AppsFilterImpl;->snapshot()Lcom/android/server/pm/AppsFilterSnapshot;
+PLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheAsync(Landroid/content/pm/PackageManagerInternal;I)V
+PLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheAsync(Landroid/content/pm/PackageManagerInternal;JI)V
+HPLcom/android/server/pm/AppsFilterImpl;->updateEntireShouldFilterCacheInner(Lcom/android/server/pm/Computer;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;I)V
+PLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForImplicitAccess()V
+PLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForImplicitAccess(Lcom/android/server/utils/WatchedSparseSetArray;)V
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForPackage(Lcom/android/server/pm/Computer;Ljava/lang/String;Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;[Landroid/content/pm/UserInfo;II)V
+HPLcom/android/server/pm/AppsFilterImpl;->updateShouldFilterCacheForUser(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/PackageStateInternal;[Landroid/content/pm/UserInfo;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
+HSPLcom/android/server/pm/AppsFilterLocked;-><init>()V
+HPLcom/android/server/pm/AppsFilterLocked;->isForceQueryable(I)Z
+PLcom/android/server/pm/AppsFilterLocked;->isImplicitlyQueryable(II)Z
+HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaComponent(II)Z
+HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaPackage(II)Z
+HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesLibrary(II)Z
+HPLcom/android/server/pm/AppsFilterLocked;->isQueryableViaUsesPermission(II)Z
+PLcom/android/server/pm/AppsFilterLocked;->isRetainedImplicitlyQueryable(II)Z
+HSPLcom/android/server/pm/AppsFilterSnapshotImpl;-><init>(Lcom/android/server/pm/AppsFilterImpl;)V
+PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility$$ExternalSyntheticLambda0;->call()Ljava/lang/Object;
+PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->$r8$lambda$UMa2mVXysTyYjRdBqkvUdM8dmxQ(Lcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
+PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;-><init>(Landroid/util/ArrayMap;Landroid/util/ArraySet;Lcom/android/server/utils/WatchedArraySet;)V
+HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->execute()Landroid/util/SparseSetArray;
+HPLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->getVisibleListOfQueryViaComponents(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
+PLcom/android/server/pm/AppsFilterUtils$ParallelComputeComponentVisibility;->lambda$execute$0(Lcom/android/server/pm/pkg/PackageStateInternal;)Landroid/util/ArraySet;
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryAsInstaller(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryAsUpdateOwner(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaComponents(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->canQueryViaUsesLibrary(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyComponents(Landroid/content/Intent;Ljava/util/List;Lcom/android/server/utils/WatchedArraySet;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->matchesAnyFilter(Landroid/content/Intent;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/utils/WatchedArraySet;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->matchesIntentFilter(Landroid/content/Intent;Landroid/content/IntentFilter;Lcom/android/server/utils/WatchedArraySet;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->matchesPackage(Landroid/content/Intent;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/utils/WatchedArraySet;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->matchesProviders(Ljava/util/Set;Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/AppsFilterUtils;->requestsQueryAllPackages(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/pm/BackgroundInstallControlCallbackHelper;-><init>()V
+PLcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
+HPLcom/android/server/pm/BackgroundInstallControlService$$ExternalSyntheticLambda0;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/pm/BackgroundInstallControlService$1;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
+PLcom/android/server/pm/BackgroundInstallControlService$BinderService;-><init>(Lcom/android/server/pm/BackgroundInstallControlService;)V
+PLcom/android/server/pm/BackgroundInstallControlService$EventHandler;-><init>(Landroid/os/Looper;Lcom/android/server/pm/BackgroundInstallControlService;)V
+PLcom/android/server/pm/BackgroundInstallControlService$EventHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getBackgroundInstallControlCallbackHelper()Lcom/android/server/pm/BackgroundInstallControlCallbackHelper;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getContext()Landroid/content/Context;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getDiskFile()Ljava/io/File;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getLooper()Landroid/os/Looper;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPackageManager()Landroid/content/pm/PackageManager;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+PLcom/android/server/pm/BackgroundInstallControlService$InjectorImpl;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
+HPLcom/android/server/pm/BackgroundInstallControlService;->$r8$lambda$r3_D5ZCfbKAc8o--pXGNM2kXs6w(Lcom/android/server/pm/BackgroundInstallControlService;ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/pm/BackgroundInstallControlService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/BackgroundInstallControlService;-><init>(Lcom/android/server/pm/BackgroundInstallControlService$Injector;)V
+PLcom/android/server/pm/BackgroundInstallControlService;->handleUsageEvent(Landroid/app/usage/UsageEvents$Event;I)V
+PLcom/android/server/pm/BackgroundInstallControlService;->isInstaller(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/BackgroundInstallControlService;->lambda$new$0(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/pm/BackgroundInstallControlService;->onStart()V
+PLcom/android/server/pm/BackgroundInstallControlService;->onStart(Z)V
+HSPLcom/android/server/pm/BroadcastHelper;-><clinit>()V
+HSPLcom/android/server/pm/BroadcastHelper;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;)V
+PLcom/android/server/pm/BroadcastHelper;->broadcastIntent(Landroid/content/Intent;Landroid/content/IIntentReceiver;ZILandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
+PLcom/android/server/pm/BroadcastHelper;->doSendBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[IZLandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
+PLcom/android/server/pm/BroadcastHelper;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I[ILandroid/util/SparseArray;Ljava/util/function/BiFunction;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/ChangedPackagesTracker;-><init>()V
+PLcom/android/server/pm/ChangedPackagesTracker;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
+PLcom/android/server/pm/ChangedPackagesTracker;->getSequenceNumber()I
+HSPLcom/android/server/pm/CompilerStats;-><init>()V
+PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+PLcom/android/server/pm/CompilerStats;->read()V
+PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ComputerEngine$Settings;)V
+HSPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ComputerEngine;)V
+HPLcom/android/server/pm/ComputerEngine$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/ComputerEngine$Settings;-><init>(Lcom/android/server/pm/ComputerEngine;Lcom/android/server/pm/Settings;)V
+PLcom/android/server/pm/ComputerEngine$Settings;->dumpKeySet(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine$Settings;->dumpPackages(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/ComputerEngine$Settings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine$Settings;->dumpPreferred(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/ComputerEngine$Settings;->dumpSharedUsers(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/ComputerEngine$Settings;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine$Settings;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
+HPLcom/android/server/pm/ComputerEngine$Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getDisabledSystemPackages()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ComputerEngine$Settings;->getDisabledSystemPkg(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getPackages()Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine$Settings;->getSettingBase(I)Lcom/android/server/pm/SettingBase;
+HPLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromAppId(I)Lcom/android/server/pm/pkg/SharedUserApi;
+PLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromId(Ljava/lang/String;)Lcom/android/server/pm/SharedUserSetting;
+HPLcom/android/server/pm/ComputerEngine$Settings;->getSharedUserFromPackageName(Ljava/lang/String;)Lcom/android/server/pm/pkg/SharedUserApi;
+PLcom/android/server/pm/ComputerEngine$Settings;->getVolumePackages(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine$Settings;->isEnabledAndMatch(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z
+PLcom/android/server/pm/ComputerEngine;->$r8$lambda$ZsQO-GMd1VCddKx0WIWHtlgezQI(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
+HSPLcom/android/server/pm/ComputerEngine;-><clinit>()V
+HSPLcom/android/server/pm/ComputerEngine;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;I)V
+HPLcom/android/server/pm/ComputerEngine;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;[Ljava/lang/String;[ZJI)V
+HPLcom/android/server/pm/ComputerEngine;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/pm/ComputerEngine;->areWebInstantAppsDisabled(I)Z
+HPLcom/android/server/pm/ComputerEngine;->canQueryPackage(ILjava/lang/String;)Z
+PLcom/android/server/pm/ComputerEngine;->canViewInstantApps(II)Z
+HPLcom/android/server/pm/ComputerEngine;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/ComputerEngine;->checkSignaturesInternal(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
+HPLcom/android/server/pm/ComputerEngine;->checkUidPermission(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine;->dump(ILjava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine;->dumpKeySet(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine;->dumpPackages(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/ComputerEngine;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
+PLcom/android/server/pm/ComputerEngine;->dumpSharedUsers(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
+HPLcom/android/server/pm/ComputerEngine;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V
+PLcom/android/server/pm/ComputerEngine;->filterAppAccess(II)Z
+HSPLcom/android/server/pm/ComputerEngine;->filterAppAccess(Ljava/lang/String;IIZ)Z
+PLcom/android/server/pm/ComputerEngine;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/ComputerEngine;->filterOnlySystemPackages([Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->filterSdkLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
+HPLcom/android/server/pm/ComputerEngine;->filterSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
+HPLcom/android/server/pm/ComputerEngine;->filterStaticSharedLibPackage(Lcom/android/server/pm/pkg/PackageStateInternal;IIJ)Z
+HPLcom/android/server/pm/ComputerEngine;->generatePackageInfo(Lcom/android/server/pm/pkg/PackageStateInternal;JI)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ComputerEngine;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternal(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->getActivityInfoInternalBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ComputerEngine;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ComputerEngine;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternal(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ComputerEngine;->getApplicationInfoInternalBody(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ComputerEngine;->getBaseSdkSandboxUid()I
+HPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSetting(Landroid/content/ComponentName;II)I
+HPLcom/android/server/pm/ComputerEngine;->getComponentEnabledSettingInternal(Landroid/content/ComponentName;II)I
+HPLcom/android/server/pm/ComputerEngine;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolverApi;
+HPLcom/android/server/pm/ComputerEngine;->getDisabledSystemPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine;->getDisabledSystemPackageStates()Landroid/util/ArrayMap;
+PLcom/android/server/pm/ComputerEngine;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
+HPLcom/android/server/pm/ComputerEngine;->getInstallSource(Ljava/lang/String;II)Lcom/android/server/pm/InstallSource;
+HPLcom/android/server/pm/ComputerEngine;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;
+HPLcom/android/server/pm/ComputerEngine;->getInstalledApplications(JIIZ)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ComputerEngine;->getInstalledPackagesBody(JII)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/ComputerEngine;->getInstallerPackageName(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine;->getInstantAppPackageName(I)Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->getInstrumentationInfoAsUser(Landroid/content/ComponentName;II)Landroid/content/pm/InstrumentationInfo;
+HPLcom/android/server/pm/ComputerEngine;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->getNameForUid(I)Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getNamesForUids([I)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/ComputerEngine;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/ComputerEngine;->getPackageGids(Ljava/lang/String;JI)[I
+HPLcom/android/server/pm/ComputerEngine;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternal(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ComputerEngine;->getPackageInfoInternalBody(Ljava/lang/String;JJII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ComputerEngine;->getPackageStartability(ZLjava/lang/String;II)I
+HPLcom/android/server/pm/ComputerEngine;->getPackageStateFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;
+HPLcom/android/server/pm/ComputerEngine;->getPackageStateForInstalledAndFiltered(Ljava/lang/String;II)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStateInternal(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/ComputerEngine;->getPackageStates()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ComputerEngine;->getPackageUid(Ljava/lang/String;JI)I
+HPLcom/android/server/pm/ComputerEngine;->getPackageUidInternal(Ljava/lang/String;JII)I
+HPLcom/android/server/pm/ComputerEngine;->getPackagesForUid(I)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternal(II)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesForUidInternalBody(IIIZ)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/ComputerEngine;->getPackagesUsingSharedLibrary(Landroid/content/pm/SharedLibraryInfo;JII)Landroid/util/Pair;
+HPLcom/android/server/pm/ComputerEngine;->getPersistentApplications(ZI)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->getProcessesForUid(I)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ComputerEngine;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/ComputerEngine;->getReceiverInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/pm/ComputerEngine;->getServiceInfoBody(Landroid/content/ComponentName;JII)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/pm/ComputerEngine;->getSharedLibraries()Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/ComputerEngine;->getSharedLibraryInfo(Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
+HPLcom/android/server/pm/ComputerEngine;->getSharedUser(I)Lcom/android/server/pm/pkg/SharedUserApi;
+HPLcom/android/server/pm/ComputerEngine;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->getSigningDetails(I)Landroid/content/pm/SigningDetails;
+HPLcom/android/server/pm/ComputerEngine;->getSystemSharedLibraryNamesAndPaths()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ComputerEngine;->getTargetSdkVersion(Ljava/lang/String;)I
+PLcom/android/server/pm/ComputerEngine;->getUidForSharedUser(Ljava/lang/String;)I
+HPLcom/android/server/pm/ComputerEngine;->getUidTargetSdkVersion(I)I
+HPLcom/android/server/pm/ComputerEngine;->getUsed()I
+HPLcom/android/server/pm/ComputerEngine;->getUserInfos()[Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/ComputerEngine;->getUserStateOrDefaultForUser(Ljava/lang/String;I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
+HPLcom/android/server/pm/ComputerEngine;->getVersion()I
+PLcom/android/server/pm/ComputerEngine;->getVisibilityAllowLists(Ljava/lang/String;[I)Landroid/util/SparseArray;
+PLcom/android/server/pm/ComputerEngine;->getVolumePackages(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->hasCrossUserPermission(IIIZZ)Z
+HPLcom/android/server/pm/ComputerEngine;->hasNonNegativePriority(Ljava/util/List;)Z
+PLcom/android/server/pm/ComputerEngine;->hasPermission(Ljava/lang/String;)Z
+PLcom/android/server/pm/ComputerEngine;->instantAppInstallerActivity()Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ComputerEngine;->isApexPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/ComputerEngine;->isCallerSameApp(Ljava/lang/String;IZ)Z
+PLcom/android/server/pm/ComputerEngine;->isComponentEffectivelyEnabled(Landroid/content/pm/ComponentInfo;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/ComputerEngine;->isImplicitImageCaptureIntentAndNotSetByDpc(Landroid/content/Intent;ILjava/lang/String;J)Z
+HPLcom/android/server/pm/ComputerEngine;->isInstantApp(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ComputerEngine;->isInstantAppInternal(Ljava/lang/String;II)Z
+HPLcom/android/server/pm/ComputerEngine;->isInstantAppInternalBody(Ljava/lang/String;II)Z
+HPLcom/android/server/pm/ComputerEngine;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZJ)Z
+HPLcom/android/server/pm/ComputerEngine;->isPackageAvailable(Ljava/lang/String;I)Z
+PLcom/android/server/pm/ComputerEngine;->isPackageStoppedForUser(Ljava/lang/String;I)Z
+PLcom/android/server/pm/ComputerEngine;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ComputerEngine;->isRecentsAccessingChildProfiles(II)Z
+HPLcom/android/server/pm/ComputerEngine;->lambda$static$0(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
+HPLcom/android/server/pm/ComputerEngine;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;JJIIZZ)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentActivitiesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIIZZLjava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/QueryIntentActivitiesResult;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
+HPLcom/android/server/pm/ComputerEngine;->queryIntentServicesInternalBody(Landroid/content/Intent;Ljava/lang/String;JIILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/ComputerEngine;->resolveComponentName()Landroid/content/ComponentName;
+HPLcom/android/server/pm/ComputerEngine;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/ComputerEngine;->resolveExternalPackageName(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
+HPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageName(Ljava/lang/String;J)Ljava/lang/String;
+HSPLcom/android/server/pm/ComputerEngine;->resolveInternalPackageNameInternalLocked(Ljava/lang/String;JI)Ljava/lang/String;
+PLcom/android/server/pm/ComputerEngine;->safeMode()Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/SharedUserSetting;II)Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;II)Z
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZ)Z
+HSPLcom/android/server/pm/ComputerEngine;->shouldFilterApplication(Lcom/android/server/pm/pkg/PackageStateInternal;ILandroid/content/ComponentName;IIZZ)Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/SharedUserSetting;II)Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalled(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
+HPLcom/android/server/pm/ComputerEngine;->shouldFilterApplicationIncludingUninstalledNotArchived(Lcom/android/server/pm/pkg/PackageStateInternal;II)Z
+HPLcom/android/server/pm/ComputerEngine;->updateFlags(JI)J
+PLcom/android/server/pm/ComputerEngine;->updateFlagsForApplication(JI)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForComponent(JI)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForPackage(JI)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZ)J
+HPLcom/android/server/pm/ComputerEngine;->updateFlagsForResolve(JIIZZZ)J
+HSPLcom/android/server/pm/ComputerEngine;->use()Lcom/android/server/pm/Computer;
+HSPLcom/android/server/pm/ComputerLocked;-><init>(Lcom/android/server/pm/PackageManagerService$Snapshot;)V
+PLcom/android/server/pm/CrossProfileAppsService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/CrossProfileAppsService;->onStart()V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/pm/CrossProfileAppsServiceImpl;ILjava/lang/String;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$$ExternalSyntheticLambda7;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->checkComponentPermission(Ljava/lang/String;IIZ)I
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;-><init>(Lcom/android/server/pm/CrossProfileAppsServiceImpl;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;->getTargetUserProfiles(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$LocalService;->verifyUidHasInteractAcrossProfilePermission(Ljava/lang/String;I)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->$r8$lambda$vikD5Mw9q_Jc9YJF2vwkg_I5o_A(Lcom/android/server/pm/CrossProfileAppsServiceImpl;ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->-$$Nest$mgetTargetUserProfilesUnchecked(Lcom/android/server/pm/CrossProfileAppsServiceImpl;Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->-$$Nest$mhasInteractAcrossProfilesPermission(Lcom/android/server/pm/CrossProfileAppsServiceImpl;Ljava/lang/String;II)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getLocalService()Landroid/content/pm/CrossProfileAppsInternal;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->hasInteractAcrossProfilesPermission(Ljava/lang/String;II)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->isPermissionGranted(Ljava/lang/String;I)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->lambda$getTargetUserProfilesUnchecked$3(ILjava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/CrossProfileIntentResolverEngine;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DefaultAppProvider;Landroid/content/Context;)V
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->combineFilterAndCreateQueryActivitiesResponse(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZJIIZLjava/util/List;Ljava/util/List;ZZZLjava/util/function/Function;)Lcom/android/server/pm/QueryIntentActivitiesResult;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveInfoFromCrossProfileDomainInfo(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IJLjava/lang/String;ZZLjava/util/function/Function;)Ljava/util/List;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;IIJLjava/lang/String;ZZLjava/util/function/Function;Ljava/util/Set;)Ljava/util/List;
+HPLcom/android/server/pm/CrossProfileIntentResolverEngine;->shouldSkipCurrentProfile(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;-><init>(Lcom/android/server/pm/DataLoaderManagerService;)V
+HSPLcom/android/server/pm/DataLoaderManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/DataLoaderManagerService;->onStart()V
+HSPLcom/android/server/pm/DefaultAppProvider;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;-><init>(IIZ)V
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addAction(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addCategory(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addDataScheme(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->addDataType(Ljava/lang/String;)Lcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter$Builder;->build()Lcom/android/server/pm/DefaultCrossProfileIntentFilter;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;IIZ)V
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;IIZLcom/android/server/pm/DefaultCrossProfileIntentFilter-IA;)V
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;-><clinit>()V
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultCloneProfileFilters()Ljava/util/List;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultCrossProfileTelephonyIntentFilters(Z)Ljava/util/List;
+HSPLcom/android/server/pm/DefaultCrossProfileIntentFiltersUtils;->getDefaultManagedProfileFilters()Ljava/util/List;
+HSPLcom/android/server/pm/DeletePackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/RemovePackageHelper;Lcom/android/server/pm/BroadcastHelper;)V
+PLcom/android/server/pm/DexOptHelper$1;-><init>(Lcom/android/server/art/ArtManagerLocal;)V
+PLcom/android/server/pm/DexOptHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;-><init>(Lcom/android/server/pm/DexOptHelper;)V
+PLcom/android/server/pm/DexOptHelper$DexoptDoneHandler;-><init>(Lcom/android/server/pm/DexOptHelper;Lcom/android/server/pm/DexOptHelper$DexoptDoneHandler-IA;)V
+HSPLcom/android/server/pm/DexOptHelper;-><clinit>()V
+HSPLcom/android/server/pm/DexOptHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/DexOptHelper;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
+PLcom/android/server/pm/DexOptHelper;->getArtManagerLocal()Lcom/android/server/art/ArtManagerLocal;
+HPLcom/android/server/pm/DexOptHelper;->getBcpApexes()Ljava/util/List;
+HPLcom/android/server/pm/DexOptHelper;->getDexUseManagerLocal()Lcom/android/server/art/DexUseManagerLocal;
+PLcom/android/server/pm/DexOptHelper;->hasBcpApexesChanged()Z
+PLcom/android/server/pm/DexOptHelper;->initializeArtManagerLocal(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/DexOptHelper;->performPackageDexOptUpgradeIfNeeded()V
+HSPLcom/android/server/pm/DexOptHelper;->useArtService()Z
+HSPLcom/android/server/pm/DistractingPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/SuspendPackageHelper;)V
+HSPLcom/android/server/pm/DomainVerificationConnection;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/DomainVerificationConnection;->doesUserExist(I)Z
+HSPLcom/android/server/pm/DomainVerificationConnection;->filterAppAccess(Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/DomainVerificationConnection;->getCallingUid()I
+HSPLcom/android/server/pm/DomainVerificationConnection;->getCallingUserId()I
+HSPLcom/android/server/pm/DomainVerificationConnection;->scheduleWriteSettings()V
+HPLcom/android/server/pm/DumpHelper;-><init>(Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/StorageEventHelper;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/PackageInstallerService;[Ljava/lang/String;Lcom/android/server/pm/KnownPackages;Lcom/android/server/pm/ChangedPackagesTracker;Landroid/util/ArrayMap;Landroid/util/ArraySet;[Landroid/os/incremental/PerUidReadTimeouts;Lcom/android/server/pm/SnapshotStatistics;)V
+PLcom/android/server/pm/DumpHelper;->doDump(Lcom/android/server/pm/Computer;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/DumpState;-><init>()V
+PLcom/android/server/pm/DumpState;->getSharedUser()Lcom/android/server/pm/SharedUserSetting;
+PLcom/android/server/pm/DumpState;->getTargetPackageName()Ljava/lang/String;
+PLcom/android/server/pm/DumpState;->getTitlePrinted()Z
+PLcom/android/server/pm/DumpState;->isCheckIn()Z
+PLcom/android/server/pm/DumpState;->isDumping(I)Z
+PLcom/android/server/pm/DumpState;->isOptionEnabled(I)Z
+HPLcom/android/server/pm/DumpState;->onTitlePrinted()Z
+PLcom/android/server/pm/DumpState;->setOptionEnabled(I)V
+PLcom/android/server/pm/DumpState;->setSharedUser(Lcom/android/server/pm/SharedUserSetting;)V
+PLcom/android/server/pm/DumpState;->setTargetPackageName(Ljava/lang/String;)V
+PLcom/android/server/pm/DumpState;->setTitlePrinted(Z)V
+HSPLcom/android/server/pm/FreeStorageHelper;-><clinit>()V
+HSPLcom/android/server/pm/FreeStorageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/FreeStorageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;Landroid/content/Context;Z)V
+PLcom/android/server/pm/FreeStorageHelper;->performFstrimIfNeeded()V
+PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/GentleUpdateHelper;)V
+HPLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda1;->onUidImportance(II)V
+HPLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/GentleUpdateHelper;Ljava/lang/String;I)V
+PLcom/android/server/pm/GentleUpdateHelper$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/pm/GentleUpdateHelper;->$r8$lambda$9Vy9TsTEIaX26UUSrPw3MGLRU-s(Lcom/android/server/pm/GentleUpdateHelper;Ljava/lang/String;I)V
+HPLcom/android/server/pm/GentleUpdateHelper;->$r8$lambda$JQiy908NuzFx59XC1nxYVaiXKqM(Lcom/android/server/pm/GentleUpdateHelper;II)V
+PLcom/android/server/pm/GentleUpdateHelper;-><clinit>()V
+PLcom/android/server/pm/GentleUpdateHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/pm/AppStateHelper;)V
+PLcom/android/server/pm/GentleUpdateHelper;->lambda$onUidImportance$4(Ljava/lang/String;I)V
+HPLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(II)V
+PLcom/android/server/pm/GentleUpdateHelper;->onUidImportance(Ljava/lang/String;I)V
+PLcom/android/server/pm/GentleUpdateHelper;->systemReady()V
+PLcom/android/server/pm/IPackageManagerBase;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Lcom/android/server/pm/DexOptHelper;Lcom/android/server/pm/ModuleInfoProvider;Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/pm/ResolveIntentHelper;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/DomainVerificationConnection;Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/PackageProperty;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/IPackageManagerBase;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/IPackageManagerBase;->checkSignatures(Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/IPackageManagerBase;->checkUidPermission(Ljava/lang/String;I)I
+PLcom/android/server/pm/IPackageManagerBase;->getActivityInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/IPackageManagerBase;->getApplicationInfo(Ljava/lang/String;JI)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getAttentionServicePackageName()Ljava/lang/String;
+HPLcom/android/server/pm/IPackageManagerBase;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
+PLcom/android/server/pm/IPackageManagerBase;->getDefaultTextClassifierPackageName()Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
+HPLcom/android/server/pm/IPackageManagerBase;->getInstallSourceInfo(Ljava/lang/String;I)Landroid/content/pm/InstallSourceInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/IPackageManagerBase;->getInstalledModules(I)Ljava/util/List;
+HPLcom/android/server/pm/IPackageManagerBase;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/IPackageManagerBase;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getInstrumentationInfoAsUser(Landroid/content/ComponentName;II)Landroid/content/pm/InstrumentationInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+HPLcom/android/server/pm/IPackageManagerBase;->getNameForUid(I)Ljava/lang/String;
+HPLcom/android/server/pm/IPackageManagerBase;->getPackageGids(Ljava/lang/String;JI)[I
+HPLcom/android/server/pm/IPackageManagerBase;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
+HPLcom/android/server/pm/IPackageManagerBase;->getPackageUid(Ljava/lang/String;JI)I
+HPLcom/android/server/pm/IPackageManagerBase;->getPackagesForUid(I)[Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getPackagesHoldingPermissions([Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/IPackageManagerBase;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/IPackageManagerBase;->getPropertyAsUser(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PackageManager$Property;
+HPLcom/android/server/pm/IPackageManagerBase;->getProviderInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getRotationResolverPackageName()Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getSdkSandboxPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/IPackageManagerBase;->getServiceInfo(Landroid/content/ComponentName;JI)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/pm/IPackageManagerBase;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getSetupWizardPackageName()Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getSystemCaptionsServicePackageName()Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getSystemSharedLibraryNames()[Ljava/lang/String;
+PLcom/android/server/pm/IPackageManagerBase;->getSystemTextClassifierPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/IPackageManagerBase;->getTargetSdkVersion(Ljava/lang/String;)I
+PLcom/android/server/pm/IPackageManagerBase;->getUidForSharedUser(Ljava/lang/String;)I
+PLcom/android/server/pm/IPackageManagerBase;->getWellbeingPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/IPackageManagerBase;->hasSystemFeature(Ljava/lang/String;I)Z
+PLcom/android/server/pm/IPackageManagerBase;->hasSystemUidErrors()Z
+PLcom/android/server/pm/IPackageManagerBase;->isDeviceUpgrading()Z
+PLcom/android/server/pm/IPackageManagerBase;->isFirstBoot()Z
+PLcom/android/server/pm/IPackageManagerBase;->isInstantApp(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/IPackageManagerBase;->isPackageAvailable(Ljava/lang/String;I)Z
+PLcom/android/server/pm/IPackageManagerBase;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
+PLcom/android/server/pm/IPackageManagerBase;->isSafeMode()Z
+HPLcom/android/server/pm/IPackageManagerBase;->queryContentProviders(Ljava/lang/String;IJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/IPackageManagerBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/IPackageManagerBase;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/IPackageManagerBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/IPackageManagerBase;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/IPackageManagerBase;->resolveContentProvider(Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/IPackageManagerBase;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/IPackageManagerBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JI)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/IPackageManagerBase;->snapshot()Lcom/android/server/pm/Computer;
+PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/InitAppsHelper;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda1;->forEachPackage(Lcom/android/internal/util/function/TriConsumer;)V
+PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/InitAppsHelper$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/InitAppsHelper;->$r8$lambda$VJZW-c31uI8Yaywv2gsqfy0KEng(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/InitAppsHelper;->$r8$lambda$VWF6nFCGGoc9b6Gi7rkF04KUDnc(Lcom/android/server/pm/InitAppsHelper;Landroid/util/ArrayMap;Lcom/android/internal/util/function/TriConsumer;)V
+PLcom/android/server/pm/InitAppsHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Lcom/android/server/pm/InstallPackageHelper;Ljava/util/List;)V
+PLcom/android/server/pm/InitAppsHelper;->fixSystemPackages([I)V
+PLcom/android/server/pm/InitAppsHelper;->getApexScanPartitions()Ljava/util/List;
+PLcom/android/server/pm/InitAppsHelper;->getDirsToScanAsSystem()Ljava/util/List;
+PLcom/android/server/pm/InitAppsHelper;->getSystemScanPartitions()Ljava/util/List;
+PLcom/android/server/pm/InitAppsHelper;->initNonSystemApps(Lcom/android/internal/pm/parsing/PackageParser2;[IJ)V
+HPLcom/android/server/pm/InitAppsHelper;->initSystemApps(Lcom/android/internal/pm/parsing/PackageParser2;Lcom/android/server/utils/WatchedArrayMap;[IJ)Lcom/android/internal/content/om/OverlayConfig;
+PLcom/android/server/pm/InitAppsHelper;->isExpectingBetter(Ljava/lang/String;)Z
+PLcom/android/server/pm/InitAppsHelper;->lambda$initSystemApps$0(Lcom/android/internal/util/function/TriConsumer;Landroid/util/ArrayMap;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/InitAppsHelper;->lambda$initSystemApps$1(Landroid/util/ArrayMap;Lcom/android/internal/util/function/TriConsumer;)V
+PLcom/android/server/pm/InitAppsHelper;->logNonSystemAppScanningTime(J)V
+PLcom/android/server/pm/InitAppsHelper;->logSystemAppsScanningTime(J)V
+HPLcom/android/server/pm/InitAppsHelper;->resolveApexToScanPartition(Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/ScanPartition;
+PLcom/android/server/pm/InitAppsHelper;->scanApexPackagesTraced(Lcom/android/internal/pm/parsing/PackageParser2;)Ljava/util/List;
+HPLcom/android/server/pm/InitAppsHelper;->scanDirTracedLI(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+HPLcom/android/server/pm/InitAppsHelper;->scanSystemDirs(Lcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)V
+PLcom/android/server/pm/InitAppsHelper;->updateStubSystemAppsList(Ljava/util/List;)V
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda3;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/InstallPackageHelper$$ExternalSyntheticLambda3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/InstallPackageHelper;->$r8$lambda$tl1xpBbhI4eWYKVkhUKxKCDJBRM(Landroid/util/ArrayMap;Lcom/android/server/pm/ParallelPackageParser$ParseResult;Lcom/android/server/pm/ParallelPackageParser$ParseResult;)I
+HSPLcom/android/server/pm/InstallPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/AppDataHelper;Lcom/android/server/pm/RemovePackageHelper;Lcom/android/server/pm/DeletePackageHelper;Lcom/android/server/pm/BroadcastHelper;)V
+HPLcom/android/server/pm/InstallPackageHelper;->addForInitLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/InstallPackageHelper;->adjustScanFlags(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)I
+PLcom/android/server/pm/InstallPackageHelper;->assertOverlayIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
+HPLcom/android/server/pm/InstallPackageHelper;->assertPackageIsValid(Lcom/android/server/pm/pkg/AndroidPackage;II)V
+HPLcom/android/server/pm/InstallPackageHelper;->assertPackageWithSharedUserIdIsPrivileged(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/InstallPackageHelper;->checkExistingBetterPackages(Landroid/util/ArrayMap;Ljava/util/List;II)V
+PLcom/android/server/pm/InstallPackageHelper;->cleanupDisabledPackageSettings(Ljava/util/List;[II)V
+HPLcom/android/server/pm/InstallPackageHelper;->commitPackageSettings(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/ReconciledPackage;)V
+HPLcom/android/server/pm/InstallPackageHelper;->commitReconciledScanResultLocked(Lcom/android/server/pm/ReconciledPackage;[I)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/InstallPackageHelper;->getOriginalPackageLocked(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/InstallPackageHelper;->hasLauncherEntry(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)Z
+HPLcom/android/server/pm/InstallPackageHelper;->installPackagesFromDir(Ljava/io/File;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+PLcom/android/server/pm/InstallPackageHelper;->installSystemStubPackages(Ljava/util/List;I)V
+PLcom/android/server/pm/InstallPackageHelper;->lambda$scanApexPackages$3(Landroid/util/ArrayMap;Lcom/android/server/pm/ParallelPackageParser$ParseResult;Lcom/android/server/pm/ParallelPackageParser$ParseResult;)I
+HPLcom/android/server/pm/InstallPackageHelper;->maybeClearProfilesForUpgradesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/InstallPackageHelper;->needSignatureMatchToSystem(Ljava/lang/String;)Z
+HPLcom/android/server/pm/InstallPackageHelper;->optimisticallyRegisterAppId(Lcom/android/server/pm/InstallRequest;)Z
+HPLcom/android/server/pm/InstallPackageHelper;->prepareInitialScanRequest(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanRequest;
+PLcom/android/server/pm/InstallPackageHelper;->prepareSystemPackageCleanUp(Lcom/android/server/utils/WatchedArrayMap;Ljava/util/List;Landroid/util/ArrayMap;[I)V
+HPLcom/android/server/pm/InstallPackageHelper;->scanApexPackages([Landroid/apex/ApexInfo;IILcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)Ljava/util/List;
+HPLcom/android/server/pm/InstallPackageHelper;->scanPackageNewLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IIJLandroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/pm/ScanResult;
+HPLcom/android/server/pm/InstallPackageHelper;->scanSystemPackageLI(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;)Landroid/util/Pair;
+HPLcom/android/server/pm/InstallRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;IILandroid/os/UserHandle;Lcom/android/server/pm/ScanResult;Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/InstallRequest;->assertScanResultExists()V
+PLcom/android/server/pm/InstallRequest;->getApexModuleName()Ljava/lang/String;
+PLcom/android/server/pm/InstallRequest;->getDisabledPackageSetting()Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/InstallRequest;->getDynamicSharedLibraryInfos()Ljava/util/List;
+HPLcom/android/server/pm/InstallRequest;->getInstallSource()Lcom/android/server/pm/InstallSource;
+PLcom/android/server/pm/InstallRequest;->getParseFlags()I
+PLcom/android/server/pm/InstallRequest;->getParsedPackage()Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+PLcom/android/server/pm/InstallRequest;->getPreVerifiedDomains()Landroid/content/pm/verify/domain/DomainSet;
+HPLcom/android/server/pm/InstallRequest;->getRealPackageName()Ljava/lang/String;
+PLcom/android/server/pm/InstallRequest;->getScanFlags()I
+HPLcom/android/server/pm/InstallRequest;->getScanRequestOldPackage()Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/InstallRequest;->getScanRequestOldPackageSetting()Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/InstallRequest;->getScanRequestOriginalPackageSetting()Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/InstallRequest;->getScanRequestPackageSetting()Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/InstallRequest;->getScannedPackageSetting()Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/InstallRequest;->getSdkSharedLibraryInfo()Landroid/content/pm/SharedLibraryInfo;
+HPLcom/android/server/pm/InstallRequest;->getStaticSharedLibraryInfo()Landroid/content/pm/SharedLibraryInfo;
+PLcom/android/server/pm/InstallRequest;->getUserId()I
+HPLcom/android/server/pm/InstallRequest;->isExistingSettingCopied()Z
+HPLcom/android/server/pm/InstallRequest;->isForceQueryableOverride()Z
+PLcom/android/server/pm/InstallRequest;->isInstallReplace()Z
+PLcom/android/server/pm/InstallRequest;->isInstallSystem()Z
+HPLcom/android/server/pm/InstallRequest;->isRollback()Z
+HPLcom/android/server/pm/InstallRequest;->needsNewAppId()Z
+HPLcom/android/server/pm/InstallRequest;->onReconcileFinished()V
+HPLcom/android/server/pm/InstallRequest;->onReconcileStarted()V
+PLcom/android/server/pm/InstallRequest;->setApexModuleName(Ljava/lang/String;)V
+PLcom/android/server/pm/InstallRequest;->setLibraryConsumers(Ljava/util/ArrayList;)V
+HPLcom/android/server/pm/InstallRequest;->setScannedPackageSettingAppId(I)V
+HSPLcom/android/server/pm/InstallSource;-><clinit>()V
+HSPLcom/android/server/pm/InstallSource;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/pm/PackageSignatures;I)V
+HSPLcom/android/server/pm/InstallSource;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZ)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->createInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZZLcom/android/server/pm/PackageSignatures;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->intern(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/InstallSource;->setIsOrphaned(Z)Lcom/android/server/pm/InstallSource;
+HPLcom/android/server/pm/InstallSource;->setUpdateOwnerPackageName(Ljava/lang/String;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/Installer$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Installer;)V
+PLcom/android/server/pm/Installer$Batch;-><init>()V
+PLcom/android/server/pm/Installer$Batch;->createAppData(Landroid/os/CreateAppDataArgs;)Ljava/util/concurrent/CompletableFuture;
+HPLcom/android/server/pm/Installer$Batch;->execute(Lcom/android/server/pm/Installer;)V
+HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V
+HPLcom/android/server/pm/Installer;->buildCreateAppDataArgs(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;IZ)Landroid/os/CreateAppDataArgs;
+HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z
+PLcom/android/server/pm/Installer;->cleanupInvalidPackageDirs(Ljava/lang/String;II)V
+HSPLcom/android/server/pm/Installer;->connect()V
+PLcom/android/server/pm/Installer;->createAppDataBatched([Landroid/os/CreateAppDataArgs;)[Landroid/os/CreateAppDataResult;
+PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V
+PLcom/android/server/pm/Installer;->destroyCeSnapshotsNotSpecified(I[I)Z
+HSPLcom/android/server/pm/Installer;->executeDeferredActions()V
+PLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/Installer;->invalidateMounts()V
+PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/Installer;->onStart()V
+PLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/InstantAppRegistry$1;-><init>(Lcom/android/server/pm/InstantAppRegistry;)V
+HSPLcom/android/server/pm/InstantAppRegistry$2;-><init>(Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/InstantAppRegistry$2;->createSnapshot()Lcom/android/server/pm/InstantAppRegistry;
+HSPLcom/android/server/pm/InstantAppRegistry$2;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V
+HSPLcom/android/server/pm/InstantAppRegistry;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/InstantAppRegistry;)Lcom/android/server/utils/WatchableImpl;
+HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Lcom/android/server/pm/UserManagerInternal;Lcom/android/server/pm/DeletePackageHelper;)V
+HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/InstantAppRegistry;)V
+HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/InstantAppRegistry;Lcom/android/server/pm/InstantAppRegistry-IA;)V
+HSPLcom/android/server/pm/InstantAppRegistry;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/InstantAppRegistry;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/InstantAppRegistry;->snapshot()Lcom/android/server/pm/InstantAppRegistry;
+PLcom/android/server/pm/InstantAppResolverConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
+PLcom/android/server/pm/InstantAppResolverConnection$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;-><init>(Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;)V
+PLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;-><init>()V
+PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
+PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;Lcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection-IA;)V
+PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/pm/InstantAppResolverConnection;->$r8$lambda$66W2s2mMKe4pk_xXCScH9RCqav8(Lcom/android/server/pm/InstantAppResolverConnection;)V
+PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fgetmBindState(Lcom/android/server/pm/InstantAppResolverConnection;)I
+PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fgetmLock(Lcom/android/server/pm/InstantAppResolverConnection;)Ljava/lang/Object;
+PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$fputmRemoteInstance(Lcom/android/server/pm/InstantAppResolverConnection;Landroid/app/IInstantAppResolver;)V
+PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$sfgetCALL_SERVICE_TIMEOUT_MS()J
+PLcom/android/server/pm/InstantAppResolverConnection;->-$$Nest$sfgetDEBUG_INSTANT()Z
+PLcom/android/server/pm/InstantAppResolverConnection;-><clinit>()V
+PLcom/android/server/pm/InstantAppResolverConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/pm/InstantAppResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
+PLcom/android/server/pm/InstantAppResolverConnection;->lambda$optimisticBind$0()V
+PLcom/android/server/pm/InstantAppResolverConnection;->optimisticBind()V
+PLcom/android/server/pm/InstantAppResolverConnection;->waitForBindLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/InstructionSets;-><clinit>()V
+HPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String;
+HPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Lcom/android/server/pm/PackageAbiHelper$Abis;)Ljava/lang/String;
+HSPLcom/android/server/pm/KeySetHandle;-><init>(JI)V
+HSPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I
+HSPLcom/android/server/pm/KeySetHandle;->setRefCountLPw(I)V
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;)V
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JILjava/security/PublicKey;Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle-IA;)V
+PLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey;
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V
+HSPLcom/android/server/pm/KeySetManagerService;-><init>(Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/utils/WatchedArrayMap;)V
+HSPLcom/android/server/pm/KeySetManagerService;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
+HPLcom/android/server/pm/KeySetManagerService;->addDefinedKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
+HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V
+HPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V
+HPLcom/android/server/pm/KeySetManagerService;->addUpgradeKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Set;)V
+HPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
+HPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/KeySetManagerService;->readKeySetListLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/pm/KeySetManagerService;->shouldCheckUpgradeKeySetLocked(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/SharedUserApi;I)Z
+PLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/pm/KnownPackages;-><init>(Lcom/android/server/pm/DefaultAppProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/KnownPackages;->getKnownPackageNames(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;
+PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(Landroid/os/UserHandle;Ljava/lang/String;II)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$LocalService;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->$r8$lambda$vtWdDInHNEcUSDBzImmSY0mx-XU(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor-IA;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$onShortcutChanged$0(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChanged(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageRemovedListener-IA;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$ShortcutChangeHandler;-><init>(Lcom/android/server/pm/UserManagerInternal;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->$r8$lambda$kx0EDd9EHlGq1e2ICkr064uuOvo(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$fgetmListeners(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$fgetmShortcutServiceInternal(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$misEnabledProfileOf(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->-$$Nest$misPackageVisibleToListener(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Ljava/lang/String;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(IIIILjava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(IILjava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->generateLauncherActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getActivitiesForArchivedApp(Ljava/lang/String;Landroid/os/UserHandle;Landroid/content/pm/ParceledListSlice;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfoListForAllArchivedApps(Landroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;Landroid/content/pm/ShortcutQueryWrapper;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasDefaultEnableLauncherActivity(Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isManagedProfileAdmin(Landroid/os/UserHandle;Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageVisibleToListener(Ljava/lang/String;Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->lambda$registerLoadingProgressForIncrementalApps$6(Landroid/os/UserHandle;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryIntentLauncherActivities(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->registerLoadingProgressForIncrementalApps()V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->requestsPermissions(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldShowSyntheticActivity(Landroid/os/UserHandle;Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsServiceInternal;-><init>()V
+PLcom/android/server/pm/LauncherAppsService;-><clinit>()V
+PLcom/android/server/pm/LauncherAppsService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/LauncherAppsService;->onStart()V
+PLcom/android/server/pm/ModuleInfoProvider;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/ModuleInfoProvider;->getInstalledModules(I)Ljava/util/List;
+PLcom/android/server/pm/ModuleInfoProvider;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+PLcom/android/server/pm/ModuleInfoProvider;->getPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/pm/ModuleInfoProvider;->loadModuleMetadata(Landroid/content/res/XmlResourceParser;Landroid/content/res/Resources;)V
+PLcom/android/server/pm/ModuleInfoProvider;->systemReady()V
+HSPLcom/android/server/pm/MovePackageHelper$MoveCallbacks;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/pm/OtaDexoptService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService;
+PLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V
+HPLcom/android/server/pm/PackageAbiHelper$Abis;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;-><init>(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
+HSPLcom/android/server/pm/PackageAbiHelperImpl;-><init>()V
+HPLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+HPLcom/android/server/pm/PackageAbiHelperImpl;->deriveNativeLibraryPaths(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/io/File;)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+PLcom/android/server/pm/PackageAbiHelperImpl;->derivePackageAbi(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/String;Ljava/io/File;)Landroid/util/Pair;
+PLcom/android/server/pm/PackageAbiHelperImpl;->getAdjustedAbiForSharedUser(Landroid/util/ArraySet;Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
+PLcom/android/server/pm/PackageAbiHelperImpl;->shouldExtractLibs(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Z
+HSPLcom/android/server/pm/PackageArchiver;-><clinit>()V
+PLcom/android/server/pm/PackageArchiver;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageArchiver;->isArchived(Lcom/android/server/pm/pkg/PackageUserState;)Z
+PLcom/android/server/pm/PackageArchiver;->isArchivingEnabled()Z
+HSPLcom/android/server/pm/PackageDexOptimizer$1;-><init>()V
+HSPLcom/android/server/pm/PackageDexOptimizer$1;->getPowerManager(Landroid/content/Context;)Landroid/os/PowerManager;
+HSPLcom/android/server/pm/PackageDexOptimizer;-><clinit>()V
+HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/PackageDexOptimizer$Injector;Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageDexOptimizer;->systemReady()V
+HSPLcom/android/server/pm/PackageHandler;-><init>(Landroid/os/Looper;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageHandler;->doHandleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/PackageHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda4;-><init>(I)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/Computer;I)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService$$ExternalSyntheticLambda6;->get()Ljava/lang/Object;
+PLcom/android/server/pm/PackageInstallerService$1;-><init>()V
+PLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerService$BroadcastCookie;-><init>(ILjava/util/function/IntPredicate;)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;-><init>(Lcom/android/server/pm/PackageInstallerService;Landroid/os/Looper;)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;Lcom/android/server/pm/PackageInstallerService$BroadcastCookie;)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/pm/PackageInstallerService$Lifecycle;->onStart()V
+PLcom/android/server/pm/PackageInstallerService;->$r8$lambda$wY7L0Z422az4MHHhP9QFuryN2S8(Lcom/android/server/pm/PackageInstallerService;)Ljava/lang/Boolean;
+PLcom/android/server/pm/PackageInstallerService;->-$$Nest$monBroadcastReady(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService;-><clinit>()V
+HPLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Ljava/util/function/Supplier;)V
+PLcom/android/server/pm/PackageInstallerService;->expireSessionsLocked()V
+PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageInstallerService;->getStagedSessions()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageInstallerService;->getStagingDirsOnVolume(Ljava/lang/String;)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageInstallerService;->getStagingManager()Lcom/android/server/pm/StagingManager;
+PLcom/android/server/pm/PackageInstallerService;->getTmpSessionDir(Ljava/lang/String;)Ljava/io/File;
+HPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerService;->lambda$new$0()Ljava/lang/Boolean;
+PLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageInstallerService;->onBroadcastReady()V
+PLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V
+PLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V
+PLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;Ljava/util/function/IntPredicate;)V
+PLcom/android/server/pm/PackageInstallerService;->removeStagingDirs(Landroid/util/ArraySet;)V
+PLcom/android/server/pm/PackageInstallerService;->restoreAndApplyStagedSessionIfNeeded()V
+PLcom/android/server/pm/PackageInstallerService;->systemReady()V
+PLcom/android/server/pm/PackageInstallerService;->writeSessions()Z
+HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
+HSPLcom/android/server/pm/PackageKeySetData;-><init>(Lcom/android/server/pm/PackageKeySetData;)V
+PLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap;
+PLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J
+PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z
+HPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z
+HPLcom/android/server/pm/PackageKeySetData;->removeAllDefinedKeySets()V
+HPLcom/android/server/pm/PackageKeySetData;->removeAllUpgradeKeySets()V
+HPLcom/android/server/pm/PackageKeySetData;->setAliases(Ljava/util/Map;)V
+HSPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V
+PLcom/android/server/pm/PackageList;-><init>(Ljava/util/List;Landroid/content/pm/PackageManagerInternal$PackageListObserver;)V
+PLcom/android/server/pm/PackageList;->getPackageNames()Ljava/util/List;
+PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;Ljava/lang/Throwable;)V
+HSPLcom/android/server/pm/PackageManagerInternalBase;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerInternalBase;->canAccessInstantApps(II)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->canQueryPackage(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(II)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->filterAppAccess(Ljava/lang/String;IIZ)Z
+PLcom/android/server/pm/PackageManagerInternalBase;->forEachInstalledPackage(Ljava/util/function/Consumer;I)V
+PLcom/android/server/pm/PackageManagerInternalBase;->forEachPackage(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/PackageManagerInternalBase;->forEachPackageState(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationEnabledState(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerInternalBase;->getApplicationInfo(Ljava/lang/String;JII)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getDisabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageManagerInternalBase;->getDistractingPackageRestrictions(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerInternalBase;->getEnabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/pm/PackageManagerInternalBase;->getInstalledApplications(JII)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerInternalBase;->getInstalledApplicationsCrossUser(JII)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getInstantAppPackageName(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerInternalBase;->getKnownPackageNames(II)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(I)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageInfo(Ljava/lang/String;JII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageStateInternal(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateInternal;
+PLcom/android/server/pm/PackageManagerInternalBase;->getPackageTargetSdkVersion(Ljava/lang/String;)I
+HPLcom/android/server/pm/PackageManagerInternalBase;->getPackageUid(Ljava/lang/String;JI)I
+PLcom/android/server/pm/PackageManagerInternalBase;->getPermissionGids(Ljava/lang/String;I)[I
+HPLcom/android/server/pm/PackageManagerInternalBase;->getProcessesForUid(I)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerInternalBase;->getSystemUiServiceComponent()Landroid/content/ComponentName;
+HPLcom/android/server/pm/PackageManagerInternalBase;->getUidTargetSdkVersion(I)I
+HPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZ)V
+HPLcom/android/server/pm/PackageManagerInternalBase;->grantImplicitAccess(ILandroid/content/Intent;IIZZ)V
+HPLcom/android/server/pm/PackageManagerInternalBase;->isInstantApp(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerInternalBase;->isInstantAppInstallerComponent(Landroid/content/ComponentName;)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageEphemeral(ILjava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageFrozen(Ljava/lang/String;II)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageStateProtected(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerInternalBase;->isPackageStopped(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->isPackageSuspended(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerInternalBase;->notifyComponentUsed(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerInternalBase;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerInternalBase;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerInternalBase;->reconcileAppsData(IIZ)V
+PLcom/android/server/pm/PackageManagerInternalBase;->resolveContentProvider(Ljava/lang/String;JII)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/pm/PackageManagerInternalBase;->resolveIntentExported(Landroid/content/Intent;Ljava/lang/String;JJIZII)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerInternalBase;->resolveService(Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerInternalBase;->setPackageStoppedState(Ljava/lang/String;ZI)V
+HSPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/Computer;
+HPLcom/android/server/pm/PackageManagerInternalBase;->snapshot()Lcom/android/server/pm/snapshot/PackageDataSnapshot;
+PLcom/android/server/pm/PackageManagerInternalBase;->wasPackageEverLaunched(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerNative;->getInstallerForPackage(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerNative;->getTargetSdkVersionForPackage(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerNative;->getVersionCodeForPackage(Ljava/lang/String;)J
+PLcom/android/server/pm/PackageManagerNative;->hasSystemFeature(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerNative;->isAudioPlaybackCaptureAllowed([Ljava/lang/String;)[Z
+PLcom/android/server/pm/PackageManagerNative;->registerStagedApexObserver(Landroid/content/pm/IStagedApexObserver;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda10;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda11;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda12;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda13;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda14;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda15;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda16;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda17;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda18;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda19;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda20;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda21;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda22;->produce(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda23;->produce(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda24;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda25;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda26;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda27;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda28;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda29;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda30;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda32;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda33;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda34;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda35;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda36;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda37;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda38;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;-><init>(Lcom/android/server/pm/PackageManagerService;Z)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda40;->run()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/pm/PackageManagerService;[I)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda43;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;-><init>(IZZ)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda44;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda45;->run()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda46;->run()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda48;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda4;->apply(I)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda50;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda51;-><init>()V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;-><init>(ILjava/util/function/Consumer;)V
+HPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda55;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda63;-><init>(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;)V
+PLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda63;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda6;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda7;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda8;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$$ExternalSyntheticLambda9;->produce(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/PackageManagerService$2;-><init>()V
+PLcom/android/server/pm/PackageManagerService$2;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/pm/PackageManagerService$3;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/compat/PlatformCompat;)V
+PLcom/android/server/pm/PackageManagerService$4;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/pm/PackageManagerService$4;->onChange(Z)V
+PLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;-><init>()V
+HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;-><init>(Lcom/android/server/pm/PackageManagerService$DefaultSystemWrapper-IA;)V
+HSPLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;->disablePackageCaches()V
+PLcom/android/server/pm/PackageManagerService$DefaultSystemWrapper;->enablePackageCaches()V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/Computer;II)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->checkPackageStartable(Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getPermissionControllerPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSplashScreenTheme(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->isProtectedBroadcast(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->logAppProcessStartIfNeeded(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyDexLoad(Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->notifyPackageUse(Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->queryProperty(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->registerPackageMonitorCallback(Landroid/os/IRemoteCallback;I)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setComponentEnabledSetting(Landroid/content/ComponentName;IIILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$IPackageManagerImpl;->setPackageStoppedState(Ljava/lang/String;ZI)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda3;-><init>(Ljava/util/List;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda4;-><init>(Ljava/util/ArrayList;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$6BzoV0knGY9C14_caifkEEMMdVU(Ljava/util/List;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$EQuwNqG4N0yM_qw6ZX3BhqlsDtw(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->$r8$lambda$oFinl0bGSorgAoKfFRg-vRv_2cE(Lcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getAppDataHelper()Lcom/android/server/pm/AppDataHelper;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getContext()Landroid/content/Context;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledSystemPackageName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getIncrementalStatesInfo(Ljava/lang/String;II)Landroid/content/pm/IncrementalStatesInfo;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageList(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)Lcom/android/server/pm/PackageList;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPermissionManager()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getProtectedPackages()Lcom/android/server/pm/ProtectedPackages;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getResolveIntentHelper()Lcom/android/server/pm/ResolveIntentHelper;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendPackageHelper()Lcom/android/server/pm/SuspendPackageHelper;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasSignatureCapability(III)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPlatformSigned(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;II)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isSameApp(Ljava/lang/String;JII)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$getPackageList$0(Ljava/util/ArrayList;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$getTargetPackageNames$2(Ljava/util/List;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->lambda$sendPackageRestartedBroadcast$4(Ljava/lang/String;Landroid/os/Bundle;I[ILandroid/util/SparseArray;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyPackageUse(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->sendPackageRestartedBroadcast(Ljava/lang/String;II)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V
+HSPLcom/android/server/pm/PackageManagerService$Snapshot;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$3kw1stMVsxw0hUSyOsS2FPnzpHQ(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$49MB1VcYhb5vNzYT8bGtg2MigyY(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/SystemConfig;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$5zfMCrLbAea9InASGoniwjwLP1g(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ak19Qy9hQiUyM128pbH0sxNNbxE(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/Handler;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$AtsdeBa8co53jl7kYt8ysrzmEo8(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/pm/parsing/PackageParser2;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$JCnmoBuRlexuCDDmhAlJO4FAjhg(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;Lcom/android/server/pm/pkg/mutate/PackageStateMutator;)V
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$LT765XNHeztBOay7rENBSJ4FpQo(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/Settings;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ob4Lx_QzpY-udQ1-YTziQadgFcc(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$OdKicpQs5x3SrKKW4-UnxBv2k4k(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/ArtManagerService;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$P8SY61CGf4lgD7vmEgc6OJo18Jc(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$RJDxvoMUIzns2AakZT-srNoyjqA(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BackgroundDexOptService;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$SVfaWm0ftYEb_i0fK608nQic6a8(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$Sj0TiBD2qrAz-kSBJZjvN19KwM8(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$Ss9DVkISkXku8V-CYhxH_GTx3uk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$WTjLzvsZwKnygY1dXmiEXrU4wns(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$XIxgBW0a_Dim0prfYI26N63QYA8(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$XK0jyd8NWE8sX2dLVxJDSWyX-fc(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/resolution/ComponentResolver;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$bP6O2EM4vQjnURNcnMI3AEd8jvE(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ApexManager;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$biXVbknQI0VSnqBwrsRYdId7lOg(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/util/DisplayMetrics;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$cgf9HzQDpIYBAM1FfODw1LJfeaA(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$f76IiBvzWjWrK7cEm3Fwh4D5vPI(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageDexOptimizer;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$g8phPHwnEQKwNibO76kbTV-ernk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UpdateOwnershipHelper;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$gIhdWIFiJVJIMETTUG8yHCSxQyU(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DexManager;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$gt9gWkZ6s9W-_z9hX2383OetJQg(Lcom/android/server/pm/verify/domain/DomainVerificationService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$hV-hx61rt_I-GSVq2c9QBKlQU-A(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilterImpl;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$jI7_wgzMOIg2_ALwQh3N7aqxwk0(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$kLempGNYbwTngE5VfwmJi2ujEMA(Lcom/android/server/pm/PackageManagerService;[ILcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$lrT8YtmB66bCdNFFrQigcIEKlkk(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageInstallerService;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$o-iKpv5pW-KnOFqF1r6GTvXljZ0(IZZLcom/android/server/pm/pkg/mutate/PackageStateWrite;)V
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$peRMMEdjCdKA187FsiE-4lz5Nvw(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DynamicCodeLogger;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$x-LxCO1xlxJ6o3haCm6qjxrkCF4(Lcom/android/server/pm/PackageManagerService;Z)V
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$xeK55D47HzV-aDVTdJQUUfbLB-s(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
+PLcom/android/server/pm/PackageManagerService;->$r8$lambda$ycLid5CfrcIKxha4GPTBH7u22Kc(I)[Ljava/lang/Integer;
+HSPLcom/android/server/pm/PackageManagerService;->$r8$lambda$yd0vfnhyLdiG7JVKGsIrzU91iec(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAndroidApplication(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAppDataHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppDataHelper;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmAvailableFeatures(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmBroadcastHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BroadcastHelper;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDefaultAppProvider(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDexOptHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DexOptHelper;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmDomainVerificationConnection(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DomainVerificationConnection;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmFrozenPackagesSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstantAppInstallerInfo(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstrumentation(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmInstrumentationSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmIsolatedOwnersSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmModuleInfoProvider(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageMonitorCallbackHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageObserverHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageObserverHelper;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackageProperty(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageProperty;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPackagesSnapshot(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPlatformPackage(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/pkg/AndroidPackage;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmPreferredActivityHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PreferredActivityHelper;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmResolveActivity(Lcom/android/server/pm/PackageManagerService;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmResolveIntentHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ResolveIntentHelper;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSharedLibraries(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSnapshotStatistics(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SnapshotStatistics;
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmStorageEventHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/StorageEventHelper;
+HPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmSuspendPackageHelper(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SuspendPackageHelper;
+HSPLcom/android/server/pm/PackageManagerService;->-$$Nest$fgetmWebInstantAppsDisabled(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/utils/WatchedSparseBooleanArray;
+HPLcom/android/server/pm/PackageManagerService;->-$$Nest$mnotifyPackageUseInternal(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->-$$Nest$msetEnabledOverlayPackages(Lcom/android/server/pm/PackageManagerService;ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
+HPLcom/android/server/pm/PackageManagerService;->-$$Nest$msetEnabledSettings(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;ILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;-><clinit>()V
+HSPLcom/android/server/pm/PackageManagerService;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector;ZLjava/lang/String;ZZILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->addAllPackageProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/PackageManagerService;->addInstrumentation(Landroid/content/ComponentName;Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;)V
+PLcom/android/server/pm/PackageManagerService;->applyUpdatedSystemOverlayPaths()V
+HSPLcom/android/server/pm/PackageManagerService;->boostPriorityForPackageManagerTracedLockedSection()V
+PLcom/android/server/pm/PackageManagerService;->canSetOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;Landroid/content/pm/overlay/OverlayPaths;)Z
+HPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Lcom/android/server/pm/Computer;Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerService;->commitPackageStateMutation(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;Ljava/lang/String;Ljava/util/function/Consumer;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
+PLcom/android/server/pm/PackageManagerService;->commitPackageStateMutation(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;Ljava/util/function/Consumer;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
+HSPLcom/android/server/pm/PackageManagerService;->createLiveComputer()Lcom/android/server/pm/ComputerLocked;
+PLcom/android/server/pm/PackageManagerService;->disableSkuSpecificApps()V
+PLcom/android/server/pm/PackageManagerService;->ensureSystemPackageName(Lcom/android/server/pm/Computer;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->forEachInstalledPackage(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;I)V
+HPLcom/android/server/pm/PackageManagerService;->forEachPackage(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/PackageManagerService;->forEachPackageState(Landroid/util/ArrayMap;Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/PackageManagerService;->forEachPackageState(Lcom/android/server/pm/Computer;Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/PackageManagerService;->getAppInstallDir()Ljava/io/File;
+PLcom/android/server/pm/PackageManagerService;->getCoreAndroidApplication()Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/PackageManagerService;->getDefParseFlags()I
+HSPLcom/android/server/pm/PackageManagerService;->getDefaultAppProvider()Lcom/android/server/pm/DefaultAppProvider;
+PLcom/android/server/pm/PackageManagerService;->getDefaultTimeouts()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getDexManager()Lcom/android/server/pm/dex/DexManager;
+PLcom/android/server/pm/PackageManagerService;->getDexOptHelper()Lcom/android/server/pm/DexOptHelper;
+PLcom/android/server/pm/PackageManagerService;->getDomainVerificationAgentComponentNameLPr(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService;->getInstantAppResolver(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Lcom/android/server/pm/Computer;Landroid/content/ComponentName;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr(Lcom/android/server/pm/Computer;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->getKnownDigestersList()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getKnownPackageNamesInternal(Lcom/android/server/pm/Computer;II)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getPackageFromComponentString(I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getPackageSettingForMutation(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+PLcom/android/server/pm/PackageManagerService;->getPerUidReadTimeouts(Lcom/android/server/pm/Computer;)[Landroid/os/incremental/PerUidReadTimeouts;
+HPLcom/android/server/pm/PackageManagerService;->getPlatformPackage()Lcom/android/server/pm/pkg/AndroidPackage;
+PLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifiersLPr(Lcom/android/server/pm/Computer;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredPermissionControllerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredSdkSandboxPackageName(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredServicesExtensionPackageLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibrary(Lcom/android/server/pm/Computer;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getRetailDemoPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getSafeMode()Z
+PLcom/android/server/pm/PackageManagerService;->getSdkSandboxPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getSdkVersion()I
+HPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/server/pm/Settings$VersionInfo;
+PLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageNameImpl(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName(Lcom/android/server/pm/Computer;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getSystemPackageScanFlags(Ljava/io/File;)I
+HPLcom/android/server/pm/PackageManagerService;->grantImplicitAccess(Lcom/android/server/pm/Computer;ILandroid/content/Intent;IIZZ)V
+HPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->installAllowlistedSystemPackages()V
+HSPLcom/android/server/pm/PackageManagerService;->invalidatePackageInfoCache()V
+HPLcom/android/server/pm/PackageManagerService;->isDeviceUpgrading()Z
+PLcom/android/server/pm/PackageManagerService;->isExpectingBetter(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z
+HPLcom/android/server/pm/PackageManagerService;->isPreNMR1Upgrade()Z
+HPLcom/android/server/pm/PackageManagerService;->lambda$forEachInstalledPackage$60(ILjava/util/function/Consumer;Lcom/android/server/pm/pkg/PackageStateInternal;)V
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$12(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/resolution/ComponentResolver;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$13(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$14(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$15(Lcom/android/server/pm/verify/domain/DomainVerificationService;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$16(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilterImpl;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$17(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$18(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/SystemConfig;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$19(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageDexOptimizer;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$20(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DexManager;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$21(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/DynamicCodeLogger;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$22(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/dex/ArtManagerService;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$23(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ApexManager;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$24(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$27(Landroid/content/Context;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/DefaultAppProvider;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$28(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/util/DisplayMetrics;
+PLcom/android/server/pm/PackageManagerService;->lambda$main$29(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/internal/pm/parsing/PackageParser2;
+PLcom/android/server/pm/PackageManagerService;->lambda$main$32(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageInstallerService;
+PLcom/android/server/pm/PackageManagerService;->lambda$main$33(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
+PLcom/android/server/pm/PackageManagerService;->lambda$main$34(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$35(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$36(Lcom/android/server/pm/verify/domain/DomainVerificationService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$37(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Landroid/os/Handler;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$38(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/BackgroundDexOptService;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$40(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/SharedLibrariesImpl;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$42(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UpdateOwnershipHelper;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$43(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageMonitorCallbackHelper;
+PLcom/android/server/pm/PackageManagerService;->lambda$new$48([ILcom/android/server/pm/pkg/PackageStateInternal;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$setEnabledOverlayPackages$59(ILandroid/util/ArrayMap;Ljava/util/Set;ILandroid/util/ArrayMap;Lcom/android/server/pm/pkg/mutate/PackageStateMutator;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$56(IZZLcom/android/server/pm/pkg/mutate/PackageStateWrite;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$57(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->lambda$setPackageStoppedState$58(Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$tryWriteSettings$10(Z)V
+PLcom/android/server/pm/PackageManagerService;->lambda$writePendingRestrictions$9(I)[Ljava/lang/Integer;
+HSPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;Lcom/android/server/pm/verify/domain/DomainVerificationService;Z)Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageManagerService;->maybeUpdateSystemOverlays(Ljava/lang/String;Landroid/content/pm/overlay/OverlayPaths;)V
+HPLcom/android/server/pm/PackageManagerService;->notifyComponentUsed(Lcom/android/server/pm/Computer;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->notifyPackageUseInternal(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/PackageManagerService;->onChanged()V
+PLcom/android/server/pm/PackageManagerService;->parsePerUidReadTimeouts(Lcom/android/server/pm/Computer;)[Landroid/os/incremental/PerUidReadTimeouts;
+PLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V
+HSPLcom/android/server/pm/PackageManagerService;->rebuildSnapshot(Lcom/android/server/pm/Computer;I)Lcom/android/server/pm/Computer;
+HSPLcom/android/server/pm/PackageManagerService;->registerObservers(Z)V
+PLcom/android/server/pm/PackageManagerService;->reportSettingsProblem(ILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->resetPriorityAfterPackageManagerTracedLockedSection()V
+PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I
+PLcom/android/server/pm/PackageManagerService;->schedulePruneUnusedStaticSharedLibraries(Z)V
+PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictions(I)V
+HSPLcom/android/server/pm/PackageManagerService;->scheduleWriteSettings()V
+HPLcom/android/server/pm/PackageManagerService;->setEnabledOverlayPackages(ILandroid/util/ArrayMap;Ljava/util/Set;Ljava/util/Set;)V
+HPLcom/android/server/pm/PackageManagerService;->setEnabledSettingInternalLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageManager$ComponentEnabledSetting;ILjava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService;->setEnabledSettings(Ljava/util/List;ILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Lcom/android/server/pm/Computer;Ljava/lang/String;ZI)V
+PLcom/android/server/pm/PackageManagerService;->setPlatformPackage(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService;->setUpCustomResolverActivity(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V
+HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer()Lcom/android/server/pm/Computer;
+HSPLcom/android/server/pm/PackageManagerService;->snapshotComputer(Z)Lcom/android/server/pm/Computer;
+HPLcom/android/server/pm/PackageManagerService;->systemReady()V
+PLcom/android/server/pm/PackageManagerService;->tryUnderLock(ZJLjava/lang/Runnable;)Z
+PLcom/android/server/pm/PackageManagerService;->tryWriteSettings(Z)Z
+PLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V
+PLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()V
+PLcom/android/server/pm/PackageManagerService;->writePendingRestrictions()V
+PLcom/android/server/pm/PackageManagerService;->writeSettingsLPrTEMP()V
+PLcom/android/server/pm/PackageManagerService;->writeSettingsLPrTEMP(Z)V
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;-><clinit>()V
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->checkProperties()V
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getAndCheckValidity(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->isFilterAllowedForReason(ILjava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;-><init>(Lcom/android/server/pm/PackageManagerServiceInjector$Producer;)V
+HSPLcom/android/server/pm/PackageManagerServiceInjector$Singleton;->get(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerTracedLock;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageAbiHelper;Landroid/os/Handler;Ljava/util/List;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$ProducerWithArgument;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerServiceInjector$ServiceProducer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;Lcom/android/server/pm/PackageManagerServiceInjector$Producer;)V
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->bootstrap(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getAbiHelper()Lcom/android/server/pm/PackageAbiHelper;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getApexManager()Lcom/android/server/pm/ApexManager;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getAppsFilter()Lcom/android/server/pm/AppsFilterImpl;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getArtManagerService()Lcom/android/server/pm/dex/ArtManagerService;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundDexOptService()Lcom/android/server/pm/BackgroundDexOptService;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundExecutor()Ljava/util/concurrent/Executor;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getBackgroundHandler()Landroid/os/Handler;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getCompatibility()Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getComponentResolver()Lcom/android/server/pm/resolution/ComponentResolver;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getContext()Landroid/content/Context;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDefaultAppProvider()Lcom/android/server/pm/DefaultAppProvider;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDexManager()Lcom/android/server/pm/dex/DexManager;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDisplayMetrics()Landroid/util/DisplayMetrics;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDomainVerificationManagerInternal()Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getDynamicCodeLogger()Lcom/android/server/pm/dex/DynamicCodeLogger;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getIncrementalManager()Landroid/os/incremental/IncrementalManager;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getInstallLock()Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getInstaller()Lcom/android/server/pm/Installer;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getInstantAppResolverConnection(Landroid/content/ComponentName;)Lcom/android/server/pm/InstantAppResolverConnection;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLegacyPermissionManagerInternal()Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getLock()Lcom/android/server/pm/PackageManagerTracedLock;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getModuleInfoProvider()Lcom/android/server/pm/ModuleInfoProvider;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPackageDexOptimizer()Lcom/android/server/pm/PackageDexOptimizer;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getPackageInstallerService()Lcom/android/server/pm/PackageInstallerService;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPackageMonitorCallbackHelper()Lcom/android/server/pm/PackageMonitorCallbackHelper;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getPermissionManagerServiceInternal()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getScanningCachingPackageParser()Lcom/android/internal/pm/parsing/PackageParser2;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSettings()Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSharedLibrariesImpl()Lcom/android/server/pm/SharedLibrariesImpl;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemConfig()Lcom/android/server/SystemConfig;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getSystemPartitions()Ljava/util/List;
+PLcom/android/server/pm/PackageManagerServiceInjector;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getSystemWrapper()Lcom/android/server/pm/PackageManagerServiceInjector$SystemWrapper;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUpdateOwnershipHelper()Lcom/android/server/pm/UpdateOwnershipHelper;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerInternal()Lcom/android/server/pm/UserManagerInternal;
+HSPLcom/android/server/pm/PackageManagerServiceInjector;->getUserManagerService()Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda1;-><init>()V
+HSPLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/pm/PackageManagerServiceUtils$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerServiceUtils;->$r8$lambda$mxnDkt23XLV3hc1smQVQ_dWQlso()Ljava/lang/Boolean;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;-><clinit>()V
+HPLcom/android/server/pm/PackageManagerServiceUtils;->applyEnforceIntentFilterMatching(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/resolution/ComponentResolverApi;Ljava/util/List;ZLandroid/content/Intent;Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->arrayToString([I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerServiceUtils;->canJoinSharedUserId(Ljava/lang/String;Landroid/content/pm/SigningDetails;Lcom/android/server/pm/SharedUserSetting;I)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->comparePackageSignatures(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/SigningDetails;)Z
+HPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatureArrays([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
+HPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures(Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails;)I
+HPLcom/android/server/pm/PackageManagerServiceUtils;->compressedFileExists(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerServiceUtils;->deriveAbiOverride(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Lcom/android/server/pm/UserManagerInternal;Ljava/lang/String;II)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrPhoneCaller(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrRoot(Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerServiceUtils;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File;
+HPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Lcom/android/server/pm/pkg/AndroidPackage;)J
+PLcom/android/server/pm/PackageManagerServiceUtils;->getPackageManagerLocal()Lcom/android/server/pm/PackageManagerLocal;
+PLcom/android/server/pm/PackageManagerServiceUtils;->getSettingsProblemFile()Ljava/io/File;
+HPLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRoot()Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRoot(I)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->isSystemOrRootOrShell(I)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->lambda$static$2()Ljava/lang/Boolean;
+PLcom/android/server/pm/PackageManagerServiceUtils;->logCriticalInfo(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->preparePackageParserCache(ZZLjava/lang/String;)Ljava/io/File;
+HPLcom/android/server/pm/PackageManagerServiceUtils;->verifySignatures(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/SigningDetails;ZZZ)Z
+PLcom/android/server/pm/PackageManagerShellCommand$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/pm/PackageManagerShellCommand$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/PackageManagerShellCommand;->$r8$lambda$SBUnEmlcik68djMk5muLDWebS_E(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerShellCommand;-><clinit>()V
+HPLcom/android/server/pm/PackageManagerShellCommand;-><init>(Landroid/content/pm/IPackageManager;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationShell;)V
+PLcom/android/server/pm/PackageManagerShellCommand;->displayPackageFilePath(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->lambda$runListPackages$1(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->runGrantRevokePermission(Z)I
+PLcom/android/server/pm/PackageManagerShellCommand;->runList()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(ZZ)I
+PLcom/android/server/pm/PackageManagerShellCommand;->runPath()I
+PLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(IILjava/lang/String;)I
+HSPLcom/android/server/pm/PackageManagerTracedLock;-><init>()V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
+HPLcom/android/server/pm/PackageMonitorCallbackHelper$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;-><init>(Lcom/android/server/pm/PackageMonitorCallbackHelper;II)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;->getUid()I
+PLcom/android/server/pm/PackageMonitorCallbackHelper$RegisterUser;->getUserId()I
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->$r8$lambda$dmkKmZn9cGbMJXri8hyHR8QP-n4(Lcom/android/server/pm/PackageMonitorCallbackHelper;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;Landroid/os/IRemoteCallback;Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->$r8$lambda$sc6g1dLrUYtbyMa4_swsXTtzJPE(Lcom/android/server/pm/PackageMonitorCallbackHelper;Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
+HSPLcom/android/server/pm/PackageMonitorCallbackHelper;-><init>()V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->doNotifyCallbacks(Landroid/os/RemoteCallbackList;Landroid/content/Intent;I[ILandroid/os/Handler;Ljava/util/function/BiFunction;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->doNotifyCallbacksByAction(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[ILandroid/util/SparseArray;Landroid/os/Handler;Ljava/util/function/BiFunction;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->invokeCallback(Landroid/os/IRemoteCallback;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->isAllowedCallbackAction(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->lambda$doNotifyCallbacks$0(I[ILandroid/content/Intent;Ljava/util/function/BiFunction;Landroid/os/IRemoteCallback;Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->lambda$doNotifyCallbacks$1(Landroid/os/RemoteCallbackList;I[ILandroid/content/Intent;Ljava/util/function/BiFunction;)V
+PLcom/android/server/pm/PackageMonitorCallbackHelper;->notifyPackageMonitor(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;[I[ILandroid/util/SparseArray;Landroid/os/Handler;Ljava/util/function/BiFunction;)V
+HPLcom/android/server/pm/PackageMonitorCallbackHelper;->registerPackageMonitorCallback(Landroid/os/IRemoteCallback;II)V
+HSPLcom/android/server/pm/PackageObserverHelper;-><init>()V
+PLcom/android/server/pm/PackageObserverHelper;->addObserver(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)V
+HSPLcom/android/server/pm/PackageProperty;-><init>()V
+HPLcom/android/server/pm/PackageProperty;->addAllProperties(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/PackageProperty;->addComponentProperties(Ljava/util/List;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageProperty;->addProperties(Ljava/util/Map;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageProperty;->getApplicationProperty(Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
+PLcom/android/server/pm/PackageProperty;->getComponentProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
+PLcom/android/server/pm/PackageProperty;->getProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/PackageManager$Property;
+PLcom/android/server/pm/PackageProperty;->getProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;)Landroid/content/pm/PackageManager$Property;
+PLcom/android/server/pm/PackageProperty;->queryProperty(Ljava/lang/String;ILjava/util/function/Predicate;)Ljava/util/List;
+PLcom/android/server/pm/PackageSessionVerifier;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;Ljava/util/function/Supplier;Landroid/os/Looper;)V
+HSPLcom/android/server/pm/PackageSetting$1;-><init>(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/PackageSetting$1;->createSnapshot()Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting$1;->createSnapshot()Ljava/lang/Object;
+HPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;Z)V
+HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IILjava/util/UUID;)V
+HSPLcom/android/server/pm/PackageSetting;->copyMimeGroups(Ljava/util/Map;)V
+HSPLcom/android/server/pm/PackageSetting;->copyPackageSetting(Lcom/android/server/pm/PackageSetting;Z)V
+HPLcom/android/server/pm/PackageSetting;->disableComponentLPw(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageSetting;->enableComponentLPw(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageSetting;->getAndroidPackage()Lcom/android/server/pm/pkg/AndroidPackage;
+HPLcom/android/server/pm/PackageSetting;->getApexModuleName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->getAppId()I
+PLcom/android/server/pm/PackageSetting;->getAppMetadataFilePath()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getAppMetadataSource()I
+HPLcom/android/server/pm/PackageSetting;->getBoolean(I)Z
+HPLcom/android/server/pm/PackageSetting;->getCategoryOverride()I
+PLcom/android/server/pm/PackageSetting;->getCpuAbiOverride()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageSetting;->getDomainSetId()Ljava/util/UUID;
+PLcom/android/server/pm/PackageSetting;->getEnabled(I)I
+PLcom/android/server/pm/PackageSetting;->getInstallSource()Lcom/android/server/pm/InstallSource;
+HPLcom/android/server/pm/PackageSetting;->getInstalled(I)Z
+HPLcom/android/server/pm/PackageSetting;->getInstantApp(I)Z
+HSPLcom/android/server/pm/PackageSetting;->getKeySetData()Lcom/android/server/pm/PackageKeySetData;
+HPLcom/android/server/pm/PackageSetting;->getLastModifiedTime()J
+HPLcom/android/server/pm/PackageSetting;->getLastUpdateTime()J
+PLcom/android/server/pm/PackageSetting;->getLegacyNativeLibraryPath()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState;
+HPLcom/android/server/pm/PackageSetting;->getLoadingCompletedTime()J
+HPLcom/android/server/pm/PackageSetting;->getLoadingProgress()F
+HPLcom/android/server/pm/PackageSetting;->getMimeGroups()Ljava/util/Map;
+PLcom/android/server/pm/PackageSetting;->getOldPaths()Ljava/util/LinkedHashSet;
+PLcom/android/server/pm/PackageSetting;->getOrCreateUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/PackageSetting;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getPath()Ljava/io/File;
+PLcom/android/server/pm/PackageSetting;->getPathString()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->getPkg()Lcom/android/internal/pm/parsing/pkg/AndroidPackageInternal;
+HPLcom/android/server/pm/PackageSetting;->getPkgState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbi()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getPrimaryCpuAbiLegacy()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getRealName()Ljava/lang/String;
+PLcom/android/server/pm/PackageSetting;->getRestrictUpdateHash()[B
+HPLcom/android/server/pm/PackageSetting;->getSeInfo()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbi()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getSecondaryCpuAbiLegacy()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getSharedLibraryDependencies()Ljava/util/List;
+HSPLcom/android/server/pm/PackageSetting;->getSharedUserAppId()I
+HSPLcom/android/server/pm/PackageSetting;->getSignatures()Lcom/android/server/pm/PackageSignatures;
+HPLcom/android/server/pm/PackageSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
+PLcom/android/server/pm/PackageSetting;->getTargetSdkVersion()I
+HPLcom/android/server/pm/PackageSetting;->getTransientState()Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HSPLcom/android/server/pm/PackageSetting;->getUserStates()Landroid/util/SparseArray;
+HPLcom/android/server/pm/PackageSetting;->getUsesLibraryFiles()Ljava/util/List;
+HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibraries()[Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesOptional()[Z
+HPLcom/android/server/pm/PackageSetting;->getUsesSdkLibrariesVersionsMajor()[J
+HPLcom/android/server/pm/PackageSetting;->getUsesStaticLibraries()[Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->getUsesStaticLibrariesVersions()[J
+HPLcom/android/server/pm/PackageSetting;->getVersionCode()J
+HPLcom/android/server/pm/PackageSetting;->getVirtualPreload(I)Z
+HPLcom/android/server/pm/PackageSetting;->getVolumeUuid()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageSetting;->hasSharedUser()Z
+PLcom/android/server/pm/PackageSetting;->isDefaultToDeviceProtectedStorage()Z
+HPLcom/android/server/pm/PackageSetting;->isForceQueryableOverride()Z
+HPLcom/android/server/pm/PackageSetting;->isHiddenUntilInstalled()Z
+PLcom/android/server/pm/PackageSetting;->isIncremental()Z
+PLcom/android/server/pm/PackageSetting;->isInstallPermissionsFixed()Z
+HPLcom/android/server/pm/PackageSetting;->isLoading()Z
+HPLcom/android/server/pm/PackageSetting;->isOdm()Z
+HPLcom/android/server/pm/PackageSetting;->isOem()Z
+PLcom/android/server/pm/PackageSetting;->isPendingRestore()Z
+HPLcom/android/server/pm/PackageSetting;->isPrivileged()Z
+HPLcom/android/server/pm/PackageSetting;->isProduct()Z
+HPLcom/android/server/pm/PackageSetting;->isScannedAsStoppedSystemApp()Z
+HPLcom/android/server/pm/PackageSetting;->isSystem()Z
+HPLcom/android/server/pm/PackageSetting;->isSystemExt()Z
+HPLcom/android/server/pm/PackageSetting;->isUpdateAvailable()Z
+HPLcom/android/server/pm/PackageSetting;->isUpdatedSystemApp()Z
+HPLcom/android/server/pm/PackageSetting;->isVendor()Z
+HSPLcom/android/server/pm/PackageSetting;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/PackageSetting;->modifyUserState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/PackageSetting;->modifyUserStateComponents(IZZ)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/PackageSetting;->readUserState(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
+HPLcom/android/server/pm/PackageSetting;->restoreComponentLPw(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageSetting;->setAppId(I)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setAppMetadataFilePath(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setAppMetadataSource(I)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setBoolean(IZ)V
+HSPLcom/android/server/pm/PackageSetting;->setCategoryOverride(I)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setCeDataInode(JI)V
+HSPLcom/android/server/pm/PackageSetting;->setCpuAbiOverride(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setDeDataInode(JI)V
+HPLcom/android/server/pm/PackageSetting;->setDomainSetId(Ljava/util/UUID;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setEnabled(IILjava/lang/String;)V
+HPLcom/android/server/pm/PackageSetting;->setFirstInstallTime(JI)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setForceQueryableOverride(Z)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setInstallSource(Lcom/android/server/pm/InstallSource;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setIsOrphaned(Z)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLastModifiedTime(J)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLastUpdateTime(J)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLegacyNativeLibraryPath(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLoadingCompletedTime(J)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLoadingProgress(F)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setLongVersionCode(J)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setMimeGroups(Ljava/util/Map;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setPkg(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setPkgStateLibraryFiles(Ljava/util/Collection;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setPrimaryCpuAbi(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setRestrictUpdateHash([B)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setScannedAsStoppedSystemApp(Z)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setSecondaryCpuAbi(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setSharedUserAppId(I)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setSigningDetails(Landroid/content/pm/SigningDetails;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setTargetSdkVersion(I)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setUpdateAvailable(Z)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setUpdateOwnerPackage(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setUserState(IJJIZZZZILandroid/util/ArrayMap;ZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;IILjava/lang/String;Ljava/lang/String;JILcom/android/server/pm/pkg/ArchiveState;)V
+HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibraries([Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibrariesOptional([Z)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setUsesSdkLibrariesVersionsMajor([J)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setUsesStaticLibraries([Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageSetting;->setUsesStaticLibrariesVersions([J)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->setVolumeUuid(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->snapshot()Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSetting;->snapshot()Ljava/lang/Object;
+HPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSetting;->updateFrom(Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/PackageSetting;->updateMimeGroups(Ljava/util/Set;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageSignatures;-><init>()V
+HSPLcom/android/server/pm/PackageSignatures;->readCertsListXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Ljava/util/ArrayList;IZLandroid/content/pm/SigningDetails$Builder;)I
+HSPLcom/android/server/pm/PackageSignatures;->readXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;)V
+HPLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;[Landroid/content/pm/Signature;Z)V
+HPLcom/android/server/pm/PackageSignatures;->writeXml(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V
+HSPLcom/android/server/pm/PackageUsage;-><init>()V
+PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V
+HPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
+HPLcom/android/server/pm/ParallelPackageParser$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V
+PLcom/android/server/pm/ParallelPackageParser;->$r8$lambda$uW6lAW1ixaCdJ_8ZINGbyQGIceg(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
+HPLcom/android/server/pm/ParallelPackageParser;-><init>(Lcom/android/internal/pm/parsing/PackageParser2;Ljava/util/concurrent/ExecutorService;)V
+HPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0(Ljava/io/File;I)V
+PLcom/android/server/pm/ParallelPackageParser;->makeExecutorService()Ljava/util/concurrent/ExecutorService;
+HPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V
+HPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
+HSPLcom/android/server/pm/PendingPackageBroadcasts;-><init>()V
+PLcom/android/server/pm/PerPackageReadTimeouts;->parseDigestersList(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmCerts(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmPkgMap(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->-$$Nest$fgetmSeinfo(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->addSignature(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->build()Lcom/android/server/pm/Policy;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->setGlobalSeinfoOrThrow(Ljava/lang/String;)Lcom/android/server/pm/Policy$PolicyBuilder;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmCerts(Lcom/android/server/pm/Policy;)Ljava/util/Set;
+HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmPkgMap(Lcom/android/server/pm/Policy;)Ljava/util/Map;
+HSPLcom/android/server/pm/Policy;->-$$Nest$fgetmSeinfo(Lcom/android/server/pm/Policy;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;)V
+HSPLcom/android/server/pm/Policy;-><init>(Lcom/android/server/pm/Policy$PolicyBuilder;Lcom/android/server/pm/Policy-IA;)V
+HPLcom/android/server/pm/Policy;->getMatchedSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy;->getSignatures()Ljava/util/Set;
+HSPLcom/android/server/pm/Policy;->hasInnerPackages()Z
+HSPLcom/android/server/pm/PolicyComparator;-><init>()V
+HSPLcom/android/server/pm/PolicyComparator;->compare(Lcom/android/server/pm/Policy;Lcom/android/server/pm/Policy;)I
+HSPLcom/android/server/pm/PolicyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z
+HSPLcom/android/server/pm/PreferredActivity$1;-><init>(Lcom/android/server/pm/PreferredActivity;Lcom/android/server/pm/PreferredActivity;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/PreferredActivity$1;->createSnapshot()Lcom/android/server/pm/PreferredActivity;
+HSPLcom/android/server/pm/PreferredActivity$1;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/server/pm/PreferredActivity;)V
+HSPLcom/android/server/pm/PreferredActivity;-><init>(Lcom/android/server/pm/PreferredActivity;Lcom/android/server/pm/PreferredActivity-IA;)V
+HSPLcom/android/server/pm/PreferredActivity;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lcom/android/modules/utils/TypedXmlPullParser;)Z
+HSPLcom/android/server/pm/PreferredActivity;->snapshot()Lcom/android/server/pm/PreferredActivity;
+PLcom/android/server/pm/PreferredActivity;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+HSPLcom/android/server/pm/PreferredActivityHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/BroadcastHelper;)V
+HSPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String;
+HPLcom/android/server/pm/PreferredComponent;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+HSPLcom/android/server/pm/PreferredIntentResolver$1;-><init>(Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/PreferredIntentResolver$1;->createSnapshot()Lcom/android/server/pm/PreferredIntentResolver;
+HSPLcom/android/server/pm/PreferredIntentResolver$1;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/PreferredIntentResolver;-><init>()V
+HSPLcom/android/server/pm/PreferredIntentResolver;-><init>(Lcom/android/server/pm/PreferredIntentResolver;)V
+HSPLcom/android/server/pm/PreferredIntentResolver;-><init>(Lcom/android/server/pm/PreferredIntentResolver;Lcom/android/server/pm/PreferredIntentResolver-IA;)V
+HSPLcom/android/server/pm/PreferredIntentResolver;->getIntentFilter(Lcom/android/server/pm/PreferredActivity;)Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/PreferredIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/PreferredIntentResolver;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity;
+HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Ljava/lang/Object;
+HSPLcom/android/server/pm/PreferredIntentResolver;->shouldAddPreferredActivity(Lcom/android/server/pm/PreferredActivity;)Z
+HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot()Lcom/android/server/pm/PreferredIntentResolver;
+HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot(Lcom/android/server/pm/PreferredActivity;)Lcom/android/server/pm/PreferredActivity;
+HSPLcom/android/server/pm/PreferredIntentResolver;->snapshot(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V
+HSPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z
+HPLcom/android/server/pm/ProtectedPackages;->hasProtectedPackages(I)Z
+HPLcom/android/server/pm/ProtectedPackages;->isOwnerProtectedPackage(ILjava/lang/String;)Z
+HPLcom/android/server/pm/ProtectedPackages;->isPackageProtectedForUser(ILjava/lang/String;)Z
+PLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z
+HPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(ILjava/lang/String;)Z
+PLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
+HPLcom/android/server/pm/QueryIntentActivitiesResult;-><init>(ZZLjava/util/List;)V
+PLcom/android/server/pm/ReconcilePackageUtils;-><clinit>()V
+HPLcom/android/server/pm/ReconcilePackageUtils;->isCompatSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
+HPLcom/android/server/pm/ReconcilePackageUtils;->isRecoverSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
+HPLcom/android/server/pm/ReconcilePackageUtils;->reconcilePackages(Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/KeySetManagerService;Lcom/android/server/pm/Settings;)Ljava/util/List;
+HPLcom/android/server/pm/ReconciledPackage;-><init>(Ljava/util/List;Ljava/util/Map;Lcom/android/server/pm/InstallRequest;Lcom/android/server/pm/DeletePackageAction;Ljava/util/List;Landroid/content/pm/SigningDetails;ZZ)V
+HPLcom/android/server/pm/ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map;
+HSPLcom/android/server/pm/RemovePackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/AppDataHelper;Lcom/android/server/pm/BroadcastHelper;)V
+HSPLcom/android/server/pm/ResilientAtomicFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/io/File;ILjava/lang/String;Lcom/android/server/pm/ResilientAtomicFile$ReadEventLogger;)V
+HSPLcom/android/server/pm/ResilientAtomicFile;->close()V
+HPLcom/android/server/pm/ResilientAtomicFile;->finalizeOutStream(Ljava/io/FileOutputStream;)V
+HPLcom/android/server/pm/ResilientAtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V
+HSPLcom/android/server/pm/ResilientAtomicFile;->openRead()Ljava/io/FileInputStream;
+HPLcom/android/server/pm/ResilientAtomicFile;->startWrite()Ljava/io/FileOutputStream;
+HSPLcom/android/server/pm/ResolveIntentHelper;-><init>(Landroid/content/Context;Lcom/android/server/pm/PreferredActivityHelper;Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/UserNeedsBadgingCache;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+PLcom/android/server/pm/ResolveIntentHelper;->applyPostContentProviderResolutionFilter(Lcom/android/server/pm/Computer;Ljava/util/List;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/ResolveIntentHelper;->chooseBestActivity(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJLjava/util/List;IZ)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/ResolveIntentHelper;->filterNonExportedComponents(Landroid/content/Intent;IILjava/util/List;Lcom/android/server/compat/PlatformCompat;Ljava/lang/String;Lcom/android/server/pm/Computer;Landroid/os/Handler;)V
+PLcom/android/server/pm/ResolveIntentHelper;->queryIntentContentProvidersInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Ljava/util/List;
+HPLcom/android/server/pm/ResolveIntentHelper;->queryIntentReceiversInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JIIZ)Ljava/util/List;
+PLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZI)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/ResolveIntentHelper;->resolveIntentInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JJIZIZI)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/ResolveIntentHelper;->resolveServiceInternal(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JII)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/RestrictionsSet;-><init>()V
+HPLcom/android/server/pm/RestrictionsSet;->getRestrictions(I)Landroid/os/Bundle;
+PLcom/android/server/pm/RestrictionsSet;->getRestrictionsNonNull(I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/RestrictionsSet;->updateRestrictions(ILandroid/os/Bundle;)Z
+HSPLcom/android/server/pm/SELinuxMMAC;-><clinit>()V
+HPLcom/android/server/pm/SELinuxMMAC;->getPartition(Lcom/android/server/pm/pkg/PackageState;)Ljava/lang/String;
+HPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/compat/PlatformCompat;)Ljava/lang/String;
+HPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Lcom/android/server/pm/pkg/PackageState;Lcom/android/server/pm/pkg/AndroidPackage;ZI)Ljava/lang/String;
+HPLcom/android/server/pm/SELinuxMMAC;->getTargetSdkVersionForSeInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/SharedUserApi;Lcom/android/server/compat/PlatformCompat;)I
+HSPLcom/android/server/pm/SELinuxMMAC;->readInstallPolicy()Z
+HSPLcom/android/server/pm/SELinuxMMAC;->readSeinfo(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/SELinuxMMAC;->readSignerOrThrow(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/Policy;
+HPLcom/android/server/pm/ScanPackageUtils;->adjustScanFlagsWithPackageSetting(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;)I
+HPLcom/android/server/pm/ScanPackageUtils;->applyAdjustedAbiToSharedUser(Lcom/android/server/pm/SharedUserSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/ScanPackageUtils;->applyPolicy(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ILcom/android/server/pm/pkg/AndroidPackage;Z)V
+HPLcom/android/server/pm/ScanPackageUtils;->assertMinSignatureSchemeIsValid(Lcom/android/server/pm/pkg/AndroidPackage;I)V
+PLcom/android/server/pm/ScanPackageUtils;->assertPackageProcesses(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V
+HPLcom/android/server/pm/ScanPackageUtils;->assertProcessesAreValid(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/ScanPackageUtils;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/Settings$VersionInfo;ZZZ)V
+HPLcom/android/server/pm/ScanPackageUtils;->configurePackageComponents(Lcom/android/server/pm/pkg/AndroidPackage;)V
+HPLcom/android/server/pm/ScanPackageUtils;->getAppLib32InstallDir()Ljava/io/File;
+HPLcom/android/server/pm/ScanPackageUtils;->getRealPackageName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;Z)Ljava/lang/String;
+PLcom/android/server/pm/ScanPackageUtils;->getVendorPartitionVersion()I
+HPLcom/android/server/pm/ScanPackageUtils;->isPackageRenamed(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
+HPLcom/android/server/pm/ScanPackageUtils;->scanPackageOnlyLI(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageManagerServiceInjector;ZJ)Lcom/android/server/pm/ScanResult;
+PLcom/android/server/pm/ScanPackageUtils;->setInstantAppForUser(Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/PackageSetting;IZZ)V
+HSPLcom/android/server/pm/ScanPartition;-><init>(Landroid/content/pm/PackagePartitions$SystemPartition;)V
+HPLcom/android/server/pm/ScanPartition;-><init>(Ljava/io/File;Lcom/android/server/pm/ScanPartition;Lcom/android/server/pm/ApexManager$ActiveApexInfo;)V
+HSPLcom/android/server/pm/ScanPartition;->scanFlagForPartition(Landroid/content/pm/PackagePartitions$SystemPartition;)I
+HPLcom/android/server/pm/ScanPartition;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/ScanRequest;-><init>(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;Ljava/lang/String;)V
+HPLcom/android/server/pm/ScanResult;-><init>(Lcom/android/server/pm/ScanRequest;Lcom/android/server/pm/PackageSetting;Ljava/util/List;ZILandroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
+HSPLcom/android/server/pm/SettingBase;-><init>(II)V
+HSPLcom/android/server/pm/SettingBase;-><init>(Lcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/pm/SettingBase;->copySettingBase(Lcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/pm/SettingBase;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/SettingBase;->getFlags()I
+HSPLcom/android/server/pm/SettingBase;->getLegacyPermissionState()Lcom/android/server/pm/permission/LegacyPermissionState;
+HSPLcom/android/server/pm/SettingBase;->getPrivateFlags()I
+HSPLcom/android/server/pm/SettingBase;->onChanged()V
+HSPLcom/android/server/pm/SettingBase;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/SettingBase;->setFlags(I)Lcom/android/server/pm/SettingBase;
+HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)Lcom/android/server/pm/SettingBase;
+HSPLcom/android/server/pm/SettingBase;->unregisterObserver(Lcom/android/server/utils/Watcher;)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Settings;IJZ)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/Settings;)V
+PLcom/android/server/pm/Settings$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/Settings$1;-><init>(Lcom/android/server/pm/Settings;)V
+HSPLcom/android/server/pm/Settings$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/Settings$2;-><init>(Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/Settings$2;->createSnapshot()Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/Settings$2;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/Settings$3;-><init>(Lcom/android/server/pm/Settings;)V
+PLcom/android/server/pm/Settings$3;->accept(Ljava/lang/Integer;)V
+PLcom/android/server/pm/Settings$3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/Settings$KeySetToValueMap;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
+PLcom/android/server/pm/Settings$KeySetToValueMap;->keySet()Ljava/util/Set;
+HPLcom/android/server/pm/Settings$KeySetToValueMap;->size()I
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence$PersistenceHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->$r8$lambda$jSdj7sarDYdqZlpU1yKlMrhFaeI(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-$$Nest$fgetmInvokeWriteUserStateAsyncCallback(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)Ljava/util/function/Consumer;
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->-$$Nest$mwritePendingStates(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><clinit>()V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/permission/persistence/RuntimePermissionsPersistence;Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getExtendedFingerprint(J)Ljava/lang/String;
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPackagePermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPermissionsFromPermissionsState(Lcom/android/server/pm/permission/LegacyPermissionState;I)Ljava/util/List;
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getShareUsersPermissions(ILcom/android/server/utils/WatchedArrayMap;)Ljava/util/Map;
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->lambda$writeStateForUser$0(Lcom/android/server/pm/PackageManagerTracedLock;ZLcom/android/server/pm/permission/LegacyPermissionDataProvider;ILcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->nextWritePermissionDelayMillis()J
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readPermissionsState(Ljava/util/List;Lcom/android/server/pm/permission/LegacyPermissionState;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSync(ILcom/android/server/pm/Settings$VersionInfo;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Ljava/io/File;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->setPermissionControllerVersion(J)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->uniformRandom(DD)J
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePendingStates()V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writeStateForUser(ILcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;Z)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writeStateForUserAsync(I)V
+HSPLcom/android/server/pm/Settings$VersionInfo;-><init>()V
+PLcom/android/server/pm/Settings;->$r8$lambda$53NmgrwLNm2y5xSEATqhfDNuHBU(Lcom/android/server/pm/Settings;Lcom/android/server/pm/SharedUserSetting;)V
+PLcom/android/server/pm/Settings;->$r8$lambda$xF8vBosZYCuleRIdy4wr1C_PPCw(Lcom/android/server/pm/Settings;IJZ)V
+PLcom/android/server/pm/Settings;->-$$Nest$fgetmHandler(Lcom/android/server/pm/Settings;)Landroid/os/Handler;
+PLcom/android/server/pm/Settings;->-$$Nest$fgetmLock(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/PackageManagerTracedLock;
+PLcom/android/server/pm/Settings;->-$$Nest$fgetmPermissionDataProvider(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/permission/LegacyPermissionDataProvider;
+PLcom/android/server/pm/Settings;->-$$Nest$fgetmRuntimePermissionsPersistence(Lcom/android/server/pm/Settings;)Lcom/android/server/pm/Settings$RuntimePermissionPersistence;
+HSPLcom/android/server/pm/Settings;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/Settings;)Lcom/android/server/utils/WatchableImpl;
+HSPLcom/android/server/pm/Settings;-><clinit>()V
+HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;)V
+HSPLcom/android/server/pm/Settings;-><init>(Lcom/android/server/pm/Settings;Lcom/android/server/pm/Settings-IA;)V
+HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Lcom/android/permission/persistence/RuntimePermissionsPersistence;Lcom/android/server/pm/permission/LegacyPermissionDataProvider;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Landroid/os/Handler;Lcom/android/server/pm/PackageManagerTracedLock;)V
+HSPLcom/android/server/pm/Settings;->addInstallerPackageNames(Lcom/android/server/pm/InstallSource;)V
+HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;IIILjava/util/UUID;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->addPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;)V
+HSPLcom/android/server/pm/Settings;->addSharedUserLPw(Ljava/lang/String;III)Lcom/android/server/pm/SharedUserSetting;
+PLcom/android/server/pm/Settings;->checkAndPruneSharedUserLPw(Lcom/android/server/pm/SharedUserSetting;Z)Z
+HPLcom/android/server/pm/Settings;->createMimeGroups(Ljava/util/Set;)Ljava/util/Map;
+HPLcom/android/server/pm/Settings;->createNewSetting(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILandroid/os/UserHandle;ZZZZLcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[B)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
+HPLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/util/List;)V
+PLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/permission/LegacyPermissionState;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;ZZ)V
+HPLcom/android/server/pm/Settings;->dumpPackagesLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/Settings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
+HPLcom/android/server/pm/Settings;->dumpPreferred(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/Collection;Z)V
+HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+HPLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Lcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver;
+HSPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo;
+PLcom/android/server/pm/Settings;->getActiveUsers(Lcom/android/server/pm/UserManagerService;Z)Ljava/util/List;
+PLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection;
+PLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List;
+PLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I
+HPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I
+HPLcom/android/server/pm/Settings;->getCrossProfileIntentResolver(I)Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/pm/Settings;->getDisabledSystemPackagesLocked()Lcom/android/server/utils/WatchedArrayMap;
+HPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
+PLcom/android/server/pm/Settings;->getKeySetManagerService()Lcom/android/server/pm/KeySetManagerService;
+HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->getPackagesLocked()Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/Settings;->getSettingLPr(I)Lcom/android/server/pm/SettingBase;
+HSPLcom/android/server/pm/Settings;->getSettingsFile()Lcom/android/server/pm/ResilientAtomicFile;
+HPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/Settings;->getSharedUserSettingLPr(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/SharedUserSetting;
+HPLcom/android/server/pm/Settings;->getSharedUserSettingLPr(Ljava/lang/String;)Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Lcom/android/server/pm/ResilientAtomicFile;
+HSPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File;
+HSPLcom/android/server/pm/Settings;->getUserSystemDirectory(I)Ljava/io/File;
+HPLcom/android/server/pm/Settings;->getUsers(Lcom/android/server/pm/UserManagerService;ZZ)Ljava/util/List;
+PLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/Settings;->invalidatePackageCache()V
+PLcom/android/server/pm/Settings;->lambda$pruneSharedUsersLPw$0(Lcom/android/server/pm/SharedUserSetting;)V
+PLcom/android/server/pm/Settings;->lambda$writePackageRestrictionsLPr$1(IJZ)V
+HSPLcom/android/server/pm/Settings;->makeCache()Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/Settings;->onChanged()V
+HSPLcom/android/server/pm/Settings;->parseAppId(Lcom/android/modules/utils/TypedXmlPullParser;)I
+HSPLcom/android/server/pm/Settings;->parseSharedUserAppId(Lcom/android/modules/utils/TypedXmlPullParser;)I
+HPLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V
+PLcom/android/server/pm/Settings;->pruneRenamedPackagesLPw()V
+PLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V
+HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/Settings;->readCrossProfileIntentFiltersLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
+HSPLcom/android/server/pm/Settings;->readDefaultApps(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
+HSPLcom/android/server/pm/Settings;->readDefaultAppsLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
+HSPLcom/android/server/pm/Settings;->readLPw(Lcom/android/server/pm/Computer;Ljava/util/List;)Z
+HSPLcom/android/server/pm/Settings;->readPackageLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Landroid/util/ArrayMap;Ljava/util/List;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/Settings;->readPackageRestrictionsLPr(ILandroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/Settings;->readPersistentPreferredActivitiesLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
+HSPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lcom/android/modules/utils/TypedXmlPullParser;I)V
+HSPLcom/android/server/pm/Settings;->readSettingsLPw(Lcom/android/server/pm/Computer;Ljava/util/List;Landroid/util/ArrayMap;)Z
+HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/ArrayList;Ljava/util/List;)V
+HSPLcom/android/server/pm/Settings;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/Settings;->registerObservers()V
+PLcom/android/server/pm/Settings;->removeAppIdLPw(I)V
+PLcom/android/server/pm/Settings;->removeRenamedPackageLPw(Ljava/lang/String;)V
+PLcom/android/server/pm/Settings;->setPermissionControllerVersion(J)V
+HSPLcom/android/server/pm/Settings;->snapshot()Lcom/android/server/pm/Settings;
+PLcom/android/server/pm/Settings;->systemReady(Lcom/android/server/pm/resolution/ComponentResolver;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J[Z[Ljava/lang/String;[JLjava/util/Set;Ljava/util/UUID;I[BZ)V
+PLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V
+PLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr(Z)V
+PLcom/android/server/pm/Settings;->writeArchiveStateLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/pkg/ArchiveState;)V
+PLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
+PLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
+PLcom/android/server/pm/Settings;->writeDefaultApps(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
+PLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
+HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V
+HPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HPLcom/android/server/pm/Settings;->writeLPr(Lcom/android/server/pm/Computer;Z)V
+HPLcom/android/server/pm/Settings;->writeMimeGroupLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/Map;)V
+HPLcom/android/server/pm/Settings;->writePackageLPr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/Settings;->writePackageListLPr()V
+PLcom/android/server/pm/Settings;->writePackageListLPr(I)V
+HPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V
+HPLcom/android/server/pm/Settings;->writePackageRestrictions(IJZ)V
+PLcom/android/server/pm/Settings;->writePackageRestrictions([Ljava/lang/Integer;)V
+PLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(IZ)V
+PLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lcom/android/modules/utils/TypedXmlSerializer;I)V
+HPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lcom/android/modules/utils/TypedXmlSerializer;IZ)V
+HPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
+HPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/Settings;->writeUsesSdkLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J[Z)V
+HPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lcom/android/modules/utils/TypedXmlSerializer;[Ljava/lang/String;[J)V
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->children()Lcom/android/server/pm/SettingsXml$ChildSection;
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getBoolean(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getBoolean(Ljava/lang/String;Z)Z
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getInt(Ljava/lang/String;)I
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getInt(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getName()Ljava/lang/String;
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->getString(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToFirstTag()V
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNext()Z
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNext(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/SettingsXml$ReadSectionImpl;->moveToNextInternal(Ljava/lang/String;)Z
+PLcom/android/server/pm/SettingsXml$Serializer;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/SettingsXml$Serializer;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/SettingsXml$Serializer-IA;)V
+PLcom/android/server/pm/SettingsXml$Serializer;->close()V
+PLcom/android/server/pm/SettingsXml$Serializer;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->-$$Nest$mcloseCompletely(Lcom/android/server/pm/SettingsXml$WriteSectionImpl;)V
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;-><init>(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/SettingsXml$WriteSectionImpl-IA;)V
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;I)Lcom/android/server/pm/SettingsXml$WriteSection;
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->attribute(Ljava/lang/String;Z)Lcom/android/server/pm/SettingsXml$WriteSection;
+HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->close()V
+PLcom/android/server/pm/SettingsXml$WriteSectionImpl;->closeCompletely()V
+HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->finish()V
+HPLcom/android/server/pm/SettingsXml$WriteSectionImpl;->startSection(Ljava/lang/String;)Lcom/android/server/pm/SettingsXml$WriteSection;
+HSPLcom/android/server/pm/SettingsXml;->parser(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/pm/SettingsXml$ReadSection;
+PLcom/android/server/pm/SettingsXml;->serializer(Lcom/android/modules/utils/TypedXmlSerializer;)Lcom/android/server/pm/SettingsXml$Serializer;
+PLcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/SharedLibrariesImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl$1;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl$2;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl$2;->createSnapshot()Lcom/android/server/pm/SharedLibrariesImpl;
+HSPLcom/android/server/pm/SharedLibrariesImpl$2;->createSnapshot()Ljava/lang/Object;
+PLcom/android/server/pm/SharedLibrariesImpl;->$r8$lambda$x5pbt1IWAO8LsYjbRIDnwkV8JxE(Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/SharedLibrariesImpl;)Lcom/android/server/utils/WatchableImpl;
+HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;-><init>(Lcom/android/server/pm/SharedLibrariesImpl;Lcom/android/server/pm/SharedLibrariesImpl-IA;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->addBuiltInSharedLibraryLPw(Lcom/android/server/SystemConfig$SharedLibraryEntry;)V
+HPLcom/android/server/pm/SharedLibrariesImpl;->addSharedLibraryLPr(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Set;Landroid/content/pm/SharedLibraryInfo;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/SharedLibrariesImpl;->applyDefiningSharedLibraryUpdateLPr(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/SharedLibraryInfo;Ljava/util/function/BiConsumer;)V
+HPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/SharedLibrariesImpl;->collectSharedLibraryInfos(Ljava/util/List;[J[[Ljava/lang/String;[ZLjava/lang/String;Ljava/lang/String;ZILjava/util/ArrayList;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/SharedLibrariesImpl;->commitSharedLibraryChanges(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/List;Ljava/util/Map;I)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->commitSharedLibraryInfoLPw(Landroid/content/pm/SharedLibraryInfo;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HPLcom/android/server/pm/SharedLibrariesImpl;->executeSharedLibrariesUpdateLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/ArrayList;[I)V
+PLcom/android/server/pm/SharedLibrariesImpl;->getAll()Lcom/android/server/utils/WatchedArrayMap;
+HPLcom/android/server/pm/SharedLibrariesImpl;->getAllowedSharedLibInfos(Lcom/android/server/pm/InstallRequest;)Ljava/util/List;
+PLcom/android/server/pm/SharedLibrariesImpl;->getLibraryPackage(Lcom/android/server/pm/Computer;Landroid/content/pm/SharedLibraryInfo;)Lcom/android/server/pm/pkg/PackageStateInternal;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->getSharedLibraryInfo(Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
+HSPLcom/android/server/pm/SharedLibrariesImpl;->getStaticLibraryInfos(Ljava/lang/String;)Lcom/android/server/utils/WatchedLongSparseArray;
+PLcom/android/server/pm/SharedLibrariesImpl;->lambda$executeSharedLibrariesUpdateLPw$0(Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->makeCache()Lcom/android/server/utils/SnapshotCache;
+PLcom/android/server/pm/SharedLibrariesImpl;->pruneUnusedStaticSharedLibraries(Lcom/android/server/pm/Computer;JJ)Z
+HSPLcom/android/server/pm/SharedLibrariesImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->registerObservers()V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->setDeletePackageHelper(Lcom/android/server/pm/DeletePackageHelper;)V
+HSPLcom/android/server/pm/SharedLibrariesImpl;->snapshot()Lcom/android/server/pm/SharedLibrariesRead;
+HPLcom/android/server/pm/SharedLibrariesImpl;->updateAllSharedLibrariesLPw(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/SharedLibrariesImpl;->updateSharedLibraries(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
+PLcom/android/server/pm/SharedLibraryUtils;->addSharedLibraryToPackageVersionMap(Ljava/util/Map;Landroid/content/pm/SharedLibraryInfo;)Z
+HPLcom/android/server/pm/SharedLibraryUtils;->getSharedLibraryInfo(Ljava/lang/String;JLjava/util/Map;Ljava/util/Map;)Landroid/content/pm/SharedLibraryInfo;
+HSPLcom/android/server/pm/SharedUserSetting$1;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
+HSPLcom/android/server/pm/SharedUserSetting$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/SharedUserSetting$2;-><init>(Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/SharedUserSetting$2;->createSnapshot()Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/SharedUserSetting$2;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;)V
+HSPLcom/android/server/pm/SharedUserSetting;-><init>(Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/pm/SharedUserSetting-IA;)V
+HSPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V
+HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/SharedUserSetting;->addProcesses(Ljava/util/Map;)V
+HPLcom/android/server/pm/SharedUserSetting;->fixSeInfoLocked()V
+PLcom/android/server/pm/SharedUserSetting;->getDisabledPackageSettings()Lcom/android/server/utils/WatchedArraySet;
+PLcom/android/server/pm/SharedUserSetting;->getPackageSettings()Lcom/android/server/utils/WatchedArraySet;
+HPLcom/android/server/pm/SharedUserSetting;->getPackageStates()Landroid/util/ArraySet;
+HPLcom/android/server/pm/SharedUserSetting;->getPackages()Ljava/util/List;
+PLcom/android/server/pm/SharedUserSetting;->getSeInfoTargetSdkVersion()I
+PLcom/android/server/pm/SharedUserSetting;->getSigningDetails()Landroid/content/pm/SigningDetails;
+HPLcom/android/server/pm/SharedUserSetting;->isPrivileged()Z
+HSPLcom/android/server/pm/SharedUserSetting;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/SharedUserSetting;->registerObservers()V
+HSPLcom/android/server/pm/SharedUserSetting;->snapshot()Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/SharedUserSetting;->snapshot()Ljava/lang/Object;
+PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/SharedUserSetting;->updateProcesses()V
+PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutBitmapSaver;)V
+PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda1;-><init>(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/pm/ShortcutBitmapSaver$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/pm/ShortcutBitmapSaver;->$r8$lambda$0cDwbUuQexB0Dry-KJy6ApKQ1Ic(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$waitForAllSavesLocked$0(Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z
+PLcom/android/server/pm/ShortcutDumpFiles;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;I)V
+PLcom/android/server/pm/ShortcutLauncher;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;ILcom/android/server/pm/ShortcutPackageInfo;)V
+PLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/pm/ShortcutNonPersistentUser;-><init>(I)V
+PLcom/android/server/pm/ShortcutNonPersistentUser;->hasHostPackage(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutNonPersistentUser;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda17;-><init>(J)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutPackage;J)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/pm/ShortcutPackage;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda24;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;Z)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ShortcutPackage;Lcom/android/server/pm/ShortcutService;Landroid/content/res/Resources;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda36;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda38;-><init>()V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda38;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda7;-><init>()V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/pm/ShortcutPackage$$ExternalSyntheticLambda9;-><init>()V
+PLcom/android/server/pm/ShortcutPackage;->$r8$lambda$PHafQNXd3rG88ujYp-2FnsxrvDY(Ljava/util/function/Consumer;Landroid/content/pm/ShortcutInfo;)Ljava/lang/Boolean;
+PLcom/android/server/pm/ShortcutPackage;->$r8$lambda$siuXAQT-OivpKlIZX1n0iIppP6o(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+PLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
+PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;Z)V
+PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Landroid/content/pm/ShortcutInfo;Z)V
+PLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;Z)V
+PLcom/android/server/pm/ShortcutPackage;->filter(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V
+PLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutPackage;->forEachShortcut(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutPackage;->forEachShortcutMutate(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutPackage;->forEachShortcutStopWhen(Ljava/util/function/Function;)V
+PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources;
+PLcom/android/server/pm/ShortcutPackage;->getShortcutCount()I
+PLcom/android/server/pm/ShortcutPackage;->getShortcutPackageItemFile()Ljava/io/File;
+PLcom/android/server/pm/ShortcutPackage;->hasNoShortcut()Z
+PLcom/android/server/pm/ShortcutPackage;->hasShareTargets()Z
+PLcom/android/server/pm/ShortcutPackage;->isAppSearchEnabled()Z
+PLcom/android/server/pm/ShortcutPackage;->isShortcutExistsAndVisibleToPublisher(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutPackage;->lambda$findAll$13(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;Landroid/util/ArraySet;ZLandroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/pm/ShortcutPackage;->lambda$forEachShortcut$37(Ljava/util/function/Consumer;Landroid/content/pm/ShortcutInfo;)Ljava/lang/Boolean;
+PLcom/android/server/pm/ShortcutPackage;->loadFromFile(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Ljava/io/File;Z)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lcom/android/modules/utils/TypedXmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutPackage;->parseIntent(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z
+PLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
+HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V
+PLcom/android/server/pm/ShortcutPackage;->saveShortcutsAsync(Ljava/util/Collection;)V
+PLcom/android/server/pm/ShortcutPackage;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutPackage;->scheduleSaveToAppSearchLocked()V
+PLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
+PLcom/android/server/pm/ShortcutPackageInfo;-><init>(JJLjava/util/ArrayList;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()J
+PLcom/android/server/pm/ShortcutPackageInfo;->isBackupAllowed()Z
+PLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
+PLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lcom/android/modules/utils/TypedXmlPullParser;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo;
+PLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->updateFromPackageInfo(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/ShortcutPackageItem$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutPackageItem$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+PLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
+PLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
+PLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
+HPLcom/android/server/pm/ShortcutPackageItem;->getResilientFile(Ljava/io/File;)Lcom/android/server/pm/ResilientAtomicFile;
+PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutPackageItem;->saveShortcutPackageItem()V
+PLcom/android/server/pm/ShortcutPackageItem;->saveToFileLocked(Ljava/io/File;Z)V
+PLcom/android/server/pm/ShortcutPackageItem;->scheduleSave()V
+PLcom/android/server/pm/ShortcutPackageItem;->waitForBitmapSaves()Z
+PLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutParser;->parseShortcutsOneFile(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILjava/util/List;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutRequestPinProcessor;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/pm/ShortcutService;ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda16;->run()V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda18;-><init>()V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/pm/ShortcutService;I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda22;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;I)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/ShortcutService;JI)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService$$ExternalSyntheticLambda9;->run()V
+PLcom/android/server/pm/ShortcutService$1;-><init>()V
+PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$2;-><init>()V
+PLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$3;-><init>(Lcom/android/server/pm/ShortcutService;)V
+HPLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/ShortcutService$4;II)V
+PLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda0;->run()V
+HPLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutService$4;I)V
+PLcom/android/server/pm/ShortcutService$4$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/pm/ShortcutService$4;->$r8$lambda$T38dA-CIlJpPfJ4NeUI0t9KKVrc(Lcom/android/server/pm/ShortcutService$4;I)V
+PLcom/android/server/pm/ShortcutService$4;->$r8$lambda$hFVl7KreRTWPjzcQMzQwU2JU-Sg(Lcom/android/server/pm/ShortcutService$4;II)V
+PLcom/android/server/pm/ShortcutService$4;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$4;->lambda$onUidGone$1(I)V
+PLcom/android/server/pm/ShortcutService$4;->lambda$onUidStateChanged$0(II)V
+HPLcom/android/server/pm/ShortcutService$4;->onUidGone(IZ)V
+HPLcom/android/server/pm/ShortcutService$4;->onUidStateChanged(IIJI)V
+PLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$6;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$7;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/ShortcutService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/pm/ShortcutService$Lifecycle;->onStart()V
+PLcom/android/server/pm/ShortcutService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda11;-><init>(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda11;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
+PLcom/android/server/pm/ShortcutService$LocalService$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$3lWA6IdBBMst2VF_gQSz1s4aYQs(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->$r8$lambda$4oN-teeezN_bMPNKBELK1aAUWLM(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
+PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;)V
+PLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$LocalService-IA;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->addShortcutChangeCallback(Landroid/content/pm/LauncherApps$ShortcutChangeCallback;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->getFilterFromQuery(Landroid/util/ArraySet;Ljava/util/List;JLandroid/content/ComponentName;IZ)Ljava/util/function/Predicate;
+PLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
+PLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;II)Z
+PLcom/android/server/pm/ShortcutService$LocalService;->lambda$getFilterFromQuery$1(JLandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
+PLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcuts$0(ILjava/lang/String;Ljava/util/List;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService$LocalService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$7rv-mE0g49gCi8ScAXXEokztNMo(Lcom/android/server/pm/ShortcutService;JI)V
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$BDhOaAE5veHHQ_RtN3GY5v87JoE(Lcom/android/server/pm/ShortcutService;ILandroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$J6T1wdAzRJXSyM3Fjbs4z0aR2q4(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$PNh5C8HPIJGGYj6-U9dEpCWj8E4(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$qmXsSrkG1sY5mQZKbh8vonwJC94(Lcom/android/server/pm/ShortcutService;ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->$r8$lambda$yKU4jgBsUzyszwnIVxSwO_MEiaM(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmListeners(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmLock(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object;
+PLcom/android/server/pm/ShortcutService;->-$$Nest$fgetmShortcutChangeCallbacks(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/ShortcutService;->-$$Nest$msetReturnedByServer(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->-$$Nest$smisInstalled(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService;-><clinit>()V
+PLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
+PLcom/android/server/pm/ShortcutService;->canSeeAnyPinnedShortcut(Ljava/lang/String;III)Z
+PLcom/android/server/pm/ShortcutService;->checkPackageChanges(I)V
+PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapDirectoriesLocked(I)V
+PLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ShortcutService;->getBaseStateFile()Lcom/android/server/pm/ResilientAtomicFile;
+PLcom/android/server/pm/ShortcutService;->getBgLooper()Landroid/os/Looper;
+PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J
+PLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
+PLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent;
+PLcom/android/server/pm/ShortcutService;->getNonPersistentUserLocked(I)Lcom/android/server/pm/ShortcutNonPersistentUser;
+PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I
+PLcom/android/server/pm/ShortcutService;->getStatStartTime()J
+PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File;
+PLcom/android/server/pm/ShortcutService;->getUserFile(I)Lcom/android/server/pm/ResilientAtomicFile;
+PLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
+PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V
+PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;III)Z
+PLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z
+PLcom/android/server/pm/ShortcutService;->initialize()V
+PLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
+PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
+PLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J
+PLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I
+PLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J
+PLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ShortcutService;->injectGetHomeRoleHolderAsUser(I)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
+PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
+PLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z
+PLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z
+PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z
+PLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/pm/ShortcutService;->injectPostToHandlerDebounced(Ljava/lang/Object;Ljava/lang/Runnable;)V
+PLcom/android/server/pm/ShortcutService;->injectRegisterRoleHoldersListener(Landroid/app/role/OnRoleHoldersChangedListener;)V
+PLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V
+PLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
+PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V
+PLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z
+PLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File;
+PLcom/android/server/pm/ShortcutService;->injectUserDataPath(I)Ljava/io/File;
+PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
+PLcom/android/server/pm/ShortcutService;->isAppSearchEnabled()Z
+PLcom/android/server/pm/ShortcutService;->isCallerSystem()Z
+PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z
+PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ActivityInfo;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/ShortcutService;->isInstalledOrNull(Landroid/content/pm/PackageInfo;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z
+PLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z
+PLcom/android/server/pm/ShortcutService;->isSystem(Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isSystem(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
+PLcom/android/server/pm/ShortcutService;->lambda$checkPackageChanges$14(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->lambda$handleUnlockUser$1(JI)V
+PLcom/android/server/pm/ShortcutService;->lambda$notifyListenerRunnable$2(ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->lambda$notifyShortcutChangeCallbacks$3(ILjava/util/List;Ljava/lang/String;Landroid/os/UserHandle;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->lambda$queryActivities$16(ILandroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService;->lambda$static$0(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V
+PLcom/android/server/pm/ShortcutService;->loadConfigurationLocked()V
+PLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
+PLcom/android/server/pm/ShortcutService;->notifyListenerRunnable(Ljava/lang/String;I)Ljava/lang/Runnable;
+PLcom/android/server/pm/ShortcutService;->notifyShortcutChangeCallbacks(Ljava/lang/String;ILjava/util/List;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->onBootPhase(I)V
+PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Lcom/android/server/pm/ShortcutPackage;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Z)Z
+PLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName;
+PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)I
+PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
+PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)J
+PLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;J)J
+PLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/ShortcutService;->removeNonKeyFields(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
+PLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V
+PLcom/android/server/pm/ShortcutService;->saveUser(I)V
+PLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(ILjava/io/OutputStream;Z)V
+PLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V
+PLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V
+PLcom/android/server/pm/ShortcutService;->setReturnedByServer(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->shouldBackupApp(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
+PLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutService;->updateTimesLocked()V
+PLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->verifyStates()V
+PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;J)V
+PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
+PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
+PLcom/android/server/pm/ShortcutService;->writeAttr(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Z)V
+PLcom/android/server/pm/ShortcutService;->writeTagExtra(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Z)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutUser$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/pm/ShortcutUser;IZ)V
+PLcom/android/server/pm/ShortcutUser;->$r8$lambda$BeZCg8-9BP9faEuabdbH0SUoZS0(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;ZLjava/io/File;)V
+PLcom/android/server/pm/ShortcutUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V
+PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V
+PLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutUser;->forMainFilesIn(Ljava/io/File;Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J
+PLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
+PLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutUser;->getUserId()I
+PLcom/android/server/pm/ShortcutUser;->lambda$loadFromXml$3(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;ZLjava/io/File;)V
+PLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/modules/utils/TypedXmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutUser;->logSharingShortcutStats(Lcom/android/internal/logging/MetricsLogger;)V
+PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
+PLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V
+PLcom/android/server/pm/ShortcutUser;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutUser;->setCachedLauncher(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V
+PLcom/android/server/pm/SilentUpdatePolicy;-><clinit>()V
+PLcom/android/server/pm/SilentUpdatePolicy;-><init>()V
+HSPLcom/android/server/pm/SnapshotStatistics$1;-><init>(Lcom/android/server/pm/SnapshotStatistics;Landroid/os/Looper;)V
+PLcom/android/server/pm/SnapshotStatistics$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/pm/SnapshotStatistics$BinMap;-><init>([I)V
+HSPLcom/android/server/pm/SnapshotStatistics$BinMap;->count()I
+HSPLcom/android/server/pm/SnapshotStatistics$BinMap;->getBin(I)I
+PLcom/android/server/pm/SnapshotStatistics$Stats;->-$$Nest$mcomplete(Lcom/android/server/pm/SnapshotStatistics$Stats;J)V
+HSPLcom/android/server/pm/SnapshotStatistics$Stats;->-$$Nest$mrebuild(Lcom/android/server/pm/SnapshotStatistics$Stats;IIIIZZ)V
+HSPLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;J)V
+HSPLcom/android/server/pm/SnapshotStatistics$Stats;-><init>(Lcom/android/server/pm/SnapshotStatistics;JLcom/android/server/pm/SnapshotStatistics$Stats-IA;)V
+PLcom/android/server/pm/SnapshotStatistics$Stats;->complete(J)V
+HSPLcom/android/server/pm/SnapshotStatistics$Stats;->rebuild(IIIIZZ)V
+HSPLcom/android/server/pm/SnapshotStatistics;->-$$Nest$fgetmTimeBins(Lcom/android/server/pm/SnapshotStatistics;)Lcom/android/server/pm/SnapshotStatistics$BinMap;
+HSPLcom/android/server/pm/SnapshotStatistics;->-$$Nest$fgetmUseBins(Lcom/android/server/pm/SnapshotStatistics;)Lcom/android/server/pm/SnapshotStatistics$BinMap;
+PLcom/android/server/pm/SnapshotStatistics;->-$$Nest$mhandleMessage(Lcom/android/server/pm/SnapshotStatistics;Landroid/os/Message;)V
+HSPLcom/android/server/pm/SnapshotStatistics;-><clinit>()V
+HSPLcom/android/server/pm/SnapshotStatistics;-><init>()V
+PLcom/android/server/pm/SnapshotStatistics;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/pm/SnapshotStatistics;->rebuild(JJII)V
+HSPLcom/android/server/pm/SnapshotStatistics;->scheduleTick()V
+PLcom/android/server/pm/SnapshotStatistics;->shift([Lcom/android/server/pm/SnapshotStatistics$Stats;J)V
+HPLcom/android/server/pm/SnapshotStatistics;->tick()V
+PLcom/android/server/pm/StagingManager$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/StagingManager$1;-><init>(Lcom/android/server/pm/StagingManager;Landroid/content/pm/IStagedApexObserver;)V
+PLcom/android/server/pm/StagingManager$2;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/StagingManager$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/StagingManager$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/pm/StagingManager$Lifecycle;->onStart()V
+PLcom/android/server/pm/StagingManager$Lifecycle;->startService(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager;->$r8$lambda$Tc-8JeWCdIuusiZU02QNaF3RrX8(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager;->-$$Nest$mmarkBootCompleted(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager;->-$$Nest$mmarkStagedSessionsAsSuccessful(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/StagingManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/ApexManager;)V
+PLcom/android/server/pm/StagingManager;->handleNonReadyAndDestroyedSessions(Ljava/util/List;)V
+PLcom/android/server/pm/StagingManager;->lambda$onBootCompletedBroadcastReceived$1()V
+PLcom/android/server/pm/StagingManager;->logFailedApexSessionsIfNecessary()V
+PLcom/android/server/pm/StagingManager;->markBootCompleted()V
+PLcom/android/server/pm/StagingManager;->markStagedSessionsAsSuccessful()V
+PLcom/android/server/pm/StagingManager;->onBootCompletedBroadcastReceived()V
+PLcom/android/server/pm/StagingManager;->registerStagedApexObserver(Landroid/content/pm/IStagedApexObserver;)V
+PLcom/android/server/pm/StagingManager;->restoreSessions(Ljava/util/List;Z)V
+PLcom/android/server/pm/StagingManager;->systemReady()V
+HSPLcom/android/server/pm/StorageEventHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/DeletePackageHelper;Lcom/android/server/pm/RemovePackageHelper;)V
+PLcom/android/server/pm/StorageEventHelper;->collectAbsoluteCodePaths(Lcom/android/server/pm/Computer;)Ljava/util/List;
+PLcom/android/server/pm/StorageEventHelper;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/pm/StorageEventHelper;->reconcileApps(Lcom/android/server/pm/Computer;Ljava/lang/String;)V
+HSPLcom/android/server/pm/SuspendPackageHelper;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerServiceInjector;Lcom/android/server/pm/BroadcastHelper;Lcom/android/server/pm/ProtectedPackages;)V
+HPLcom/android/server/pm/SuspendPackageHelper;->isPackageSuspended(Lcom/android/server/pm/Computer;Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/UpdateOwnershipHelper;-><init>()V
+HPLcom/android/server/pm/UpdateOwnershipHelper;->hasValidOwnershipDenyList(Lcom/android/server/pm/PackageSetting;)Z
+HPLcom/android/server/pm/UpdateOwnershipHelper;->isUpdateOwnershipDenylisted(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;)V
+PLcom/android/server/pm/UserDataPreparer;->enforceSerialNumber(Ljava/io/File;I)V
+PLcom/android/server/pm/UserDataPreparer;->getDataSystemCeDirectory(I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getSerialNumber(Ljava/io/File;)I
+PLcom/android/server/pm/UserDataPreparer;->prepareUserData(Landroid/content/pm/UserInfo;I)V
+PLcom/android/server/pm/UserDataPreparer;->prepareUserDataLI(Ljava/lang/String;Landroid/content/pm/UserInfo;IZ)V
+PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
+HSPLcom/android/server/pm/UserJourneyLogger;-><init>()V
+PLcom/android/server/pm/UserJourneyLogger;->findUserJourneySession(I)Lcom/android/server/pm/UserJourneyLogger$UserJourneySession;
+PLcom/android/server/pm/UserJourneyLogger;->getUserTypeForStatsd(Ljava/lang/String;)I
+PLcom/android/server/pm/UserJourneyLogger;->logUserLifecycleEvent(III)V
+PLcom/android/server/pm/UserJourneyLogger;->logUserLifecycleEventOccurred(Lcom/android/server/pm/UserJourneyLogger$UserJourneySession;IIII)V
+PLcom/android/server/pm/UserJourneyLogger;->writeUserLifecycleEventOccurred(JIIII)V
+HSPLcom/android/server/pm/UserManagerInternal;-><init>()V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/pm/UserManagerService;I)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda9;-><init>(Landroid/os/IUserRestrictionsListener;)V
+PLcom/android/server/pm/UserManagerService$$ExternalSyntheticLambda9;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$2;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$3;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/UserManagerService$4;-><init>(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService$4;->run()V
+PLcom/android/server/pm/UserManagerService$LifeCycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onBootPhase(I)V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/UserManagerService$LocalService;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$LocalService-IA;)V
+PLcom/android/server/pm/UserManagerService$LocalService;->addUserLifecycleListener(Lcom/android/server/pm/UserManagerInternal$UserLifecycleListener;)V
+PLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Lcom/android/server/pm/UserManagerInternal$UserRestrictionsListener;)V
+PLcom/android/server/pm/UserManagerService$LocalService;->addUserVisibilityListener(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;)V
+HSPLcom/android/server/pm/UserManagerService$LocalService;->exists(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->getCommunalProfileId()I
+PLcom/android/server/pm/UserManagerService$LocalService;->getMainUserId()I
+PLcom/android/server/pm/UserManagerService$LocalService;->getProfileIds(IZ)[I
+PLcom/android/server/pm/UserManagerService$LocalService;->getProfileParentId(I)I
+PLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I
+HPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfos()[Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService$LocalService;->getUserProperties(I)Landroid/content/pm/UserProperties;
+PLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->getUsers(Z)Ljava/util/List;
+HSPLcom/android/server/pm/UserManagerService$LocalService;->getUsers(ZZZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService$LocalService;->hasUserRestriction(Ljava/lang/String;I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isUserVisible(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->onSystemUserVisibilityChanged(Z)V
+PLcom/android/server/pm/UserManagerService$LocalService;->setUserState(II)V
+HSPLcom/android/server/pm/UserManagerService$MainHandler;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/pm/UserManagerService$SettingsObserver;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/pm/UserManagerService$UserData;-><init>()V
+PLcom/android/server/pm/UserManagerService$UserData;->getIgnorePrepareStorageErrors()Z
+PLcom/android/server/pm/UserManagerService$UserData;->getLastRequestQuietModeEnabledMillis()J
+HSPLcom/android/server/pm/UserManagerService$UserData;->setLastRequestQuietModeEnabledMillis(J)V
+HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HPLcom/android/server/pm/UserManagerService$WatchedUserStates;->get(II)I
+HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;->invalidateIsUserUnlockedCache()V
+HSPLcom/android/server/pm/UserManagerService$WatchedUserStates;->put(II)V
+PLcom/android/server/pm/UserManagerService;->$r8$lambda$GUi0BCW04izr6742i0VPIXzrq1o(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService;->$r8$lambda$LvInK5qZJcI6bZ0Fs5Aic8iLG5s(Landroid/os/IUserRestrictionsListener;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmContext(Lcom/android/server/pm/UserManagerService;)Landroid/content/Context;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmPackagesLock(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmPm(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserLifecycleListeners(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserRestrictionsListeners(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserStates(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/UserManagerService$WatchedUserStates;
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUserVisibilityMediator(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/UserVisibilityMediator;
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUsers(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseArray;
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$fgetmUsersLock(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mcleanupPartialUsers(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetCommunalProfileIdUnchecked(Lcom/android/server/pm/UserManagerService;)I
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetEffectiveUserRestrictions(Lcom/android/server/pm/UserManagerService;I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetMainUserIdUnchecked(Lcom/android/server/pm/UserManagerService;)I
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetProfileIdsLU(Lcom/android/server/pm/UserManagerService;ILjava/lang/String;ZZ)Landroid/util/IntArray;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetProfileParentIdUnchecked(Lcom/android/server/pm/UserManagerService;I)I
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserDataLU(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserDataNoChecks(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserInfoNoChecks(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUserPropertiesInternal(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserProperties;
+HSPLcom/android/server/pm/UserManagerService;->-$$Nest$mgetUsersInternal(Lcom/android/server/pm/UserManagerService;ZZZ)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->-$$Nest$minvalidateOwnerNameIfNecessary(Lcom/android/server/pm/UserManagerService;Landroid/content/res/Resources;Z)V
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mregisterStatsCallbacks(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService;->-$$Nest$msetLastEnteredForegroundTimeToNow(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
+PLcom/android/server/pm/UserManagerService;->-$$Nest$mwriteUserLP(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
+HSPLcom/android/server/pm/UserManagerService;-><clinit>()V
+HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/UserManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/UserDataPreparer;Ljava/lang/Object;Ljava/io/File;Landroid/util/SparseArray;)V
+PLcom/android/server/pm/UserManagerService;->addUserRestrictionsListener(Landroid/os/IUserRestrictionsListener;)V
+PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V
+PLcom/android/server/pm/UserManagerService;->autoLockPrivateSpace()V
+HPLcom/android/server/pm/UserManagerService;->checkCreateUsersPermission(Ljava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->checkQueryOrCreateUsersPermission(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkQueryOrInteractPermissionIfCallerInOtherProfileGroup(ILjava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V
+HPLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserManagerService;->emulateSystemUserModeIfNeeded()V
+HPLcom/android/server/pm/UserManagerService;->exists(I)Z
+PLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->getCommunalProfileIdUnchecked()I
+HPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/UserManagerService;->getInternalForInjectorOnly()Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/pm/UserManagerService;->getMainUserId()I
+HPLcom/android/server/pm/UserManagerService;->getMainUserIdUnchecked()I
+HSPLcom/android/server/pm/UserManagerService;->getOwnerName()Ljava/lang/String;
+PLcom/android/server/pm/UserManagerService;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/pm/UserManagerService;->getPrimaryUser()Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->getPrivateProfileUserId()I
+HPLcom/android/server/pm/UserManagerService;->getProfileIds(ILjava/lang/String;ZZ)[I
+PLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I
+PLcom/android/server/pm/UserManagerService;->getProfileIdsExcludingHidden(IZ)[I
+HPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;ZZ)Landroid/util/IntArray;
+HPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->getProfileParentIdUnchecked(I)I
+HPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getProfileType(I)Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->getProfilesLU(ILjava/lang/String;ZZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
+HPLcom/android/server/pm/UserManagerService;->getUserDataLU(I)Lcom/android/server/pm/UserManagerService$UserData;
+PLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->getUserFile(I)Lcom/android/server/pm/ResilientAtomicFile;
+PLcom/android/server/pm/UserManagerService;->getUserHandle(I)I
+HPLcom/android/server/pm/UserManagerService;->getUserIds()[I
+HSPLcom/android/server/pm/UserManagerService;->getUserIdsIncludingPreCreated()[I
+HPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->getUserInfoLU(I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->getUserInfoNoChecks(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->getUserJourneyLogger()Lcom/android/server/pm/UserJourneyLogger;
+HSPLcom/android/server/pm/UserManagerService;->getUserListFile()Lcom/android/server/pm/ResilientAtomicFile;
+HPLcom/android/server/pm/UserManagerService;->getUserPropertiesCopy(I)Landroid/content/pm/UserProperties;
+HPLcom/android/server/pm/UserManagerService;->getUserPropertiesInternal(I)Landroid/content/pm/UserProperties;
+PLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
+PLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J
+PLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J
+PLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;
+HSPLcom/android/server/pm/UserManagerService;->getUsersInternal(ZZZ)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->getVisibleUsers()[I
+HPLcom/android/server/pm/UserManagerService;->hasCreateUsersPermission()Z
+HPLcom/android/server/pm/UserManagerService;->hasManageUsersOrPermission(Ljava/lang/String;)Z
+HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z
+HPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission(I)Z
+HPLcom/android/server/pm/UserManagerService;->hasPermissionGranted(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/UserManagerService;->hasProfile(I)Z
+PLcom/android/server/pm/UserManagerService;->hasQueryOrCreateUsersPermission()Z
+HPLcom/android/server/pm/UserManagerService;->hasQueryUsersPermission()Z
+HPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V
+PLcom/android/server/pm/UserManagerService;->installWhitelistedSystemPackages(ZZLandroid/util/ArraySet;)Z
+HSPLcom/android/server/pm/UserManagerService;->invalidateOwnerNameIfNecessary(Landroid/content/res/Resources;Z)V
+PLcom/android/server/pm/UserManagerService;->isAutoLockForPrivateSpaceEnabled()Z
+PLcom/android/server/pm/UserManagerService;->isAutoLockingPrivateSpaceOnRestartsEnabled()Z
+PLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z
+PLcom/android/server/pm/UserManagerService;->isHeadlessSystemUserMode()Z
+PLcom/android/server/pm/UserManagerService;->isPreCreated(I)Z
+PLcom/android/server/pm/UserManagerService;->isProfileHidden(I)Z
+HPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z
+PLcom/android/server/pm/UserManagerService;->isRestricted(I)Z
+PLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z
+HPLcom/android/server/pm/UserManagerService;->isSettingRestrictedForUser(Ljava/lang/String;ILjava/lang/String;I)Z
+HPLcom/android/server/pm/UserManagerService;->isUserRunning(I)Z
+HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfFull(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfProfile(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserManagerService;->isUserTypeSubtypeOfSystem(Ljava/lang/String;)Z
+HPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
+HPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
+PLcom/android/server/pm/UserManagerService;->lambda$addUserRestrictionsListener$3(Landroid/os/IUserRestrictionsListener;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService;->lambda$updateUserRestrictionsInternalLR$4(Landroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService;->markEphemeralUsersForRemoval()V
+PLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V
+PLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V
+HPLcom/android/server/pm/UserManagerService;->packageToRestrictionsFileName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/UserManagerService;->propagateUserRestrictionsLR(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;
+HPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Ljava/lang/String;I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserManagerService;->readUserLP(II)Lcom/android/server/pm/UserManagerService$UserData;
+HPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->readUserListLP()V
+PLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->registerStatsCallbacks()V
+PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(I)V
+PLcom/android/server/pm/UserManagerService;->setLastEnteredForegroundTimeToNow(Lcom/android/server/pm/UserManagerService$UserData;)V
+PLcom/android/server/pm/UserManagerService;->setOrUpdateAutoLockPreferenceForPrivateProfile(I)V
+PLcom/android/server/pm/UserManagerService;->setUserRestriction(Ljava/lang/String;ZI)V
+PLcom/android/server/pm/UserManagerService;->systemReady()V
+HSPLcom/android/server/pm/UserManagerService;->updateUserIds()V
+PLcom/android/server/pm/UserManagerService;->updateUserRestrictionsInternalLR(Landroid/os/Bundle;I)V
+HSPLcom/android/server/pm/UserManagerService;->updateUsersWithFeatureFlags(Z)V
+HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP()V
+HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(II)V
+PLcom/android/server/pm/UserManagerService;->userExists(I)Z
+HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;)V
+HPLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
+HSPLcom/android/server/pm/UserNeedsBadgingCache;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HPLcom/android/server/pm/UserNeedsBadgingCache;->get(I)Z
+HSPLcom/android/server/pm/UserRestrictionsUtils;-><clinit>()V
+PLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestrictions(Landroid/content/Context;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserRestrictionsUtils;->areEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z
+HPLcom/android/server/pm/UserRestrictionsUtils;->isSettingRestrictedForUser(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;I)Z
+HPLcom/android/server/pm/UserRestrictionsUtils;->isValidRestriction(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserRestrictionsUtils;->merge(Landroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lcom/android/modules/utils/TypedXmlPullParser;)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lcom/android/modules/utils/TypedXmlPullParser;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z
+PLcom/android/server/pm/UserRestrictionsUtils;->writeRestrictions(Lcom/android/modules/utils/TypedXmlSerializer;Landroid/os/Bundle;Ljava/lang/String;)V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;-><clinit>()V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/UserSystemPackageInstaller;->checkWhitelistedSystemPackages(I)V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->determineWhitelistedPackagesForUserTypes(Lcom/android/server/SystemConfig;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getAndSortKeysFromMap(Landroid/util/ArrayMap;)[Ljava/lang/String;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getBaseTypeBitSets()Ljava/util/Map;
+PLcom/android/server/pm/UserSystemPackageInstaller;->getDeviceDefaultWhitelistMode()I
+PLcom/android/server/pm/UserSystemPackageInstaller;->getPackagesWhitelistWarnings()Ljava/util/List;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getTypesBitSet(Ljava/lang/Iterable;Ljava/util/Map;)J
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getUserTypeMask(Ljava/lang/String;)J
+PLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistMode()I
+PLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistedSystemPackages()Ljava/util/Set;
+PLcom/android/server/pm/UserSystemPackageInstaller;->installWhitelistedSystemPackages(ZZLandroid/util/ArraySet;)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->isEnforceMode(I)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->isImplicitWhitelistMode(I)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->isLogMode(I)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->modeToString(I)Ljava/lang/String;
+PLcom/android/server/pm/UserSystemPackageInstaller;->shouldUseOverlayTargetName(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;-><init>()V
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->checkSystemAndMainUserPreconditions()V
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->createUserTypeDetails()Lcom/android/server/pm/UserTypeDetails;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->getDefaultUserProperties()Landroid/content/pm/UserProperties;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasBadge()Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasValidBaseType()Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->hasValidPropertyFlags()Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->isProfile()Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeColors([I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeLabels([I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgeNoBackground(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBadgePlain(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setBaseType(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDarkThemeBadgeColors([I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultCrossProfileIntentFilters(Ljava/util/List;)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultRestrictions(Landroid/os/Bundle;)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultSecureSettings(Landroid/os/Bundle;)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultUserInfoPropertyFlags(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setDefaultUserProperties(Landroid/content/pm/UserProperties$Builder;)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setEnabled(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setIconBadge(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setLabels([I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setMaxAllowed(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setMaxAllowedPerParent(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setName(Ljava/lang/String;)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setStatusBarIcon(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIII[IIIIII[I[I[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Ljava/util/List;Landroid/content/pm/UserProperties;)V
+HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIII[IIIIII[I[I[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Ljava/util/List;Landroid/content/pm/UserProperties;Lcom/android/server/pm/UserTypeDetails-IA;)V
+HSPLcom/android/server/pm/UserTypeDetails;->addDefaultRestrictionsTo(Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserTypeDetails;->getDefaultUserPropertiesReference()Landroid/content/pm/UserProperties;
+HSPLcom/android/server/pm/UserTypeDetails;->isFull()Z
+HSPLcom/android/server/pm/UserTypeDetails;->isProfile()Z
+HSPLcom/android/server/pm/UserTypeDetails;->isSystem()Z
+HSPLcom/android/server/pm/UserTypeFactory;->customizeBuilders(Landroid/util/ArrayMap;Landroid/content/res/XmlResourceParser;)V
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultBuilders()Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultCloneCrossProfileIntentFilter()Ljava/util/List;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultGuestUserRestrictions()Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultManagedCrossProfileIntentFilter()Ljava/util/List;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultManagedProfileSecureSettings()Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultNonManagedProfileSecureSettings()Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultProfileRestrictions()Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultSecondaryUserRestrictions()Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullDemo()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullGuest()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullRestricted()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullSecondary()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeFullSystem()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileClone()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileCommunal()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileManaged()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfilePrivate()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeProfileTest()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeSystemHeadless()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getUserTypeVersion()I
+HSPLcom/android/server/pm/UserTypeFactory;->getUserTypeVersion(Landroid/content/res/XmlResourceParser;)I
+HSPLcom/android/server/pm/UserTypeFactory;->getUserTypes()Landroid/util/ArrayMap;
+PLcom/android/server/pm/UserVisibilityMediator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
+PLcom/android/server/pm/UserVisibilityMediator$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/UserVisibilityMediator;->$r8$lambda$RwzqKlQYDyxdAxTJhHVafFhaCRE(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
+HSPLcom/android/server/pm/UserVisibilityMediator;-><clinit>()V
+HSPLcom/android/server/pm/UserVisibilityMediator;-><init>(Landroid/os/Handler;)V
+HSPLcom/android/server/pm/UserVisibilityMediator;-><init>(ZZLandroid/os/Handler;)V
+PLcom/android/server/pm/UserVisibilityMediator;->addListener(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;)V
+PLcom/android/server/pm/UserVisibilityMediator;->dispatchVisibilityChanged(Ljava/util/concurrent/CopyOnWriteArrayList;IZ)V
+PLcom/android/server/pm/UserVisibilityMediator;->getVisibleUsers()Landroid/util/IntArray;
+HPLcom/android/server/pm/UserVisibilityMediator;->isCurrentUserOrRunningProfileOfCurrentUser(I)Z
+HPLcom/android/server/pm/UserVisibilityMediator;->isUserVisible(I)Z
+PLcom/android/server/pm/UserVisibilityMediator;->lambda$dispatchVisibilityChanged$0(Lcom/android/server/pm/UserManagerInternal$UserVisibilityListener;IZ)V
+PLcom/android/server/pm/UserVisibilityMediator;->onSystemUserVisibilityChanged(Z)V
+HSPLcom/android/server/pm/WatchedIntentFilter;-><init>()V
+HSPLcom/android/server/pm/WatchedIntentFilter;-><init>(Landroid/content/IntentFilter;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;-><init>(Lcom/android/server/pm/WatchedIntentFilter;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;->addAction(Ljava/lang/String;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;->addCategory(Ljava/lang/String;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;->addDataScheme(Ljava/lang/String;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;->addDataType(Ljava/lang/String;)V
+HSPLcom/android/server/pm/WatchedIntentFilter;->getIntentFilter()Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/WatchedIntentFilter;->onChanged()V
+HSPLcom/android/server/pm/WatchedIntentResolver$1;-><init>(Lcom/android/server/pm/WatchedIntentResolver;)V
+HSPLcom/android/server/pm/WatchedIntentResolver$2;-><init>()V
+HSPLcom/android/server/pm/WatchedIntentResolver;-><clinit>()V
+HSPLcom/android/server/pm/WatchedIntentResolver;-><init>()V
+HSPLcom/android/server/pm/WatchedIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/WatchedIntentFilter;)V
+HSPLcom/android/server/pm/WatchedIntentResolver;->copyFrom(Lcom/android/server/pm/WatchedIntentResolver;)V
+HSPLcom/android/server/pm/WatchedIntentResolver;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/WatchedIntentResolver;->findFilters(Lcom/android/server/pm/WatchedIntentFilter;)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/WatchedIntentResolver;->onChanged()V
+HSPLcom/android/server/pm/WatchedIntentResolver;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;-><init>(Lcom/android/server/pm/dex/ArtManagerService;)V
+HSPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;-><init>(Lcom/android/server/pm/dex/ArtManagerService;Lcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl-IA;)V
+PLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->checkIorapCompiledTrace(Ljava/lang/String;Ljava/lang/String;J)Z
+PLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
+PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$sfgetDEBUG()Z
+PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$smgetCompilationFilterTronValue(Ljava/lang/String;)I
+PLcom/android/server/pm/dex/ArtManagerService;->-$$Nest$smgetCompilationReasonTronValue(Ljava/lang/String;)I
+HSPLcom/android/server/pm/dex/ArtManagerService;-><clinit>()V
+HSPLcom/android/server/pm/dex/ArtManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
+PLcom/android/server/pm/dex/ArtManagerService;->getCompilationFilterTronValue(Ljava/lang/String;)I
+HSPLcom/android/server/pm/dex/ArtManagerService;->getCompilationReasonTronValue(Ljava/lang/String;)I
+HSPLcom/android/server/pm/dex/ArtManagerService;->verifyTronLoggingConstants()V
+HSPLcom/android/server/pm/dex/ArtStatsLogUtils$ArtStatsLogger;-><init>()V
+HPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V
+PLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexManager;->-$$Nest$smputIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/dex/DexManager;-><clinit>()V
+HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/dex/DynamicCodeLogger;)V
+HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/dex/DynamicCodeLogger;Landroid/content/pm/IPackageManager;)V
+HPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
+PLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V
+PLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V
+HPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
+HPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/dex/DynamicCodeLogger$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/dex/DynamicCodeLogger$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/dex/DynamicCodeLogger;->$r8$lambda$11aZGEwigi4eqhfsE87EXQLEOD8(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/pm/dex/DynamicCodeLogger;-><init>(Lcom/android/server/pm/Installer;)V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->lambda$load$0(Ljava/lang/String;)Ljava/util/Set;
+HPLcom/android/server/pm/dex/DynamicCodeLogger;->load(Ljava/util/Map;)V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->readAndSync(Ljava/util/Map;)V
+PLcom/android/server/pm/dex/OdsignStatsLogger$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/dex/OdsignStatsLogger$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/pm/dex/OdsignStatsLogger;->$r8$lambda$5UQTBxO3KU1lWEi5-bo1kDq6QXM()V
+PLcom/android/server/pm/dex/OdsignStatsLogger;->triggerStatsWrite()V
+PLcom/android/server/pm/dex/OdsignStatsLogger;->writeStats()V
+HSPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V
+PLcom/android/server/pm/dex/PackageDexUsage;->read()V
+PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;Ljava/util/List;)V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><clinit>()V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><init>()V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read()V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Object;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->syncData(Ljava/util/Map;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl-IA;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->checkClosed()V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$BaseSnapshotImpl;->close()V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;)V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;-><init>(ILandroid/os/UserHandle;Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl-IA;)V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->checkClosed()V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->close()V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageState(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageState;
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;-><init>(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl-IA;)V
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->close()V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->filtered(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getDisabledSystemPackageStates()Ljava/util/Map;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;->getPackageStates()Ljava/util/Map;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerLocal$FilteredSnapshot;
+HPLcom/android/server/pm/local/PackageManagerLocalImpl;->withFilteredSnapshot(ILandroid/os/UserHandle;)Lcom/android/server/pm/local/PackageManagerLocalImpl$FilteredSnapshotImpl;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/PackageManagerLocal$UnfilteredSnapshot;
+HSPLcom/android/server/pm/local/PackageManagerLocalImpl;->withUnfilteredSnapshot()Lcom/android/server/pm/local/PackageManagerLocalImpl$UnfilteredSnapshotImpl;
+PLcom/android/server/pm/parsing/PackageCacher;-><clinit>()V
+PLcom/android/server/pm/parsing/PackageCacher;-><init>(Ljava/io/File;)V
+HPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntry([B)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HPLcom/android/server/pm/parsing/PackageCacher;->fromCacheEntryStatic([B)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HPLcom/android/server/pm/parsing/PackageCacher;->getCacheKey(Ljava/io/File;I)Ljava/lang/String;
+HPLcom/android/server/pm/parsing/PackageCacher;->getCachedResult(Ljava/io/File;I)Lcom/android/internal/pm/parsing/pkg/ParsedPackage;
+HPLcom/android/server/pm/parsing/PackageCacher;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z
+HPLcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;-><init>()V
+HPLcom/android/server/pm/parsing/PackageInfoUtils$CachedApplicationInfoGenerator;->generate(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/parsing/PackageInfoUtils;-><clinit>()V
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(ILcom/android/server/pm/pkg/PackageStateInternal;)I
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
+PLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(ILcom/android/server/pm/pkg/PackageStateInternal;)I
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlags(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;)I
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->appInfoPrivateFlagsExt(ILcom/android/server/pm/pkg/PackageStateInternal;)I
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;)V
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsComponentInfoParsedMainComponent(Landroid/content/pm/ComponentInfo;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;)V
+PLcom/android/server/pm/parsing/PackageInfoUtils;->assignFieldsPackageItemInfoParsedComponent(Landroid/content/pm/PackageItemInfo;Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)V
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->checkUseInstalledOrHidden(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/server/pm/pkg/PackageUserStateInternal;J)Z
+PLcom/android/server/pm/parsing/PackageInfoUtils;->flag(ZI)I
+PLcom/android/server/pm/parsing/PackageInfoUtils;->generate(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateActivityInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedActivity;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateApplicationInfo(Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateInstrumentationInfo(Lcom/android/internal/pm/pkg/component/ParsedInstrumentation;Lcom/android/server/pm/pkg/AndroidPackage;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/InstrumentationInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionGroupInfo(Lcom/android/internal/pm/pkg/component/ParsedPermissionGroup;J)Landroid/content/pm/PermissionGroupInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generatePermissionInfo(Lcom/android/internal/pm/pkg/component/ParsedPermission;J)Landroid/content/pm/PermissionInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProcessInfo(Ljava/util/Map;J)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateProviderInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedProvider;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateServiceInfo(Lcom/android/server/pm/pkg/AndroidPackage;Lcom/android/internal/pm/pkg/component/ParsedService;JLcom/android/server/pm/pkg/PackageUserStateInternal;Landroid/content/pm/ApplicationInfo;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->generateWithComponents(Lcom/android/server/pm/pkg/AndroidPackage;[IJJJLjava/util/Set;Ljava/util/Set;Lcom/android/server/pm/pkg/PackageUserStateInternal;ILcom/android/server/pm/pkg/PackageStateInternal;)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->getDataDir(Lcom/android/server/pm/pkg/PackageStateInternal;I)Ljava/io/File;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->getDeprecatedSignatures(Landroid/content/pm/SigningDetails;J)[Landroid/content/pm/Signature;
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V
+PLcom/android/server/pm/parsing/PackageInfoUtils;->initForUser(Landroid/content/pm/InstrumentationInfo;Lcom/android/server/pm/pkg/AndroidPackage;ILcom/android/server/pm/pkg/PackageUserStateInternal;)V
+HPLcom/android/server/pm/parsing/PackageInfoUtils;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;JLcom/android/server/pm/pkg/PackageUserState;)V
+HPLcom/android/server/pm/parsing/ParsedComponentStateUtils;->getNonLocalizedLabelAndIcon(Lcom/android/internal/pm/pkg/component/ParsedComponent;Lcom/android/server/pm/pkg/PackageStateInternal;I)Landroid/util/Pair;
+PLcom/android/server/pm/parsing/library/AndroidHidlUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/AndroidHidlUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/AndroidNetIpSecIkeUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;->isChangeEnabled(Lcom/android/server/pm/pkg/AndroidPackage;Z)Z
+HPLcom/android/server/pm/parsing/library/AndroidTestBaseUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;-><init>(Landroid/util/ArrayMap;)V
+HPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HPLcom/android/server/pm/parsing/library/ApexSharedLibraryUpdater;->updateSharedLibraryForPackage(Lcom/android/server/SystemConfig$SharedLibraryEntry;Lcom/android/internal/pm/parsing/pkg/ParsedPackage;)V
+PLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/ComGoogleAndroidMapsUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;->apkTargetsApiLevelLessThanOrEqualToOMR1(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/parsing/library/OrgApacheHttpLegacyUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><clinit>()V
+PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;-><init>(Z[Lcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;)V
+PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->addUpdaterForAndroidTestBase(Ljava/util/List;)Z
+PLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->modifySharedLibraries(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+HPLcom/android/server/pm/parsing/library/PackageBackwardCompatibility;->updatePackage(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;ZZ)V
+PLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;-><init>()V
+HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->isLibraryPresent(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)Z
+HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixImplicitDependency(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->prefixRequiredLibrary(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
+HPLcom/android/server/pm/parsing/library/PackageSharedLibraryUpdater;->removeLibrary(Lcom/android/internal/pm/parsing/pkg/ParsedPackage;Ljava/lang/String;)V
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->createNativeLibraryHandle(Lcom/android/server/pm/pkg/AndroidPackage;)Lcom/android/internal/content/NativeLibraryHelper$Handle;
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->createSharedLibraryForDynamic(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Landroid/content/pm/SharedLibraryInfo;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->fillVersionCodes(Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->generateAppInfoWithoutState(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getAllCodePaths(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/util/List;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawPrimaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRawSecondaryCpuAbi(Lcom/android/server/pm/pkg/AndroidPackage;)Ljava/lang/String;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->getRealPackageOrNull(Lcom/android/server/pm/pkg/AndroidPackage;Z)Ljava/lang/String;
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->hasComponentClassName(Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)Z
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isEncryptionAware(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isLibrary(Lcom/android/server/pm/pkg/AndroidPackage;)Z
+HPLcom/android/server/pm/parsing/pkg/AndroidPackageUtils;->isMatchForSystemOnly(Lcom/android/server/pm/pkg/PackageState;J)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPermissionFlags(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)I
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->getPermissionInfo(Ljava/lang/String;)Landroid/content/pm/PermissionInfo;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->isGranted(Ljava/lang/String;Landroid/content/pm/PackageInfo;Landroid/os/UserHandle;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->updatePermissionFlags(Ljava/lang/String;Landroid/content/pm/PackageInfo;IILandroid/os/UserHandle;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$2;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;ZZ)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper-IA;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->getBackgroundPermission(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->getSystemPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isPermissionRestricted(Ljava/lang/String;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSysComponentOrPersistentPlatformSignedPrivApp(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSystemPackage(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;->isSystemPackage(Ljava/lang/String;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetNO_PM_CACHE(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmContext(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/content/Context;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmGrantExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmLock(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Ljava/lang/Object;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fgetmServiceInternal(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$fputmGrantExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->-$$Nest$mreadDefaultPermissionExceptionsLocked(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><clinit>()V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->doesPackageSupportRuntimePermissions(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultPermissionFiles()[Ljava/io/File;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;IZZZ[Ljava/util/Set;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;IZ[Ljava/util/Set;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;I[Ljava/util/Set;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantSystemFixedPermissionsToSystemPackage(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Ljava/lang/String;I[Ljava/util/Set;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isFixedOrUserSet(I)Z
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSystemOrCertificateMatchingPackage(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parse(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parseExceptions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/Map;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parsePermission(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/util/List;)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->readDefaultPermissionExceptionsLocked(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$PackageManagerWrapper;)Landroid/util/ArrayMap;
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->scheduleReadDefaultPermissionExceptions()V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$SyncAdapterPackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+HPLcom/android/server/pm/permission/LegacyPermission;-><init>(Landroid/content/pm/PermissionInfo;II[I)V
+HSPLcom/android/server/pm/permission/LegacyPermission;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/LegacyPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Set;ZZLcom/android/server/pm/DumpState;)Z
+PLcom/android/server/pm/permission/LegacyPermission;->getPermissionInfo()Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/pm/permission/LegacyPermission;->read(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlPullParser;)Z
+HSPLcom/android/server/pm/permission/LegacyPermission;->readInt(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/permission/LegacyPermission;->write(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda0;->runOrThrow()V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda3;->runOrThrow()V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$$ExternalSyntheticLambda6;->runOrThrow()V
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->checkPermission(Ljava/lang/String;II)I
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getCallingPid()I
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getCallingUid()I
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;->getPackageUidForUser(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;-><init>(Lcom/android/server/pm/permission/LegacyPermissionManagerService;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Internal-IA;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->scheduleReadDefaultPermissionExceptions()V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setLocationPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$SyncAdapterPackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService$Internal;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/LegacyPermissionManagerInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$XJRM--KlcwdVcvJ6T-8uozQ32tE(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$lv-8Ha9p9dV0QQzCs6vFH7LiTB8(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->$r8$lambda$u77Y4zP2_UA0sARUr92T0pFuRWw(Lcom/android/server/pm/permission/LegacyPermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->-$$Nest$fgetmDefaultPermissionGrantPolicy(Lcom/android/server/pm/permission/LegacyPermissionManagerService;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/LegacyPermissionManagerService$Injector;)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->checkPhoneNumberAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
+HSPLcom/android/server/pm/permission/LegacyPermissionManagerService;->create(Landroid/content/Context;)Lcom/android/server/pm/permission/LegacyPermissionManagerInternal;
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$grantDefaultPermissionsToEnabledImsServices$3([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$grantDefaultPermissionsToEnabledTelephonyDataServices$4([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->lambda$revokeDefaultPermissionsFromDisabledTelephonyDataServices$5([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/LegacyPermissionManagerService;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/LegacyPermissionManagerService;->verifyCallerCanCheckAccess(Ljava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/pm/permission/LegacyPermissionSettings;-><init>()V
+HPLcom/android/server/pm/permission/LegacyPermissionSettings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Ljava/util/Map;ZLcom/android/server/pm/DumpState;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissionTrees(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissions(Landroid/util/ArrayMap;Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionSettings;->readPermissions(Lcom/android/modules/utils/TypedXmlPullParser;)V
+PLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissionTrees(Ljava/util/List;)V
+PLcom/android/server/pm/permission/LegacyPermissionSettings;->replacePermissions(Ljava/util/List;)V
+PLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissionTrees(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/pm/permission/LegacyPermissionSettings;->writePermissions(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HPLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;-><init>(Ljava/lang/String;ZZI)V
+PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->getFlags()I
+PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->getName()Ljava/lang/String;
+PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->isGranted()Z
+PLcom/android/server/pm/permission/LegacyPermissionState$PermissionState;->isRuntime()Z
+PLcom/android/server/pm/permission/LegacyPermissionState$UserState;-><init>()V
+PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->getPermissionState(Ljava/lang/String;)Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;
+PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->getPermissionStates()Ljava/util/Collection;
+PLcom/android/server/pm/permission/LegacyPermissionState$UserState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;)V
+HSPLcom/android/server/pm/permission/LegacyPermissionState;-><init>()V
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->checkUserId(I)V
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->copyFrom(Lcom/android/server/pm/permission/LegacyPermissionState;)V
+HPLcom/android/server/pm/permission/LegacyPermissionState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;
+HPLcom/android/server/pm/permission/LegacyPermissionState;->getPermissionStates(I)Ljava/util/Collection;
+HPLcom/android/server/pm/permission/LegacyPermissionState;->putPermissionState(Lcom/android/server/pm/permission/LegacyPermissionState$PermissionState;I)V
+HSPLcom/android/server/pm/permission/LegacyPermissionState;->setMissing(ZI)V
+HSPLcom/android/server/pm/permission/PermissionAllowlist;-><init>()V
+PLcom/android/server/pm/permission/PermissionAllowlist;->getApexPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/permission/PermissionAllowlist;->getApexPrivilegedAppAllowlists()Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/permission/PermissionAllowlist;->getPrivilegedAppAllowlist()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/permission/PermissionAllowlist;->getPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/permission/PermissionAllowlist;->getProductPrivilegedAppAllowlist()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/permission/PermissionAllowlist;->getProductPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
+HPLcom/android/server/pm/permission/PermissionAllowlist;->getSystemExtPrivilegedAppAllowlistState(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/permission/PermissionManagerService$AttributionSourceRegistry;->isRegisteredAttributionSource(Landroid/content/AttributionSource;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;-><clinit>()V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkAppOpPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkOp(ILandroid/content/AttributionSourceState;Ljava/lang/String;ZZ)I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkOp(Landroid/content/Context;ILcom/android/server/pm/permission/PermissionManagerServiceInternal;Landroid/content/AttributionSource;Ljava/lang/String;ZZ)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;)Z
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkPermission(Ljava/lang/String;Landroid/content/AttributionSourceState;Ljava/lang/String;ZZZI)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->checkRuntimePermission(Landroid/content/Context;Lcom/android/server/pm/permission/PermissionManagerServiceInternal;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;ZZZI)I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->getAttributionChainId(ZLandroid/content/AttributionSource;)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->performOpTransaction(Landroid/content/Context;Landroid/os/IBinder;ILandroid/content/AttributionSource;Ljava/lang/String;ZZZZZIIII)I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolveAttributionSource(Landroid/content/Context;Landroid/content/AttributionSource;)Landroid/content/AttributionSource;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionCheckerService;->resolvePackageName(Landroid/content/Context;Landroid/content/AttributionSource;)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl-IA;)V
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkUidPermission(ILjava/lang/String;I)I
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllAppOpPermissionPackages()Ljava/util/Map;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionsWithProtection(I)Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionsWithProtectionFlags(I)Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultPermissionGrantFingerprint(I)Ljava/lang/String;
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGidsForUid(I)[I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getGrantedPermissions(Ljava/lang/String;I)Ljava/util/Set;
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getInstalledPermissions(Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getLegacyPermissionState(I)Lcom/android/server/pm/permission/LegacyPermissionState;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getLegacyPermissions()Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionGids(Ljava/lang/String;I)[I
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onPackageAdded(Lcom/android/server/pm/pkg/PackageState;ZLcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onStorageVolumeMounted(Ljava/lang/String;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onSystemReady()V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->readLegacyPermissionStateTEMP()V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->readLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->writeLegacyPermissionStateTEMP()V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->writeLegacyPermissionsTEMP(Lcom/android/server/pm/permission/LegacyPermissionSettings;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->-$$Nest$fgetmPermissionManagerServiceImpl(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInterface;
+HSPLcom/android/server/pm/permission/PermissionManagerService;-><clinit>()V
+HSPLcom/android/server/pm/permission/PermissionManagerService;-><init>(Landroid/content/Context;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(ILjava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->create(Landroid/content/Context;Landroid/util/ArrayMap;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/permission/PermissionManagerService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
+PLcom/android/server/pm/permission/PermissionManagerService;->getSplitPermissions()Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->isRegisteredAttributionSource(Landroid/content/AttributionSourceState;)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZLjava/lang/String;I)V
+HSPLcom/android/server/pm/permission/PermissionMigrationHelperImpl;-><clinit>()V
+HSPLcom/android/server/pm/permission/PermissionMigrationHelperImpl;-><init>()V
+HPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserState;
+HSPLcom/android/server/pm/pkg/PackageStateInternal;->getUserStateOrDefault(I)Lcom/android/server/pm/pkg/PackageUserStateInternal;
+HSPLcom/android/server/pm/pkg/PackageStateUnserialized;-><init>(Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getApexModuleName()Ljava/lang/String;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->getLastPackageUsageTimeInMills()[J
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getOverrideSeInfo()Ljava/lang/String;
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getSeInfo()Ljava/lang/String;
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getUsesLibraryFiles()Ljava/util/List;
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->getUsesLibraryInfos()Ljava/util/List;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->isHiddenUntilInstalled()Z
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->isUpdatedSystemApp()Z
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->lazyInitLastPackageUsageTimeInMills()[J
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setApexModuleName(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setApkInUpdatedApex(Z)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setLastPackageUsageTimeInMills(IJ)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setOverrideSeInfo(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setSeInfo(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+PLcom/android/server/pm/pkg/PackageStateUnserialized;->setUsesLibraryFiles(Ljava/util/List;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HPLcom/android/server/pm/pkg/PackageStateUnserialized;->setUsesLibraryInfos(Ljava/util/List;)Lcom/android/server/pm/pkg/PackageStateUnserialized;
+HSPLcom/android/server/pm/pkg/PackageStateUnserialized;->updateFrom(Lcom/android/server/pm/pkg/PackageStateUnserialized;)V
+HPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/ComponentInfo;JI)Z
+HPLcom/android/server/pm/pkg/PackageStateUtils;->isEnabledAndMatches(Lcom/android/server/pm/pkg/PackageStateInternal;Lcom/android/internal/pm/pkg/component/ParsedMainComponent;JI)Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;-><init>()V
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->getArchiveState()Lcom/android/server/pm/pkg/ArchiveState;
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->getEnabledState()I
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->getFirstInstallTimeMillis()J
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isHidden()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isInstalled()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isInstantApp()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isQuarantined()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isStopped()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isSuspended()Z
+PLcom/android/server/pm/pkg/PackageUserStateDefault;->isVirtualPreload()Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;-><init>(Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/pm/pkg/PackageUserStateImpl;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl$1;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->-$$Nest$fgetmWatchable(Lcom/android/server/pm/pkg/PackageUserStateImpl;)Lcom/android/server/utils/Watchable;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;-><init>(Lcom/android/server/utils/Watchable;Lcom/android/server/pm/pkg/PackageUserStateImpl;)V
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getAllOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getArchiveState()Lcom/android/server/pm/pkg/ArchiveState;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->getBoolean(I)Z
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getCeDataInode()J
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDeDataInode()J
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponents()Landroid/util/ArraySet;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDisabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getDistractionFlags()I
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponents()Landroid/util/ArraySet;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledComponentsNoCopy()Lcom/android/server/utils/WatchedArraySet;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getEnabledState()I
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getFirstInstallTimeMillis()J
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getHarmfulAppWarning()Ljava/lang/String;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getInstallReason()I
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getLastDisableAppCaller()Ljava/lang/String;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getMinAspectRatio()I
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverlayPaths()Landroid/content/pm/overlay/OverlayPaths;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->getOverrideLabelIconForComponent(Landroid/content/ComponentName;)Landroid/util/Pair;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getSharedLibraryOverlayPaths()Ljava/util/Map;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getSplashScreenTheme()Ljava/lang/String;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->getUninstallReason()I
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isComponentDisabled(Ljava/lang/String;)Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isComponentEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isHidden()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstalled()Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->isInstantApp()Z
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->isNotLaunched()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isQuarantined()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isStopped()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isSuspended()Z
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->isVirtualPreload()Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->makeCache()Lcom/android/server/utils/SnapshotCache;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->onChanged()V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setArchiveState(Lcom/android/server/pm/pkg/ArchiveState;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setBoolean(IZ)V
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setCeDataInode(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDeDataInode(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDisabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setDistractionFlags(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledComponents(Landroid/util/ArraySet;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setEnabledState(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setFirstInstallTimeMillis(J)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setHarmfulAppWarning(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setHidden(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstallReason(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstalled(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setInstantApp(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setLastDisableAppCaller(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setMinAspectRatio(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setNotLaunched(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/pkg/PackageUserStateImpl;->setOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;)Z
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setSplashScreenTheme(Ljava/lang/String;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setStopped(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setSuspendParams(Landroid/util/ArrayMap;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setUninstallReason(I)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->setVirtualPreload(Z)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HPLcom/android/server/pm/pkg/PackageUserStateImpl;->setWatchable(Lcom/android/server/utils/Watchable;)Lcom/android/server/pm/pkg/PackageUserStateImpl;
+HSPLcom/android/server/pm/pkg/PackageUserStateImpl;->snapshot()Lcom/android/server/pm/pkg/PackageUserStateImpl;
+PLcom/android/server/pm/pkg/PackageUserStateInternal;-><clinit>()V
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isAvailable(Lcom/android/server/pm/pkg/PackageUserState;J)Z
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isEnabled(Lcom/android/server/pm/pkg/PackageUserState;ZZLjava/lang/String;J)Z
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;Landroid/content/pm/ComponentInfo;J)Z
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZLcom/android/internal/pm/pkg/component/ParsedMainComponent;J)Z
+HPLcom/android/server/pm/pkg/PackageUserStateUtils;->isMatch(Lcom/android/server/pm/pkg/PackageUserState;ZZZZLjava/lang/String;J)Z
+PLcom/android/server/pm/pkg/PackageUserStateUtils;->reportIfDebug(ZJ)Z
+HPLcom/android/server/pm/pkg/SELinuxUtil;->getSeinfoUser(Lcom/android/server/pm/pkg/PackageUserState;)Ljava/lang/String;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;-><init>(Landroid/content/pm/SharedLibraryInfo;)V
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getAllCodePaths()Ljava/util/List;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getDependencies()Ljava/util/List;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->getInfo()Landroid/content/pm/SharedLibraryInfo;
+PLcom/android/server/pm/pkg/SharedLibraryWrapper;->isNative()Z
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;-><clinit>()V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;-><init>(ZZZZ)V
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;-><init>()V
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;-><init>(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper-IA;)V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setOverlayPaths(Landroid/content/pm/overlay/OverlayPaths;)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setStates(Lcom/android/server/pm/pkg/PackageUserStateImpl;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper$UserStateWriteWrapper;->setStopped(Z)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;-><init>()V
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;-><init>(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper-IA;)V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->onChanged()V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->setState(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;->userState(I)Lcom/android/server/pm/pkg/mutate/PackageUserStateWrite;
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;-><clinit>()V
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;-><init>(Ljava/util/function/Function;Ljava/util/function/Function;)V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->forPackage(Ljava/lang/String;)Lcom/android/server/pm/pkg/mutate/PackageStateWrite;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->generateResult(Lcom/android/server/pm/pkg/mutate/PackageStateMutator$InitialState;I)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$Result;
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->onFinished()V
+HSPLcom/android/server/pm/pkg/mutate/PackageStateMutator;->onPackageStateChanged()V
+PLcom/android/server/pm/pkg/mutate/PackageStateMutator;->setState(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/pkg/mutate/PackageStateMutator$StateWriteWrapper;
+HSPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/pm/resolution/ComponentResolver$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/resolution/ComponentResolver$1;-><init>(Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/resolution/ComponentResolverApi;Lcom/android/server/utils/Watchable;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$1;->createSnapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
+HSPLcom/android/server/pm/resolution/ComponentResolver$1;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addActivity(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedActivity;Ljava/lang/String;Ljava/util/List;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newArray(I)[Landroid/util/Pair;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolver$ActivityIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;Lcom/android/server/pm/UserManagerService;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->applyMimeGroups(Lcom/android/server/pm/Computer;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Landroid/util/Pair;I)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$MimeGroupsAwareIntentResolver;->isFilterStopped(Lcom/android/server/pm/Computer;Ljava/lang/Object;I)Z
+HSPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;Lcom/android/server/pm/UserManagerService;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->addProvider(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedProvider;)V
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->newArray(I)[Landroid/util/Pair;
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->newArray(I)[Ljava/lang/Object;
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolver$ProviderIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ReceiverIntentResolver;Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/UserManagerService;)V
+HSPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addFilter(Lcom/android/server/pm/snapshot/PackageDataSnapshot;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->addService(Lcom/android/server/pm/Computer;Lcom/android/internal/pm/pkg/component/ParsedService;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/util/Pair;Ljava/util/List;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Ljava/lang/Object;Ljava/util/List;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/Pair;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Landroid/util/Pair;)Landroid/content/IntentFilter;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->getIntentFilter(Ljava/lang/Object;)Landroid/content/IntentFilter;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/util/Pair;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Ljava/lang/Object;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newArray(I)[Landroid/util/Pair;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newArray(I)[Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Landroid/util/Pair;IIJ)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->newResult(Lcom/android/server/pm/Computer;Ljava/lang/Object;IIJ)Ljava/lang/Object;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntent(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolver$ServiceIntentResolver;->sortResults(Ljava/util/List;)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->$r8$lambda$UVMyfxjaimXrgxK-y9k5NRVVfkI(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
+HSPLcom/android/server/pm/resolution/ComponentResolver;-><clinit>()V
+HSPLcom/android/server/pm/resolution/ComponentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->addActivitiesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/util/List;Z)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->addAllComponents(Lcom/android/server/pm/pkg/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/Computer;)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->addProvidersLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->addReceiversLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->addServicesLocked(Lcom/android/server/pm/Computer;Lcom/android/server/pm/pkg/AndroidPackage;Z)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->adjustPriority(Lcom/android/server/pm/Computer;Ljava/util/List;Lcom/android/internal/pm/pkg/component/ParsedActivity;Lcom/android/internal/pm/pkg/component/ParsedIntentInfo;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolver;->fixProtectedFilterPriorities(Ljava/lang/String;)V
+HPLcom/android/server/pm/resolution/ComponentResolver;->isProtectedAction(Landroid/content/IntentFilter;)Z
+HPLcom/android/server/pm/resolution/ComponentResolver;->lambda$static$0(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
+PLcom/android/server/pm/resolution/ComponentResolver;->onChanged()V
+HSPLcom/android/server/pm/resolution/ComponentResolver;->snapshot()Lcom/android/server/pm/resolution/ComponentResolverApi;
+HSPLcom/android/server/pm/resolution/ComponentResolverBase;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpActivityResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->dumpContentProviders(Lcom/android/server/pm/Computer;Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpProviderResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpReceiverResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+PLcom/android/server/pm/resolution/ComponentResolverBase;->dumpServiceResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->getActivity(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->getProvider(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedProvider;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->getReceiver(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedActivity;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->getService(Landroid/content/ComponentName;)Lcom/android/internal/pm/pkg/component/ParsedService;
+PLcom/android/server/pm/resolution/ComponentResolverBase;->isActivityDefined(Landroid/content/ComponentName;)Z
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProvider(Lcom/android/server/pm/Computer;Ljava/lang/String;JI)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryProviders(Lcom/android/server/pm/Computer;Ljava/lang/String;Ljava/lang/String;IJI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HPLcom/android/server/pm/resolution/ComponentResolverBase;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/resolution/ComponentResolverLocked;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->isActivityDefined(Landroid/content/ComponentName;)Z
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryActivities(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JLjava/util/List;I)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryReceivers(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+PLcom/android/server/pm/resolution/ComponentResolverLocked;->queryServices(Lcom/android/server/pm/Computer;Landroid/content/Intent;Ljava/lang/String;JI)Ljava/util/List;
+HSPLcom/android/server/pm/resolution/ComponentResolverSnapshot;-><init>(Lcom/android/server/pm/resolution/ComponentResolver;Lcom/android/server/pm/UserNeedsBadgingCache;)V
+PLcom/android/server/pm/utils/RequestThrottle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/pm/utils/RequestThrottle;)V
+PLcom/android/server/pm/utils/RequestThrottle;-><init>(Landroid/os/Handler;IIILjava/util/function/Supplier;)V
+PLcom/android/server/pm/utils/RequestThrottle;-><init>(Landroid/os/Handler;Ljava/util/function/Supplier;)V
+PLcom/android/server/pm/utils/RequestThrottle;->runInternal()Z
+PLcom/android/server/pm/utils/RequestThrottle;->runNow()Z
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/verify/domain/DomainVerificationCollector$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->$r8$lambda$batCCh6Ga6j4xiWi4NlYNy9upmc(Landroid/util/ArraySet;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;-><clinit>()V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationCollector;-><init>(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/SystemConfig;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectAllWebDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZ)Landroid/util/ArraySet;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomains(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsInternal(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectDomainsLegacy(Lcom/android/server/pm/pkg/AndroidPackage;ZZLjava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
+PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectInvalidAutoVerifyDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->collectValidAutoVerifyDomains(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/util/ArraySet;
+HPLcom/android/server/pm/verify/domain/DomainVerificationCollector;->isValidHost(Ljava/lang/String;)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationCollector;->lambda$static$0(Landroid/util/ArraySet;Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationDebug;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationCollector;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILcom/android/server/pm/verify/domain/models/DomainVerificationInternalUserState;Landroid/util/ArraySet;Landroid/util/ArraySet;Z)Z
+HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/util/ArrayMap;Z)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/Integer;Landroid/util/ArraySet;Z)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationDebug;->printState(Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Integer;Lcom/android/server/pm/Computer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->assertApprovedQuerent(ILcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->assertInternal(I)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->callerIsLegacyUserSelector(IILjava/lang/String;I)Z
+HSPLcom/android/server/pm/verify/domain/DomainVerificationEnforcer;->setCallback(Lcom/android/server/pm/verify/domain/DomainVerificationEnforcer$Callback;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;-><init>()V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;->addUserState(II)V
+PLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;->getUserStates()Landroid/util/SparseIntArray;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;-><init>()V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->add(Ljava/lang/String;II)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->getOrCreateStateLocked(Ljava/lang/String;)Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readSettings(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readUserState(Lcom/android/server/pm/SettingsXml$ReadSection;Lcom/android/server/pm/verify/domain/DomainVerificationLegacySettings$LegacyState;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->readUserStates(Lcom/android/server/pm/SettingsXml$ReadSection;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationLegacySettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationManagerStub;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationService;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;-><init>(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->createPkgStateFromXml(Lcom/android/server/pm/SettingsXml$ReadSection;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readDomainStates(Lcom/android/server/pm/SettingsXml$ReadSection;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readFromXml(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/pm/verify/domain/DomainVerificationPersistence$ReadResult;
+HSPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->readPackageStates(Lcom/android/server/pm/SettingsXml$ReadSection;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePackageStates(Lcom/android/server/pm/SettingsXml$WriteSection;Ljava/util/Collection;ILjava/util/function/Function;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writePkgStateToXml(Lcom/android/server/pm/SettingsXml$WriteSection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;ILjava/util/function/Function;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeStateMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeToXml(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Landroid/util/ArrayMap;Landroid/util/ArrayMap;ILjava/util/function/Function;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeUriRelativeFilterGroupMap(Lcom/android/server/pm/SettingsXml$WriteSection;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationPersistence;->writeUserStates(Lcom/android/server/pm/SettingsXml$WriteSection;ILandroid/util/SparseArray;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;-><init>(Landroid/content/Context;Lcom/android/server/SystemConfig;Lcom/android/server/compat/PlatformCompat;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->addIfShouldBroadcastLocked(Ljava/util/Collection;Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Z)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationService;->addPackage(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/content/pm/verify/domain/DomainSet;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationService;->applyImmutableState(Lcom/android/server/pm/pkg/PackageStateInternal;Landroid/util/ArrayMap;Landroid/util/ArraySet;)Z
+HPLcom/android/server/pm/verify/domain/DomainVerificationService;->generateNewId()Ljava/util/UUID;
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->getCollector()Lcom/android/server/pm/verify/domain/DomainVerificationCollector;
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->getShell()Lcom/android/server/pm/verify/domain/DomainVerificationShell;
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->hasRealVerifier()Z
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->onBootPhase(I)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->onStart()V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationService;->printState(Lcom/android/server/pm/Computer;Landroid/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Integer;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->readLegacySettings(Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->readSettings(Lcom/android/server/pm/Computer;Lcom/android/modules/utils/TypedXmlPullParser;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setConnection(Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal$Connection;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationService;->setLegacyUserState(Ljava/lang/String;II)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->setProxy(Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->shouldReBroadcastPackage(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;)Z
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->verifyPackages(Ljava/util/List;Z)V
+PLcom/android/server/pm/verify/domain/DomainVerificationService;->writeSettings(Lcom/android/server/pm/Computer;Lcom/android/modules/utils/TypedXmlSerializer;ZI)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationSettings;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationCollector;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationSettings;->readSettings(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;Lcom/android/server/pm/Computer;)V
+HPLcom/android/server/pm/verify/domain/DomainVerificationSettings;->removePendingState(Ljava/lang/String;)Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;
+PLcom/android/server/pm/verify/domain/DomainVerificationSettings;->writeSettings(Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;ILjava/util/function/Function;)V
+HSPLcom/android/server/pm/verify/domain/DomainVerificationShell;-><init>(Lcom/android/server/pm/verify/domain/DomainVerificationShell$Callback;)V
+PLcom/android/server/pm/verify/domain/DomainVerificationUtils$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/pm/verify/domain/DomainVerificationUtils;-><clinit>()V
+HPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->buildMockAppInfo(Lcom/android/server/pm/pkg/AndroidPackage;)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/verify/domain/DomainVerificationUtils;->isChangeEnabled(Lcom/android/server/compat/PlatformCompat;Lcom/android/server/pm/pkg/AndroidPackage;J)Z
+HPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Lcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;Ljava/util/UUID;Z)V
+HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;-><init>(Ljava/lang/String;Ljava/util/UUID;ZLandroid/util/ArrayMap;Landroid/util/SparseArray;Ljava/lang/String;Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getBackupSignatureHash()Ljava/lang/String;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getId()Ljava/util/UUID;
+HSPLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getPackageName()Ljava/lang/String;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getStateMap()Landroid/util/ArrayMap;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getUriRelativeFilterGroupMap()Landroid/util/ArrayMap;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->getUserStates()Landroid/util/SparseArray;
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->hashCode()I
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->isHasAutoVerifyDomains()Z
+PLcom/android/server/pm/verify/domain/models/DomainVerificationPkgState;->userStatesHashCode()I
+HSPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;-><init>()V
+HSPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->get(Ljava/lang/String;)Ljava/lang/Object;
+HPLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->put(Ljava/lang/String;Ljava/util/UUID;Ljava/lang/Object;)V
+PLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->size()I
+PLcom/android/server/pm/verify/domain/models/DomainVerificationStateMap;->valueAt(I)Ljava/lang/Object;
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;->makeProxy(Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;)Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyCombined;-><init>(Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxy;)V
+HSPLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyUnavailable;-><init>()V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1;-><init>(Landroid/content/Context;Lcom/android/server/pm/verify/domain/DomainVerificationManagerInternal;Lcom/android/server/pm/verify/domain/DomainVerificationCollector;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV1$Connection;Landroid/content/ComponentName;)V
+PLcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2;-><init>(Landroid/content/Context;Lcom/android/server/pm/verify/domain/proxy/DomainVerificationProxyV2$Connection;Landroid/content/ComponentName;)V
+PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
+PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda0;->onLocationPackageTagsChanged(ILandroid/os/PackageTagsList;)V
+PLcom/android/server/policy/AppOpsPolicy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
+PLcom/android/server/policy/AppOpsPolicy$1;-><init>(Lcom/android/server/policy/AppOpsPolicy;)V
+PLcom/android/server/policy/AppOpsPolicy;->$r8$lambda$laOMxe-XDRkQA64xS88xc0B7in4(Lcom/android/server/policy/AppOpsPolicy;ILandroid/os/PackageTagsList;)V
+PLcom/android/server/policy/AppOpsPolicy;-><clinit>()V
+PLcom/android/server/policy/AppOpsPolicy;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/policy/AppOpsPolicy;->checkAudioOperation(IIILjava/lang/String;Lcom/android/internal/util/function/QuadFunction;)I
+HPLcom/android/server/policy/AppOpsPolicy;->checkOperation(IILjava/lang/String;Ljava/lang/String;IZLcom/android/internal/util/function/HexFunction;)I
+PLcom/android/server/policy/AppOpsPolicy;->clearActivityRecognitionTags()V
+HPLcom/android/server/policy/AppOpsPolicy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ILcom/android/internal/util/function/HexConsumer;)V
+PLcom/android/server/policy/AppOpsPolicy;->initializeActivityRecognizersTags()V
+PLcom/android/server/policy/AppOpsPolicy;->isDatasourceAttributionTag(ILjava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
+PLcom/android/server/policy/AppOpsPolicy;->isHotwordDetectionServiceRequired(Landroid/content/pm/PackageManager;)Z
+HPLcom/android/server/policy/AppOpsPolicy;->lambda$new$0(ILandroid/os/PackageTagsList;)V
+HPLcom/android/server/policy/AppOpsPolicy;->noteOperation(IILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;ZLcom/android/internal/util/function/OctFunction;)Landroid/app/SyncNotedAppOp;
+HPLcom/android/server/policy/AppOpsPolicy;->noteProxyOperation(ILandroid/content/AttributionSource;ZLjava/lang/String;ZZLcom/android/internal/util/function/HexFunction;)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/policy/AppOpsPolicy;->resolveArOp(I)I
+HPLcom/android/server/policy/AppOpsPolicy;->resolveDatasourceOp(IILjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/policy/AppOpsPolicy;->resolveLocationOp(I)I
+PLcom/android/server/policy/AppOpsPolicy;->resolveRecordAudioOp(II)I
+HPLcom/android/server/policy/AppOpsPolicy;->resolveSandboxedServiceOp(II)I
+HPLcom/android/server/policy/AppOpsPolicy;->resolveUid(II)I
+HPLcom/android/server/policy/AppOpsPolicy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;IZZLjava/lang/String;ZIILcom/android/internal/util/function/DodecFunction;)Landroid/app/SyncNotedAppOp;
+PLcom/android/server/policy/AppOpsPolicy;->updateAllowListedTagsForPackageLocked(ILandroid/os/PackageTagsList;Ljava/util/concurrent/ConcurrentHashMap;)V
+PLcom/android/server/policy/DeferredKeyActionExecutor;-><init>()V
+PLcom/android/server/policy/DeviceStatePolicyImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/DeviceStatePolicyImpl;->configureDeviceForState(ILjava/lang/Runnable;)V
+PLcom/android/server/policy/DeviceStatePolicyImpl;->getDeviceStateProvider()Lcom/android/server/devicestate/DeviceStateProvider;
+PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda0;->getAsBoolean()Z
+PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/policy/DeviceStateProviderImpl$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/policy/DeviceStateProviderImpl;->$r8$lambda$t8JSrrBv0J146lhB0w0iIONBa0A()Z
+PLcom/android/server/policy/DeviceStateProviderImpl;-><clinit>()V
+PLcom/android/server/policy/DeviceStateProviderImpl;-><init>(Landroid/content/Context;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/policy/DeviceStateProviderImpl;->create(Landroid/content/Context;)Lcom/android/server/policy/DeviceStateProviderImpl;
+PLcom/android/server/policy/DeviceStateProviderImpl;->createFromConfig(Landroid/content/Context;Lcom/android/server/policy/DeviceStateProviderImpl$ReadableConfig;)Lcom/android/server/policy/DeviceStateProviderImpl;
+PLcom/android/server/policy/DeviceStateProviderImpl;->getConfigurationFile()Ljava/io/File;
+PLcom/android/server/policy/DeviceStateProviderImpl;->hasPowerSaveSensitiveState(Ljava/util/List;)Z
+PLcom/android/server/policy/DeviceStateProviderImpl;->hasThermalSensitiveState(Ljava/util/List;)Z
+PLcom/android/server/policy/DeviceStateProviderImpl;->isThermalStatusCriticalOrAbove(I)Z
+PLcom/android/server/policy/DeviceStateProviderImpl;->lambda$static$0()Z
+PLcom/android/server/policy/DeviceStateProviderImpl;->notifyDeviceStateChangedIfNeeded()V
+PLcom/android/server/policy/DeviceStateProviderImpl;->notifySupportedStatesChanged(I)V
+PLcom/android/server/policy/DeviceStateProviderImpl;->setListener(Lcom/android/server/devicestate/DeviceStateProvider$Listener;)V
+PLcom/android/server/policy/DeviceStateProviderImpl;->setStateConditions(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/policy/DisplayFoldController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/DisplayFoldController;)V
+PLcom/android/server/policy/DisplayFoldController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/DisplayFoldController;->$r8$lambda$UP61ySHIdmxonM9JQcOhYZ_jOG0(Lcom/android/server/policy/DisplayFoldController;Ljava/lang/Boolean;)V
+PLcom/android/server/policy/DisplayFoldController;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Landroid/hardware/display/DisplayManagerInternal;ILandroid/graphics/Rect;Landroid/os/Handler;)V
+PLcom/android/server/policy/DisplayFoldController;->create(Landroid/content/Context;I)Lcom/android/server/policy/DisplayFoldController;
+PLcom/android/server/policy/DisplayFoldController;->finishedWakingUp()V
+PLcom/android/server/policy/DisplayFoldController;->lambda$new$0(Ljava/lang/Boolean;)V
+PLcom/android/server/policy/DisplayFoldController;->onDefaultDisplayFocusChanged(Ljava/lang/String;)V
+PLcom/android/server/policy/DisplayFoldController;->setDeviceFolded(Z)V
+PLcom/android/server/policy/DisplayFoldDurationLogger;-><init>()V
+PLcom/android/server/policy/DisplayFoldDurationLogger;->isOn()Z
+PLcom/android/server/policy/DisplayFoldDurationLogger;->logFocusedAppWithFoldState(ZLjava/lang/String;)V
+PLcom/android/server/policy/DisplayFoldDurationLogger;->onFinishedWakingUp(Ljava/lang/Boolean;)V
+PLcom/android/server/policy/DisplayFoldDurationLogger;->setDeviceFolded(Z)V
+PLcom/android/server/policy/EventLogTags;->writeScreenToggled(I)V
+PLcom/android/server/policy/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/server/policy/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/policy/FeatureFlagsImpl;->load_overrides_wear_frameworks()V
+PLcom/android/server/policy/FeatureFlagsImpl;->supportInputWakeupDelegate()Z
+PLcom/android/server/policy/Flags;-><clinit>()V
+PLcom/android/server/policy/Flags;->supportInputWakeupDelegate()Z
+PLcom/android/server/policy/GlobalKeyManager$GlobalKeyAction;-><init>(Lcom/android/server/policy/GlobalKeyManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/policy/GlobalKeyManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V
+PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;-><init>(II)V
+PLcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/policy/KeyCombinationManager;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/policy/KeyCombinationManager;->addRule(Lcom/android/server/policy/KeyCombinationManager$TwoKeysCombinationRule;)V
+PLcom/android/server/policy/ModifierShortcutManager;-><clinit>()V
+PLcom/android/server/policy/ModifierShortcutManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/policy/ModifierShortcutManager;->loadShortcuts()V
+PLcom/android/server/policy/PermissionPolicyInternal;-><init>()V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda1;-><init>(Landroid/permission/PermissionControllerManager;)V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
+HPLcom/android/server/policy/PermissionPolicyService$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/PermissionPolicyService$1;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$2;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$3;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$4;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal$1;-><init>(Lcom/android/server/policy/PermissionPolicyService$Internal;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal$1;->onActivityLaunched(Landroid/app/TaskInfo;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal$1;->onInterceptActivityLaunch(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptResult;
+PLcom/android/server/policy/PermissionPolicyService$Internal;->-$$Nest$monActivityManagerReady(Lcom/android/server/policy/PermissionPolicyService$Internal;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal;->-$$Nest$mshouldShowNotificationDialogOrClearFlags(Lcom/android/server/policy/PermissionPolicyService$Internal;Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Landroid/app/ActivityOptions;Ljava/lang/String;Z)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;Lcom/android/server/policy/PermissionPolicyService$Internal-IA;)V
+PLcom/android/server/policy/PermissionPolicyService$Internal;->checkStartActivity(Landroid/content/Intent;ILjava/lang/String;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->isActionRemovedForCallingPackage(Landroid/content/Intent;ILjava/lang/String;)Z
+HPLcom/android/server/policy/PermissionPolicyService$Internal;->isIntentToPermissionDialog(Landroid/content/Intent;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->isLauncherIntent(Landroid/content/Intent;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->isTaskPotentialTrampoline(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/TaskInfo;Landroid/content/Intent;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->isTaskStartedFromLauncher(Ljava/lang/String;Landroid/app/TaskInfo;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->onActivityManagerReady()V
+PLcom/android/server/policy/PermissionPolicyService$Internal;->shouldShowNotificationDialogForTask(Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)Z
+PLcom/android/server/policy/PermissionPolicyService$Internal;->shouldShowNotificationDialogOrClearFlags(Landroid/app/TaskInfo;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Landroid/app/ActivityOptions;Ljava/lang/String;Z)Z
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser$OpToChange;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;ILjava/lang/String;I)V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->-$$Nest$msyncPackages(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Lcom/android/server/policy/PermissionPolicyService;Landroid/content/Context;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addAppOps(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Ljava/lang/String;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addExtraAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidMode(IIILjava/lang/String;)V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeAllowed(IILjava/lang/String;)V
+PLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeForeground(IILjava/lang/String;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeIgnored(IILjava/lang/String;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/content/pm/PermissionInfo;)Z
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V
+PLcom/android/server/policy/PermissionPolicyService$PhoneCarrierPrivilegesCallback;-><init>(Lcom/android/server/policy/PermissionPolicyService;I)V
+PLcom/android/server/policy/PermissionPolicyService$PhoneCarrierPrivilegesCallback;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/policy/PermissionPolicyService;->$r8$lambda$rznrndUGsirjpBcjHOGDjKWoSAo(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$fgetmPackageManager(Lcom/android/server/policy/PermissionPolicyService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$fgetmTelephonyManager(Lcom/android/server/policy/PermissionPolicyService;)Landroid/telephony/TelephonyManager;
+PLcom/android/server/policy/PermissionPolicyService;->-$$Nest$minitTelephonyManagerIfNeeded(Lcom/android/server/policy/PermissionPolicyService;)V
+HPLcom/android/server/policy/PermissionPolicyService;->-$$Nest$smgetSwitchOp(Ljava/lang/String;)I
+PLcom/android/server/policy/PermissionPolicyService;-><clinit>()V
+PLcom/android/server/policy/PermissionPolicyService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/policy/PermissionPolicyService;->getSwitchOp(Ljava/lang/String;)I
+PLcom/android/server/policy/PermissionPolicyService;->getUserContext(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/content/Context;
+PLcom/android/server/policy/PermissionPolicyService;->grantOrUpgradeDefaultRuntimePermissionsIfNeeded(I)V
+PLcom/android/server/policy/PermissionPolicyService;->initTelephonyManagerIfNeeded()V
+PLcom/android/server/policy/PermissionPolicyService;->isStarted(I)Z
+HPLcom/android/server/policy/PermissionPolicyService;->lambda$synchronizePermissionsAndAppOpsForUser$1(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Lcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/policy/PermissionPolicyService;->onBootPhase(I)V
+HPLcom/android/server/policy/PermissionPolicyService;->onStart()V
+PLcom/android/server/policy/PermissionPolicyService;->onStartUser(I)V
+PLcom/android/server/policy/PermissionPolicyService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/policy/PermissionPolicyService;->registerCarrierPrivilegesCallbacks()V
+PLcom/android/server/policy/PermissionPolicyService;->synchronizePermissionsAndAppOpsForUser(I)V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/policy/PhoneWindowManager$13;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$14;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$14;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/policy/PhoneWindowManager$1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$1;->onDrawn()V
+PLcom/android/server/policy/PhoneWindowManager$2;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$3;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$4;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$5;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/policy/PhoneWindowManager$5;->onAppTransitionStartingLocked(JJ)I
+PLcom/android/server/policy/PhoneWindowManager$6;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
+PLcom/android/server/policy/PhoneWindowManager$7;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
+PLcom/android/server/policy/PhoneWindowManager$8;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
+PLcom/android/server/policy/PhoneWindowManager$9;-><init>(Lcom/android/server/policy/PhoneWindowManager;II)V
+PLcom/android/server/policy/PhoneWindowManager$ButtonOverridePermissionChecker;-><init>()V
+PLcom/android/server/policy/PhoneWindowManager$Injector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
+PLcom/android/server/policy/PhoneWindowManager$Injector$1;-><init>(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
+PLcom/android/server/policy/PhoneWindowManager$Injector$1;->onShowingChanged()V
+PLcom/android/server/policy/PhoneWindowManager$Injector;->-$$Nest$fgetmWindowManagerFuncs(Lcom/android/server/policy/PhoneWindowManager$Injector;)Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
+PLcom/android/server/policy/PhoneWindowManager$Injector;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getAccessibilityShortcutController(Landroid/content/Context;Landroid/os/Handler;I)Lcom/android/internal/accessibility/AccessibilityShortcutController;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getActivityManagerService()Landroid/app/IActivityManager;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getButtonOverridePermissionChecker()Lcom/android/server/policy/PhoneWindowManager$ButtonOverridePermissionChecker;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getGlobalActionsFactory()Ljava/util/function/Supplier;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getKeyguardServiceDelegate()Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getTalkbackShortcutController()Lcom/android/server/policy/TalkbackShortcutController;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getWindowManagerFuncs()Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
+PLcom/android/server/policy/PhoneWindowManager$Injector;->getWindowWakeUpPolicy()Lcom/android/server/policy/WindowWakeUpPolicy;
+PLcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Looper;)V
+PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Looper;Lcom/android/server/policy/PhoneWindowManager$PolicyHandler-IA;)V
+PLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/policy/PhoneWindowManager$PowerKeyRule;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Handler;)V
+HPLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->observe()V
+PLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V
+PLcom/android/server/policy/PhoneWindowManager$StemPrimaryKeyRule;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->$r8$lambda$bJVVU3mazaPNgbIaoQkxeoMODLQ(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fgetmHandler(Lcom/android/server/policy/PhoneWindowManager;)Landroid/os/Handler;
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fgetmLock(Lcom/android/server/policy/PhoneWindowManager;)Ljava/lang/Object;
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$fputmLockAfterDreamingTransitionFinished(Lcom/android/server/policy/PhoneWindowManager;Z)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mfinishKeyguardDrawn(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mfinishWindowsDrawn(Lcom/android/server/policy/PhoneWindowManager;I)V
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mgetDreamManagerInternal(Lcom/android/server/policy/PhoneWindowManager;)Landroid/service/dreams/DreamManagerInternal;
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mhandleTransitionForKeyguardLw(Lcom/android/server/policy/PhoneWindowManager;ZZ)I
+PLcom/android/server/policy/PhoneWindowManager;->-$$Nest$mupdateSettings(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;-><clinit>()V
+PLcom/android/server/policy/PhoneWindowManager;-><init>()V
+PLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V
+PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V
+PLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V
+PLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z
+PLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(IZLjava/lang/String;[I)I
+PLcom/android/server/policy/PhoneWindowManager;->enableScreen(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;Z)V
+PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V
+PLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V
+PLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V
+PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn(I)V
+PLcom/android/server/policy/PhoneWindowManager;->finishedWakingUp(II)V
+PLcom/android/server/policy/PhoneWindowManager;->getDreamManagerInternal()Landroid/service/dreams/DreamManagerInternal;
+PLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J
+PLcom/android/server/policy/PhoneWindowManager;->getLidBehavior()I
+PLcom/android/server/policy/PhoneWindowManager;->getMaxMultiPressStemPrimaryCount()I
+PLcom/android/server/policy/PhoneWindowManager;->getWallpaperManagerInternal()Lcom/android/server/wallpaper/WallpaperManagerInternal;
+PLcom/android/server/policy/PhoneWindowManager;->handleTransitionForKeyguardLw(ZZ)I
+PLcom/android/server/policy/PhoneWindowManager;->hasLongPressOnBackBehavior()Z
+PLcom/android/server/policy/PhoneWindowManager;->hasStemPrimaryBehavior()Z
+PLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z
+PLcom/android/server/policy/PhoneWindowManager;->init(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+HPLcom/android/server/policy/PhoneWindowManager;->init(Lcom/android/server/policy/PhoneWindowManager$Injector;)V
+PLcom/android/server/policy/PhoneWindowManager;->initKeyCombinationRules()V
+PLcom/android/server/policy/PhoneWindowManager;->initSingleKeyGestureRules(Landroid/os/Looper;)V
+PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V
+PLcom/android/server/policy/PhoneWindowManager;->initializeHdmiStateInternal()V
+PLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z
+PLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z
+PLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z
+HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowing()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z
+PLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z
+PLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z
+PLcom/android/server/policy/PhoneWindowManager;->lambda$updateSettings$1()V
+PLcom/android/server/policy/PhoneWindowManager;->notifyLidSwitchChanged(JZ)V
+PLcom/android/server/policy/PhoneWindowManager;->okToAnimate(Z)Z
+PLcom/android/server/policy/PhoneWindowManager;->onDefaultDisplayFocusChangedLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
+PLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V
+PLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V
+HPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
+PLcom/android/server/policy/PhoneWindowManager;->readLidState()V
+PLcom/android/server/policy/PhoneWindowManager;->reportScreenStateToVrManager(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->reportScreenTurnedOnToWallpaper(I)V
+PLcom/android/server/policy/PhoneWindowManager;->reportScreenTurningOnToWallpaper(I)V
+PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn(I)V
+PLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(ILcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
+HPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V
+PLcom/android/server/policy/PhoneWindowManager;->setDefaultDisplay(Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;)V
+PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->setTopFocusedDisplay(I)V
+PLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z
+PLcom/android/server/policy/PhoneWindowManager;->startedWakingUp(II)V
+PLcom/android/server/policy/PhoneWindowManager;->systemBooted()V
+PLcom/android/server/policy/PhoneWindowManager;->systemReady()V
+HPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V
+PLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(ZZ)V
+PLcom/android/server/policy/PhoneWindowManager;->updateSettings()V
+HPLcom/android/server/policy/PhoneWindowManager;->updateSettings(Landroid/os/Handler;)V
+PLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V
+PLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V
+PLcom/android/server/policy/PhoneWindowManager;->userActivity(II)V
+PLcom/android/server/policy/SideFpsEventHandler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/policy/SideFpsEventHandler;)V
+PLcom/android/server/policy/SideFpsEventHandler$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/policy/SideFpsEventHandler$1;-><init>(Lcom/android/server/policy/SideFpsEventHandler;)V
+PLcom/android/server/policy/SideFpsEventHandler;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/PowerManager;)V
+PLcom/android/server/policy/SideFpsEventHandler;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/PowerManager;Lcom/android/server/policy/SideFpsEventHandler$DialogProvider;)V
+PLcom/android/server/policy/SideFpsEventHandler;->onFingerprintSensorReady()V
+PLcom/android/server/policy/SingleKeyGestureDetector$KeyHandler;-><init>(Lcom/android/server/policy/SingleKeyGestureDetector;Landroid/os/Looper;)V
+PLcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;-><init>(I)V
+PLcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/policy/SingleKeyGestureDetector;-><clinit>()V
+PLcom/android/server/policy/SingleKeyGestureDetector;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/policy/SingleKeyGestureDetector;->addRule(Lcom/android/server/policy/SingleKeyGestureDetector$SingleKeyRule;)V
+PLcom/android/server/policy/SingleKeyGestureDetector;->get(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/policy/SingleKeyGestureDetector;
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$1;-><init>()V
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;-><init>(ZIZZZZZZ)V
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->getExtraAppOpCode()I
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayAllowExtraAppOp()Z
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayDenyExtraAppOpIfGranted()Z
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayGrantPermission()Z
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;-><init>(ZI)V
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;->mayGrantPermission()Z
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><clinit>()V
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><init>()V
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->forPermission(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Lcom/android/server/pm/pkg/AndroidPackage;Landroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/policy/SoftRestrictedPermissionPolicy;
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getExtraAppOpCode()I
+PLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getForcedScopedStorageAppWhitelist()[Ljava/lang/String;
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getMinimumTargetSDK(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/os/UserHandle;)I
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasUidRequestedLegacyExternalStorage(ILandroid/content/Context;)Z
+HPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasWriteMediaStorageGrantedForUid(ILandroid/content/Context;)Z
+PLcom/android/server/policy/TalkbackShortcutController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/TalkbackShortcutController;->isTalkBackShortcutGestureEnabled()Z
+PLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
+PLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
+PLcom/android/server/policy/WakeGestureListener;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/policy/WakeGestureListener;->cancelWakeUpTrigger()V
+PLcom/android/server/policy/WakeGestureListener;->isSupported()Z
+PLcom/android/server/policy/WindowManagerPolicy;->getMaxWindowLayer()I
+HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I
+HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I
+PLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZZ)I
+HPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I
+PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;-><init>(Lcom/android/server/policy/WindowWakeUpPolicy;)V
+PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;-><init>(Lcom/android/server/policy/WindowWakeUpPolicy;Lcom/android/server/policy/WindowWakeUpPolicy$LocalService-IA;)V
+PLcom/android/server/policy/WindowWakeUpPolicy$LocalService;->setInputWakeUpDelegate(Lcom/android/server/policy/WindowWakeUpPolicyInternal$InputWakeUpDelegate;)V
+PLcom/android/server/policy/WindowWakeUpPolicy;->-$$Nest$fputmInputWakeUpDelegate(Lcom/android/server/policy/WindowWakeUpPolicy;Lcom/android/server/policy/WindowWakeUpPolicyInternal$InputWakeUpDelegate;)V
+PLcom/android/server/policy/WindowWakeUpPolicy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/WindowWakeUpPolicy;-><init>(Landroid/content/Context;Lcom/android/internal/os/Clock;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$2;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;->onDrawn()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;-><init>()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->reset()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmCallback(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmContext(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Landroid/content/Context;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmDrawnListenerWhenConnect(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fgetmKeyguardState(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->-$$Nest$fputmDrawnListenerWhenConnect(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;-><init>(Landroid/content/Context;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->bindService(Landroid/content/Context;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasKeyguard()Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isOccluded()Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onBootCompleted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onFinishedWakingUp()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOn(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp(IZ)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isSecure(I)Z
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onBootCompleted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onFinishedWakingUp()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp(IZ)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(ZI)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onSimSecureStateChanged(Z)V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;-><init>(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;I)V
+HPLcom/android/server/policy/role/RoleServicePlatformHelperImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;-><init>()V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;->getDigestAsString()Ljava/lang/String;
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl$MessageDigestOutputStream;->write([BII)V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->$r8$lambda$iHIoFGt-sugSqlklSHHOwdIQL9Y(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;-><clinit>()V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->computePackageStateHash(I)Ljava/lang/String;
+HPLcom/android/server/policy/role/RoleServicePlatformHelperImpl;->lambda$computePackageStateHash$0(Ljava/io/DataOutputStream;Landroid/content/pm/PackageManagerInternal;ILcom/android/server/pm/pkg/AndroidPackage;)V
+HSPLcom/android/server/power/AmbientDisplaySuppressionController;-><init>(Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;)V
+PLcom/android/server/power/AttentionDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/AttentionDetector;)V
+PLcom/android/server/power/AttentionDetector$1;-><init>(Lcom/android/server/power/AttentionDetector;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;)V
+PLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector$UserSwitchObserver-IA;)V
+HSPLcom/android/server/power/AttentionDetector;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
+PLcom/android/server/power/AttentionDetector;->cancelCurrentRequestIfAny()V
+PLcom/android/server/power/AttentionDetector;->getMaxExtensionMillis()J
+PLcom/android/server/power/AttentionDetector;->getPostDimCheckDurationMillis()J
+PLcom/android/server/power/AttentionDetector;->getPreDimCheckDurationMillis()J
+PLcom/android/server/power/AttentionDetector;->onUserActivity(JI)I
+PLcom/android/server/power/AttentionDetector;->readValuesFromDeviceConfig()V
+PLcom/android/server/power/AttentionDetector;->resetConsecutiveExtensionCount()V
+PLcom/android/server/power/AttentionDetector;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/power/AttentionDetector;->updateEnabledFromSettings(Landroid/content/Context;)V
+HPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J
+PLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/FaceDownDetector;)V
+HSPLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/FaceDownDetector;)V
+PLcom/android/server/power/FaceDownDetector$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;-><init>(Lcom/android/server/power/FaceDownDetector;F)V
+HSPLcom/android/server/power/FaceDownDetector$ExponentialMovingAverage;-><init>(Lcom/android/server/power/FaceDownDetector;FF)V
+HSPLcom/android/server/power/FaceDownDetector$ScreenStateReceiver;-><init>(Lcom/android/server/power/FaceDownDetector;)V
+HSPLcom/android/server/power/FaceDownDetector$ScreenStateReceiver;-><init>(Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/FaceDownDetector$ScreenStateReceiver-IA;)V
+PLcom/android/server/power/FaceDownDetector;->$r8$lambda$caCdnIB7OSGcXiz4jSr9FVtZVGw(Lcom/android/server/power/FaceDownDetector;)V
+HSPLcom/android/server/power/FaceDownDetector;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/power/FaceDownDetector;->getAccelerationThreshold()F
+PLcom/android/server/power/FaceDownDetector;->getFloatFlagValue(Ljava/lang/String;FFF)F
+PLcom/android/server/power/FaceDownDetector;->getLongFlagValue(Ljava/lang/String;JJJ)J
+PLcom/android/server/power/FaceDownDetector;->getSensorMaxLatencyMicros()I
+PLcom/android/server/power/FaceDownDetector;->getTimeThreshold()Ljava/time/Duration;
+PLcom/android/server/power/FaceDownDetector;->getUserInteractionBackoffMillis()J
+PLcom/android/server/power/FaceDownDetector;->getZAccelerationThreshold()F
+PLcom/android/server/power/FaceDownDetector;->isEnabled()Z
+PLcom/android/server/power/FaceDownDetector;->lambda$new$0()V
+PLcom/android/server/power/FaceDownDetector;->readValuesFromDeviceConfig()V
+PLcom/android/server/power/FaceDownDetector;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/power/FaceDownDetector;->updateActiveState()V
+PLcom/android/server/power/FaceDownDetector;->userActivity(I)V
+HSPLcom/android/server/power/InattentiveSleepWarningController;-><init>()V
+PLcom/android/server/power/InattentiveSleepWarningController;->isShown()Z
+HSPLcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/power/LowPowerStandbyController$1;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$2;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$3;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;-><init>()V
+HSPLcom/android/server/power/LowPowerStandbyController$LocalService;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$LocalService;-><init>(Lcom/android/server/power/LowPowerStandbyController;Lcom/android/server/power/LowPowerStandbyController$LocalService-IA;)V
+HSPLcom/android/server/power/LowPowerStandbyController$LowPowerStandbyHandler;-><init>(Lcom/android/server/power/LowPowerStandbyController;Landroid/os/Looper;)V
+HSPLcom/android/server/power/LowPowerStandbyController$PhoneCallServiceTracker;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController$RealClock;-><init>()V
+HSPLcom/android/server/power/LowPowerStandbyController$RealClock;-><init>(Lcom/android/server/power/LowPowerStandbyController$RealClock-IA;)V
+HSPLcom/android/server/power/LowPowerStandbyController$SettingsObserver;-><init>(Lcom/android/server/power/LowPowerStandbyController;Landroid/os/Handler;)V
+HSPLcom/android/server/power/LowPowerStandbyController$TempAllowlistChangeListener;-><init>(Lcom/android/server/power/LowPowerStandbyController;)V
+HSPLcom/android/server/power/LowPowerStandbyController;-><clinit>()V
+HSPLcom/android/server/power/LowPowerStandbyController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HSPLcom/android/server/power/LowPowerStandbyController;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/power/LowPowerStandbyController$Clock;Lcom/android/server/power/LowPowerStandbyController$DeviceConfigWrapper;Ljava/util/function/Supplier;Ljava/io/File;)V
+PLcom/android/server/power/LowPowerStandbyController;->systemReady()V
+HSPLcom/android/server/power/LowPowerStandbyControllerInternal;-><init>()V
+PLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;)V
+PLcom/android/server/power/Notifier$3;-><init>(Lcom/android/server/power/Notifier;)V
+PLcom/android/server/power/Notifier$Interactivity;-><init>()V
+PLcom/android/server/power/Notifier$Interactivity;-><init>(Lcom/android/server/power/Notifier$Interactivity-IA;)V
+PLcom/android/server/power/Notifier$NotifierHandler;-><init>(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V
+HPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/power/Notifier;->-$$Nest$mscreenPolicyChanging(Lcom/android/server/power/Notifier;II)V
+PLcom/android/server/power/Notifier;->-$$Nest$msendUserActivity(Lcom/android/server/power/Notifier;II)V
+PLcom/android/server/power/Notifier;-><clinit>()V
+HPLcom/android/server/power/Notifier;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/power/SuspendBlocker;Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/ScreenUndimDetector;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/power/Notifier;->createScreenOnOffBroadcastOptions()Landroid/os/Bundle;
+PLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
+PLcom/android/server/power/Notifier;->notifyWakeLockListener(Landroid/os/IWakeLockCallback;Ljava/lang/String;Z)V
+HPLcom/android/server/power/Notifier;->onScreenPolicyUpdate(II)V
+PLcom/android/server/power/Notifier;->onUserActivity(III)V
+HPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/Notifier;->screenPolicyChanging(II)V
+PLcom/android/server/power/Notifier;->sendUserActivity(II)V
+PLcom/android/server/power/PowerGroup;-><clinit>()V
+PLcom/android/server/power/PowerGroup;-><init>(ILcom/android/server/power/PowerGroup$PowerGroupListener;Lcom/android/server/power/Notifier;Landroid/hardware/display/DisplayManagerInternal;J)V
+HPLcom/android/server/power/PowerGroup;->getDesiredScreenPolicyLocked(ZZZZZ)I
+PLcom/android/server/power/PowerGroup;->getGroupId()I
+PLcom/android/server/power/PowerGroup;->getLastSleepTimeLocked()J
+PLcom/android/server/power/PowerGroup;->getLastUserActivityTimeLocked()J
+PLcom/android/server/power/PowerGroup;->getLastUserActivityTimeNoChangeLightsLocked()J
+PLcom/android/server/power/PowerGroup;->getLastWakeTimeLocked()J
+PLcom/android/server/power/PowerGroup;->getUserActivitySummaryLocked()I
+HPLcom/android/server/power/PowerGroup;->getWakeLockSummaryLocked()I
+HPLcom/android/server/power/PowerGroup;->getWakefulnessLocked()I
+HPLcom/android/server/power/PowerGroup;->isBrightOrDimLocked()Z
+PLcom/android/server/power/PowerGroup;->isPolicyBrightLocked()Z
+HPLcom/android/server/power/PowerGroup;->isPoweringOnLocked()Z
+HPLcom/android/server/power/PowerGroup;->isReadyLocked()Z
+PLcom/android/server/power/PowerGroup;->isSandmanSummonedLocked()Z
+HPLcom/android/server/power/PowerGroup;->needSuspendBlockerLocked(ZZ)Z
+PLcom/android/server/power/PowerGroup;->setLastUserActivityTimeLocked(JI)V
+PLcom/android/server/power/PowerGroup;->setLastUserActivityTimeNoChangeLightsLocked(JI)V
+HPLcom/android/server/power/PowerGroup;->setReadyLocked(Z)Z
+PLcom/android/server/power/PowerGroup;->setUserActivitySummaryLocked(I)V
+HPLcom/android/server/power/PowerGroup;->setWakeLockSummaryLocked(I)V
+HPLcom/android/server/power/PowerGroup;->supportsSandmanLocked()Z
+HPLcom/android/server/power/PowerGroup;->updateLocked(FZZIFZLandroid/os/PowerSaveState;ZZZZZZ)Z
+PLcom/android/server/power/PowerGroup;->wakeUpLocked(JILjava/lang/String;ILjava/lang/String;ILcom/android/internal/util/LatencyTracker;)V
+HSPLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker(Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(ZZ)V
+PLcom/android/server/power/PowerManagerService$1;->onStateChanged()V
+PLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$4;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$BatteryReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/PowerManagerService$BinderService;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/content/Context;)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;ILandroid/os/IWakeLockCallback;)V
+PLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLockAsync(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$BinderService;->getBrightnessConstraint(I)F
+PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I
+PLcom/android/server/power/PowerManagerService$BinderService;->getPowerSaveState(I)Landroid/os/PowerSaveState;
+PLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
+HSPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
+PLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
+PLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V
+PLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLockAsync(Landroid/os/IBinder;I)V
+PLcom/android/server/power/PowerManagerService$BinderService;->setDozeAfterScreenOff(Z)V
+PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V
+PLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUidsAsync(Landroid/os/IBinder;[I)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$BinderService;->userActivity(IJII)V
+PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$Constants;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
+PLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V
+PLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V
+PLcom/android/server/power/PowerManagerService$DeviceStateListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$DeviceStateListener;->onStateChanged(I)V
+PLcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DisplayGroupPowerChangeListener-IA;)V
+PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DockReceiver-IA;)V
+PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamManagerStateListener-IA;)V
+PLcom/android/server/power/PowerManagerService$DreamManagerStateListener;->onKeepDreamingWhenUnpluggingChanged(Z)V
+PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$DreamReceiver-IA;)V
+PLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$ForegroundProfileObserver-IA;)V
+HSPLcom/android/server/power/PowerManagerService$Injector$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/power/PowerManagerService$Injector$1;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
+HSPLcom/android/server/power/PowerManagerService$Injector$1;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/power/PowerManagerService$Injector$1;->set(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$Injector$2;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
+HPLcom/android/server/power/PowerManagerService$Injector$2;->uptimeMillis()J
+HSPLcom/android/server/power/PowerManagerService$Injector$3;-><init>(Lcom/android/server/power/PowerManagerService$Injector;)V
+HSPLcom/android/server/power/PowerManagerService$Injector;-><init>()V
+HSPLcom/android/server/power/PowerManagerService$Injector;->createAmbientDisplayConfiguration(Landroid/content/Context;)Landroid/hardware/display/AmbientDisplayConfiguration;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createAmbientDisplaySuppressionController(Lcom/android/server/power/AmbientDisplaySuppressionController$AmbientDisplaySuppressionChangedCallback;)Lcom/android/server/power/AmbientDisplaySuppressionController;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createClock()Lcom/android/server/power/PowerManagerService$Clock;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createDeviceConfigParameterProvider()Lcom/android/server/display/feature/DeviceConfigParameterProvider;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createFoldGracePeriodProvider()Lcom/android/internal/foldables/FoldGracePeriodProvider;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createHandler(Landroid/os/Looper;Landroid/os/Handler$Callback;)Landroid/os/Handler;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createInattentiveSleepWarningController()Lcom/android/server/power/InattentiveSleepWarningController;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createLowPowerStandbyController(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/power/LowPowerStandbyController;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createNativeWrapper()Lcom/android/server/power/PowerManagerService$NativeWrapper;
+PLcom/android/server/power/PowerManagerService$Injector;->createNotifier(Landroid/os/Looper;Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Lcom/android/server/power/SuspendBlocker;Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/power/FaceDownDetector;Lcom/android/server/power/ScreenUndimDetector;Ljava/util/concurrent/Executor;)Lcom/android/server/power/Notifier;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createPermissionCheckerWrapper()Lcom/android/server/power/PowerManagerService$PermissionCheckerWrapper;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createPowerPropertiesWrapper()Lcom/android/server/power/PowerManagerService$PowerPropertiesWrapper;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createSuspendBlocker(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)Lcom/android/server/power/SuspendBlocker;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createSystemPropertiesWrapper()Lcom/android/server/power/SystemPropertiesWrapper;
+PLcom/android/server/power/PowerManagerService$Injector;->createWirelessChargerDetector(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)Lcom/android/server/power/WirelessChargerDetector;
+HSPLcom/android/server/power/PowerManagerService$Injector;->getFlags()Lcom/android/server/power/feature/PowerManagerFlags;
+HSPLcom/android/server/power/PowerManagerService$Injector;->invalidateIsInteractiveCaches()V
+HSPLcom/android/server/power/PowerManagerService$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->finishUidChanges()V
+HSPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState;
+HSPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(IJ)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setPowerBoost(II)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setPowerMode(IZ)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(F)V
+PLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->startUidChanges()V
+HPLcom/android/server/power/PowerManagerService$LocalService;->uidActive(I)V
+PLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->updateUidProcState(II)V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;-><init>()V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeAcquireSuspendBlocker(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeInit(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeReleaseSuspendBlocker(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetAutoSuspend(Z)V
+PLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetPowerBoost(II)V
+HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetPowerMode(IZ)Z
+HSPLcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$PowerGroupWakefulnessChangeListener-IA;)V
+HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback-IA;)V
+PLcom/android/server/power/PowerManagerService$PowerManagerHandlerCallback;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/power/PowerManagerService$SettingsObserver;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;-><init>(Lcom/android/server/power/PowerManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire()V
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->acquire(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->recordReferenceLocked(Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V
+HPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release(Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->removeReferenceLocked(Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V
+PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;Landroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->getPowerGroupId()Ljava/lang/Integer;
+HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;IILandroid/os/IWakeLockCallback;)Z
+HPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z
+HPLcom/android/server/power/PowerManagerService$WakeLock;->linkToDeath()V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->setDisabled(Z)Z
+HPLcom/android/server/power/PowerManagerService$WakeLock;->unlinkToDeath()V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)V
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmBatterySaverSupported(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmBootCompleted(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmClock(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/PowerManagerService$Clock;
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmContext(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context;
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDecoupleHalAutoSuspendModeFromDisplayConfig(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDecoupleHalInteractiveModeFromDisplayConfig(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDirty(Lcom/android/server/power/PowerManagerService;)I
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDisplayManagerInternal(Lcom/android/server/power/PowerManagerService;)Landroid/hardware/display/DisplayManagerInternal;
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmDisplaySuspendBlocker(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker;
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmNativeWrapper(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/PowerManagerService$NativeWrapper;
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmPowerGroups(Lcom/android/server/power/PowerManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmSuspendBlockers(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList;
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$fgetmSystemReady(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fputmDirty(Lcom/android/server/power/PowerManagerService;I)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$fputmKeepDreamingWhenUnplugging(Lcom/android/server/power/PowerManagerService;Z)V
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$macquireWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleBatteryStateChangedLocked(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleSandman(Lcom/android/server/power/PowerManagerService;I)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mhandleUserActivityTimeout(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$misGloballyInteractiveInternal(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$misWakeLockLevelSupportedInternal(Lcom/android/server/power/PowerManagerService;I)Z
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$mnativeInit(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$mreleaseWakeLockInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$msetDozeAfterScreenOffInternal(Lcom/android/server/power/PowerManagerService;Z)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$msetPowerBoostInternal(Lcom/android/server/power/PowerManagerService;II)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$msetPowerModeInternal(Lcom/android/server/power/PowerManagerService;IZ)Z
+PLcom/android/server/power/PowerManagerService;->-$$Nest$msetScreenBrightnessOverrideFromWindowManagerInternal(Lcom/android/server/power/PowerManagerService;F)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$msetUserActivityTimeoutOverrideFromWindowManagerInternal(Lcom/android/server/power/PowerManagerService;J)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mupdatePowerStateLocked(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$mupdateWakeLockWorkSourceInternal(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$muserActivityInternal(Lcom/android/server/power/PowerManagerService;IJIII)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$mwakePowerGroupLocked(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerGroup;JILjava/lang/String;ILjava/lang/String;I)V
+HPLcom/android/server/power/PowerManagerService;->-$$Nest$smcopyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeAcquireSuspendBlocker(Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeReleaseSuspendBlocker(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetAutoSuspend(Z)V
+PLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetPowerBoost(II)V
+HSPLcom/android/server/power/PowerManagerService;->-$$Nest$smnativeSetPowerMode(IZ)Z
+HSPLcom/android/server/power/PowerManagerService;-><clinit>()V
+HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/power/PowerManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/PowerManagerService$Injector;)V
+HPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILandroid/os/IWakeLockCallback;)V
+PLcom/android/server/power/PowerManagerService;->addPowerGroupsForNonDefaultDisplayGroupLocked()V
+PLcom/android/server/power/PowerManagerService;->adjustWakeLockSummary(II)I
+HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->areAllPowerGroupsReadyLocked()Z
+HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
+HPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/power/PowerManagerService;->doesIdleStateBlockWakeLocksLocked()Z
+PLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V
+HPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I
+HPLcom/android/server/power/PowerManagerService;->finishUidChangesInternal()V
+HPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V
+HPLcom/android/server/power/PowerManagerService;->getAttentiveTimeoutLocked()J
+HSPLcom/android/server/power/PowerManagerService;->getGlobalWakefulnessLocked()I
+PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal()I
+HPLcom/android/server/power/PowerManagerService;->getNextProfileTimeoutLocked(J)J
+HPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(J)J
+HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(JJ)J
+HPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutWithFaceDownLocked(JJ)J
+HPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked(J)J
+HPLcom/android/server/power/PowerManagerService;->getWakeLockSummaryFlags(Lcom/android/server/power/PowerManagerService$WakeLock;)I
+PLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V
+HPLcom/android/server/power/PowerManagerService;->handleSandman(I)V
+PLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V
+PLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V
+PLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V
+PLcom/android/server/power/PowerManagerService;->incrementBootCount()V
+HPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(Lcom/android/server/power/PowerGroup;J)Z
+HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked(Lcom/android/server/power/PowerGroup;)Z
+PLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
+HSPLcom/android/server/power/PowerManagerService;->isGloballyInteractiveInternal()Z
+HPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked(Lcom/android/server/power/PowerGroup;)Z
+PLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z
+HPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
+PLcom/android/server/power/PowerManagerService;->isSameCallback(Landroid/os/IWakeLockCallback;Landroid/os/IWakeLockCallback;)Z
+PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
+PLcom/android/server/power/PowerManagerService;->isValidBrightness(F)Z
+PLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z
+HPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z
+PLcom/android/server/power/PowerManagerService;->maybeUpdateForegroundProfileLastActivityLocked(J)V
+PLcom/android/server/power/PowerManagerService;->monitor()V
+HPLcom/android/server/power/PowerManagerService;->needSuspendBlockerLocked()Z
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;Landroid/os/IWakeLockCallback;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->notifyWakeLockReleasedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HSPLcom/android/server/power/PowerManagerService;->onBootPhase(I)V
+HSPLcom/android/server/power/PowerManagerService;->onStart()V
+PLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V
+HPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V
+HPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
+HPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V
+HPLcom/android/server/power/PowerManagerService;->scheduleUserInactivityTimeout(J)V
+HPLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V
+PLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V
+PLcom/android/server/power/PowerManagerService;->setDozeAfterScreenOffInternal(Z)V
+HPLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V
+HPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V
+PLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(IJ)V
+PLcom/android/server/power/PowerManagerService;->setPowerBoostInternal(II)V
+PLcom/android/server/power/PowerManagerService;->setPowerModeInternal(IZ)Z
+HPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(F)V
+PLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V
+HPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
+PLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z
+HPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z
+PLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z
+HPLcom/android/server/power/PowerManagerService;->startUidChangesInternal()V
+HPLcom/android/server/power/PowerManagerService;->systemReady()V
+HPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V
+HPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(JI)V
+PLcom/android/server/power/PowerManagerService;->updateDeviceConfigLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V
+HPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updatePowerGroupsLocked(I)Z
+HPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V
+PLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updateSettingsLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateStayOnLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V
+HPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V
+PLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V
+HPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
+HPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z
+PLcom/android/server/power/PowerManagerService;->userActivityInternal(IJIII)V
+PLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z
+HPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(Lcom/android/server/power/PowerGroup;JIII)Z
+PLcom/android/server/power/PowerManagerService;->wakePowerGroupLocked(Lcom/android/server/power/PowerGroup;JILjava/lang/String;ILjava/lang/String;I)V
+HSPLcom/android/server/power/PowerManagerShellCommand;-><init>(Landroid/content/Context;Lcom/android/server/power/PowerManagerService$BinderService;)V
+PLcom/android/server/power/ScreenUndimDetector$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/ScreenUndimDetector;)V
+HSPLcom/android/server/power/ScreenUndimDetector$InternalClock;-><init>()V
+PLcom/android/server/power/ScreenUndimDetector$InternalClock;->getCurrentTime()J
+HSPLcom/android/server/power/ScreenUndimDetector;-><clinit>()V
+HSPLcom/android/server/power/ScreenUndimDetector;-><init>()V
+PLcom/android/server/power/ScreenUndimDetector;->readKeepScreenOnForMillis()J
+PLcom/android/server/power/ScreenUndimDetector;->readKeepScreenOnNotificationEnabled()Z
+PLcom/android/server/power/ScreenUndimDetector;->readMaxDurationBetweenUndimsMillis()J
+PLcom/android/server/power/ScreenUndimDetector;->readUndimsRequired()I
+PLcom/android/server/power/ScreenUndimDetector;->readValuesFromDeviceConfig()V
+HPLcom/android/server/power/ScreenUndimDetector;->recordScreenPolicy(II)V
+PLcom/android/server/power/ScreenUndimDetector;->systemReady(Landroid/content/Context;)V
+PLcom/android/server/power/ScreenUndimDetector;->userActivity(I)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda0;->onValues(Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda2;-><init>(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService$$ExternalSyntheticLambda3;->run()V
+HSPLcom/android/server/power/ThermalManagerService$1;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$1;->getCurrentTemperatures()[Landroid/os/Temperature;
+PLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I
+PLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListener(Landroid/os/IThermalEventListener;)Z
+HPLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListenerWithType(Landroid/os/IThermalEventListener;I)Z
+PLcom/android/server/power/ThermalManagerService$1;->registerThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
+HSPLcom/android/server/power/ThermalManagerService$TemperatureWatcher;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->normalizeTemperature(FF)F
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateHeadroomThreshold(IFF)V
+PLcom/android/server/power/ThermalManagerService$TemperatureWatcher;->updateThresholds()V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$1;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper$1;->notifyThrottling(Landroid/hardware/thermal/Temperature;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->$r8$lambda$eU14JIDh7_eSiFFdcxpGZaa7E5A(ILandroid/hardware/thermal/TemperatureThreshold;)Z
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$TemperatureChangedCallback;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->connectToHal()Z
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getCurrentTemperatures(ZI)Ljava/util/List;
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->getTemperatureThresholds(ZI)Ljava/util/List;
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->initProxyAndRegisterCallback(Landroid/os/IBinder;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->lambda$getTemperatureThresholds$0(ILandroid/hardware/thermal/TemperatureThreshold;)Z
+PLcom/android/server/power/ThermalManagerService$ThermalHalAidlWrapper;->registerThermalChangedCallback()V
+PLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><clinit>()V
+PLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><init>()V
+PLcom/android/server/power/ThermalManagerService;->$r8$lambda$CphJwWjbL-B4w7BxLr49x93aXVc(Lcom/android/server/power/ThermalManagerService;Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->$r8$lambda$_4zrfyVY81QkL3mSI38hIUpwup8(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->$r8$lambda$_wu3L1d49Z7doBi6Ga_7WZSQLrk(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmHalReady(Lcom/android/server/power/ThermalManagerService;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmHalWrapper(Lcom/android/server/power/ThermalManagerService;)Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/ThermalManagerService;)Ljava/lang/Object;
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmStatus(Lcom/android/server/power/ThermalManagerService;)I
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmThermalEventListeners(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$fgetmThermalStatusListeners(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$mpostEventListenerCurrentTemperatures(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$mpostStatusListener(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->-$$Nest$smthermalSeverityToStatsdStatus(I)I
+HSPLcom/android/server/power/ThermalManagerService;-><clinit>()V
+HSPLcom/android/server/power/ThermalManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/power/ThermalManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;)V
+PLcom/android/server/power/ThermalManagerService;->lambda$postEventListener$1(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->lambda$postStatusListener$0(Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->notifyEventListenersLocked(Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->onActivityManagerReady()V
+HSPLcom/android/server/power/ThermalManagerService;->onBootPhase(I)V
+HSPLcom/android/server/power/ThermalManagerService;->onStart()V
+PLcom/android/server/power/ThermalManagerService;->onTemperatureChanged(Landroid/os/Temperature;Z)V
+PLcom/android/server/power/ThermalManagerService;->onTemperatureChangedCallback(Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->onTemperatureMapChangedLocked()V
+PLcom/android/server/power/ThermalManagerService;->postEventListener(Landroid/os/Temperature;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
+PLcom/android/server/power/ThermalManagerService;->postEventListenerCurrentTemperatures(Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
+PLcom/android/server/power/ThermalManagerService;->postStatusListener(Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->registerStatsCallbacks()V
+PLcom/android/server/power/ThermalManagerService;->setStatusLocked(I)V
+PLcom/android/server/power/ThermalManagerService;->shutdownIfNeeded(Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->thermalSeverityToStatsdStatus(I)I
+PLcom/android/server/power/WakeLockLog$EntryByteTranslator;-><init>(Lcom/android/server/power/WakeLockLog$TagDatabase;)V
+PLcom/android/server/power/WakeLockLog$EntryByteTranslator;->getRelativeTime(JJ)I
+HPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I
+PLcom/android/server/power/WakeLockLog$Injector;-><init>()V
+HPLcom/android/server/power/WakeLockLog$Injector;->currentTimeMillis()J
+PLcom/android/server/power/WakeLockLog$Injector;->getDateFormat()Ljava/text/SimpleDateFormat;
+PLcom/android/server/power/WakeLockLog$Injector;->getLogSize()I
+PLcom/android/server/power/WakeLockLog$Injector;->getTagDatabaseSize()I
+HPLcom/android/server/power/WakeLockLog$LogEntry;-><init>(JILcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$LogEntry;->set(JILcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$TagData;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/power/WakeLockLog$TagData;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/power/WakeLockLog$TagDatabase;-><init>(Lcom/android/server/power/WakeLockLog$Injector;)V
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(Ljava/lang/String;IZ)Lcom/android/server/power/WakeLockLog$TagData;
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->getTagIndex(Lcom/android/server/power/WakeLockLog$TagData;)I
+PLcom/android/server/power/WakeLockLog$TagDatabase;->setCallback(Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;)V
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->setToIndex(Lcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->updateTagTime(Lcom/android/server/power/WakeLockLog$TagData;J)V
+PLcom/android/server/power/WakeLockLog$TheLog$1;-><init>(Lcom/android/server/power/WakeLockLog$TheLog;)V
+PLcom/android/server/power/WakeLockLog$TheLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;Lcom/android/server/power/WakeLockLog$EntryByteTranslator;Lcom/android/server/power/WakeLockLog$TagDatabase;)V
+HPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V
+HPLcom/android/server/power/WakeLockLog$TheLog;->getAvailableSpace()I
+HPLcom/android/server/power/WakeLockLog$TheLog;->isBufferEmpty()Z
+HPLcom/android/server/power/WakeLockLog$TheLog;->makeSpace(I)Z
+HPLcom/android/server/power/WakeLockLog$TheLog;->writeBytesAt(I[BI)V
+PLcom/android/server/power/WakeLockLog;->-$$Nest$sfgetDATE_FORMAT()Ljava/text/SimpleDateFormat;
+PLcom/android/server/power/WakeLockLog;-><clinit>()V
+PLcom/android/server/power/WakeLockLog;-><init>(Landroid/content/Context;)V
+PLcom/android/server/power/WakeLockLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;Landroid/content/Context;)V
+HPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V
+HPLcom/android/server/power/WakeLockLog;->onWakeLockAcquired(Ljava/lang/String;II)V
+HPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;II)V
+HPLcom/android/server/power/WakeLockLog;->onWakeLockReleased(Ljava/lang/String;I)V
+HPLcom/android/server/power/WakeLockLog;->tagNameReducer(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/power/WakeLockLog;->translateFlagsFromPowerManager(I)I
+PLcom/android/server/power/WirelessChargerDetector$1;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
+PLcom/android/server/power/WirelessChargerDetector$2;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
+PLcom/android/server/power/WirelessChargerDetector;-><clinit>()V
+PLcom/android/server/power/WirelessChargerDetector;-><init>(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)V
+PLcom/android/server/power/WirelessChargerDetector;->update(ZI)Z
+HSPLcom/android/server/power/feature/PowerManagerFlags$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;)V
+HSPLcom/android/server/power/feature/PowerManagerFlags$FlagState;-><init>(Ljava/lang/String;Ljava/util/function/Supplier;Lcom/android/server/power/feature/PowerManagerFlags$FlagState-IA;)V
+HSPLcom/android/server/power/feature/PowerManagerFlags;-><init>()V
+PLcom/android/server/power/hint/HintManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
+HSPLcom/android/server/power/hint/HintManagerService$BinderService;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
+PLcom/android/server/power/hint/HintManagerService$BinderService;->createHintSession(Landroid/os/IBinder;[IJ)Landroid/os/IHintSession;
+PLcom/android/server/power/hint/HintManagerService$BinderService;->getHintSessionPreferredRate()J
+HSPLcom/android/server/power/hint/HintManagerService$Injector;-><init>()V
+HSPLcom/android/server/power/hint/HintManagerService$Injector;->createNativeWrapper()Lcom/android/server/power/hint/HintManagerService$NativeWrapper;
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;II)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;I)V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver;->$r8$lambda$8-3q2FSoHxKJS5M75tlJXQ5W92M(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;I)V
+PLcom/android/server/power/hint/HintManagerService$MyUidObserver;->$r8$lambda$G5ujTcrPvq25wCnbVcETC3ZVxqA(Lcom/android/server/power/hint/HintManagerService$MyUidObserver;II)V
+HSPLcom/android/server/power/hint/HintManagerService$MyUidObserver;-><init>(Lcom/android/server/power/hint/HintManagerService;)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->isUidForeground(I)Z
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidGone$0(I)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->lambda$onUidStateChanged$1(II)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidGone(IZ)V
+HPLcom/android/server/power/hint/HintManagerService$MyUidObserver;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;-><init>()V
+HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halGetHintSessionPreferredRate()J
+HSPLcom/android/server/power/hint/HintManagerService$NativeWrapper;->halInit()V
+HPLcom/android/server/power/hint/HintManagerService;->-$$Nest$fgetmActiveSessions(Lcom/android/server/power/hint/HintManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/power/hint/HintManagerService;->-$$Nest$fgetmLock(Lcom/android/server/power/hint/HintManagerService;)Ljava/lang/Object;
+PLcom/android/server/power/hint/HintManagerService;->-$$Nest$misHalSupported(Lcom/android/server/power/hint/HintManagerService;)Z
+HSPLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/power/hint/HintManagerService;-><init>(Landroid/content/Context;Lcom/android/server/power/hint/HintManagerService$Injector;)V
+PLcom/android/server/power/hint/HintManagerService;->isHalSupported()Z
+HSPLcom/android/server/power/hint/HintManagerService;->onBootPhase(I)V
+HSPLcom/android/server/power/hint/HintManagerService;->onStart()V
+PLcom/android/server/power/hint/HintManagerService;->registerStatsCallbacks()V
+PLcom/android/server/power/hint/HintManagerService;->systemReady()V
+HSPLcom/android/server/power/optimization/FeatureFlagsImpl;-><clinit>()V
+HSPLcom/android/server/power/optimization/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/server/power/optimization/FeatureFlagsImpl;->disableSystemServicePowerAttr()Z
+PLcom/android/server/power/optimization/FeatureFlagsImpl;->load_overrides_backstage_power()V
+PLcom/android/server/power/optimization/FeatureFlagsImpl;->streamlinedBatteryStats()Z
+HSPLcom/android/server/power/optimization/Flags;-><clinit>()V
+HSPLcom/android/server/power/optimization/Flags;->disableSystemServicePowerAttr()Z
+PLcom/android/server/power/optimization/Flags;->streamlinedBatteryStats()Z
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$1;-><init>()V
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;-><init>(I)V
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->getPowerComponentId()I
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->getProcessor()Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->setProcessor(Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->trackDeviceStates([I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;->trackUidStates([I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->-$$Nest$sfgetNO_OP_PROCESSOR()Lcom/android/server/power/stats/AggregatedPowerStatsProcessor;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;-><clinit>()V
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;-><init>()V
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->getPowerComponentsAggregatedStatsConfigs()Ljava/util/List;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsConfig;->trackPowerComponent(I)Lcom/android/server/power/stats/AggregatedPowerStatsConfig$PowerComponent;
+HSPLcom/android/server/power/stats/AggregatedPowerStatsProcessor;-><init>()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda0;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda2;->run()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;-><init>(Ljava/lang/Runnable;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda6;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda7;->run()V
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$$ExternalSyntheticLambda8;->run()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$1;->run()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$2;->run()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$3;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$3;->execute(Ljava/lang/Runnable;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$4;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$4;->onBluetoothActivityEnergyInfoAvailable(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;->onError(Landroid/telephony/TelephonyManager$ModemActivityInfoException;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$5;->onError(Ljava/lang/Throwable;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$TgNX_p2V0O5r6X5mUinj9SCyWf4(Ljava/lang/Runnable;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$Wx33MmwbjqfDxlQQrg9moONX6GA(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$fzONXx64Mcwd9mw55thi-ZcrYmg(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$gqMSfdpdVW3FAyYkJhAyC8ggBas(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$j2OKKiCfbZA6ci9IVMhM3dJE-Hk(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$teZaibf_MXjhvvOUBkWARv-cTiA(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->$r8$lambda$xuE6vcYTQgXCEAaRtlmzQWy8b9c(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmCurrentReason(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Ljava/lang/String;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmOnBattery(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmOnBatteryScreenOff(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmPerDisplayScreenStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)[I
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmScreenState(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)I
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmStats(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Lcom/android/server/power/stats/BatteryStatsImpl;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmUpdateFlags(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)I
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmUseLatestStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fgetmWorkerLock(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)Ljava/lang/Object;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmCurrentFuture(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmCurrentReason(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/lang/String;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmLastCollectionTimeStamp(Lcom/android/server/power/stats/BatteryExternalStatsWorker;J)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmUpdateFlags(Lcom/android/server/power/stats/BatteryExternalStatsWorker;I)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$fputmUseLatestStates(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Z)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$mcancelSyncDueToBatteryLevelChangeLocked(Lcom/android/server/power/stats/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->-$$Nest$mupdateExternalStatsLocked(Lcom/android/server/power/stats/BatteryExternalStatsWorker;Ljava/lang/String;IZZI[IZ)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;-><init>(Lcom/android/server/power/stats/BatteryExternalStatsWorker$Injector;Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelCpuSyncDueToWakelockChange()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelSyncDueToBatteryLevelChangeLocked()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->cancelSyncDueToProcessStateChange()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->getEnergyConsumersLocked(I)Ljava/util/concurrent/CompletableFuture;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$new$0(Ljava/lang/Runnable;)V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$new$1(Ljava/lang/Runnable;)Ljava/lang/Thread;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$2()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$3()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleSyncDueToBatteryLevelChange$4()V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$scheduleSyncDueToProcessStateChange$5(I)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->lambda$updateExternalStatsLocked$8(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->populateEnergyConsumerSubsystemMapsLocked()Landroid/util/SparseArray;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleCpuSyncDueToWakelockChange(J)Ljava/util/concurrent/Future;
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleDelayedSyncLocked(Ljava/util/concurrent/Future;Ljava/lang/Runnable;J)Ljava/util/concurrent/Future;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleRunnable(Ljava/lang/Runnable;)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSync(Ljava/lang/String;I)Ljava/util/concurrent/Future;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToBatteryLevelChange(J)Ljava/util/concurrent/Future;
+HPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToProcessStateChange(IJ)V
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncDueToScreenStateChange(IZZI[I)Ljava/util/concurrent/Future;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future;
+PLcom/android/server/power/stats/BatteryExternalStatsWorker;->systemServicesReady()V
+HSPLcom/android/server/power/stats/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZI[IZ)V
+HSPLcom/android/server/power/stats/BatteryStatsDumpHelperImpl;-><init>(Lcom/android/server/power/stats/BatteryUsageStatsProvider;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda7;->run()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$1;-><init>()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$4;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->abortLastDuration(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->addDuration(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->computeOverage(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;->recomputeLastDuration(JZ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmPowerStatsThrottlePeriodCpu(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmResetOnUnplugAfterSignificantCharge(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->-$$Nest$fgetmResetOnUnplugHighBatteryLevel(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;-><init>()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->build()Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setPowerStatsThrottlePeriodCpu(J)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setResetOnUnplugAfterSignificantCharge(Z)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;->setResetOnUnplugHighBatteryLevel(Z)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig$Builder;Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig-IA;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;->getPowerStatsThrottlePeriodCpu()J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BinderCallStats;-><init>()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache-IA;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$BluetoothActivityInfoCache;->set(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Constants;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/Handler;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->getPerUidModemModel(Ljava/lang/String;)I
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->onChange()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->startObserving(Landroid/content/ContentResolver;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateBatteryChargedDelayMsLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateBatteryChargingEnforceLevelLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateConstants()V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateKernelUidReadersThrottleTime(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Constants;->updateUidRemoveDelay(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readTimeMultiStateCounter(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->readTimeMultiStateCounters(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;I)[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeTimeMultiStateCounter(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;->writeTimeMultiStateCounters(Landroid/os/Parcel;[Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;->readSummaryFromParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DisplayBatteryStats;->writeSummaryToParcel(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->batteryLevelChanged(I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->batterySaverModeChanged(Z)V
+PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->chargingStateChanged(I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->deviceIdleModeStateChanged(I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->pluggedStateChanged(I)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->uidProcessStateChanged(II)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$FrameworkStatsLogger;->wakelockStateChanged(ILandroid/os/WorkSource$WorkChain;Ljava/lang/String;IIZ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl-IA;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->clear()V
+PLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->finishAddingCpuLocked()V
+HPLcom/android/server/power/stats/BatteryStatsImpl$HistoryStepDetailsCalculatorImpl;->getHistoryStepDetails()Landroid/os/BatteryStats$HistoryStepDetails;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->reset(ZJ)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->-$$Nest$mreadSummaryFromParcelLocked(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->-$$Nest$mwriteSummaryToParcelLocked(Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounterArray;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$MyHandler;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Landroid/os/Looper;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap;
+HPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;J)Ljava/lang/Object;
+HPLcom/android/server/power/stats/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;J)Ljava/lang/Object;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(JJ)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->endSample(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->getUpdateVersion()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I)V
+PLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JIJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;->update(JJIJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/Clock;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(JJ)J
+PLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->isRunningLocked()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->setTimeout(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;-><init>(Z)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->add(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->computeUptime(JI)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getRealtime(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->getUptime(J)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->init(JJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->isRunning()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->readSummaryFromParcel(Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->-$$Nest$mwriteToParcel(Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->-$$Nest$smreadFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IIJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/LongArrayMultiStateCounter;J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->getCounter()Lcom/android/internal/os/LongArrayMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->getStateCount()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->readFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IIJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;->writeToParcel(Landroid/os/Parcel;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$msetState(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;IJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$mupdate(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;JJ)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$mwriteToParcel(Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->-$$Nest$smreadFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter-IA;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/LongMultiStateCounter;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->getStateCount()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->readFromParcel(Landroid/os/Parcel;Lcom/android/server/power/stats/BatteryStatsImpl$TimeBase;IJ)Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->setState(IJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->update(JJ)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;->writeToParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/Clock;ILcom/android/server/power/stats/BatteryStatsImpl$TimeBase;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->instantiateObject()Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$1;->instantiateObject()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$2;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl;I)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;->instantiateObject()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid$3;->instantiateObject()Ljava/lang/Object;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;->newServiceStatsLocked()Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Sensor;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmMobileRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmUidEnergyConsumerStats(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/internal/power/EnergyConsumerStats;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fgetmWifiRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;)Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmMobileRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmUidEnergyConsumerStats(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/internal/power/EnergyConsumerStats;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$fputmWifiRadioApWakeupCount(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;Lcom/android/server/power/stats/BatteryStatsImpl$LongSamplingCounter;)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$mgetProcStateScreenOffTimeCounter(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->-$$Nest$mgetProcStateTimeCounter(Lcom/android/server/power/stats/BatteryStatsImpl$Uid;J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><clinit>()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl;IJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createAudioTurnedOnTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createForegroundActivityTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createForegroundServiceTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->createVibratorOnTimerLocked()Lcom/android/server/power/stats/BatteryStatsImpl$BatchTimer;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->ensureMultiStateCounters(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getCpuActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getMobileRadioActiveTimeCounter()Lcom/android/server/power/stats/BatteryStatsImpl$TimeMultiStateCounter;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getOrCreateEnergyConsumerStatsIfSupportedLocked()Lcom/android/internal/power/EnergyConsumerStats;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcStateScreenOffTimeCounter(J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getProcStateTimeCounter(J)Lcom/android/server/power/stats/BatteryStatsImpl$TimeInFreqMultiStateCounter;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/server/power/stats/BatteryStatsImpl$DualTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/server/power/stats/BatteryStatsImpl$StopwatchTimer;
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->getWifiControllerActivity()Lcom/android/server/power/stats/BatteryStatsImpl$ControllerActivityCounterImpl;
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->maybeScheduleExternalStatsSync(II)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteActivityPausedLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteActivityResumedLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartSensor(IJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopSensor(IJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteVibratorOffLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl$Uid;->noteVibratorOnLocked(JJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->readJobCompletionsFromParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->readWakeSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z
+HPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(IJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;-><init>()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->$r8$lambda$4oR0MyxxkPH0JSQXqVxAZgbHyhc(Lcom/android/server/power/stats/BatteryStatsImpl;Lcom/android/internal/os/PowerStats;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->$r8$lambda$55y1ivO2sjC-T6ZAKfbd9ZmL96Q(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmAudioTurnedOnTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmCallback(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmDeferSetCharging(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/lang/Runnable;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmExternalSync(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmFullTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmFullWifiLockTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmHistory(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/internal/os/BatteryStatsHistory;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmPlatformIdleStateCallback(Lcom/android/server/power/stats/BatteryStatsImpl;)Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmPowerStatsCollectorEnabled(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmSensorTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Landroid/util/SparseArray;
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmSystemReady(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmUidStats(Lcom/android/server/power/stats/BatteryStatsImpl;)Landroid/util/SparseArray;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiMulticastTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiRunningTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$fgetmWifiScanTimers(Lcom/android/server/power/stats/BatteryStatsImpl;)Ljava/util/ArrayList;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mgetPowerManagerWakeLockLevel(Lcom/android/server/power/stats/BatteryStatsImpl;I)I
+HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mmapIsolatedUid(Lcom/android/server/power/stats/BatteryStatsImpl;I)I
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mnoteUsbConnectionStateLocked(Lcom/android/server/power/stats/BatteryStatsImpl;ZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mrequestImmediateCpuUpdate(Lcom/android/server/power/stats/BatteryStatsImpl;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$mtrackPerProcStateCpuTimes(Lcom/android/server/power/stats/BatteryStatsImpl;)Z
+HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$sfgetMAX_WAKELOCKS_PER_UID()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$smdetachIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->-$$Nest$smisActiveRadioPowerState(I)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;-><clinit>()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;-><init>(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryStatsConfig;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/server/power/stats/BatteryStatsImpl$EnergyStatsRetriever;Lcom/android/server/power/stats/BatteryStatsImpl$UserInfoProvider;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsUidResolver;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->access$000()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->access$100()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->access$200()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->adjustStartClockTime(J)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->aggregateLastWakeupUptimeLocked(JJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->clearPendingRemovedUidsLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeRealtime(JI)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->computeUptime(JI)J
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull(Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull([Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->detachIfNotNull([[Lcom/android/server/power/stats/BatteryStatsImpl$TimeBaseObs;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->ensureKernelSingleUidTimeReaderLocked()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->evaluateOverallScreenBrightnessBinLocked()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->fillLowPowerStats()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->finishAddingCpuStatsLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getAvailableUidStatsLocked(I)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryUptimeLocked(J)J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getBatteryVoltageMvLocked()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenDozeSinceCharge()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getDisplayCount()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getHistory()Lcom/android/internal/os/BatteryStatsHistory;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getIsOnBattery()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getKernelWakelockTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I
+PLcom/android/server/power/stats/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/server/power/stats/BatteryStatsImpl$SamplingTimer;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;JJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid$Pkg$Serv;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->getStartClockTime()J
+PLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HPLcom/android/server/power/stats/BatteryStatsImpl;->getUidStatsLocked(IJJ)Lcom/android/server/power/stats/BatteryStatsImpl$Uid;
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->informThatAllExternalStatsAreFlushed()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initDischarge(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->initEnergyConsumerStatsLocked([Z[Ljava/lang/String;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initKernelStatsReaders()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initPowerProfile()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initTimersAndCounters()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->initTimes(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->isActiveRadioPowerState(I)Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->isCharging()Z
+HPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBattery()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->isOnBattery(II)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBatteryLocked()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->isOnBatteryScreenOffLocked()Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->lambda$new$10()V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->mapIsolatedUid(I)I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->mapUid(I)I
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->markPartialTimersAsEligible()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->maybeUpdateOverallScreenBrightness(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteActivityPausedLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteActivityResumedLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmFinishLocked(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmStartLocked(Ljava/lang/String;Landroid/os/WorkSource;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteAlarmStartOrFinishLocked(ILjava/lang/String;Landroid/os/WorkSource;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteAudioOffLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteAudioOnLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteCurrentTimeChangedLocked(JJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteInteractiveLocked(ZJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;IIJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneSignalStrengthLocked(ILandroid/util/SparseIntArray;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneSignalStrengthLocked(Landroid/telephony/SignalStrength;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->notePhoneStateLocked(IIJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->notePowerSaveModeLockedInit(ZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessAnrLocked(Ljava/lang/String;IJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessDiedLocked(II)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessFinishLocked(Ljava/lang/String;IJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteProcessStartLocked(Ljava/lang/String;IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteResetBluetoothScanLocked(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenBrightnessLocked(IIJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteScreenStateLocked(IIJJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteStartSensorLocked(IIJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteStopSensorLocked(IIJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->noteUidProcessStateLocked(IIJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteUsbConnectionStateLocked(ZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteUserActivityLocked(IIJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteVibratorOffLocked(IJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteVibratorOnLocked(IJJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWakupAlarmLocked(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiOnLocked(JJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->noteWifiSupplicantStateChangedLocked(IZJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->onSystemReady()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->postBatteryNeedsCpuUpdateMsg()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readDailyStatsLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(ZJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->recordHistoryEventLocked(JJILjava/lang/String;I)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->recordPowerStats(Lcom/android/internal/os/PowerStats;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->registerUsbStateReceiver(Landroid/content/Context;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->reportChangesToStatsLog(III)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->requestImmediateCpuUpdate()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->saveBatteryUsageStatsOnReset(Lcom/android/server/power/stats/BatteryUsageStatsProvider;Lcom/android/server/power/stats/PowerStatsStore;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->schedulePowerStatsSampleCollection()V
+PLcom/android/server/power/stats/BatteryStatsImpl;->scheduleSyncExternalStatsLocked(Ljava/lang/String;I)V
+HPLcom/android/server/power/stats/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIIIJJJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->setCallback(Lcom/android/server/power/stats/BatteryStatsImpl$BatteryCallback;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->setChargingLocked(Z)Z
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->setDisplayCountLocked(I)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->setExternalStatsSyncLocked(Lcom/android/server/power/stats/BatteryStatsImpl$ExternalStatsSync;)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->setPowerStatsCollectorEnabled(Z)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->setRadioScanningTimeoutLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->startAddingCpuStatsLocked()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->systemServicesReady(Landroid/content/Context;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->trackPerProcStateCpuTimes()Z
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateAllPhoneStateLocked(IIIJJ)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateBluetoothStateLocked(Landroid/bluetooth/BluetoothActivityEnergyInfo;JJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimeLocked(ZZ[J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateCpuTimesForAllUids()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateDailyDeadlineLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelMemoryBandwidthLocked(J)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateKernelWakelocksLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateProcStateCpuTimesLocked(IJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRailStatsLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->updateRpmStatsLocked(J)V
+PLcom/android/server/power/stats/BatteryStatsImpl;->updateTimeBasesLocked(ZIJJ)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeAsyncLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeHistoryLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeParcelToFileLocked(Landroid/os/Parcel;Landroid/util/AtomicFile;)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeStatsLocked()V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V
+HSPLcom/android/server/power/stats/BatteryStatsImpl;->writeSyncLocked()V
+HSPLcom/android/server/power/stats/BatteryUsageStatsProvider;-><init>(Landroid/content/Context;Lcom/android/server/power/stats/PowerStatsExporter;Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/internal/os/Clock;)V
+PLcom/android/server/power/stats/BatteryUsageStatsProvider;->setPowerStatsExporterEnabled(Z)V
+HSPLcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;-><clinit>()V
+HSPLcom/android/server/power/stats/CpuAggregatedPowerStatsProcessor;-><init>(Lcom/android/internal/os/PowerProfile;Lcom/android/internal/os/CpuScalingPolicies;)V
+HSPLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/power/stats/CpuPowerStatsCollector;)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$$ExternalSyntheticLambda2;->processUidStats(I[J)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;-><init>()V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addDeviceSectionCpuTimeByCluster(I)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addDeviceSectionCpuTimeByScalingStep(I)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->addUidSectionCpuTimeByPowerBracket([I)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getCpuPowerBracketCount()I
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getCpuScalingStepCount()I
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->getScalingStepToPowerBracketMap()[I
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->setTimeByScalingStep([JIJ)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->setUidTimeByPowerBracket([JIJ)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->toExtras(Landroid/os/PersistableBundle;)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$CpuStatsArrayLayout;->updatePowerBracketCount()V
+HSPLcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;-><init>()V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$UidStats;-><init>()V
+PLcom/android/server/power/stats/CpuPowerStatsCollector$UidStats;-><init>(Lcom/android/server/power/stats/CpuPowerStatsCollector$UidStats-IA;)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->$r8$lambda$TmdX3HefCA-y-kG8N7EsBWpyOqo()Landroid/power/PowerStatsInternal;
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->$r8$lambda$l7KbxBakyCEoVp9gpEIBpVgzupw(Lcom/android/server/power/stats/CpuPowerStatsCollector;I[J)V
+HSPLcom/android/server/power/stats/CpuPowerStatsCollector;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;Landroid/os/Handler;Lcom/android/server/power/stats/CpuPowerStatsCollector$KernelCpuStatsReader;Lcom/android/server/power/stats/PowerStatsUidResolver;Ljava/util/function/Supplier;Ljava/util/function/IntSupplier;JLcom/android/internal/os/Clock;II)V
+HSPLcom/android/server/power/stats/CpuPowerStatsCollector;-><init>(Lcom/android/internal/os/CpuScalingPolicies;Lcom/android/internal/os/PowerProfile;Lcom/android/server/power/stats/PowerStatsUidResolver;Ljava/util/function/IntSupplier;Landroid/os/Handler;J)V
+HPLcom/android/server/power/stats/CpuPowerStatsCollector;->collectStats()Lcom/android/internal/os/PowerStats;
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->ensureInitialized()Z
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->initDefaultPowerBrackets(I)[I
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->initPowerBrackets()[I
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->lambda$new$0()Landroid/power/PowerStatsInternal;
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->mapScalingStepsToDefaultBrackets([I[DI)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->processUidStats(I[J)V
+PLcom/android/server/power/stats/CpuPowerStatsCollector;->readCpuEnergyConsumerIds()V
+HSPLcom/android/server/power/stats/KernelWakelockReader;-><clinit>()V
+HSPLcom/android/server/power/stats/KernelWakelockReader;-><init>()V
+HSPLcom/android/server/power/stats/KernelWakelockReader;->getWakelockStatsFromSystemSuspend(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->removeOldStats(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->updateVersion(Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->updateWakelockStats([Landroid/system/suspend/internal/WakeLockInfo;Lcom/android/server/power/stats/KernelWakelockStats;)Lcom/android/server/power/stats/KernelWakelockStats;
+HSPLcom/android/server/power/stats/KernelWakelockReader;->waitForSuspendControlService()Landroid/system/suspend/internal/ISuspendControlServiceInternal;
+HSPLcom/android/server/power/stats/KernelWakelockStats$Entry;-><init>(IJJI)V
+HSPLcom/android/server/power/stats/KernelWakelockStats;-><init>()V
+HSPLcom/android/server/power/stats/PowerStatsAggregator;-><init>(Lcom/android/server/power/stats/AggregatedPowerStatsConfig;Lcom/android/internal/os/BatteryStatsHistory;)V
+HSPLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/PowerStatsCollector;)V
+PLcom/android/server/power/stats/PowerStatsCollector$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;-><init>()V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSection(I)I
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionEnergyConsumers(I)V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionPowerEstimate()V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addDeviceSectionUsageDuration()V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addUidSection(I)I
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->addUidSectionPowerEstimate()V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->getDeviceStatsArrayLength()I
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->getUidStatsArrayLength()I
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->putIntArray(Landroid/os/PersistableBundle;Ljava/lang/String;[I)V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->setUsageDuration([JJ)V
+PLcom/android/server/power/stats/PowerStatsCollector$StatsArrayLayout;->toExtras(Landroid/os/PersistableBundle;)V
+HSPLcom/android/server/power/stats/PowerStatsCollector;-><init>(Landroid/os/Handler;JLcom/android/internal/os/Clock;)V
+HSPLcom/android/server/power/stats/PowerStatsCollector;->addConsumer(Ljava/util/function/Consumer;)V
+PLcom/android/server/power/stats/PowerStatsCollector;->collectAndDeliverStats()V
+PLcom/android/server/power/stats/PowerStatsCollector;->forceSchedule()Z
+PLcom/android/server/power/stats/PowerStatsCollector;->isEnabled()Z
+PLcom/android/server/power/stats/PowerStatsCollector;->schedule()Z
+PLcom/android/server/power/stats/PowerStatsCollector;->setEnabled(Z)V
+HSPLcom/android/server/power/stats/PowerStatsExporter;-><clinit>()V
+HSPLcom/android/server/power/stats/PowerStatsExporter;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsAggregator;)V
+HSPLcom/android/server/power/stats/PowerStatsExporter;-><init>(Lcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsAggregator;J)V
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/power/stats/PowerStatsScheduler$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+PLcom/android/server/power/stats/PowerStatsScheduler;->$r8$lambda$GEaV9AQjfxC9uJ1Tfs7f2eF4_H0(Lcom/android/server/power/stats/PowerStatsScheduler;)V
+HSPLcom/android/server/power/stats/PowerStatsScheduler;-><clinit>()V
+HSPLcom/android/server/power/stats/PowerStatsScheduler;-><init>(Ljava/lang/Runnable;Lcom/android/server/power/stats/PowerStatsAggregator;JJLcom/android/server/power/stats/PowerStatsStore;Lcom/android/server/power/stats/PowerStatsScheduler$AlarmScheduler;Lcom/android/internal/os/Clock;Lcom/android/internal/os/MonotonicClock;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+PLcom/android/server/power/stats/PowerStatsScheduler;->aggregateAndStorePowerStats()V
+PLcom/android/server/power/stats/PowerStatsScheduler;->alignToWallClock(JJJJ)J
+PLcom/android/server/power/stats/PowerStatsScheduler;->getLastSavedSpanEndMonotonicTime()J
+PLcom/android/server/power/stats/PowerStatsScheduler;->scheduleNextPowerStatsAggregation()V
+PLcom/android/server/power/stats/PowerStatsScheduler;->schedulePowerStatsAggregation()V
+PLcom/android/server/power/stats/PowerStatsScheduler;->start(Z)V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;-><clinit>()V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;-><init>(J)V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->addSection(Ljava/lang/String;)V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->addTimeFrame(Lcom/android/server/power/stats/PowerStatsSpan$TimeFrame;)V
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->getSections()Ljava/util/List;
+PLcom/android/server/power/stats/PowerStatsSpan$Metadata;->read(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/power/stats/PowerStatsSpan$Metadata;
+PLcom/android/server/power/stats/PowerStatsSpan$TimeFrame;-><init>(JJJ)V
+PLcom/android/server/power/stats/PowerStatsSpan$TimeFrame;->read(Lcom/android/modules/utils/TypedXmlPullParser;)Lcom/android/server/power/stats/PowerStatsSpan$TimeFrame;
+PLcom/android/server/power/stats/PowerStatsSpan;->-$$Nest$smisCompatibleXmlFormat(I)Z
+PLcom/android/server/power/stats/PowerStatsSpan;-><clinit>()V
+PLcom/android/server/power/stats/PowerStatsSpan;->isCompatibleXmlFormat(I)Z
+HSPLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/power/stats/PowerStatsStore;)V
+HSPLcom/android/server/power/stats/PowerStatsStore$$ExternalSyntheticLambda1;->run()V
+HSPLcom/android/server/power/stats/PowerStatsStore$DefaultSectionReader;-><init>(Lcom/android/server/power/stats/AggregatedPowerStatsConfig;)V
+HSPLcom/android/server/power/stats/PowerStatsStore;->$r8$lambda$B2PF4qXDAYWwxqhYeVyGoe0li4E(Lcom/android/server/power/stats/PowerStatsStore;)V
+HSPLcom/android/server/power/stats/PowerStatsStore;-><init>(Ljava/io/File;JLandroid/os/Handler;Lcom/android/server/power/stats/PowerStatsSpan$SectionReader;)V
+HSPLcom/android/server/power/stats/PowerStatsStore;-><init>(Ljava/io/File;Landroid/os/Handler;Lcom/android/server/power/stats/AggregatedPowerStatsConfig;)V
+PLcom/android/server/power/stats/PowerStatsStore;->getTableOfContents()Ljava/util/List;
+PLcom/android/server/power/stats/PowerStatsStore;->lockStoreDirectory()V
+HSPLcom/android/server/power/stats/PowerStatsStore;->maybeClearLegacyStore()V
+PLcom/android/server/power/stats/PowerStatsStore;->unlockStoreDirectory()V
+HSPLcom/android/server/power/stats/PowerStatsUidResolver;-><init>()V
+HSPLcom/android/server/power/stats/PowerStatsUidResolver;->addListener(Lcom/android/server/power/stats/PowerStatsUidResolver$Listener;)V
+HSPLcom/android/server/power/stats/PowerStatsUidResolver;->mapUid(I)I
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/power/stats/wakeups/CpuWakeupStats;)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$$ExternalSyntheticLambda0;->getAsLong()J
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;-><clinit>()V
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;-><init>()V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats$Config;->register(Ljava/util/concurrent/Executor;)V
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;-><init>(Ljava/util/function/LongSupplier;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats$WakingActivityHistory;->recordActivity(IJLandroid/util/SparseIntArray;)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->$r8$lambda$l-D7NPzbgSwY5OseXB1GuV8c9rM(Lcom/android/server/power/stats/wakeups/CpuWakeupStats;)J
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;-><clinit>()V
+HSPLcom/android/server/power/stats/wakeups/CpuWakeupStats;-><init>(Landroid/content/Context;ILandroid/os/Handler;)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->attemptAttributionWith(IJLandroid/util/SparseIntArray;)Z
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->lambda$new$0()J
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteUidProcessState(II)V
+HPLcom/android/server/power/stats/wakeups/CpuWakeupStats;->noteWakingActivity(IJ[I)V
+PLcom/android/server/power/stats/wakeups/CpuWakeupStats;->systemServicesReady()V
+HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;-><clinit>()V
+HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;-><init>(Landroid/content/res/XmlResourceParser;)V
+HSPLcom/android/server/power/stats/wakeups/IrqDeviceMap;->getInstance(Landroid/content/Context;I)Lcom/android/server/power/stats/wakeups/IrqDeviceMap;
+PLcom/android/server/powerstats/BatteryTrigger$1;-><init>(Lcom/android/server/powerstats/BatteryTrigger;)V
+HPLcom/android/server/powerstats/BatteryTrigger$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/powerstats/BatteryTrigger;->-$$Nest$fgetmBatteryLevel(Lcom/android/server/powerstats/BatteryTrigger;)I
+PLcom/android/server/powerstats/BatteryTrigger;->-$$Nest$fputmBatteryLevel(Lcom/android/server/powerstats/BatteryTrigger;I)V
+PLcom/android/server/powerstats/BatteryTrigger;-><clinit>()V
+PLcom/android/server/powerstats/BatteryTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;Z)V
+PLcom/android/server/powerstats/PowerStatsDataStorage;-><clinit>()V
+PLcom/android/server/powerstats/PowerStatsDataStorage;-><init>(Landroid/content/Context;Ljava/io/File;Ljava/lang/String;)V
+PLcom/android/server/powerstats/PowerStatsDataStorage;->write([B)V
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;-><init>()V
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyConsumed([I)[Landroid/hardware/power/stats/EnergyConsumerResult;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->getStateResidency([I)[Landroid/hardware/power/stats/StateResidencyResult;
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->isInitialized()Z
+PLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL10WrapperImpl;->readEnergyMeter([I)[Landroid/hardware/power/stats/EnergyMeasurement;
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;-><init>()V
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$PowerStatsHAL20WrapperImpl;->isInitialized()Z
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;-><init>()V
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;-><init>(Lcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache-IA;)V
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;->get()Landroid/hardware/power/stats/IPowerStats;
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper$VintfHalCache;->get()Ljava/lang/Object;
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper;-><clinit>()V
+HSPLcom/android/server/powerstats/PowerStatsHALWrapper;->getPowerStatsHalImpl()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
+PLcom/android/server/powerstats/PowerStatsLogTrigger;-><clinit>()V
+PLcom/android/server/powerstats/PowerStatsLogTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)V
+PLcom/android/server/powerstats/PowerStatsLogTrigger;->logPowerStatsData(I)V
+PLcom/android/server/powerstats/PowerStatsLogger;-><clinit>()V
+PLcom/android/server/powerstats/PowerStatsLogger;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;)V
+PLcom/android/server/powerstats/PowerStatsLogger;->dataChanged(Ljava/lang/String;[B)Z
+PLcom/android/server/powerstats/PowerStatsLogger;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/powerstats/PowerStatsService$1;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
+HSPLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
+HSPLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;-><init>(Lcom/android/server/powerstats/PowerStatsService;Lcom/android/server/powerstats/PowerStatsService$DeviceConfigListener-IA;)V
+PLcom/android/server/powerstats/PowerStatsService$DeviceConfigListener;->startListening()V
+HSPLcom/android/server/powerstats/PowerStatsService$Injector;-><init>()V
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createBatteryTrigger(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)Lcom/android/server/powerstats/BatteryTrigger;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createDataStoragePath()Ljava/io/File;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createMeterCacheFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createMeterFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createModelCacheFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createModelFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createPowerStatsLogger(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;)Lcom/android/server/powerstats/PowerStatsLogger;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createResidencyCacheFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createResidencyFilename()Ljava/lang/String;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createStatsPullerImpl(Landroid/content/Context;Landroid/power/PowerStatsInternal;)Lcom/android/server/powerstats/StatsPullAtomCallbackImpl;
+PLcom/android/server/powerstats/PowerStatsService$Injector;->createTimerTrigger(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;)Lcom/android/server/powerstats/TimerTrigger;
+HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getClock()Lcom/android/internal/os/Clock;
+HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getDeviceConfig()Landroid/provider/DeviceConfigInterface;
+HSPLcom/android/server/powerstats/PowerStatsService$Injector;->getPowerStatsHALWrapperImpl()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
+PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/powerstats/PowerStatsService$LocalService;Ljava/util/concurrent/CompletableFuture;[I)V
+PLcom/android/server/powerstats/PowerStatsService$LocalService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->$r8$lambda$Jf7j_oHA5ZXXBvvutpd1qM7z0CY(Lcom/android/server/powerstats/PowerStatsService$LocalService;Ljava/util/concurrent/CompletableFuture;[I)V
+HSPLcom/android/server/powerstats/PowerStatsService$LocalService;-><init>(Lcom/android/server/powerstats/PowerStatsService;)V
+HSPLcom/android/server/powerstats/PowerStatsService$LocalService;-><init>(Lcom/android/server/powerstats/PowerStatsService;Lcom/android/server/powerstats/PowerStatsService$LocalService-IA;)V
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyConsumerInfo()[Landroid/hardware/power/stats/EnergyConsumer;
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->getEnergyMeterInfo()[Landroid/hardware/power/stats/Channel;
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->getPowerEntityInfo()[Landroid/hardware/power/stats/PowerEntity;
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->getStateResidencyAsync([I)Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/powerstats/PowerStatsService$LocalService;->lambda$getStateResidencyAsync$1(Ljava/util/concurrent/CompletableFuture;[I)V
+PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$fgetmDeviceConfig(Lcom/android/server/powerstats/PowerStatsService;)Landroid/provider/DeviceConfigInterface;
+HSPLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetHandler(Lcom/android/server/powerstats/PowerStatsService;)Landroid/os/Handler;
+PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetPowerStatsHal(Lcom/android/server/powerstats/PowerStatsService;)Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
+PLcom/android/server/powerstats/PowerStatsService;->-$$Nest$mgetStateResidencyAsync(Lcom/android/server/powerstats/PowerStatsService;Ljava/util/concurrent/CompletableFuture;[I)V
+HSPLcom/android/server/powerstats/PowerStatsService;-><clinit>()V
+HSPLcom/android/server/powerstats/PowerStatsService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/powerstats/PowerStatsService;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsService$Injector;)V
+HSPLcom/android/server/powerstats/PowerStatsService;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/powerstats/PowerStatsService;->getLooper()Landroid/os/Looper;
+HSPLcom/android/server/powerstats/PowerStatsService;->getPowerStatsHal()Lcom/android/server/powerstats/PowerStatsHALWrapper$IPowerStatsHALWrapper;
+PLcom/android/server/powerstats/PowerStatsService;->getStateResidencyAsync(Ljava/util/concurrent/CompletableFuture;[I)V
+PLcom/android/server/powerstats/PowerStatsService;->onBootCompleted()V
+HSPLcom/android/server/powerstats/PowerStatsService;->onBootPhase(I)V
+HSPLcom/android/server/powerstats/PowerStatsService;->onStart()V
+PLcom/android/server/powerstats/PowerStatsService;->onSystemServicesReady()V
+PLcom/android/server/powerstats/PowerStatsService;->refreshFlags()V
+PLcom/android/server/powerstats/PowerStatsService;->setPowerMonitorApiEnabled(Z)V
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->getProtoBytes([Landroid/hardware/power/stats/Channel;)[B
+PLcom/android/server/powerstats/ProtoStreamUtils$ChannelUtils;->packProtoMessage([Landroid/hardware/power/stats/Channel;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->adjustTimeSinceBootToEpoch([Landroid/hardware/power/stats/EnergyConsumerResult;J)V
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyConsumerResult;Z)[B
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerResultUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumerResult;Landroid/util/proto/ProtoOutputStream;Z)V
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyConsumer;)[B
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyConsumerUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyConsumer;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->adjustTimeSinceBootToEpoch([Landroid/hardware/power/stats/EnergyMeasurement;J)V
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->getProtoBytes([Landroid/hardware/power/stats/EnergyMeasurement;)[B
+PLcom/android/server/powerstats/ProtoStreamUtils$EnergyMeasurementUtils;->packProtoMessage([Landroid/hardware/power/stats/EnergyMeasurement;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/ProtoStreamUtils$PowerEntityUtils;->getProtoBytes([Landroid/hardware/power/stats/PowerEntity;)[B
+PLcom/android/server/powerstats/ProtoStreamUtils$PowerEntityUtils;->packProtoMessage([Landroid/hardware/power/stats/PowerEntity;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;-><clinit>()V
+PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;-><init>(Landroid/content/Context;Landroid/power/PowerStatsInternal;)V
+PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->initPullOnDevicePowerMeasurement()Z
+PLcom/android/server/powerstats/StatsPullAtomCallbackImpl;->initSubsystemSleepState()Z
+PLcom/android/server/powerstats/TimerTrigger$1;-><init>(Lcom/android/server/powerstats/TimerTrigger;)V
+PLcom/android/server/powerstats/TimerTrigger$1;->run()V
+PLcom/android/server/powerstats/TimerTrigger$2;-><init>(Lcom/android/server/powerstats/TimerTrigger;)V
+PLcom/android/server/powerstats/TimerTrigger$2;->run()V
+PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmHandler(Lcom/android/server/powerstats/TimerTrigger;)Landroid/os/Handler;
+PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmLogDataHighFrequency(Lcom/android/server/powerstats/TimerTrigger;)Ljava/lang/Runnable;
+PLcom/android/server/powerstats/TimerTrigger;->-$$Nest$fgetmLogDataLowFrequency(Lcom/android/server/powerstats/TimerTrigger;)Ljava/lang/Runnable;
+PLcom/android/server/powerstats/TimerTrigger;-><clinit>()V
+PLcom/android/server/powerstats/TimerTrigger;-><init>(Landroid/content/Context;Lcom/android/server/powerstats/PowerStatsLogger;Z)V
+PLcom/android/server/profcollect/ProfcollectForwardingService;-><clinit>()V
+PLcom/android/server/profcollect/ProfcollectForwardingService;->enabled()Z
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/recoverysystem/RecoverySystemService$Injector;->getLockSettingsService()Lcom/android/internal/widget/LockSettingsInternal;
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;->onBootPhase(I)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;->onStart()V
+HSPLcom/android/server/recoverysystem/RecoverySystemService$PreferencesManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;-><clinit>()V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Landroid/content/Context;Lcom/android/server/recoverysystem/RecoverySystemService-IA;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Lcom/android/server/recoverysystem/RecoverySystemService$Injector;)V
+PLcom/android/server/recoverysystem/RecoverySystemService;->onSystemServicesReady()V
+PLcom/android/server/resources/ResourcesManagerService$1;-><init>(Lcom/android/server/resources/ResourcesManagerService;)V
+PLcom/android/server/resources/ResourcesManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/resources/ResourcesManagerService;->onStart()V
+PLcom/android/server/resources/ResourcesManagerService;->setActivityManagerService(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;-><init>(Lcom/android/server/restrictions/RestrictionsManagerService;Landroid/content/Context;)V
+PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
+PLcom/android/server/restrictions/RestrictionsManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/restrictions/RestrictionsManagerService;->access$000(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
+PLcom/android/server/restrictions/RestrictionsManagerService;->access$100(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
+PLcom/android/server/restrictions/RestrictionsManagerService;->access$200(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/Class;)Ljava/lang/Object;
+PLcom/android/server/restrictions/RestrictionsManagerService;->onStart()V
+PLcom/android/server/rollback/AppDataRollbackHelper;-><init>(Lcom/android/server/pm/Installer;)V
+PLcom/android/server/rollback/RollbackManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerService;->onBootPhase(I)V
+PLcom/android/server/rollback/RollbackManagerService;->onStart()V
+PLcom/android/server/rollback/RollbackManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda12;->get()Ljava/lang/Object;
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda14;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$$ExternalSyntheticLambda8;->run()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$2;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$3;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$4;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$5;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Lcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback-IA;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$5ba2COgc7nscJnHcl1QkhQ-HxvI(Lcom/android/server/rollback/RollbackManagerServiceImpl;Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$5ePSTVmaLxSjKqVxrnrccgGY6zE(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$bbfHD4WtP5OoGBOtkEzNdwF9g2M(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$fQDZo-8mYW8tPdxnapF0CQgGj4w(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->$r8$lambda$l0jOsI4D4tsO9tHi89vVcHGslz8(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fgetmRelativeBootTime(Lcom/android/server/rollback/RollbackManagerServiceImpl;)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fgetmRollbacks(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$fputmRelativeBootTime(Lcom/android/server/rollback/RollbackManagerServiceImpl;J)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$massertInWorkerThread(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->-$$Nest$smcalculateRelativeBootTime()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;-><clinit>()V
+HPLcom/android/server/rollback/RollbackManagerServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->assertInWorkerThread()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->assertNotInWorkerThread()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->awaitResult(Ljava/lang/Runnable;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->awaitResult(Ljava/util/function/Supplier;)Ljava/lang/Object;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->calculateRelativeBootTime()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->destroyCeSnapshotsForExpiredRollbacks(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->enforceManageRollbacks(Ljava/lang/String;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getAvailableRollbacks()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getHandler()Landroid/os/Handler;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$getAvailableRollbacks$1()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$new$0(Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$11()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$8(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$9(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onBootCompleted()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onUnlockUser(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->registerTimeChangeReceiver()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->registerUserCallbacks(Landroid/os/UserHandle;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpiration()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpirationDefaultRollbackLifetime()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->updateRollbackLifetimeDurationInMillis()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/rollback/RollbackPackageHealthObserver;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->$r8$lambda$mH9BjKzFj781_SE7sCPceKzVQGQ(Lcom/android/server/rollback/RollbackPackageHealthObserver;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;-><init>(Landroid/content/Context;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->assertInWorkerThread()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->getName()Ljava/lang/String;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->lambda$onBootCompletedAsync$4()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompleted()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompletedAsync()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->popLastStagedRollbackIds()Landroid/util/SparseArray;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->readStagedRollbackIds(Ljava/io/File;)Landroid/util/SparseArray;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->writeBoolean(Ljava/io/File;Z)V
+PLcom/android/server/rollback/RollbackStore;-><init>(Ljava/io/File;Ljava/io/File;)V
+PLcom/android/server/rollback/RollbackStore;->loadRollbacks()Ljava/util/List;
+PLcom/android/server/rollback/RollbackStore;->loadRollbacks(Ljava/io/File;)Ljava/util/List;
+PLcom/android/server/rotationresolver/RotationResolverManagerService;-><clinit>()V
+PLcom/android/server/rotationresolver/RotationResolverManagerService;->getServiceConfigPackage(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/rotationresolver/RotationResolverManagerService;->isServiceConfigured(Landroid/content/Context;)Z
+PLcom/android/server/security/AttestationVerificationManagerService$1;-><init>(Lcom/android/server/security/AttestationVerificationManagerService;)V
+PLcom/android/server/security/AttestationVerificationManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/AttestationVerificationManagerService;->onStart()V
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;-><clinit>()V
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getCertificateBytes(Ljava/lang/String;)[B
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getTrustAnchorResources()[Ljava/lang/String;
+PLcom/android/server/security/AttestationVerificationPeerDeviceVerifier;->getTrustAnchors()Ljava/util/Set;
+PLcom/android/server/security/FileIntegrity;->setUpFsVerity(Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/security/FileIntegrity;->setUpFsVerity(Ljava/io/File;)V
+HSPLcom/android/server/security/FileIntegrityService$1;-><init>(Lcom/android/server/security/FileIntegrityService;)V
+PLcom/android/server/security/FileIntegrityService$1;->isApkVeritySupported()Z
+HSPLcom/android/server/security/FileIntegrityService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/security/FileIntegrityService;->collectCertificate([B)V
+HSPLcom/android/server/security/FileIntegrityService;->loadAllCertificates()V
+HSPLcom/android/server/security/FileIntegrityService;->loadCertificatesFromDirectory(Ljava/nio/file/Path;)V
+HSPLcom/android/server/security/FileIntegrityService;->onStart()V
+HSPLcom/android/server/security/FileIntegrityService;->toCertificate([B)Ljava/security/cert/X509Certificate;
+PLcom/android/server/security/KeyAttestationApplicationIdProviderService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/security/KeyAttestationApplicationIdProviderService;->getKeyAttestationApplicationId(I)Landroid/security/keystore/KeyAttestationApplicationId;
+PLcom/android/server/security/KeyChainSystemService$1;-><init>(Lcom/android/server/security/KeyChainSystemService;)V
+PLcom/android/server/security/KeyChainSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/KeyChainSystemService;->onStart()V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;-><init>(Lcom/android/server/security/rkp/RemoteProvisioningService;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl;-><init>(Lcom/android/server/security/rkp/RemoteProvisioningService;Lcom/android/server/security/rkp/RemoteProvisioningService$RemoteProvisioningImpl-IA;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService;-><clinit>()V
+PLcom/android/server/security/rkp/RemoteProvisioningService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/rkp/RemoteProvisioningService;->onStart()V
+PLcom/android/server/selinux/QuotaLimiter;-><init>(I)V
+PLcom/android/server/selinux/QuotaLimiter;-><init>(Lcom/android/internal/os/Clock;Ljava/time/Duration;I)V
+PLcom/android/server/selinux/RateLimiter;-><init>(Lcom/android/internal/os/Clock;Ljava/time/Duration;)V
+PLcom/android/server/selinux/RateLimiter;-><init>(Ljava/time/Duration;)V
+PLcom/android/server/selinux/SelinuxAuditLogsCollector;-><clinit>()V
+PLcom/android/server/selinux/SelinuxAuditLogsCollector;-><init>(Lcom/android/server/selinux/RateLimiter;Lcom/android/server/selinux/QuotaLimiter;)V
+PLcom/android/server/selinux/SelinuxAuditLogsService;-><clinit>()V
+PLcom/android/server/selinux/SelinuxAuditLogsService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/sensorprivacy/AllSensorStateController;)V
+PLcom/android/server/sensorprivacy/AllSensorStateController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/sensorprivacy/AllSensorStateController;->$r8$lambda$xChE0OJhLjTDhwgTSFp_J6v0xhA(Lcom/android/server/sensorprivacy/AllSensorStateController;Z)V
+PLcom/android/server/sensorprivacy/AllSensorStateController;-><clinit>()V
+PLcom/android/server/sensorprivacy/AllSensorStateController;-><init>()V
+PLcom/android/server/sensorprivacy/AllSensorStateController;->getAllSensorStateLocked()Z
+PLcom/android/server/sensorprivacy/AllSensorStateController;->getInstance()Lcom/android/server/sensorprivacy/AllSensorStateController;
+PLcom/android/server/sensorprivacy/AllSensorStateController;->persist(Z)V
+PLcom/android/server/sensorprivacy/AllSensorStateController;->schedulePersistLocked()V
+PLcom/android/server/sensorprivacy/AllSensorStateController;->setAllSensorPrivacyListenerLocked(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$AllSensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><clinit>()V
+PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/sensorprivacy/CameraPrivacyLightController;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/sensorprivacy/PersistedState$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/sensorprivacy/PersistedState$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/sensorprivacy/PersistedState$PVersion2;->-$$Nest$fgetmStates(Lcom/android/server/sensorprivacy/PersistedState$PVersion2;)Landroid/util/ArrayMap;
+PLcom/android/server/sensorprivacy/PersistedState$PVersion2;-><init>(I)V
+PLcom/android/server/sensorprivacy/PersistedState$PVersion2;-><init>(ILcom/android/server/sensorprivacy/PersistedState$PVersion2-IA;)V
+PLcom/android/server/sensorprivacy/PersistedState$TypeUserSensor;-><init>(III)V
+PLcom/android/server/sensorprivacy/PersistedState$TypeUserSensor;->hashCode()I
+PLcom/android/server/sensorprivacy/PersistedState;->$r8$lambda$7IQf-UpFyGa5zIamP1HgWaOc-kY(Lcom/android/server/sensorprivacy/PersistedState;Landroid/util/ArrayMap;)V
+PLcom/android/server/sensorprivacy/PersistedState;-><clinit>()V
+PLcom/android/server/sensorprivacy/PersistedState;-><init>(Ljava/lang/String;)V
+PLcom/android/server/sensorprivacy/PersistedState;->forEachKnownState(Lcom/android/internal/util/function/QuadConsumer;)V
+PLcom/android/server/sensorprivacy/PersistedState;->fromFile(Ljava/lang/String;)Lcom/android/server/sensorprivacy/PersistedState;
+PLcom/android/server/sensorprivacy/PersistedState;->getState(III)Lcom/android/server/sensorprivacy/SensorState;
+PLcom/android/server/sensorprivacy/PersistedState;->persist(Landroid/util/ArrayMap;)V
+PLcom/android/server/sensorprivacy/PersistedState;->readPVersion2(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/sensorprivacy/PersistedState$PVersion2;)V
+PLcom/android/server/sensorprivacy/PersistedState;->readState()V
+PLcom/android/server/sensorprivacy/PersistedState;->schedulePersist()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$CallStateCallback-IA;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;Lcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper$OutgoingEmergencyStateCallback-IA;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$CallStateHelper;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$DeathRecipient;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Landroid/os/Looper;Landroid/content/Context;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addDeathRecipient(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addListener(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->addToggleListener(Landroid/hardware/ISensorPrivacyListener;)V
+HPLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;->handleSensorPrivacyChanged(IIIZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl$$ExternalSyntheticLambda0;-><init>(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->$r8$lambda$6c5oG3NqTqZpXs8uPF7TL16NWZ0(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->-$$Nest$mdispatch(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;IIZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl-IA;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->addSensorPrivacyListenerForAllUsers(ILandroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->dispatch(IIZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->isSensorPrivacyEnabled(II)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;->lambda$dispatch$0(Landroid/hardware/SensorPrivacyManagerInternal$OnUserSensorPrivacyChangedListener;IZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyHandler;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$1;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$2;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl$3;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;Landroid/os/Handler;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->$r8$lambda$6z1C7T_x7l1R1AsWqbHQW2XLR5s(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->$r8$lambda$in8xHyZSF77Hcq9nYZVt7IxVErs(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;[ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$misToggleSensorPrivacyEnabledInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;III)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$mregisterSettingsObserver(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$msetGlobalRestriction(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;IZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$mshowSensorStateChangedActivity(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->-$$Nest$muserSwitching(Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyService;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->addSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->addToggleSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->correctStateIfNeeded()V
+HPLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforceObserveSensorPrivacyPermission()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->enforcePermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isCombinedToggleSensorPrivacyEnabled(I)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isSensorPrivacyEnabled()Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isToggleSensorPrivacyEnabled(II)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->isToggleSensorPrivacyEnabledInternal(III)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->lambda$userSwitching$5([ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->lambda$userSwitching$6([ZI[Z[ZI[Z)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->registerSettingsObserver()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->setGlobalRestriction(IZ)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->showSensorStateChangedActivity(II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->supportsSensorToggle(II)Z
+PLcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;->userSwitching(II)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsManager(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/app/AppOpsManager;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/app/AppOpsManagerInternal;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmAppOpsRestrictionToken(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/os/IBinder;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmContext(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/content/Context;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmCurrentUser(Lcom/android/server/sensorprivacy/SensorPrivacyService;)I
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmPackageManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmSensorPrivacyManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyManagerInternalImpl;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmSensorPrivacyServiceImpl(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/sensorprivacy/SensorPrivacyService$SensorPrivacyServiceImpl;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmTelephonyManager(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Landroid/telephony/TelephonyManager;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$fgetmUserManagerInternal(Lcom/android/server/sensorprivacy/SensorPrivacyService;)Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->-$$Nest$sfgetACTION_DISABLE_TOGGLE_SENSOR_PRIVACY()Ljava/lang/String;
+PLcom/android/server/sensorprivacy/SensorPrivacyService;-><clinit>()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->getCurrentTimeMillis()J
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->onBootPhase(I)V
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->onStart()V
+PLcom/android/server/sensorprivacy/SensorPrivacyService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;-><init>()V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->atomic(Ljava/lang/Runnable;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->forEachState(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getAllSensorState()Z
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getInstance()Lcom/android/server/sensorprivacy/SensorPrivacyStateController;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->getState(III)Lcom/android/server/sensorprivacy/SensorState;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->persistAll()V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->setAllSensorPrivacyListener(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$AllSensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateController;->setSensorPrivacyListener(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;-><init>()V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->forEachStateLocked(Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyStateConsumer;)V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getDefaultSensorState()Lcom/android/server/sensorprivacy/SensorState;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getInstance()Lcom/android/server/sensorprivacy/SensorPrivacyStateController;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->getStateLocked(III)Lcom/android/server/sensorprivacy/SensorState;
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->schedulePersistLocked()V
+PLcom/android/server/sensorprivacy/SensorPrivacyStateControllerImpl;->setSensorPrivacyListenerLocked(Landroid/os/Handler;Lcom/android/server/sensorprivacy/SensorPrivacyStateController$SensorPrivacyListener;)V
+PLcom/android/server/sensorprivacy/SensorState;-><init>(I)V
+PLcom/android/server/sensorprivacy/SensorState;-><init>(Z)V
+PLcom/android/server/sensorprivacy/SensorState;->enabledToState(Z)I
+PLcom/android/server/sensorprivacy/SensorState;->getState()I
+PLcom/android/server/sensorprivacy/SensorState;->isEnabled()Z
+PLcom/android/server/sensors/SensorManagerInternal;-><init>()V
+PLcom/android/server/sensors/SensorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensors/SensorService;)V
+PLcom/android/server/sensors/SensorService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/sensors/SensorService$LocalService;-><init>(Lcom/android/server/sensors/SensorService;)V
+PLcom/android/server/sensors/SensorService$LocalService;->addProximityActiveListener(Ljava/util/concurrent/Executor;Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;)V
+PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;-><init>(Lcom/android/server/sensors/SensorService;)V
+PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;-><init>(Lcom/android/server/sensors/SensorService;Lcom/android/server/sensors/SensorService$ProximityListenerDelegate-IA;)V
+PLcom/android/server/sensors/SensorService$ProximityListenerDelegate;->onProximityActive(Z)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/sensors/SensorService$ProximityListenerProxy;Z)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->$r8$lambda$lZwMJTdMAI1bCMIxj5Bw6uRSXWw(Lcom/android/server/sensors/SensorService$ProximityListenerProxy;Z)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/sensors/SensorManagerInternal$ProximityActiveListener;)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->lambda$onProximityActive$0(Z)V
+PLcom/android/server/sensors/SensorService$ProximityListenerProxy;->onProximityActive(Z)V
+PLcom/android/server/sensors/SensorService;->$r8$lambda$tuvhrgJDhAzfGFTh_3IUBIw3Spg(Lcom/android/server/sensors/SensorService;)V
+PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmLock(Lcom/android/server/sensors/SensorService;)Ljava/lang/Object;
+PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmProximityListeners(Lcom/android/server/sensors/SensorService;)Landroid/util/ArrayMap;
+PLcom/android/server/sensors/SensorService;->-$$Nest$fgetmPtr(Lcom/android/server/sensors/SensorService;)J
+PLcom/android/server/sensors/SensorService;->-$$Nest$smregisterProximityActiveListenerNative(J)V
+PLcom/android/server/sensors/SensorService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/sensors/SensorService;->lambda$new$0()V
+PLcom/android/server/sensors/SensorService;->onBootPhase(I)V
+PLcom/android/server/sensors/SensorService;->onStart()V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;-><init>(Ljava/lang/String;ILandroid/content/ComponentName;ILandroid/os/Bundle;)V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;-><init>(Ljava/lang/String;Landroid/content/pm/ResolveInfo;)V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->getMetadata()Landroid/os/Bundle;
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->getVersion()I
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->parseUid(Landroid/content/pm/ResolveInfo;)I
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->parseVersion(Landroid/content/pm/ResolveInfo;)I
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;->toString()Ljava/lang/String;
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->$r8$lambda$mcjFxv-ycpNDxZX_ks8oCqSOl1s(Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)I
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;-><clinit>()V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->create(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/servicewatcher/CurrentUserServiceSupplier;
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->createFromConfig(Landroid/content/Context;Ljava/lang/String;II)Lcom/android/server/servicewatcher/CurrentUserServiceSupplier;
+HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->getServiceInfo()Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->getServiceInfo()Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->hasMatchingService()Z
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->lambda$static$0(Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;Lcom/android/server/servicewatcher/CurrentUserServiceSupplier$BoundServiceInfo;)I
+HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->register(Lcom/android/server/servicewatcher/ServiceWatcher$ServiceChangedListener;)V
+PLcom/android/server/servicewatcher/CurrentUserServiceSupplier;->retrieveExplicitPackage(Landroid/content/Context;II)Ljava/lang/String;
+PLcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;->onError(Ljava/lang/Throwable;)V
+PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;-><init>(Ljava/lang/String;ILandroid/content/ComponentName;)V
+PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getAction()Ljava/lang/String;
+PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->getUserId()I
+HPLcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;->toString()Ljava/lang/String;
+PLcom/android/server/servicewatcher/ServiceWatcher;->create(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)Lcom/android/server/servicewatcher/ServiceWatcher;
+PLcom/android/server/servicewatcher/ServiceWatcher;->create(Landroid/content/Context;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)Lcom/android/server/servicewatcher/ServiceWatcher;
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$1;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;-><init>(Lcom/android/server/servicewatcher/ServiceWatcherImpl;Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;)V
+HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->bind()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->getBoundServiceInfo()Lcom/android/server/servicewatcher/ServiceWatcher$BoundServiceInfo;
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->isConnected()Z
+HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->runOnBinder(Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
+HPLcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;->unbind()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->$r8$lambda$GCGDYqQZRK7jCQUNZnY8QjXgR2Y(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->$r8$lambda$zTLizm-3rVzoLRcwgUDZzwsvYD8(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;-><clinit>()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceSupplier;Lcom/android/server/servicewatcher/ServiceWatcher$ServiceListener;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->checkServiceResolves()Z
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->lambda$onServiceChanged$1(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->lambda$runOnBinder$0(Lcom/android/server/servicewatcher/ServiceWatcherImpl$MyServiceConnection;Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->onServiceChanged()V
+HPLcom/android/server/servicewatcher/ServiceWatcherImpl;->onServiceChanged(Z)V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->register()V
+PLcom/android/server/servicewatcher/ServiceWatcherImpl;->runOnBinder(Lcom/android/server/servicewatcher/ServiceWatcher$BinderOperation;)V
+PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>()V
+PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>(Lcom/android/server/signedconfig/SignedConfigService$UpdateReceiver-IA;)V
+PLcom/android/server/signedconfig/SignedConfigService;->registerUpdateReceiver(Landroid/content/Context;)V
+PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;->$values()[Lcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;
+PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;-><clinit>()V
+PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerDeviceState;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/soundtrigger/DeviceStateHandler$SoundTriggerPowerEvent;-><init>(I)V
+PLcom/android/server/soundtrigger/DeviceStateHandler;-><init>(Ljava/util/concurrent/Executor;Lcom/android/server/utils/EventLogger;)V
+PLcom/android/server/soundtrigger/DeviceStateHandler;->onPowerModeChanged(I)V
+PLcom/android/server/soundtrigger/PhoneCallStateHandler$1;-><init>(Lcom/android/server/soundtrigger/PhoneCallStateHandler;)V
+PLcom/android/server/soundtrigger/PhoneCallStateHandler;-><init>(Landroid/telephony/SubscriptionManager;Landroid/telephony/TelephonyManager;Lcom/android/server/soundtrigger/PhoneCallStateHandler$Callback;)V
+PLcom/android/server/soundtrigger/SoundTriggerDbHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/os/PowerManager;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/content/Context;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService;->onBootPhase(I)V
+PLcom/android/server/soundtrigger/SoundTriggerService;->onStart()V
+PLcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;-><init>()V
+PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;-><init>()V
+PLcom/android/server/soundtrigger_middleware/DefaultHalFactory;->create()Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;)V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->$r8$lambda$hBoIWCt1wAYBh9Th4QLOGaxIoV0(Lcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;)V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;-><init>()V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->run()V
+PLcom/android/server/soundtrigger_middleware/ExternalCaptureStateTracker;->setCaptureState(Z)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory$$ExternalSyntheticLambda0;-><init>(Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory$1;-><init>(Lcom/android/server/soundtrigger_middleware/FakeHalFactory;Landroid/os/IBinder;Ljava/lang/Runnable;Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeHalFactory;->create()Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$$ExternalSyntheticLambda0;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$1;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$ExecutorHolder;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher;-><init>(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher;-><init>(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$GlobalCallbackDispatcher-IA;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->$r8$lambda$pnpqzoQdTdzjstzdqhpQnNpOVVU(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->-$$Nest$mwrap(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher-IA;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->lambda$wrap$0(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal$InjectionDispatcher;->wrap(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->$r8$lambda$_r7zgC45YMbhkVPbRFw41fe6CNU(Lcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->createDefaultProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->getGlobalEventInjection()Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->lambda$new$0(Landroid/media/soundtrigger_middleware/ISoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
+PLcom/android/server/soundtrigger_middleware/FakeSoundTriggerHal;->registerGlobalCallback(Landroid/hardware/soundtrigger3/ISoundTriggerHwGlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerDuplicateModelHandler;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalEnforcer;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog$Watchdog;->close()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->-$$Nest$fgetmTimer(Lcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;)Lcom/android/server/soundtrigger_middleware/UptimeTimer;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHalWatchdog;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat$GlobalCallbackAdaper;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;-><init>(Landroid/os/IBinder;Ljava/lang/Runnable;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->getProperties()Landroid/media/soundtrigger/Properties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->linkToDeath(Landroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw3Compat;->registerCallback(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHal$GlobalCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerInjection;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerInjection;->registerGlobalEventInjection(Landroid/media/soundtrigger_middleware/IInjectGlobalEvent;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;-><init>([Lcom/android/server/soundtrigger_middleware/HalFactory;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;-><init>(Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareLogging;-><init>(Lcom/android/internal/util/LatencyTracker;Ljava/util/function/Supplier;Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;->onStart()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerInjection;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService-IA;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareValidation;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerMiddlewareInternal;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;-><init>(Lcom/android/server/soundtrigger_middleware/HalFactory;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->attachToHal()V
+PLcom/android/server/soundtrigger_middleware/UptimeTimer$TaskImpl;-><init>(Landroid/os/Handler;Ljava/lang/Object;)V
+PLcom/android/server/soundtrigger_middleware/UptimeTimer$TaskImpl;->cancel()V
+PLcom/android/server/soundtrigger_middleware/UptimeTimer;-><init>(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger_middleware/UptimeTimer;->createTask(Ljava/lang/Runnable;J)Lcom/android/server/soundtrigger_middleware/UptimeTimer$Task;
+PLcom/android/server/speech/SpeechRecognitionManagerService$SpeechRecognitionManagerServiceStub;-><init>(Lcom/android/server/speech/SpeechRecognitionManagerService;)V
+PLcom/android/server/speech/SpeechRecognitionManagerService;-><clinit>()V
+PLcom/android/server/speech/SpeechRecognitionManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/speech/SpeechRecognitionManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/speech/SpeechRecognitionManagerService;->newServiceLocked(IZ)Lcom/android/server/speech/SpeechRecognitionManagerServiceImpl;
+PLcom/android/server/speech/SpeechRecognitionManagerService;->onStart()V
+PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;-><clinit>()V
+PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;-><init>(Lcom/android/server/speech/SpeechRecognitionManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/speech/SpeechRecognitionManagerServiceImpl;->updateLocked(Z)Z
+PLcom/android/server/stats/FeatureFlagsImpl;-><init>()V
+PLcom/android/server/stats/FeatureFlagsImpl;->addMobileBytesTransferByProcStatePuller()Z
+PLcom/android/server/stats/Flags;-><clinit>()V
+PLcom/android/server/stats/Flags;->addMobileBytesTransferByProcStatePuller()Z
+PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService$Lifecycle;->onStart()V
+PLcom/android/server/stats/bootstrap/StatsBootstrapAtomService;-><init>()V
+PLcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;-><init>()V
+PLcom/android/server/stats/pull/ProcfsMemoryUtil;-><clinit>()V
+PLcom/android/server/stats/pull/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>()V
+PLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback-IA;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl-IA;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$StatsSubscriptionsListener;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;Landroid/telephony/SubscriptionManager;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>()V
+PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener-IA;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;->notifyThrottling(Landroid/os/Temperature;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->$r8$lambda$nNR4Gctk6hlu9qnTsuOvrymZzfk(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->$r8$lambda$qb74jErDmbpYjoDRKkDDIHHyoHk(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;-><clinit>()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->canQueryNetworkStatsForTypeProxy()Z
+PLcom/android/server/stats/pull/StatsPullAtomService;->collectNetworkStatsSnapshotForAtom(I)Ljava/util/List;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->getDataUsageBytesTransferSnapshotForOemManaged()Ljava/util/List;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getIKeystoreMetricsService()Landroid/security/metrics/IKeystoreMetrics;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getIThermalService()Landroid/os/IThermalService;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTemplate(Landroid/net/NetworkTemplate;Z)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getUidNetworkStatsSnapshotForTransport(I)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->initAndRegisterDeferredPullers()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->initAndRegisterNetworkStatsPullers()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->initMobileDataStatsPuller()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->initializePullersState()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$onBootPhase$0()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$onBootPhase$1()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->onBootPhase(I)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->onStart()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAccessibilityFloatingMenuStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAccessibilityShortcutStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppOps()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppSize()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAppsOnExternalStorageInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerAttributedAppOps()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryCycleCount()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryLevel()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryVoltage()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStatsExceptions()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothActivityInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothBytesTransfer()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBuildInformation()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerBytesTransferByTagAndMetered()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCachedAppsHighWatermarkPuller()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCategorySize()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCoolingDevice()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuActiveTime()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuClusterTime()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuCyclesPerThreadGroupCluster()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuCyclesPerUidCluster()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerClusterFreq()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerThreadFreq()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUid()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUidFreq()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionState()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionStateSampled()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDataUsageBytesTransfer()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugElapsedClock()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugFailingElapsedClock()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDeviceCalculatedPowerUse()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDirectoryUsage()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskIO()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerEventListeners()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerExternalStorageInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerFaceSettings()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerFullBatteryCapacity()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerHdrCapabilitiesPuller()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerInstalledIncrementalPackages()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerIonHeapSize()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKernelWakelock()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreAtomWithOverflow()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreCrashStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithAuthInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithGeneralInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyCreationWithPurposeModesInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyOperationWithGeneralInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreKeyOperationWithPurposeAndModesInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerKeystoreStorageStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerLooperStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerMediaCapabilitiesStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransfer()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransferBackground()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerModemActivityInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerNotificationRemoteViews()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFacesEnrolled()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFingerprintsEnrolled()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerOemManagedBytesTransfer()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerPendingIntentsPerPackagePuller()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerPinnerServiceStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerPowerProfile()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStatsPkgProc()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessAssociation()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessCpuTime()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessDmabufMemory()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryHighWaterMark()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemorySnapshot()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryState()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessState()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessSystemIonHeapSize()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerProxyBytesTransferBackground()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->registerPullers()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerRemainingBatteryCapacity()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerRkpErrorStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerRoleHolder()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerRuntimeAppOpAccessMessage()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerSettingsStats()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemElapsedRealtime()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemIonHeapSize()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemMemory()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemUptime()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerTemperature()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerTimeZoneDataInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerTimeZoneDetectorState()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerUwbActivityInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerVmStat()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiActivityInfo()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransfer()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransferBackground()V
+PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStats(Landroid/net/NetworkStats;Ljava/util/function/Function;)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUid(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUidAndFgbg(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/StatsPullAtomService;->sliceNetworkStatsByUidTagAndMetered(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+PLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZ)V
+HPLcom/android/server/stats/pull/netstats/NetworkStatsExt;-><init>(Landroid/net/NetworkStats;[IZZZILcom/android/server/stats/pull/netstats/SubInfo;IZ)V
+PLcom/android/server/statusbar/SessionMonitor;-><init>(Landroid/content/Context;)V
+PLcom/android/server/statusbar/SessionMonitor;->registerSessionListener(ILcom/android/internal/statusbar/ISessionListener;)V
+PLcom/android/server/statusbar/SessionMonitor;->requireListenerPermissions(I)V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda5;->run()V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/statusbar/StatusBarManagerService$1;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished(I)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending(I)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(IJJ)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->onSystemBarAttributesChanged(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->setIconVisibility(Ljava/lang/String;Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->setImeWindowStatus(ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->setUdfpsRefreshRateCallback(Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
+PLcom/android/server/statusbar/StatusBarManagerService$2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$DeathRecipient-IA;)V
+PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->linkToDeath()V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmAppearance(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmAppearanceRegions(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)[Lcom/android/internal/view/AppearanceRegion;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmBehavior(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeBackDisposition(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeToken(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Landroid/os/IBinder;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmImeWindowVis(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmLetterboxDetails(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)[Lcom/android/internal/statusbar/LetterboxDetails;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmNavbarColorManagedByIme(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmPackageName(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Ljava/lang/String;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmRequestedVisibleTypes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmShowImeSwitcher(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$fgetmTransientBarTypes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$msetBarAttributes(Lcom/android/server/statusbar/StatusBarManagerService$UiState;I[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->-$$Nest$msetImeWindowState(Lcom/android/server/statusbar/StatusBarManagerService$UiState;IIZLandroid/os/IBinder;)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>()V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>(Lcom/android/server/statusbar/StatusBarManagerService$UiState-IA;)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setBarAttributes(I[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setImeWindowState(IIZLandroid/os/IBinder;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$_iMEqk__BS_LQF7mYRJx_L2r6wc(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$f4g8csS8sA9WBCaVg_JpeSlGvUA(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->$r8$lambda$nWjxl9WE61ral9X4QCz5jQbdFdw(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmBar(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar;
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmDeathRecipient(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fgetmLock(Lcom/android/server/statusbar/StatusBarManagerService;)Ljava/lang/Object;
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fputmNotificationDelegate(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$fputmUdfpsRefreshRateRequestCallback(Lcom/android/server/statusbar/StatusBarManagerService;Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$menforceStatusBarService(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->-$$Nest$mgetUiState(Lcom/android/server/statusbar/StatusBarManagerService;I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
+PLcom/android/server/statusbar/StatusBarManagerService;-><clinit>()V
+PLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V
+PLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I
+PLcom/android/server/statusbar/StatusBarManagerService;->getUiState(I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$2()V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$3()V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$setImeWindowStatus$1(ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V
+PLcom/android/server/statusbar/StatusBarManagerService;->onDisplayChanged(I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->publishGlobalActionsProvider()V
+PLcom/android/server/statusbar/StatusBarManagerService;->registerSessionListener(ILcom/android/internal/statusbar/ISessionListener;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;)Lcom/android/internal/statusbar/RegisterStatusBarResult;
+PLcom/android/server/statusbar/StatusBarManagerService;->setBiometicContextListener(Landroid/hardware/biometrics/IBiometricContextListener;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V
+PLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(ILandroid/os/IBinder;IIZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->setUdfpsRefreshRateCallback(Landroid/hardware/fingerprint/IUdfpsRefreshRateRequestCallback;)V
+PLcom/android/server/statusbar/TileRequestTracker$1;-><init>(Lcom/android/server/statusbar/TileRequestTracker;)V
+PLcom/android/server/statusbar/TileRequestTracker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/storage/CacheQuotaStrategy;-><init>(Landroid/content/Context;Landroid/app/usage/UsageStatsManagerInternal;Lcom/android/server/pm/Installer;Landroid/util/ArrayMap;)V
+PLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V
+PLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V
+PLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair;
+PLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J
+PLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$2;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;-><init>()V
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->-$$Nest$smisEntering(III)Z
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->-$$Nest$smisLeaving(III)Z
+PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>()V
+PLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService$State-IA;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z
+PLcom/android/server/storage/DeviceStorageMonitorService;->-$$Nest$mcheckLow(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService;-><clinit>()V
+PLcom/android/server/storage/DeviceStorageMonitorService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/storage/DeviceStorageMonitorService;->checkLow()V
+PLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State;
+PLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V
+HPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V
+PLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/storage/DiskStatsLoggingService;-><clinit>()V
+PLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/storage/StorageSessionController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/storage/StorageSessionController;->getConnectionUserIdForVolume(Landroid/os/storage/VolumeInfo;)I
+PLcom/android/server/storage/StorageSessionController;->getExternalStorageServiceComponentName()Landroid/content/ComponentName;
+PLcom/android/server/storage/StorageSessionController;->initExternalStorageServiceComponent()V
+PLcom/android/server/storage/StorageSessionController;->isEmulatedOrPublic(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/storage/StorageSessionController;->isSupportedVolume(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/storage/StorageSessionController;->notifyVolumeStateChanged(Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/StorageSessionController;->onReset(Landroid/os/IVold;Ljava/lang/Runnable;)V
+PLcom/android/server/storage/StorageSessionController;->onUnlockUser(I)V
+PLcom/android/server/storage/StorageSessionController;->onVolumeMount(Landroid/os/ParcelFileDescriptor;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/StorageSessionController;->resolveExternalStorageServiceAsUser(I)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/storage/StorageSessionController;->shouldHandle(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/storage/StorageSessionController;->supportsExternalStorage(I)Z
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda1;->run(Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda3;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda4;-><init>(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda4;->run(Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$$ExternalSyntheticLambda5;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->handleConnection(Landroid/os/IBinder;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$FmJboNYjokBfJEVj67KD2wZpm14(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Landroid/service/storage/IExternalStorageService;)Ljava/util/concurrent/CompletionStage;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$GXIyazwVX_rUkeKdlCrCHRfXRB8(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CompletableFuture;Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$ZUID6_fjlmkWslb1Z-5VMQs3jZA(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->$r8$lambda$aiyAMsuUyqAtzW9JiGlGmzYO5Ms(Ljava/lang/String;Landroid/os/storage/StorageVolume;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->-$$Nest$fgetmLock(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;)Ljava/lang/Object;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;-><init>(Lcom/android/server/storage/StorageUserConnection;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;-><init>(Lcom/android/server/storage/StorageUserConnection;Lcom/android/server/storage/StorageUserConnection$ActiveConnection-IA;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->connectIfNeeded()Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$notifyVolumeStateChanged$4(Ljava/lang/String;Landroid/os/storage/StorageVolume;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$startSession$2(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;Landroid/service/storage/IExternalStorageService;Landroid/os/RemoteCallback;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$waitForAsync$1(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Landroid/service/storage/IExternalStorageService;)Ljava/util/concurrent/CompletionStage;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$waitForAsyncVoid$0(Ljava/util/concurrent/CompletableFuture;Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->notifyVolumeStateChanged(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->setResult(Landroid/os/Bundle;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->startSession(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->waitForAsync(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;Landroid/os/RemoteCallback;Ljava/util/concurrent/CompletableFuture;Ljava/util/ArrayList;J)Ljava/lang/Object;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->waitForAsyncVoid(Lcom/android/server/storage/StorageUserConnection$AsyncStorageServiceCall;)V
+PLcom/android/server/storage/StorageUserConnection$Session;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmContext(Lcom/android/server/storage/StorageUserConnection;)Landroid/content/Context;
+PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmHandlerThread(Lcom/android/server/storage/StorageUserConnection;)Landroid/os/HandlerThread;
+PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmSessionController(Lcom/android/server/storage/StorageUserConnection;)Lcom/android/server/storage/StorageSessionController;
+PLcom/android/server/storage/StorageUserConnection;->-$$Nest$fgetmUserId(Lcom/android/server/storage/StorageUserConnection;)I
+PLcom/android/server/storage/StorageUserConnection;-><init>(Landroid/content/Context;ILcom/android/server/storage/StorageSessionController;)V
+PLcom/android/server/storage/StorageUserConnection;->notifyVolumeStateChanged(Ljava/lang/String;Landroid/os/storage/StorageVolume;)V
+PLcom/android/server/storage/StorageUserConnection;->startSession(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/tare/Agent$ActionAffordabilityNote;->-$$Nest$msetNewAffordability(Lcom/android/server/tare/Agent$ActionAffordabilityNote;Z)V
+HPLcom/android/server/tare/Agent$ActionAffordabilityNote;-><init>(Lcom/android/server/tare/EconomyManagerInternal$ActionBill;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomicPolicy;)V
+HPLcom/android/server/tare/Agent$ActionAffordabilityNote;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/tare/Agent$ActionAffordabilityNote;->hashCode()I
+PLcom/android/server/tare/Agent$ActionAffordabilityNote;->setNewAffordability(Z)V
+PLcom/android/server/tare/Agent$AgentHandler;-><init>(Lcom/android/server/tare/Agent;Landroid/os/Looper;)V
+PLcom/android/server/tare/Agent$BalanceThresholdAlarmQueue;-><init>(Lcom/android/server/tare/Agent;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/tare/Agent$BalanceThresholdAlarmQueue;-><init>(Lcom/android/server/tare/Agent;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/tare/Agent$BalanceThresholdAlarmQueue-IA;)V
+PLcom/android/server/tare/Agent$OngoingEventUpdater;-><init>(Lcom/android/server/tare/Agent;)V
+PLcom/android/server/tare/Agent$OngoingEventUpdater;-><init>(Lcom/android/server/tare/Agent;Lcom/android/server/tare/Agent$OngoingEventUpdater-IA;)V
+PLcom/android/server/tare/Agent$TotalDeltaCalculator;-><init>(Lcom/android/server/tare/Agent;)V
+PLcom/android/server/tare/Agent$TotalDeltaCalculator;-><init>(Lcom/android/server/tare/Agent;Lcom/android/server/tare/Agent$TotalDeltaCalculator-IA;)V
+PLcom/android/server/tare/Agent$TrendCalculator;-><init>()V
+PLcom/android/server/tare/Agent;-><clinit>()V
+PLcom/android/server/tare/Agent;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Scribe;Lcom/android/server/tare/Analyst;)V
+HPLcom/android/server/tare/Agent;->registerAffordabilityChangeListenerLocked(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+HPLcom/android/server/tare/Agent;->scheduleBalanceCheckLocked(ILjava/lang/String;)V
+HPLcom/android/server/tare/Agent;->unregisterAffordabilityChangeListenerLocked(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+PLcom/android/server/tare/AlarmManagerEconomicPolicy;-><clinit>()V
+PLcom/android/server/tare/AlarmManagerEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/EconomicPolicy$Injector;)V
+PLcom/android/server/tare/AlarmManagerEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
+PLcom/android/server/tare/AlarmManagerEconomicPolicy;->getCostModifiers()[I
+HPLcom/android/server/tare/AlarmManagerEconomicPolicy;->loadConstants(Ljava/lang/String;Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/tare/Analyst;-><clinit>()V
+PLcom/android/server/tare/Analyst;-><init>()V
+PLcom/android/server/tare/Analyst;-><init>(Lcom/android/internal/app/IBatteryStats;)V
+PLcom/android/server/tare/ChargingModifier$ChargingTracker;-><init>(Lcom/android/server/tare/ChargingModifier;)V
+PLcom/android/server/tare/ChargingModifier$ChargingTracker;-><init>(Lcom/android/server/tare/ChargingModifier;Lcom/android/server/tare/ChargingModifier$ChargingTracker-IA;)V
+PLcom/android/server/tare/ChargingModifier;-><clinit>()V
+PLcom/android/server/tare/ChargingModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;-><init>()V
+PLcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;->isPolicyEnabled(ILandroid/provider/DeviceConfig$Properties;)Z
+PLcom/android/server/tare/CompleteEconomicPolicy;-><clinit>()V
+PLcom/android/server/tare/CompleteEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/CompleteEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/CompleteEconomicPolicy$CompleteInjector;)V
+HPLcom/android/server/tare/CompleteEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
+PLcom/android/server/tare/CompleteEconomicPolicy;->getCostModifiers()[I
+PLcom/android/server/tare/CompleteEconomicPolicy;->isPolicyEnabled(I)Z
+PLcom/android/server/tare/DeviceIdleModifier$DeviceIdleTracker;-><init>(Lcom/android/server/tare/DeviceIdleModifier;)V
+PLcom/android/server/tare/DeviceIdleModifier;-><clinit>()V
+PLcom/android/server/tare/DeviceIdleModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/EconomicPolicy$Action;-><init>(IJJ)V
+PLcom/android/server/tare/EconomicPolicy$Action;-><init>(IJJZ)V
+PLcom/android/server/tare/EconomicPolicy$Injector;-><init>()V
+PLcom/android/server/tare/EconomicPolicy$Reward;-><init>(IJJJ)V
+PLcom/android/server/tare/EconomicPolicy;-><clinit>()V
+PLcom/android/server/tare/EconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/EconomicPolicy;->getConstantAsCake(Ljava/lang/String;J)J
+HPLcom/android/server/tare/EconomicPolicy;->getConstantAsCake(Ljava/lang/String;JJ)J
+PLcom/android/server/tare/EconomicPolicy;->initModifier(ILcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->$r8$lambda$jbYRct5AtAlpj4cxb-8ZcW2zmwE(Lcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;)I
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;-><clinit>()V
+HPLcom/android/server/tare/EconomyManagerInternal$ActionBill;-><init>(Ljava/util/List;)V
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->getAnticipatedActions()Ljava/util/List;
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->hashCode()I
+PLcom/android/server/tare/EconomyManagerInternal$ActionBill;->lambda$static$0(Lcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;)I
+PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;-><init>(IIJ)V
+PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/tare/EconomyManagerInternal$AnticipatedAction;->hashCode()I
+PLcom/android/server/tare/InternalResourceService$1;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$2;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$3;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$4;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$ConfigObserver;-><init>(Lcom/android/server/tare/InternalResourceService;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/tare/InternalResourceService$ConfigObserver;->getAllDeviceConfigProperties()Landroid/provider/DeviceConfig$Properties;
+PLcom/android/server/tare/InternalResourceService$ConfigObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/tare/InternalResourceService$ConfigObserver;->start()V
+PLcom/android/server/tare/InternalResourceService$ConfigObserver;->updateEnabledStatus()V
+PLcom/android/server/tare/InternalResourceService$EconomyManagerStub;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$IrsHandler;-><init>(Lcom/android/server/tare/InternalResourceService;Landroid/os/Looper;)V
+PLcom/android/server/tare/InternalResourceService$IrsHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/InternalResourceService$LocalService-IA;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;->getEnabledMode(I)I
+PLcom/android/server/tare/InternalResourceService$LocalService;->noteInstantaneousEvent(ILjava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;->noteOngoingEventStarted(ILjava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;->noteOngoingEventStopped(ILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/tare/InternalResourceService$LocalService;->registerAffordabilityChangeListener(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+PLcom/android/server/tare/InternalResourceService$LocalService;->registerTareStateChangeListener(Lcom/android/server/tare/EconomyManagerInternal$TareStateChangeListener;I)V
+HPLcom/android/server/tare/InternalResourceService$LocalService;->unregisterAffordabilityChangeListener(ILjava/lang/String;Lcom/android/server/tare/EconomyManagerInternal$AffordabilityChangeListener;Lcom/android/server/tare/EconomyManagerInternal$ActionBill;)V
+HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmAgent(Lcom/android/server/tare/InternalResourceService;)Lcom/android/server/tare/Agent;
+HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmEnabledMode(Lcom/android/server/tare/InternalResourceService;)I
+PLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmHandler(Lcom/android/server/tare/InternalResourceService;)Landroid/os/Handler;
+HPLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmLock(Lcom/android/server/tare/InternalResourceService;)Ljava/lang/Object;
+PLcom/android/server/tare/InternalResourceService;->-$$Nest$fgetmStateChangeListeners(Lcom/android/server/tare/InternalResourceService;)Landroid/util/SparseSetArray;
+HPLcom/android/server/tare/InternalResourceService;->-$$Nest$misTareSupported(Lcom/android/server/tare/InternalResourceService;)Z
+PLcom/android/server/tare/InternalResourceService;-><clinit>()V
+HPLcom/android/server/tare/InternalResourceService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/tare/InternalResourceService;->getCompleteEconomicPolicyLocked()Lcom/android/server/tare/CompleteEconomicPolicy;
+PLcom/android/server/tare/InternalResourceService;->getEnabledMode()I
+PLcom/android/server/tare/InternalResourceService;->getEnabledMode(I)I
+PLcom/android/server/tare/InternalResourceService;->getLock()Ljava/lang/Object;
+HPLcom/android/server/tare/InternalResourceService;->getUid(ILjava/lang/String;)I
+HPLcom/android/server/tare/InternalResourceService;->isSystem(ILjava/lang/String;)Z
+HPLcom/android/server/tare/InternalResourceService;->isTareSupported()Z
+PLcom/android/server/tare/InternalResourceService;->onBootPhase(I)V
+PLcom/android/server/tare/InternalResourceService;->onBootPhaseBootCompleted()V
+PLcom/android/server/tare/InternalResourceService;->onBootPhaseSystemServicesReady()V
+PLcom/android/server/tare/InternalResourceService;->onBootPhaseThirdPartyAppsCanStart()V
+PLcom/android/server/tare/InternalResourceService;->onStart()V
+PLcom/android/server/tare/JobSchedulerEconomicPolicy;-><clinit>()V
+PLcom/android/server/tare/JobSchedulerEconomicPolicy;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/EconomicPolicy$Injector;)V
+PLcom/android/server/tare/JobSchedulerEconomicPolicy;->getAction(I)Lcom/android/server/tare/EconomicPolicy$Action;
+PLcom/android/server/tare/JobSchedulerEconomicPolicy;->getCostModifiers()[I
+HPLcom/android/server/tare/JobSchedulerEconomicPolicy;->loadConstants(Ljava/lang/String;Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/tare/Modifier;-><init>()V
+PLcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker;-><init>(Lcom/android/server/tare/PowerSaveModeModifier;)V
+PLcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker;-><init>(Lcom/android/server/tare/PowerSaveModeModifier;Lcom/android/server/tare/PowerSaveModeModifier$PowerSaveModeTracker-IA;)V
+PLcom/android/server/tare/PowerSaveModeModifier;->-$$Nest$fgetmIrs(Lcom/android/server/tare/PowerSaveModeModifier;)Lcom/android/server/tare/InternalResourceService;
+PLcom/android/server/tare/PowerSaveModeModifier;-><clinit>()V
+PLcom/android/server/tare/PowerSaveModeModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/ProcessStateModifier$1;-><init>(Lcom/android/server/tare/ProcessStateModifier;)V
+PLcom/android/server/tare/ProcessStateModifier;-><clinit>()V
+PLcom/android/server/tare/ProcessStateModifier;-><init>(Lcom/android/server/tare/InternalResourceService;)V
+PLcom/android/server/tare/Scribe$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/tare/Scribe;)V
+PLcom/android/server/tare/Scribe$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/tare/Scribe;)V
+PLcom/android/server/tare/Scribe;-><clinit>()V
+PLcom/android/server/tare/Scribe;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Analyst;)V
+PLcom/android/server/tare/Scribe;-><init>(Lcom/android/server/tare/InternalResourceService;Lcom/android/server/tare/Analyst;Ljava/io/File;)V
+PLcom/android/server/tare/TareHandlerThread;-><init>()V
+PLcom/android/server/tare/TareHandlerThread;->ensureThreadLocked()V
+PLcom/android/server/tare/TareHandlerThread;->get()Lcom/android/server/tare/TareHandlerThread;
+PLcom/android/server/tare/TareHandlerThread;->getExecutor()Ljava/util/concurrent/Executor;
+PLcom/android/server/telecom/InternalServiceRepository$1;-><init>(Lcom/android/server/telecom/InternalServiceRepository;)V
+PLcom/android/server/telecom/InternalServiceRepository;-><init>(Lcom/android/server/DeviceIdleInternal;)V
+PLcom/android/server/telecom/InternalServiceRepository;->ensureSystemProcess()V
+PLcom/android/server/telecom/InternalServiceRepository;->getDeviceIdleController()Lcom/android/internal/telecom/IDeviceIdleControllerAdapter;
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection-IA;)V
+PLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmContext(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/content/Context;
+PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmDefaultSimCallManagerRequests(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray;
+PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmLock(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object;
+PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$fgetmServiceRepo(Lcom/android/server/telecom/TelecomLoaderService;)Lcom/android/server/telecom/InternalServiceRepository;
+PLcom/android/server/telecom/TelecomLoaderService;->-$$Nest$mupdateSimCallManagerPermissions(Lcom/android/server/telecom/TelecomLoaderService;I)V
+PLcom/android/server/telecom/TelecomLoaderService;-><clinit>()V
+PLcom/android/server/telecom/TelecomLoaderService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V
+PLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V
+PLcom/android/server/telecom/TelecomLoaderService;->onStart()V
+PLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V
+PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V
+PLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V
+PLcom/android/server/telecom/TelecomLoaderService;->setupServiceRepository()V
+PLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(I)V
+PLcom/android/server/testharness/TestHarnessModeService$1;-><init>(Lcom/android/server/testharness/TestHarnessModeService;)V
+PLcom/android/server/testharness/TestHarnessModeService;-><clinit>()V
+PLcom/android/server/testharness/TestHarnessModeService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/testharness/TestHarnessModeService;->completeTestHarnessModeSetup()V
+PLcom/android/server/testharness/TestHarnessModeService;->getPersistentDataBlock()Lcom/android/server/pdb/PersistentDataBlockManagerInternal;
+PLcom/android/server/testharness/TestHarnessModeService;->getTestHarnessModeData()[B
+PLcom/android/server/testharness/TestHarnessModeService;->onBootPhase(I)V
+PLcom/android/server/testharness/TestHarnessModeService;->onStart()V
+PLcom/android/server/testharness/TestHarnessModeService;->setUpTestHarnessMode()V
+PLcom/android/server/testharness/TestHarnessModeService;->showNotificationIfEnabled()V
+PLcom/android/server/textclassifier/FixedSizeQueue;-><init>(ILcom/android/server/textclassifier/FixedSizeQueue$OnEntryEvictedListener;)V
+PLcom/android/server/textclassifier/FixedSizeQueue;->isEmpty()Z
+PLcom/android/server/textclassifier/IconsContentProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/textclassifier/IconsContentProvider;)V
+PLcom/android/server/textclassifier/IconsContentProvider;-><init>()V
+PLcom/android/server/textclassifier/IconsContentProvider;->onCreate()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$1;-><init>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$2;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onStart()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->processAnyPendingWork(I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->updatePackageStateForUser(I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mbindIfHasPendingRequestsLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->-$$Nest$mupdatePackageStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILjava/lang/String;Z)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILjava/lang/String;ZLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState-IA;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->bindIfHasPendingRequestsLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->createBindServiceFlags(Ljava/lang/String;)I
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->isPackageInstalledForUser()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->isServiceEnabledForUser()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->updatePackageStateLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache$1;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache$2;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$SessionCache;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/content/Context;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;->registerObserver()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->-$$Nest$mupdatePackageStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILcom/android/server/textclassifier/TextClassificationManagerService$UserState-IA;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindIfHasPendingRequestsLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getAllServiceStatesLocked()Ljava/util/List;
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->updatePackageStateLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmContext(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/content/Context;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmDefaultTextClassifierPackage(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmLock(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/Object;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmSettings(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/view/textclassifier/TextClassificationConstants;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$fgetmSystemTextClassifierPackage(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$mgetUserStateLocked(Lcom/android/server/textclassifier/TextClassificationManagerService;I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->-$$Nest$mstartListenSettings(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;-><clinit>()V
+PLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/textclassifier/TextClassificationManagerService-IA;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->getUserStateLocked(I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->startListenSettings()V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->startTrackingPackageChanges()V
+PLcom/android/server/textservices/TextServicesManagerInternal$1;-><init>()V
+PLcom/android/server/textservices/TextServicesManagerInternal;-><clinit>()V
+PLcom/android/server/textservices/TextServicesManagerInternal;-><init>()V
+PLcom/android/server/textservices/TextServicesManagerInternal;->get()Lcom/android/server/textservices/TextServicesManagerInternal;
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;-><init>(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)V
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->-$$Nest$fgetmService(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)Lcom/android/server/textservices/TextServicesManagerService;
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onStart()V
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->-$$Nest$fgetmSpellCheckerList(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Ljava/util/ArrayList;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->-$$Nest$minitializeTextServicesData(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;-><init>(ILandroid/content/Context;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getInt(Ljava/lang/String;I)I
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellChecker()Ljava/lang/String;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellCheckerSubtype(I)I
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->initializeTextServicesData()V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putInt(Ljava/lang/String;I)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putSelectedSpellChecker(Ljava/lang/String;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putSelectedSpellCheckerSubtype(I)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->putString(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->setCurrentSpellChecker(Landroid/view/textservice/SpellCheckerInfo;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Lcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor-IA;)V
+PLcom/android/server/textservices/TextServicesManagerService;->-$$Nest$mgetCurrentSpellCheckerForUser(Lcom/android/server/textservices/TextServicesManagerService;I)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService;-><clinit>()V
+PLcom/android/server/textservices/TextServicesManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/textservices/TextServicesManagerService;->findAvailSystemSpellCheckerLocked(Ljava/lang/String;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellCheckerSubtype(IZ)Landroid/view/textservice/SpellCheckerSubtype;
+PLcom/android/server/textservices/TextServicesManagerService;->getDataFromCallingUserIdLocked(I)Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;
+PLcom/android/server/textservices/TextServicesManagerService;->initializeInternalStateLocked(I)V
+PLcom/android/server/textservices/TextServicesManagerService;->onUnlockUser(I)V
+PLcom/android/server/textservices/TextServicesManagerService;->setCurrentSpellCheckerLocked(Landroid/view/textservice/SpellCheckerInfo;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
+PLcom/android/server/textservices/TextServicesManagerService;->verifyUser(I)V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService;-><clinit>()V
+PLcom/android/server/texttospeech/TextToSpeechManagerPerUserService;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub;-><init>(Lcom/android/server/texttospeech/TextToSpeechManagerService;Lcom/android/server/texttospeech/TextToSpeechManagerService$TextToSpeechManagerServiceStub-IA;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerService;-><clinit>()V
+PLcom/android/server/texttospeech/TextToSpeechManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/texttospeech/TextToSpeechManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/texttospeech/TextToSpeechManagerService;->newServiceLocked(IZ)Lcom/android/server/texttospeech/TextToSpeechManagerPerUserService;
+PLcom/android/server/texttospeech/TextToSpeechManagerService;->onStart()V
+PLcom/android/server/timedetector/ConfigurationInternal$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/timedetector/ConfigurationInternal$$ExternalSyntheticLambda0;->apply(I)Ljava/lang/Object;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionEnabledSetting(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionSupported(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoSuggestionLowerBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmManualSuggestionLowerBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmOriginPriorities(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)[I
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSuggestionUpperBound(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Ljava/time/Instant;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSystemClockConfidenceThresholdMillis(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmSystemClockUpdateThresholdMillis(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserConfigAllowed(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)I
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;-><init>(I)V
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->build()Lcom/android/server/timedetector/ConfigurationInternal;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoDetectionEnabledSetting(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoDetectionSupported(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setAutoSuggestionLowerBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setManualSuggestionLowerBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setOriginPriorities([I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSuggestionUpperBound(Ljava/time/Instant;)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSystemClockConfidenceThresholdMillis(I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setSystemClockUpdateThresholdMillis(I)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal$Builder;->setUserConfigAllowed(Z)Lcom/android/server/timedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timedetector/ConfigurationInternal;-><init>(Lcom/android/server/timedetector/ConfigurationInternal$Builder;)V
+PLcom/android/server/timedetector/ConfigurationInternal;-><init>(Lcom/android/server/timedetector/ConfigurationInternal$Builder;Lcom/android/server/timedetector/ConfigurationInternal-IA;)V
+PLcom/android/server/timedetector/ConfigurationInternal;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/ConfigurationInternal;->getAutoDetectionEnabledBehavior()Z
+PLcom/android/server/timedetector/ConfigurationInternal;->isAutoDetectionSupported()Z
+HPLcom/android/server/timedetector/ConfigurationInternal;->toString()Ljava/lang/String;
+PLcom/android/server/timedetector/EnvironmentImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/timedetector/EnvironmentImpl;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/timedetector/ServerFlags$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/ServerFlags;)V
+PLcom/android/server/timedetector/ServerFlags;-><clinit>()V
+PLcom/android/server/timedetector/ServerFlags;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/ServerFlags;->addListener(Lcom/android/server/timezonedetector/StateChangeListener;Ljava/util/Set;)V
+PLcom/android/server/timedetector/ServerFlags;->getBoolean(Ljava/lang/String;Z)Z
+PLcom/android/server/timedetector/ServerFlags;->getInstance(Landroid/content/Context;)Lcom/android/server/timedetector/ServerFlags;
+PLcom/android/server/timedetector/ServerFlags;->getOptionalBoolean(Ljava/lang/String;)Ljava/util/Optional;
+PLcom/android/server/timedetector/ServerFlags;->getOptionalInstant(Ljava/lang/String;)Ljava/util/Optional;
+PLcom/android/server/timedetector/ServerFlags;->getOptionalString(Ljava/lang/String;)Ljava/util/Optional;
+PLcom/android/server/timedetector/ServerFlags;->getOptionalStringArray(Ljava/lang/String;)Ljava/util/Optional;
+PLcom/android/server/timedetector/ServerFlags;->parseOptionalBoolean(Ljava/lang/String;)Ljava/util/Optional;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$1;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$2;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;-><init>()V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier-IA;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$BaseOriginPrioritiesSupplier;->get()[I
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;-><init>(Landroid/content/Context;Lcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier-IA;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ConfigOriginPrioritiesSupplier;->lookupPriorityStrings()[Ljava/lang/String;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServerFlags;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;-><init>(Lcom/android/server/timedetector/ServerFlags;Lcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier-IA;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl$ServerFlagsOriginPrioritiesSupplier;->lookupPriorityStrings()[Ljava/lang/String;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->-$$Nest$mhandleConfigurationInternalChangeOnMainThread(Lcom/android/server/timedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;-><clinit>()V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->addConfigurationInternalChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getAutoDetectionEnabledSetting()Z
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getAutoSuggestionLowerBound()Ljava/time/Instant;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getConfigurationInternal(I)Lcom/android/server/timedetector/ConfigurationInternal;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getCurrentUserConfigurationInternal()Lcom/android/server/timedetector/ConfigurationInternal;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getInstance(Landroid/content/Context;)Lcom/android/server/timedetector/ServiceConfigAccessor;
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getOriginPriorities()[I
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getSystemClockConfidenceUpgradeThresholdMillis()I
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->getSystemClockUpdateThresholdMillis()I
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->handleConfigurationInternalChangeOnMainThread()V
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->isAutoDetectionSupported()Z
+PLcom/android/server/timedetector/ServiceConfigAccessorImpl;->isUserConfigAllowed(I)Z
+PLcom/android/server/timedetector/TimeDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CurrentUserIdentityInjector;Lcom/android/server/timedetector/ServiceConfigAccessor;Lcom/android/server/timedetector/TimeDetectorStrategy;)V
+PLcom/android/server/timedetector/TimeDetectorInternalImpl;->addNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timedetector/TimeDetectorInternalImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/timedetector/TimeDetectorService;)V
+PLcom/android/server/timedetector/TimeDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timedetector/TimeDetectorService$Lifecycle;->onStart()V
+PLcom/android/server/timedetector/TimeDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CallerIdentityInjector;Lcom/android/server/timedetector/TimeDetectorStrategy;Landroid/util/NtpTrustedTime;)V
+HPLcom/android/server/timedetector/TimeDetectorService;->latestNetworkTime()Landroid/app/time/UnixEpochTime;
+PLcom/android/server/timedetector/TimeDetectorStrategy;->originToString(I)Ljava/lang/String;
+PLcom/android/server/timedetector/TimeDetectorStrategy;->stringToOrigin(Ljava/lang/String;)I
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timedetector/TimeDetectorStrategyImpl;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl$$ExternalSyntheticLambda1;->onChange()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->$r8$lambda$Ev1hBuSMiy0SsdTUkkpw6YwrYmA(Lcom/android/server/timedetector/TimeDetectorStrategyImpl;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;-><init>(Lcom/android/server/timedetector/TimeDetectorStrategyImpl$Environment;Lcom/android/server/timedetector/ServiceConfigAccessor;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->addNetworkTimeUpdateListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->create(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timedetector/ServiceConfigAccessor;)Lcom/android/server/timedetector/TimeDetectorStrategy;
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->getLatestNetworkSuggestion()Lcom/android/server/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->handleConfigurationInternalMaybeChanged()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->notifyStateChangeListenersAsynchronously()V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->updateCurrentConfigurationInternalIfRequired(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;-><init>(I)V
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/timezonedetector/CallerIdentityInjector$Real;-><init>()V
+PLcom/android/server/timezonedetector/CallerIdentityInjector;-><clinit>()V
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmAutoDetectionEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmEnhancedMetricsCollectionEnabled(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionRunInBackgroundEnabled(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmGeoDetectionSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmLocationEnabledSetting(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmTelephonyDetectionSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmTelephonyFallbackSupported(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserConfigAllowed(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)Ljava/lang/Integer;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;-><init>()V
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->build()Lcom/android/server/timezonedetector/ConfigurationInternal;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setAutoDetectionEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setEnhancedMetricsCollectionEnabled(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionFeatureSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setGeoDetectionRunInBackgroundEnabled(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setLocationEnabledSetting(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setTelephonyDetectionFeatureSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setTelephonyFallbackSupported(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setUserConfigAllowed(Z)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal$Builder;->setUserId(I)Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;
+PLcom/android/server/timezonedetector/ConfigurationInternal;-><init>(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;)V
+PLcom/android/server/timezonedetector/ConfigurationInternal;-><init>(Lcom/android/server/timezonedetector/ConfigurationInternal$Builder;Lcom/android/server/timezonedetector/ConfigurationInternal-IA;)V
+PLcom/android/server/timezonedetector/ConfigurationInternal;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->getAutoDetectionEnabledBehavior()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->getAutoDetectionEnabledSetting()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->getDetectionMode()I
+PLcom/android/server/timezonedetector/ConfigurationInternal;->isAutoDetectionSupported()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->isGeoDetectionSupported()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->isTelephonyDetectionSupported()Z
+PLcom/android/server/timezonedetector/ConfigurationInternal;->toString()Ljava/lang/String;
+PLcom/android/server/timezonedetector/CurrentUserIdentityInjector$Real;-><init>()V
+PLcom/android/server/timezonedetector/CurrentUserIdentityInjector;-><clinit>()V
+PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl$1;-><init>(Lcom/android/server/timezonedetector/DeviceActivityMonitorImpl;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;->addListener(Lcom/android/server/timezonedetector/DeviceActivityMonitor$Listener;)V
+PLcom/android/server/timezonedetector/DeviceActivityMonitorImpl;->create(Landroid/content/Context;Landroid/os/Handler;)Lcom/android/server/timezonedetector/DeviceActivityMonitor;
+PLcom/android/server/timezonedetector/EnvironmentImpl;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/timezonedetector/EnvironmentImpl;->addDebugLogEntry(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/EnvironmentImpl;->elapsedRealtimeMillis()J
+PLcom/android/server/timezonedetector/ReferenceWithHistory;-><init>(I)V
+PLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;
+PLcom/android/server/timezonedetector/ReferenceWithHistory;->set(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$1;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl$2;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;Landroid/os/Handler;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->-$$Nest$mhandleConfigurationInternalChangeOnMainThread(Lcom/android/server/timezonedetector/ServiceConfigAccessorImpl;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;-><clinit>()V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->addConfigurationInternalChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getAutoDetectionEnabledSetting()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getConfigBoolean(I)Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getConfigurationInternal(I)Lcom/android/server/timezonedetector/ConfigurationInternal;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getCurrentUserConfigurationInternal()Lcom/android/server/timezonedetector/ConfigurationInternal;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionEnabledSetting(I)Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionRunInBackgroundEnabled()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getGeoDetectionSettingEnabledOverride()Ljava/util/Optional;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getInstance(Landroid/content/Context;)Lcom/android/server/timezonedetector/ServiceConfigAccessor;
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->getLocationEnabledSetting(I)Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->handleConfigurationInternalChangeOnMainThread()V
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isEnhancedMetricsCollectionEnabled()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoDetectionEnabledForUsersByDefault()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoTimeZoneDetectionFeatureSupported()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isGeoTimeZoneDetectionFeatureSupportedInConfig()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isTelephonyFallbackSupported()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isTelephonyTimeZoneDetectionFeatureSupported()Z
+PLcom/android/server/timezonedetector/ServiceConfigAccessorImpl;->isUserConfigAllowed(I)Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorInternalImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CurrentUserIdentityInjector;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle$1;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;->onStart()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->$r8$lambda$J5BTZ2OuJb4gvpwYS14bI1HdOpU(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/CallerIdentityInjector;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->addDumpable(Lcom/android/server/timezonedetector/Dumpable;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->enforceSuggestTelephonyTimeZonePermission()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->lambda$suggestTelephonyTimeZone$2(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->suggestTelephonyTimeZone(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$$ExternalSyntheticLambda0;->onChange()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedTelephonyTimeZoneSuggestion;-><init>(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;I)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->$r8$lambda$hV1MXuLGe7uQyLHj3fxKJrKy5nM(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;-><init>(Lcom/android/server/timezonedetector/ServiceConfigAccessor;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$Environment;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->addChangeListener(Lcom/android/server/timezonedetector/StateChangeListener;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->create(Landroid/os/Handler;Lcom/android/server/timezonedetector/ServiceConfigAccessor;)Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createLocationAlgorithmStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)Landroid/app/time/LocationTimeZoneAlgorithmStatus;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createTelephonyAlgorithmStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;)Landroid/app/time/TelephonyTimeZoneAlgorithmStatus;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->createTimeZoneDetectorStatus(Lcom/android/server/timezonedetector/ConfigurationInternal;Lcom/android/server/timezonedetector/LocationAlgorithmEvent;)Landroid/app/time/TimeZoneDetectorStatus;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->doAutoTimeZoneDetection(Lcom/android/server/timezonedetector/ConfigurationInternal;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->handleConfigurationInternalMaybeChanged()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->logTimeZoneDebugInfo(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->notifyStateChangeListenersAsynchronously()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->scoreTelephonySuggestion(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)I
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->suggestTelephonyTimeZone(Landroid/app/timezonedetector/TelephonyTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateCurrentConfigurationInternalIfRequired(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->updateDetectorStatus()Z
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/timezonedetector/location/LocationTimeZoneManagerService$Lifecycle;->onStart()V
+PLcom/android/server/tracing/TracingServiceProxy$1;-><init>(Lcom/android/server/tracing/TracingServiceProxy;)V
+PLcom/android/server/tracing/TracingServiceProxy;-><init>(Landroid/content/Context;)V
+PLcom/android/server/tracing/TracingServiceProxy;->onStart()V
+PLcom/android/server/trust/TrustArchive;-><init>()V
+PLcom/android/server/trust/TrustManagerService$1;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(II)Z
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(II)Z
+PLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/os/Looper;)V
+PLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/trust/TrustManagerService$3;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+PLcom/android/server/trust/TrustManagerService$Injector;-><init>(Lcom/android/internal/widget/LockPatternUtils;Landroid/os/Looper;)V
+PLcom/android/server/trust/TrustManagerService$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+PLcom/android/server/trust/TrustManagerService$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+PLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$Receiver-IA;)V
+PLcom/android/server/trust/TrustManagerService$Receiver;->getUserId(Landroid/content/Intent;)I
+PLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V
+PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
+PLcom/android/server/trust/TrustManagerService$TrustState;->$values()[Lcom/android/server/trust/TrustManagerService$TrustState;
+PLcom/android/server/trust/TrustManagerService$TrustState;-><clinit>()V
+PLcom/android/server/trust/TrustManagerService$TrustState;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/trust/TrustManagerService;->-$$Nest$fgetmLockPatternUtils(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils;
+PLcom/android/server/trust/TrustManagerService;->-$$Nest$mresolveProfileParent(Lcom/android/server/trust/TrustManagerService;I)I
+PLcom/android/server/trust/TrustManagerService;-><clinit>()V
+PLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;Lcom/android/server/trust/TrustManagerService$Injector;)V
+PLcom/android/server/trust/TrustManagerService;->aggregateIsActiveUnlockRunning(I)Z
+PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z
+PLcom/android/server/trust/TrustManagerService;->aggregateIsTrustable(I)Z
+PLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z
+PLcom/android/server/trust/TrustManagerService;->checkNewAgents()V
+PLcom/android/server/trust/TrustManagerService;->checkNewAgentsForUser(I)V
+PLcom/android/server/trust/TrustManagerService;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
+PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZZIILjava/util/List;)V
+PLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V
+PLcom/android/server/trust/TrustManagerService;->getTrustGrantedMessages(I)Ljava/util/List;
+PLcom/android/server/trust/TrustManagerService;->getUserTrustStateInner(I)Lcom/android/server/trust/TrustManagerService$TrustState;
+PLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z
+PLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z
+PLcom/android/server/trust/TrustManagerService;->maybeActiveUnlockRunningChanged(I)V
+PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(I)V
+PLcom/android/server/trust/TrustManagerService;->notifyKeystoreOfDeviceLockState(IZ)V
+PLcom/android/server/trust/TrustManagerService;->notifyTrustAgentsOfDeviceLockState(IZ)V
+PLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V
+PLcom/android/server/trust/TrustManagerService;->onStart()V
+PLcom/android/server/trust/TrustManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/trust/TrustManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
+PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V
+PLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(II)V
+PLcom/android/server/trust/TrustManagerService;->resolveAllowedTrustAgents(Landroid/content/pm/PackageManager;I)Ljava/util/List;
+HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
+PLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V
+PLcom/android/server/trust/TrustManagerService;->updateTrust(II)V
+PLcom/android/server/trust/TrustManagerService;->updateTrust(IILcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/trust/TrustManagerService;->updateTrust(IIZLcom/android/internal/infra/AndroidFuture;)V
+HSPLcom/android/server/tv/TvInputHal;-><clinit>()V
+HPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;I)V
+PLcom/android/server/uri/GrantUri;->resolve(ILandroid/net/Uri;I)Lcom/android/server/uri/GrantUri;
+HSPLcom/android/server/uri/UriGrantsManagerService$H;-><init>(Lcom/android/server/uri/UriGrantsManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;->onBootPhase(I)V
+HSPLcom/android/server/uri/UriGrantsManagerService$Lifecycle;->onStart()V
+HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;-><init>(Lcom/android/server/uri/UriGrantsManagerService;)V
+HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;-><init>(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriGrantsManagerService$LocalService-IA;)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;I)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;II)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkUriPermission(Lcom/android/server/uri/GrantUri;IIZ)Z
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->internalCheckGrantUriPermissionFromIntent(Landroid/content/Intent;ILjava/lang/String;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->onSystemReady()V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionsForPackage(Ljava/lang/String;IZZ)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+PLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;IILjava/lang/String;I)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$fgetmLock(Lcom/android/server/uri/UriGrantsManagerService;)Ljava/lang/Object;
+HPLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckGrantUriPermissionFromIntentUnlocked(Lcom/android/server/uri/UriGrantsManagerService;ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckGrantUriPermissionUnlocked(Lcom/android/server/uri/UriGrantsManagerService;ILjava/lang/String;Landroid/net/Uri;II)I
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mcheckUriPermissionLocked(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/GrantUri;II)Z
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$menforceNotIsolatedCaller(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mgrantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mreadGrantedUriPermissionsLocked(Lcom/android/server/uri/UriGrantsManagerService;)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mremoveUriPermissionsForPackageLocked(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;IZZ)V
+PLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mrevokeUriPermission(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->-$$Nest$mstart(Lcom/android/server/uri/UriGrantsManagerService;)V
+HSPLcom/android/server/uri/UriGrantsManagerService;-><init>()V
+HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Lcom/android/server/uri/UriGrantsManagerService-IA;)V
+HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Ljava/io/File;Ljava/lang/String;)V
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntentUnlocked(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;ILjava/lang/Integer;)Lcom/android/server/uri/NeededUriGrants;
+PLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Landroid/net/Uri;II)I
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I
+HPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternalUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z
+PLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsUnlocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;II)Z
+PLcom/android/server/uri/UriGrantsManagerService;->checkUriPermissionLocked(Lcom/android/server/uri/GrantUri;II)Z
+PLcom/android/server/uri/UriGrantsManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
+PLcom/android/server/uri/UriGrantsManagerService;->enforceRequireContentUriPermissionFromCaller(Ljava/lang/Integer;Lcom/android/server/uri/GrantUri;I)V
+PLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(Ljava/lang/String;III)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwnerUnlocked(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
+PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUnlocked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
+HPLcom/android/server/uri/UriGrantsManagerService;->isContentUriWithAccessModeFlags(Lcom/android/server/uri/GrantUri;ILjava/lang/String;)Z
+PLcom/android/server/uri/UriGrantsManagerService;->readGrantedUriPermissionsLocked()V
+PLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionsForPackageLocked(Ljava/lang/String;IZZ)V
+PLcom/android/server/uri/UriGrantsManagerService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+PLcom/android/server/uri/UriGrantsManagerService;->revokeUriPermissionLocked(Ljava/lang/String;ILcom/android/server/uri/GrantUri;IZ)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->start()V
+PLcom/android/server/uri/UriMetricsHelper$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/uri/UriMetricsHelper;)V
+HSPLcom/android/server/uri/UriMetricsHelper;-><clinit>()V
+HSPLcom/android/server/uri/UriMetricsHelper;-><init>(Landroid/content/Context;Lcom/android/server/uri/UriMetricsHelper$PersistentUriGrantsProvider;)V
+PLcom/android/server/uri/UriMetricsHelper;->registerPuller()V
+PLcom/android/server/uri/UriPermissionOwner$ExternalToken;-><init>(Lcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriPermissionOwner$ExternalToken;->getOwner()Lcom/android/server/uri/UriPermissionOwner;
+PLcom/android/server/uri/UriPermissionOwner;-><init>(Lcom/android/server/uri/UriGrantsManagerInternal;Ljava/lang/Object;)V
+HPLcom/android/server/uri/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/uri/UriPermissionOwner;
+PLcom/android/server/uri/UriPermissionOwner;->getExternalToken()Landroid/os/Binder;
+PLcom/android/server/uri/UriPermissionOwner;->removeUriPermission(Lcom/android/server/uri/GrantUri;ILjava/lang/String;I)V
+HPLcom/android/server/usage/AppIdleHistory$AppUsageHistory;-><init>()V
+PLcom/android/server/usage/AppIdleHistory;-><init>(Ljava/io/File;J)V
+HPLcom/android/server/usage/AppIdleHistory;->getAppStandbyBucket(Ljava/lang/String;IJ)I
+PLcom/android/server/usage/AppIdleHistory;->getAppStandbyBuckets(IZ)Ljava/util/ArrayList;
+HPLcom/android/server/usage/AppIdleHistory;->getAppStandbyReason(Ljava/lang/String;IJ)I
+HPLcom/android/server/usage/AppIdleHistory;->getAppUsageHistory(Ljava/lang/String;IJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
+HPLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
+PLcom/android/server/usage/AppIdleHistory;->getEstimatedLaunchTime(Ljava/lang/String;IJ)J
+HPLcom/android/server/usage/AppIdleHistory;->getIntValue(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
+HPLcom/android/server/usage/AppIdleHistory;->getLongValue(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
+HPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;JZ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
+PLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J
+PLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File;
+HPLcom/android/server/usage/AppIdleHistory;->getThresholdIndex(Ljava/lang/String;IJ[J[J)I
+PLcom/android/server/usage/AppIdleHistory;->getTimeSinceLastJobRun(Ljava/lang/String;IJ)J
+PLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File;
+HPLcom/android/server/usage/AppIdleHistory;->getUserHistory(I)Landroid/util/ArrayMap;
+HPLcom/android/server/usage/AppIdleHistory;->insertBucketExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)V
+HPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z
+PLcom/android/server/usage/AppIdleHistory;->logAppStandbyBucketChanged(Ljava/lang/String;III)V
+HPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
+HPLcom/android/server/usage/AppIdleHistory;->readBucketExpiryTimes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;)V
+PLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V
+HPLcom/android/server/usage/AppIdleHistory;->removeElapsedExpiryTimes(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;J)V
+HPLcom/android/server/usage/AppIdleHistory;->reportUsage(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;Ljava/lang/String;IIIJJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
+HPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJII)V
+HPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJIIZ)V
+PLcom/android/server/usage/AppIdleHistory;->setEstimatedLaunchTime(Ljava/lang/String;IJJ)V
+HPLcom/android/server/usage/AppIdleHistory;->setLastJobRunTime(Ljava/lang/String;IJ)V
+HPLcom/android/server/usage/AppIdleHistory;->shouldInformListeners(Ljava/lang/String;IJI)Z
+PLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V
+PLcom/android/server/usage/AppIdleHistory;->userFileExists(I)Z
+PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/usage/AppStandbyController$1;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$2;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$2;->onDisplayChanged(I)V
+PLcom/android/server/usage/AppStandbyController$AppStandbyHandler;-><init>(Lcom/android/server/usage/AppStandbyController;Landroid/os/Looper;)V
+HPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;-><init>(Lcom/android/server/usage/AppStandbyController;Landroid/os/Handler;)V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->processProperties(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->start()V
+PLcom/android/server/usage/AppStandbyController$ConstantsObserver;->updateSettings()V
+PLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;-><clinit>()V
+PLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;-><init>()V
+HPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->obtain(Ljava/lang/String;Ljava/lang/String;I)Lcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;
+HPLcom/android/server/usage/AppStandbyController$ContentProviderUsageRecord;->recycle()V
+PLcom/android/server/usage/AppStandbyController$DeviceStateReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$DeviceStateReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController$DeviceStateReceiver-IA;)V
+PLcom/android/server/usage/AppStandbyController$Injector;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HPLcom/android/server/usage/AppStandbyController$Injector;->elapsedRealtime()J
+HPLcom/android/server/usage/AppStandbyController$Injector;->getActiveNetworkScorer()Ljava/lang/String;
+PLcom/android/server/usage/AppStandbyController$Injector;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
+PLcom/android/server/usage/AppStandbyController$Injector;->getBootPhase()I
+PLcom/android/server/usage/AppStandbyController$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/usage/AppStandbyController$Injector;->getDataSystemDirectory()Ljava/io/File;
+PLcom/android/server/usage/AppStandbyController$Injector;->getDeviceConfigProperties([Ljava/lang/String;)Landroid/provider/DeviceConfig$Properties;
+PLcom/android/server/usage/AppStandbyController$Injector;->getLooper()Landroid/os/Looper;
+PLcom/android/server/usage/AppStandbyController$Injector;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/usage/AppStandbyController$Injector;->getRunningUserIds()[I
+HPLcom/android/server/usage/AppStandbyController$Injector;->getValidCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/usage/AppStandbyController$Injector;->isAppIdleEnabled()Z
+PLcom/android/server/usage/AppStandbyController$Injector;->isCharging()Z
+PLcom/android/server/usage/AppStandbyController$Injector;->isDefaultDisplayOn()Z
+HPLcom/android/server/usage/AppStandbyController$Injector;->isNonIdleWhitelisted(Ljava/lang/String;)Z
+HPLcom/android/server/usage/AppStandbyController$Injector;->isWellbeingPackage(Ljava/lang/String;)Z
+PLcom/android/server/usage/AppStandbyController$Injector;->noteEvent(ILjava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController$Injector;->onBootPhase(I)V
+PLcom/android/server/usage/AppStandbyController$Injector;->registerDeviceConfigPropertiesChangedListener(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+PLcom/android/server/usage/AppStandbyController$Injector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
+HPLcom/android/server/usage/AppStandbyController$Injector;->shouldGetExactAlarmBucketElevation(Ljava/lang/String;I)Z
+PLcom/android/server/usage/AppStandbyController$Injector;->updatePowerWhitelistCache()V
+PLcom/android/server/usage/AppStandbyController$Lock;-><init>()V
+PLcom/android/server/usage/AppStandbyController$PackageReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController$PackageReceiver;-><init>(Lcom/android/server/usage/AppStandbyController;Lcom/android/server/usage/AppStandbyController$PackageReceiver-IA;)V
+PLcom/android/server/usage/AppStandbyController$Pool;-><init>([Ljava/lang/Object;)V
+HPLcom/android/server/usage/AppStandbyController$Pool;->obtain()Ljava/lang/Object;
+HPLcom/android/server/usage/AppStandbyController$Pool;->recycle(Ljava/lang/Object;)V
+PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;-><clinit>()V
+PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;-><init>()V
+HPLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->obtain(Ljava/lang/String;IIIZ)Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;
+PLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->recycle()V
+PLcom/android/server/usage/AppStandbyController;->$r8$lambda$U2-GF_fLZHT7_Jm_uRMpoT-uHZQ(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController;->$r8$lambda$vJLDXlUh4fYgit4sBALnnUw4CrE(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleEnabled(Lcom/android/server/usage/AppStandbyController;)Z
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleHistory(Lcom/android/server/usage/AppStandbyController;)Lcom/android/server/usage/AppIdleHistory;
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmAppIdleLock(Lcom/android/server/usage/AppStandbyController;)Ljava/lang/Object;
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmContext(Lcom/android/server/usage/AppStandbyController;)Landroid/content/Context;
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmHandler(Lcom/android/server/usage/AppStandbyController;)Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$fgetmPendingIdleStateChecks(Lcom/android/server/usage/AppStandbyController;)Landroid/util/SparseLongArray;
+HPLcom/android/server/usage/AppStandbyController;->-$$Nest$mcheckAndUpdateStandbyState(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;IIJ)V
+HPLcom/android/server/usage/AppStandbyController;->-$$Nest$minformListeners(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;IIIZ)V
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$minformParoleStateChanged(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$misDisplayOn(Lcom/android/server/usage/AppStandbyController;)Z
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$mreportContentProviderUsage(Lcom/android/server/usage/AppStandbyController;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController;->-$$Nest$mwaitForAdminData(Lcom/android/server/usage/AppStandbyController;)V
+PLcom/android/server/usage/AppStandbyController;-><clinit>()V
+PLcom/android/server/usage/AppStandbyController;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/usage/AppStandbyController;-><init>(Lcom/android/server/usage/AppStandbyController$Injector;)V
+PLcom/android/server/usage/AppStandbyController;->addListener(Lcom/android/server/usage/AppStandbyInternal$AppIdleStateChangeListener;)V
+HPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V
+HPLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z
+PLcom/android/server/usage/AppStandbyController;->clearCarrierPrivilegedApps()V
+PLcom/android/server/usage/AppStandbyController;->fetchCarrierPrivilegedAppsCPL()V
+HPLcom/android/server/usage/AppStandbyController;->getAppMinBucket(Ljava/lang/String;II)I
+HPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucket(Ljava/lang/String;IJZ)I
+HPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucketReason(Ljava/lang/String;IJ)I
+PLcom/android/server/usage/AppStandbyController;->getAppStandbyBuckets(I)Ljava/util/List;
+HPLcom/android/server/usage/AppStandbyController;->getBucketForLocked(Ljava/lang/String;IJ)I
+HPLcom/android/server/usage/AppStandbyController;->getCrossProfileTargets(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/usage/AppStandbyController;->getEstimatedLaunchTime(Ljava/lang/String;I)J
+HPLcom/android/server/usage/AppStandbyController;->getIdleUidsForUser(I)[I
+HPLcom/android/server/usage/AppStandbyController;->getMinBucketWithValidExpiryTime(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;IJ)I
+PLcom/android/server/usage/AppStandbyController;->getSystemPackagesWithLauncherActivities()Ljava/util/Set;
+PLcom/android/server/usage/AppStandbyController;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
+HPLcom/android/server/usage/AppStandbyController;->informListeners(Ljava/lang/String;IIIZ)V
+PLcom/android/server/usage/AppStandbyController;->informParoleStateChanged()V
+HPLcom/android/server/usage/AppStandbyController;->isActiveDeviceAdmin(Ljava/lang/String;I)Z
+HPLcom/android/server/usage/AppStandbyController;->isActiveNetworkScorer(Ljava/lang/String;)Z
+HPLcom/android/server/usage/AppStandbyController;->isAdminProtectedPackages(Ljava/lang/String;I)Z
+HPLcom/android/server/usage/AppStandbyController;->isAppIdleEnabled()Z
+HPLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
+HPLcom/android/server/usage/AppStandbyController;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z
+HPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z
+HPLcom/android/server/usage/AppStandbyController;->isDeviceProvisioningPackage(Ljava/lang/String;)Z
+PLcom/android/server/usage/AppStandbyController;->isDisplayOn()Z
+HPLcom/android/server/usage/AppStandbyController;->isHeadlessSystemApp(Ljava/lang/String;)Z
+HPLcom/android/server/usage/AppStandbyController;->isInParole()Z
+PLcom/android/server/usage/AppStandbyController;->isUserUsage(I)Z
+PLcom/android/server/usage/AppStandbyController;->loadHeadlessSystemAppCache()V
+HPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V
+PLcom/android/server/usage/AppStandbyController;->notifyBatteryStats(Ljava/lang/String;IZ)V
+PLcom/android/server/usage/AppStandbyController;->onAdminDataAvailable()V
+HPLcom/android/server/usage/AppStandbyController;->onBootPhase(I)V
+HPLcom/android/server/usage/AppStandbyController;->onUsageEvent(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/AppStandbyController;->postCheckIdleStates(I)V
+PLcom/android/server/usage/AppStandbyController;->postOneTimeCheckIdleStates()V
+PLcom/android/server/usage/AppStandbyController;->postParoleStateChanged()V
+HPLcom/android/server/usage/AppStandbyController;->postReportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/usage/AppStandbyController;->predictionTimedOut(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;J)Z
+HPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/usage/AppStandbyController;->reportEventLocked(Ljava/lang/String;IJI)V
+PLcom/android/server/usage/AppStandbyController;->setActiveAdminApps(Ljava/util/Set;I)V
+PLcom/android/server/usage/AppStandbyController;->setAppIdleEnabled(Z)V
+PLcom/android/server/usage/AppStandbyController;->setChargingState(Z)V
+PLcom/android/server/usage/AppStandbyController;->setEstimatedLaunchTime(Ljava/lang/String;IJ)V
+HPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V
+PLcom/android/server/usage/AppStandbyController;->updateHeadlessSystemAppCache(Ljava/lang/String;Z)Z
+PLcom/android/server/usage/AppStandbyController;->updatePowerWhitelistCache()V
+PLcom/android/server/usage/AppStandbyController;->usageEventToSubReason(I)I
+PLcom/android/server/usage/AppStandbyController;->waitForAdminData()V
+PLcom/android/server/usage/AppTimeLimitController$Lock;-><init>()V
+PLcom/android/server/usage/AppTimeLimitController$Lock;-><init>(Lcom/android/server/usage/AppTimeLimitController$Lock-IA;)V
+PLcom/android/server/usage/AppTimeLimitController$MyHandler;-><init>(Lcom/android/server/usage/AppTimeLimitController;Landroid/os/Looper;)V
+PLcom/android/server/usage/AppTimeLimitController$UserData;-><init>(Lcom/android/server/usage/AppTimeLimitController;I)V
+PLcom/android/server/usage/AppTimeLimitController$UserData;-><init>(Lcom/android/server/usage/AppTimeLimitController;ILcom/android/server/usage/AppTimeLimitController$UserData-IA;)V
+PLcom/android/server/usage/AppTimeLimitController;-><clinit>()V
+PLcom/android/server/usage/AppTimeLimitController;-><init>(Landroid/content/Context;Lcom/android/server/usage/AppTimeLimitController$TimeLimitCallbackListener;Landroid/os/Looper;)V
+PLcom/android/server/usage/AppTimeLimitController;->getElapsedRealtime()J
+PLcom/android/server/usage/AppTimeLimitController;->getOrCreateUserDataLocked(I)Lcom/android/server/usage/AppTimeLimitController$UserData;
+PLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;I)V
+PLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;IJ)V
+PLcom/android/server/usage/AppTimeLimitController;->noteUsageStop(Ljava/lang/String;I)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda1;->apply(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$$ExternalSyntheticLambda3;->apply(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;-><init>(Ljava/util/function/Supplier;Ljava/util/function/IntFunction;I)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$LogBuffer;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;-><init>(Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent-IA;)V
+PLcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;->reset()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$W1F85tjQJ7p6e3fOCAIRsqTjcl4(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$lW8VT65-e47HoACtwf8YZwpc8Xs()Lcom/android/server/usage/BroadcastResponseStatsLogger$NotificationEvent;
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->$r8$lambda$wkyHpYbAHm1Dorsn7ksUN7TwqCk(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger;-><clinit>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger;-><init>()V
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->lambda$new$0(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->lambda$new$1(I)Ljava/lang/Object;
+PLcom/android/server/usage/BroadcastResponseStatsLogger;->logNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/BroadcastResponseStatsTracker;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;-><init>(Lcom/android/server/usage/AppStandbyInternal;Landroid/content/Context;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->getBroadcastEventsLocked(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/util/ArraySet;
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->onSystemServicesReady(Landroid/content/Context;)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationEvent(ILjava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/BroadcastResponseStatsTracker;->reportNotificationPosted(Ljava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/IntervalStats$EventTracker;-><init>()V
+PLcom/android/server/usage/IntervalStats$EventTracker;->commitTime(J)V
+PLcom/android/server/usage/IntervalStats$EventTracker;->update(J)V
+HPLcom/android/server/usage/IntervalStats;-><init>()V
+HPLcom/android/server/usage/IntervalStats;->addEvent(Landroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/IntervalStats;->deobfuscateData(Lcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z
+PLcom/android/server/usage/IntervalStats;->deobfuscateUsageStats(Lcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/android/server/usage/IntervalStats;->getCachedStringRef(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
+HPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;
+PLcom/android/server/usage/IntervalStats;->incrementAppLaunchCount(Ljava/lang/String;)V
+PLcom/android/server/usage/IntervalStats;->obfuscateData(Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/IntervalStats;->obfuscateEventsData(Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/IntervalStats;->obfuscateUsageStatsData(Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V
+PLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V
+PLcom/android/server/usage/IntervalStats;->updateScreenInteractive(J)V
+PLcom/android/server/usage/PackagesTokenData;-><init>()V
+PLcom/android/server/usage/PackagesTokenData;->getPackageString(I)Ljava/lang/String;
+HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(Ljava/lang/String;J)I
+PLcom/android/server/usage/PackagesTokenData;->getString(II)Ljava/lang/String;
+HPLcom/android/server/usage/PackagesTokenData;->getTokenOrAdd(ILjava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/usage/StorageStatsService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$1;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/usage/StorageStatsService$2;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$H;-><init>(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V
+PLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy;
+HPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/StorageStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V
+PLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService$LocalService-IA;)V
+PLcom/android/server/usage/StorageStatsService$LocalService;->registerStorageStatsAugmenter(Lcom/android/server/usage/StorageStatsManagerLocal$StorageStatsAugmenter;Ljava/lang/String;)V
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmCacheQuotas(Lcom/android/server/usage/StorageStatsService;)Landroid/util/ArrayMap;
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmContext(Lcom/android/server/usage/StorageStatsService;)Landroid/content/Context;
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmInstaller(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer;
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmLock(Lcom/android/server/usage/StorageStatsService;)Ljava/lang/Object;
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmStorageStatsAugmenters(Lcom/android/server/usage/StorageStatsService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$fgetmStorageThresholdPercentHigh(Lcom/android/server/usage/StorageStatsService;)I
+PLcom/android/server/usage/StorageStatsService;->-$$Nest$minvalidateMounts(Lcom/android/server/usage/StorageStatsService;)V
+PLcom/android/server/usage/StorageStatsService;-><clinit>()V
+HPLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usage/StorageStatsService;->invalidateMounts()V
+PLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z
+PLcom/android/server/usage/StorageStatsService;->updateConfig()V
+PLcom/android/server/usage/UnixCalendar;-><init>(J)V
+PLcom/android/server/usage/UnixCalendar;->addDays(I)V
+PLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J
+PLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V
+PLcom/android/server/usage/UsageStatsDatabase$1;-><init>(Lcom/android/server/usage/UsageStatsDatabase;)V
+PLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
+PLcom/android/server/usage/UsageStatsDatabase;-><clinit>()V
+PLcom/android/server/usage/UsageStatsDatabase;-><init>(Ljava/io/File;)V
+PLcom/android/server/usage/UsageStatsDatabase;-><init>(Ljava/io/File;I)V
+PLcom/android/server/usage/UsageStatsDatabase;->checkVersionAndBuildLocked()V
+PLcom/android/server/usage/UsageStatsDatabase;->filterStats(Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsDatabase;->findBestFitBucket(JJ)I
+PLcom/android/server/usage/UsageStatsDatabase;->getBuildFingerprint()Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/android/server/usage/IntervalStats;
+PLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V
+PLcom/android/server/usage/UsageStatsDatabase;->init(J)V
+PLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z
+PLcom/android/server/usage/UsageStatsDatabase;->obfuscateCurrentStats([Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Landroid/util/AtomicFile;)J
+PLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Ljava/io/File;)J
+PLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;
+PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;Z)Z
+PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;Z)V
+PLcom/android/server/usage/UsageStatsDatabase;->readLocked(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;Z)Z
+PLcom/android/server/usage/UsageStatsDatabase;->readMappingsLocked()V
+PLcom/android/server/usage/UsageStatsDatabase;->wasUpgradePerformed()Z
+PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
+PLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
+PLcom/android/server/usage/UsageStatsDatabase;->writeMappingsLocked()V
+PLcom/android/server/usage/UsageStatsIdleService;->scheduleJobInternal(Landroid/content/Context;Landroid/app/job/JobInfo;Ljava/lang/String;I)V
+PLcom/android/server/usage/UsageStatsIdleService;->scheduleUpdateMappingsJob(Landroid/content/Context;I)V
+PLcom/android/server/usage/UsageStatsProtoV2;-><clinit>()V
+PLcom/android/server/usage/UsageStatsProtoV2;->getOffsetTimestamp(JJ)J
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadConfigStats(Landroid/util/proto/ProtoInputStream;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->loadCountAndTime(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats$EventTracker;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->loadPackagesMap(Landroid/util/proto/ProtoInputStream;Landroid/util/SparseArray;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->parseEvent(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageEvents$Event;
+HPLcom/android/server/usage/UsageStatsProtoV2;->parseUsageStats(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageStats;
+PLcom/android/server/usage/UsageStatsProtoV2;->parseUserInteractionEventExtras(Landroid/util/proto/ProtoInputStream;)Landroid/app/usage/UsageEvents$Event$UserInteractionEventExtrasToken;
+HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;Z)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->readObfuscatedData(Ljava/io/InputStream;Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeConfigStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/ConfigurationStats;Z)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeCountAndTime(Landroid/util/proto/ProtoOutputStream;JIJ)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeEvent(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeObfuscatedData(Ljava/io/OutputStream;Lcom/android/server/usage/PackagesTokenData;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeOffsetTimestamp(Landroid/util/proto/ProtoOutputStream;JJJ)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageStats;)V
+PLcom/android/server/usage/UsageStatsProtoV2;->writeUserInteractionEventExtras(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageEvents$Event$UserInteractionEventExtrasToken;)V
+PLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HPLcom/android/server/usage/UsageStatsService$$ExternalSyntheticLambda0;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/usage/UsageStatsService$1;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HPLcom/android/server/usage/UsageStatsService$1;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+PLcom/android/server/usage/UsageStatsService$2;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$3;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$3;->onUidGone(IZ)V
+HPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V
+PLcom/android/server/usage/UsageStatsService$ActivityData;->-$$Nest$fgetmUsageSourcePackage(Lcom/android/server/usage/UsageStatsService$ActivityData;)Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/usage/UsageStatsService$ActivityData-IA;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$BinderService-IA;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->canReportUsageStats()Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->hasQueryPermission(Ljava/lang/String;)Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->isCallingUidSystem()Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->onCarrierPrivilegedAppsChanged()V
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryUsageStats(IJJLjava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/usage/UsageStatsService$BinderService;->reportUserInteractionInnerHelper(Ljava/lang/String;ILandroid/os/PersistableBundle;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->reportUserInteractionWithBundle(Ljava/lang/String;ILandroid/os/PersistableBundle;)V
+PLcom/android/server/usage/UsageStatsService$H;-><init>(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V
+HPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/UsageStatsService$Injector;-><init>()V
+PLcom/android/server/usage/UsageStatsService$Injector;->getAppStandbyController(Landroid/content/Context;)Lcom/android/server/usage/AppStandbyInternal;
+PLcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;-><init>(Lcom/android/server/usage/UsageStatsService;ILandroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$LocalService-IA;)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(Ljava/lang/String;IJ)I
+PLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I)[I
+PLcom/android/server/usage/UsageStatsService$LocalService;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
+HPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z
+PLcom/android/server/usage/UsageStatsService$LocalService;->onAdminDataAvailable()V
+PLcom/android/server/usage/UsageStatsService$LocalService;->queryEventsForUser(IJJI)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService$LocalService;->registerLaunchTimeChangedListener(Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->registerListener(Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;IIILandroid/content/ComponentName;)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Ljava/lang/String;II)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->reportInterruptiveNotification(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->reportNotificationPosted(Ljava/lang/String;Landroid/os/UserHandle;J)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->setActiveAdminApps(Ljava/util/Set;I)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V
+PLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$MyPackageMonitor-IA;)V
+PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$UidRemovedReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UidRemovedReceiver-IA;)V
+PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$UserActionsReceiver-IA;)V
+PLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/usage/UsageStatsService;->$r8$lambda$TpcNng9zAtQEa_4AWZmaJYBdR0c(Lcom/android/server/usage/UsageStatsService;Landroid/os/Message;)Z
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmEstimatedLaunchTimeChangedListeners(Lcom/android/server/usage/UsageStatsService;)Ljava/util/concurrent/CopyOnWriteArraySet;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmHandler(Lcom/android/server/usage/UsageStatsService;)Landroid/os/Handler;
+HPLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmIoHandler(Lcom/android/server/usage/UsageStatsService;)Landroid/os/Handler;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmLock(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmPendingLaunchTimeChangePackages(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseSetArray;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$fgetmResponseStatsTracker(Lcom/android/server/usage/UsageStatsService;)Lcom/android/server/usage/BroadcastResponseStatsTracker;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$mgetTrimmedString(Lcom/android/server/usage/UsageStatsService;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$mloadGlobalComponentUsageLocked(Lcom/android/server/usage/UsageStatsService;)V
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$monUserUnlocked(Lcom/android/server/usage/UsageStatsService;I)V
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$mregisterLaunchTimeChangedListener(Lcom/android/server/usage/UsageStatsService;Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$mregisterListener(Lcom/android/server/usage/UsageStatsService;Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
+HPLcom/android/server/usage/UsageStatsService;->-$$Nest$mreportEventOrAddToQueue(Lcom/android/server/usage/UsageStatsService;ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/UsageStatsService;->-$$Nest$mshouldObfuscateInstantAppsForCaller(Lcom/android/server/usage/UsageStatsService;II)Z
+PLcom/android/server/usage/UsageStatsService;-><clinit>()V
+PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;Lcom/android/server/usage/UsageStatsService$Injector;)V
+PLcom/android/server/usage/UsageStatsService;->calculateEstimatedPackageLaunchTime(ILjava/lang/String;)J
+PLcom/android/server/usage/UsageStatsService;->calculateNextLaunchTime(ZJ)J
+HPLcom/android/server/usage/UsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/UsageStatsService;->deleteLegacyUserDir(I)V
+PLcom/android/server/usage/UsageStatsService;->deleteRecursively(Ljava/io/File;)V
+PLcom/android/server/usage/UsageStatsService;->getAppUsageEventOccurredAtomEventType(I)I
+PLcom/android/server/usage/UsageStatsService;->getDpmInternal()Landroid/app/admin/DevicePolicyManagerInternal;
+PLcom/android/server/usage/UsageStatsService;->getEstimatedPackageLaunchTime(ILjava/lang/String;)J
+PLcom/android/server/usage/UsageStatsService;->getInstalledPackages(I)Ljava/util/HashMap;
+PLcom/android/server/usage/UsageStatsService;->getOrCreateLaunchTimeAlarmQueue(I)Lcom/android/server/usage/UsageStatsService$LaunchTimeAlarmQueue;
+PLcom/android/server/usage/UsageStatsService;->getShortcutServiceInternal()Landroid/content/pm/ShortcutServiceInternal;
+PLcom/android/server/usage/UsageStatsService;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsService;->getUsageEventProcessingHandler()Landroid/os/Handler;
+PLcom/android/server/usage/UsageStatsService;->getUsageSourcePackage(Landroid/app/usage/UsageEvents$Event;)Ljava/lang/String;
+HPLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;
+HPLcom/android/server/usage/UsageStatsService;->handleEstimatedLaunchTimesOnUserUnlock(I)V
+PLcom/android/server/usage/UsageStatsService;->initializeUserUsageStatsServiceLocked(IJLjava/util/HashMap;Z)V
+HPLcom/android/server/usage/UsageStatsService;->isInstantApp(Ljava/lang/String;I)Z
+HPLcom/android/server/usage/UsageStatsService;->lambda$new$0(Landroid/os/Message;)Z
+PLcom/android/server/usage/UsageStatsService;->loadGlobalComponentUsageLocked()V
+PLcom/android/server/usage/UsageStatsService;->loadPendingEventsLocked(ILjava/util/LinkedList;)V
+HPLcom/android/server/usage/UsageStatsService;->logAppUsageEventReportedAtomLocked(IILjava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService;->migrateStatsToSystemCeIfNeededLocked(I)V
+PLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V
+HPLcom/android/server/usage/UsageStatsService;->onStart()V
+PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V
+PLcom/android/server/usage/UsageStatsService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+HPLcom/android/server/usage/UsageStatsService;->onUserUnlocked(I)V
+PLcom/android/server/usage/UsageStatsService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/usage/UsageStatsService;->publishBinderServices()V
+PLcom/android/server/usage/UsageStatsService;->queryEarliestAppEvents(IJJI)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService;->queryEarliestEventsForPackage(IJJLjava/lang/String;I)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService;->queryEvents(IJJI)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService;->queryEventsWithQueryFilters(IJJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List;
+PLcom/android/server/usage/UsageStatsService;->readUsageSourceSetting()V
+PLcom/android/server/usage/UsageStatsService;->registerLaunchTimeChangedListener(Landroid/app/usage/UsageStatsManagerInternal$EstimatedLaunchTimeChangedListener;)V
+PLcom/android/server/usage/UsageStatsService;->registerListener(Landroid/app/usage/UsageStatsManagerInternal$UsageEventListener;)V
+HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V
+HPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/UsageStatsService;->shouldDeleteObsoleteData(Landroid/os/UserHandle;)Z
+PLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z
+PLcom/android/server/usage/UsageStatsService;->stageChangedEstimatedLaunchTime(ILjava/lang/String;)Z
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda1;-><init>(JJLandroid/util/ArraySet;Landroid/util/ArraySet;I)V
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;-><init>(JJLjava/lang/String;I)V
+PLcom/android/server/usage/UserUsageStatsService$$ExternalSyntheticLambda2;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$1;-><init>()V
+PLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$2;-><init>()V
+PLcom/android/server/usage/UserUsageStatsService$3;-><init>()V
+PLcom/android/server/usage/UserUsageStatsService$4;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZ[ZIZLandroid/util/ArraySet;Landroid/util/ArraySet;)V
+HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents;-><init>()V
+PLcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents;-><init>(Lcom/android/server/usage/UserUsageStatsService$CachedEarlyEvents-IA;)V
+PLcom/android/server/usage/UserUsageStatsService;->$r8$lambda$g-bl5VNBpy8gjNFALWiQqGzaU1A(JJLjava/lang/String;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService;->$r8$lambda$p0y5lz5q5TqvoITutDfa1s61KzA(JJLandroid/util/ArraySet;Landroid/util/ArraySet;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+PLcom/android/server/usage/UserUsageStatsService;-><clinit>()V
+PLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V
+HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J
+HPLcom/android/server/usage/UserUsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UserUsageStatsService;->eventToString(I)Ljava/lang/String;
+PLcom/android/server/usage/UserUsageStatsService;->init(JLjava/util/HashMap;Z)V
+HPLcom/android/server/usage/UserUsageStatsService;->lambda$queryEarliestAppEvents$0(JJLandroid/util/ArraySet;Landroid/util/ArraySet;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+HPLcom/android/server/usage/UserUsageStatsService;->lambda$queryEarliestEventsForPackage$2(JJLjava/lang/String;ILcom/android/server/usage/IntervalStats;ZLjava/util/List;)Z
+HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
+PLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V
+PLcom/android/server/usage/UserUsageStatsService;->queryEarliestAppEvents(JJI)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UserUsageStatsService;->queryEarliestEventsForPackage(JJLjava/lang/String;I)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJI[ILandroid/util/ArraySet;)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;Z)Ljava/util/List;
+PLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List;
+PLcom/android/server/usage/UserUsageStatsService;->readPackageMappingsLocked(Ljava/util/HashMap;Z)V
+HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V
+PLcom/android/server/usage/UserUsageStatsService;->validRange(JJJ)Z
+PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;)V
+PLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$Receiver-IA;)V
+PLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V
+PLcom/android/server/usb/UsbAlsaManager$1;-><init>(Lcom/android/server/usb/UsbAlsaManager;Ljava/io/File;I)V
+PLcom/android/server/usb/UsbAlsaManager$DenyListEntry;-><init>(III)V
+PLcom/android/server/usb/UsbAlsaManager;-><clinit>()V
+PLcom/android/server/usb/UsbAlsaManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V
+PLcom/android/server/usb/UsbAlsaManager;->systemReady()V
+PLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$2;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/usb/UsbDeviceManager$3;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$4;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler$AdbTransport;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandler;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->finishBoot(I)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getAppliedFunctions(J)J
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getChargingFunctions()J
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getPinnedSharedPrefs(Landroid/content/Context;)Landroid/content/SharedPreferences;
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getSystemProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isAdbEnabled()Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isTv()Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbDataTransferActive(J)Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendStickyBroadcast(Landroid/content/Intent;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbSpeed()V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(J)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->addFunction(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->applyAdbFunction(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->applyOemOverrideFunction(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->getPersistProp(Z)Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->handlerInitDone(I)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->isNormalBoot()Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->readOemUsbOverrideConfig(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->setEnabledFunctions(JZI)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;->trySetEnabledFunctions(JZ)Z
+PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbDeviceManager$UsbUEventObserver-IA;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;->onUEvent(Landroid/os/UEventObserver$UEvent;)V
+PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$fgetmHandler(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbDeviceManager$UsbHandler;
+PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$sfgetsEventLogger()Lcom/android/server/utils/EventLogger;
+PLcom/android/server/usb/UsbDeviceManager;->-$$Nest$sfgetsUsbOperationCount()Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/usb/UsbDeviceManager;-><clinit>()V
+HPLcom/android/server/usb/UsbDeviceManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbDeviceManager;->bootCompleted()V
+PLcom/android/server/usb/UsbDeviceManager;->initRndisAddress()V
+PLcom/android/server/usb/UsbDeviceManager;->logAndPrintException(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Exception;)V
+PLcom/android/server/usb/UsbDeviceManager;->onKeyguardStateChanged(Z)V
+PLcom/android/server/usb/UsbDeviceManager;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/UsbDeviceManager;->systemReady()V
+PLcom/android/server/usb/UsbHandlerManager;-><clinit>()V
+PLcom/android/server/usb/UsbHandlerManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/usb/UsbHostManager;-><clinit>()V
+PLcom/android/server/usb/UsbPermissionManager;-><clinit>()V
+PLcom/android/server/usb/UsbPermissionManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbPortManager$1;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V
+PLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usb/UsbPortManager;->-$$Nest$fgetmContext(Lcom/android/server/usb/UsbPortManager;)Landroid/content/Context;
+PLcom/android/server/usb/UsbPortManager;->-$$Nest$fputmNotificationManager(Lcom/android/server/usb/UsbPortManager;Landroid/app/NotificationManager;)V
+PLcom/android/server/usb/UsbPortManager;-><clinit>()V
+PLcom/android/server/usb/UsbPortManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbPortManager;->getPorts()[Landroid/hardware/usb/UsbPort;
+PLcom/android/server/usb/UsbPortManager;->getUsbHalVersion()I
+PLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
+PLcom/android/server/usb/UsbPortManager;->logAndPrintException(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Ljava/lang/Exception;)V
+PLcom/android/server/usb/UsbPortManager;->registerForDisplayPortEvents(Landroid/hardware/usb/IDisplayPortAltModeInfoListener;)Z
+PLcom/android/server/usb/UsbPortManager;->systemReady()V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor-IA;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><clinit>()V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbHandlerManager;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V
+PLcom/android/server/usb/UsbService$1;-><init>(Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
+PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
+PLcom/android/server/usb/UsbService$Lifecycle$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/usb/UsbService$Lifecycle;->$r8$lambda$HIZVSW8uTg1XjWF6etZh-bC1WP4(Lcom/android/server/usb/UsbService$Lifecycle;)V
+PLcom/android/server/usb/UsbService$Lifecycle;->$r8$lambda$Mg_De1rrLXj-nb8KhKM4m5DIFVU(Lcom/android/server/usb/UsbService$Lifecycle;)V
+PLcom/android/server/usb/UsbService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbService$Lifecycle;->lambda$onBootPhase$1()V
+PLcom/android/server/usb/UsbService$Lifecycle;->lambda$onStart$0()V
+PLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/usb/UsbService$Lifecycle;->onStart()V
+PLcom/android/server/usb/UsbService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/usb/UsbService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbService;->bootCompleted()V
+PLcom/android/server/usb/UsbService;->getPorts()Ljava/util/List;
+PLcom/android/server/usb/UsbService;->getUsbHalVersion()I
+PLcom/android/server/usb/UsbService;->onSwitchUser(I)V
+PLcom/android/server/usb/UsbService;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbService;->registerForDisplayPortEvents(Landroid/hardware/usb/IDisplayPortAltModeInfoListener;)Z
+PLcom/android/server/usb/UsbService;->systemReady()V
+PLcom/android/server/usb/UsbSettingsManager;-><clinit>()V
+PLcom/android/server/usb/UsbSettingsManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbSettingsManager;->getSettingsForProfileGroup(Landroid/os/UserHandle;)Lcom/android/server/usb/UsbProfileGroupSettingsManager;
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;-><clinit>()V
+PLcom/android/server/usb/hal/gadget/UsbGadgetAidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/usb/hal/gadget/UsbGadgetHalInstance;->getInstance(Lcom/android/server/usb/UsbDeviceManager;Lcom/android/internal/util/IndentingPrintWriter;)Lcom/android/server/usb/hal/gadget/UsbGadgetHal;
+PLcom/android/server/usb/hal/gadget/UsbGadgetHidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/usb/hal/port/UsbPortAidl;-><clinit>()V
+PLcom/android/server/usb/hal/port/UsbPortAidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/usb/hal/port/UsbPortHalInstance;->getInstance(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)Lcom/android/server/usb/hal/port/UsbPortHal;
+PLcom/android/server/usb/hal/port/UsbPortHidl;-><clinit>()V
+PLcom/android/server/usb/hal/port/UsbPortHidl;->isServicePresent(Lcom/android/internal/util/IndentingPrintWriter;)Z
+PLcom/android/server/utils/AlarmQueue$1;-><init>(Lcom/android/server/utils/AlarmQueue;)V
+HPLcom/android/server/utils/AlarmQueue$1;->run()V
+PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->$r8$lambda$a9G3NCnbGSjGaU6KBkUKenfyhOo(Landroid/util/Pair;Landroid/util/Pair;)I
+PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;-><clinit>()V
+PLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;-><init>()V
+HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->lambda$static$0(Landroid/util/Pair;Landroid/util/Pair;)I
+HPLcom/android/server/utils/AlarmQueue$AlarmPriorityQueue;->removeKey(Ljava/lang/Object;)Z
+PLcom/android/server/utils/AlarmQueue$Injector;-><init>()V
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmAlarmTag(Lcom/android/server/utils/AlarmQueue;)Ljava/lang/String;
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmContext(Lcom/android/server/utils/AlarmQueue;)Landroid/content/Context;
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmExactAlarm(Lcom/android/server/utils/AlarmQueue;)Z
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmHandler(Lcom/android/server/utils/AlarmQueue;)Landroid/os/Handler;
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmLock(Lcom/android/server/utils/AlarmQueue;)Ljava/lang/Object;
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmMinTimeBetweenAlarmsMs(Lcom/android/server/utils/AlarmQueue;)J
+PLcom/android/server/utils/AlarmQueue;->-$$Nest$fgetmTriggerTimeElapsed(Lcom/android/server/utils/AlarmQueue;)J
+PLcom/android/server/utils/AlarmQueue;-><clinit>()V
+PLcom/android/server/utils/AlarmQueue;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;ZJ)V
+HPLcom/android/server/utils/AlarmQueue;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;ZJLcom/android/server/utils/AlarmQueue$Injector;)V
+HPLcom/android/server/utils/AlarmQueue;->addAlarm(Ljava/lang/Object;J)V
+HPLcom/android/server/utils/AlarmQueue;->removeAlarmForKey(Ljava/lang/Object;)V
+HPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked()V
+HPLcom/android/server/utils/AlarmQueue;->setNextAlarmLocked(J)V
+HSPLcom/android/server/utils/AnrTimer$FeatureEnabled;-><init>(Lcom/android/server/utils/AnrTimer;)V
+PLcom/android/server/utils/AnrTimer$FeatureEnabled;->accept(Ljava/lang/Object;)Z
+HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->cancel(Ljava/lang/Object;)Z
+PLcom/android/server/utils/AnrTimer$FeatureEnabled;->enabled()Z
+HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->removeLocked(Ljava/lang/Object;)Ljava/lang/Integer;
+HPLcom/android/server/utils/AnrTimer$FeatureEnabled;->start(Ljava/lang/Object;IIJ)V
+HSPLcom/android/server/utils/AnrTimer$FeatureSwitch;-><init>(Lcom/android/server/utils/AnrTimer;)V
+HSPLcom/android/server/utils/AnrTimer$FeatureSwitch;-><init>(Lcom/android/server/utils/AnrTimer;Lcom/android/server/utils/AnrTimer$FeatureSwitch-IA;)V
+HSPLcom/android/server/utils/AnrTimer$Injector;-><init>()V
+HSPLcom/android/server/utils/AnrTimer$Injector;->anrTimerServiceEnabled()Z
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmExtend(Lcom/android/server/utils/AnrTimer;)Z
+HSPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmLabel(Lcom/android/server/utils/AnrTimer;)Ljava/lang/String;
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmLock(Lcom/android/server/utils/AnrTimer;)Ljava/lang/Object;
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmMaxStarted(Lcom/android/server/utils/AnrTimer;)I
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTimerArgMap(Lcom/android/server/utils/AnrTimer;)Landroid/util/SparseArray;
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTimerIdMap(Lcom/android/server/utils/AnrTimer;)Landroid/util/ArrayMap;
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fgetmTotalStarted(Lcom/android/server/utils/AnrTimer;)I
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fputmMaxStarted(Lcom/android/server/utils/AnrTimer;I)V
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$fputmTotalStarted(Lcom/android/server/utils/AnrTimer;I)V
+HSPLcom/android/server/utils/AnrTimer;->-$$Nest$mnativeAnrTimerCreate(Lcom/android/server/utils/AnrTimer;Ljava/lang/String;)J
+PLcom/android/server/utils/AnrTimer;->-$$Nest$mtrace(Lcom/android/server/utils/AnrTimer;Ljava/lang/String;I)V
+HSPLcom/android/server/utils/AnrTimer;->-$$Nest$sfgetsAnrTimerList()Landroid/util/LongSparseArray;
+HSPLcom/android/server/utils/AnrTimer;->-$$Nest$smanrTimerServiceEnabled()Z
+PLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerAccept(JI)Z
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerCancel(JI)Z
+HPLcom/android/server/utils/AnrTimer;->-$$Nest$smnativeAnrTimerStart(JIIJZ)I
+HSPLcom/android/server/utils/AnrTimer;-><clinit>()V
+HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;)V
+HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;Z)V
+HSPLcom/android/server/utils/AnrTimer;-><init>(Landroid/os/Handler;ILjava/lang/String;ZLcom/android/server/utils/AnrTimer$Injector;)V
+PLcom/android/server/utils/AnrTimer;->accept(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/AnrTimer;->anrTimerServiceEnabled()Z
+HPLcom/android/server/utils/AnrTimer;->cancel(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/AnrTimer;->createFeatureSwitch(Z)Lcom/android/server/utils/AnrTimer$FeatureSwitch;
+PLcom/android/server/utils/AnrTimer;->expire(IIIJ)Z
+HSPLcom/android/server/utils/AnrTimer;->nativeTimersSupported()Z
+HPLcom/android/server/utils/AnrTimer;->serviceEnabled()Z
+HPLcom/android/server/utils/AnrTimer;->start(Ljava/lang/Object;IIJ)V
+PLcom/android/server/utils/AnrTimer;->trace(Ljava/lang/String;I)V
+PLcom/android/server/utils/AnrTimer;->trace(Ljava/lang/String;IIIJ)V
+PLcom/android/server/utils/EventLogger$Event;-><clinit>()V
+HPLcom/android/server/utils/EventLogger$Event;-><init>()V
+PLcom/android/server/utils/EventLogger$Event;->printLog(ILjava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/utils/EventLogger$Event;->printLog(Ljava/lang/String;)Lcom/android/server/utils/EventLogger$Event;
+PLcom/android/server/utils/EventLogger$StringEvent;-><init>(Ljava/lang/String;)V
+PLcom/android/server/utils/EventLogger$StringEvent;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/utils/EventLogger$StringEvent;->eventToString()Ljava/lang/String;
+HPLcom/android/server/utils/EventLogger;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/utils/EventLogger;->enqueue(Lcom/android/server/utils/EventLogger$Event;)V
+PLcom/android/server/utils/EventLogger;->enqueueAndLog(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/utils/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/server/utils/FeatureFlagsImpl;->anrTimerService()Z
+HSPLcom/android/server/utils/Flags;-><clinit>()V
+HSPLcom/android/server/utils/Flags;->anrTimerService()Z
+HSPLcom/android/server/utils/FoldSettingProvider;-><clinit>()V
+HSPLcom/android/server/utils/FoldSettingProvider;-><init>(Landroid/content/Context;Lcom/android/internal/util/SettingsWrapper;Lcom/android/internal/foldables/FoldLockSettingAvailabilityProvider;)V
+PLcom/android/server/utils/PriorityDump;->dump(Lcom/android/server/utils/PriorityDump$PriorityDumper;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/utils/Slogf;-><clinit>()V
+PLcom/android/server/utils/Slogf;->d(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/utils/Slogf;->d(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/utils/Slogf;->getMessage(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
+PLcom/android/server/utils/Slogf;->i(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/utils/Slogf;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
+PLcom/android/server/utils/Slogf;->v(Ljava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/utils/Slogf;->w(Ljava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/utils/Slogf;->w(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/utils/SnapshotCache$Auto;-><init>(Lcom/android/server/utils/Snappable;Lcom/android/server/utils/Watchable;Ljava/lang/String;)V
+HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Lcom/android/server/utils/Snappable;
+HSPLcom/android/server/utils/SnapshotCache$Auto;->createSnapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/SnapshotCache$Sealed;-><init>()V
+HSPLcom/android/server/utils/SnapshotCache$Statistics;->-$$Nest$fgetmRebuilt(Lcom/android/server/utils/SnapshotCache$Statistics;)Ljava/util/concurrent/atomic/AtomicInteger;
+HSPLcom/android/server/utils/SnapshotCache$Statistics;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/utils/SnapshotCache;-><clinit>()V
+HSPLcom/android/server/utils/SnapshotCache;-><init>()V
+HSPLcom/android/server/utils/SnapshotCache;-><init>(Ljava/lang/Object;Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/SnapshotCache;-><init>(Ljava/lang/Object;Lcom/android/server/utils/Watchable;Ljava/lang/String;)V
+HSPLcom/android/server/utils/SnapshotCache;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/SnapshotCache;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/Snapshots;->maybeSnapshot(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>()V
+HPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>(Ljava/lang/String;J)V
+HSPLcom/android/server/utils/TimingsTraceAndSlog;->logDuration(Ljava/lang/String;J)V
+HSPLcom/android/server/utils/TimingsTraceAndSlog;->newAsyncLog()Lcom/android/server/utils/TimingsTraceAndSlog;
+HSPLcom/android/server/utils/TimingsTraceAndSlog;->traceBegin(Ljava/lang/String;)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesAllMediator;-><init>(C)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesAllMediator;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/utils/UserSettingDeviceConfigMediator$SettingsOverridesIndividualMediator;-><init>(C)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator;-><clinit>()V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator;-><init>(C)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator;->setDeviceConfigProperties(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/utils/UserSettingDeviceConfigMediator;->setSettingsString(Ljava/lang/String;)V
+PLcom/android/server/utils/UserTokenWatcher;-><init>(Lcom/android/server/utils/UserTokenWatcher$Callback;Landroid/os/Handler;Ljava/lang/String;)V
+HSPLcom/android/server/utils/Watchable;->verifyWatchedAttributes(Ljava/lang/Object;Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/utils/Watchable;->verifyWatchedAttributes(Ljava/lang/Object;Lcom/android/server/utils/Watcher;Z)V
+HSPLcom/android/server/utils/WatchableImpl;-><init>()V
+HSPLcom/android/server/utils/WatchableImpl;->dispatchChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchableImpl;->isRegisteredObserver(Lcom/android/server/utils/Watcher;)Z
+HSPLcom/android/server/utils/WatchableImpl;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/utils/WatchableImpl;->registeredObserverCount()I
+HSPLcom/android/server/utils/WatchableImpl;->seal()V
+HSPLcom/android/server/utils/WatchableImpl;->unregisterObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/utils/WatchedArrayList$1;-><init>(Lcom/android/server/utils/WatchedArrayList;)V
+HSPLcom/android/server/utils/WatchedArrayList$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchedArrayList;-><init>()V
+HSPLcom/android/server/utils/WatchedArrayList;-><init>(I)V
+HSPLcom/android/server/utils/WatchedArrayList;->add(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/WatchedArrayList;->clear()V
+HSPLcom/android/server/utils/WatchedArrayList;->get(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayList;->onChanged()V
+HSPLcom/android/server/utils/WatchedArrayList;->registerChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayList;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/utils/WatchedArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayList;->size()I
+HSPLcom/android/server/utils/WatchedArrayList;->snapshot()Lcom/android/server/utils/WatchedArrayList;
+HSPLcom/android/server/utils/WatchedArrayList;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayList;->snapshot(Lcom/android/server/utils/WatchedArrayList;Lcom/android/server/utils/WatchedArrayList;)V
+HSPLcom/android/server/utils/WatchedArrayList;->unregisterChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayList;->unregisterChildIf(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayMap$1;-><init>(Lcom/android/server/utils/WatchedArrayMap;)V
+HSPLcom/android/server/utils/WatchedArrayMap$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchedArrayMap;-><init>()V
+HSPLcom/android/server/utils/WatchedArrayMap;-><init>(IZ)V
+HSPLcom/android/server/utils/WatchedArrayMap;->containsKey(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/WatchedArrayMap;->entrySet()Ljava/util/Set;
+HSPLcom/android/server/utils/WatchedArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->keyAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->onChanged()V
+HSPLcom/android/server/utils/WatchedArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->putAll(Ljava/util/Map;)V
+HSPLcom/android/server/utils/WatchedArrayMap;->registerChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayMap;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HPLcom/android/server/utils/WatchedArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->size()I
+HSPLcom/android/server/utils/WatchedArrayMap;->snapshot()Lcom/android/server/utils/WatchedArrayMap;
+HSPLcom/android/server/utils/WatchedArrayMap;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;)V
+HSPLcom/android/server/utils/WatchedArrayMap;->snapshot(Lcom/android/server/utils/WatchedArrayMap;Lcom/android/server/utils/WatchedArrayMap;)V
+HPLcom/android/server/utils/WatchedArrayMap;->unregisterChildIf(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArrayMap;->untrackedStorage()Landroid/util/ArrayMap;
+HSPLcom/android/server/utils/WatchedArrayMap;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArrayMap;->values()Ljava/util/Collection;
+HSPLcom/android/server/utils/WatchedArraySet$1;-><init>(Lcom/android/server/utils/WatchedArraySet;)V
+HSPLcom/android/server/utils/WatchedArraySet$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchedArraySet;-><init>()V
+HSPLcom/android/server/utils/WatchedArraySet;-><init>(IZ)V
+PLcom/android/server/utils/WatchedArraySet;-><init>(Lcom/android/server/utils/WatchedArraySet;)V
+HSPLcom/android/server/utils/WatchedArraySet;->add(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/WatchedArraySet;->addAll(Ljava/util/Collection;)V
+HSPLcom/android/server/utils/WatchedArraySet;->clear()V
+HPLcom/android/server/utils/WatchedArraySet;->contains(Ljava/lang/Object;)Z
+PLcom/android/server/utils/WatchedArraySet;->isEmpty()Z
+HSPLcom/android/server/utils/WatchedArraySet;->onChanged()V
+HSPLcom/android/server/utils/WatchedArraySet;->registerChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedArraySet;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HPLcom/android/server/utils/WatchedArraySet;->remove(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/WatchedArraySet;->size()I
+HSPLcom/android/server/utils/WatchedArraySet;->snapshot()Lcom/android/server/utils/WatchedArraySet;
+HSPLcom/android/server/utils/WatchedArraySet;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedArraySet;->snapshot(Lcom/android/server/utils/WatchedArraySet;Lcom/android/server/utils/WatchedArraySet;)V
+PLcom/android/server/utils/WatchedArraySet;->untrackedStorage()Landroid/util/ArraySet;
+HSPLcom/android/server/utils/WatchedArraySet;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedLongSparseArray$1;-><init>(Lcom/android/server/utils/WatchedLongSparseArray;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;-><init>()V
+HSPLcom/android/server/utils/WatchedLongSparseArray;-><init>(I)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->get(J)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedLongSparseArray;->keyAt(I)J
+HSPLcom/android/server/utils/WatchedLongSparseArray;->onChanged()V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->put(JLjava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->registerChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->registerObserver(Lcom/android/server/utils/Watcher;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->size()I
+HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot()Lcom/android/server/utils/WatchedLongSparseArray;
+HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedLongSparseArray;->snapshot(Lcom/android/server/utils/WatchedLongSparseArray;Lcom/android/server/utils/WatchedLongSparseArray;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->unregisterChildIf(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedLongSparseArray;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseArray$1;-><init>(Lcom/android/server/utils/WatchedSparseArray;)V
+HSPLcom/android/server/utils/WatchedSparseArray$1;->onChange(Lcom/android/server/utils/Watchable;)V
+HSPLcom/android/server/utils/WatchedSparseArray;-><init>()V
+HSPLcom/android/server/utils/WatchedSparseArray;-><init>(I)V
+HSPLcom/android/server/utils/WatchedSparseArray;-><init>(Lcom/android/server/utils/WatchedSparseArray;)V
+PLcom/android/server/utils/WatchedSparseArray;->delete(I)V
+HSPLcom/android/server/utils/WatchedSparseArray;->get(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseArray;->keyAt(I)I
+HSPLcom/android/server/utils/WatchedSparseArray;->onChanged()V
+HSPLcom/android/server/utils/WatchedSparseArray;->put(ILjava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedSparseArray;->registerChild(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedSparseArray;->registerObserver(Lcom/android/server/utils/Watcher;)V
+PLcom/android/server/utils/WatchedSparseArray;->remove(I)V
+HSPLcom/android/server/utils/WatchedSparseArray;->size()I
+HSPLcom/android/server/utils/WatchedSparseArray;->snapshot()Lcom/android/server/utils/WatchedSparseArray;
+HSPLcom/android/server/utils/WatchedSparseArray;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;)V
+HSPLcom/android/server/utils/WatchedSparseArray;->snapshot(Lcom/android/server/utils/WatchedSparseArray;Lcom/android/server/utils/WatchedSparseArray;)V
+HSPLcom/android/server/utils/WatchedSparseArray;->unregisterChildIf(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/WatchedSparseArray;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseBooleanArray;-><init>()V
+HSPLcom/android/server/utils/WatchedSparseBooleanArray;-><init>(Lcom/android/server/utils/WatchedSparseBooleanArray;)V
+HPLcom/android/server/utils/WatchedSparseBooleanArray;->get(I)Z
+PLcom/android/server/utils/WatchedSparseBooleanArray;->onChanged()V
+PLcom/android/server/utils/WatchedSparseBooleanArray;->put(IZ)V
+HSPLcom/android/server/utils/WatchedSparseBooleanArray;->snapshot()Lcom/android/server/utils/WatchedSparseBooleanArray;
+HSPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>()V
+HSPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>(I)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;-><init>(Lcom/android/server/utils/WatchedSparseBooleanMatrix;)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->binarySearch([III)I
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->clear()V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->copyFrom(Lcom/android/server/utils/WatchedSparseBooleanMatrix;)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(I)I
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->indexOfKey(IZ)I
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->nextFree(Z)I
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->onChanged()V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->put(IIZ)V
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->resizeMatrix(I)V
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->setCapacity(I)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAt(IIZ)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->setValueAtInternal(IIZ)V
+PLcom/android/server/utils/WatchedSparseBooleanMatrix;->size()I
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->snapshot()Lcom/android/server/utils/WatchedSparseBooleanMatrix;
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->snapshot()Ljava/lang/Object;
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(I)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->validateIndex(II)V
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAt(II)Z
+HPLcom/android/server/utils/WatchedSparseBooleanMatrix;->valueAtInternal(II)Z
+HSPLcom/android/server/utils/WatchedSparseIntArray;-><init>()V
+HSPLcom/android/server/utils/WatchedSparseIntArray;-><init>(Lcom/android/server/utils/WatchedSparseIntArray;)V
+HSPLcom/android/server/utils/WatchedSparseIntArray;->size()I
+HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot()Lcom/android/server/utils/WatchedSparseIntArray;
+HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot(Lcom/android/server/utils/WatchedSparseIntArray;)V
+HSPLcom/android/server/utils/WatchedSparseIntArray;->snapshot(Lcom/android/server/utils/WatchedSparseIntArray;Lcom/android/server/utils/WatchedSparseIntArray;)V
+HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>()V
+PLcom/android/server/utils/WatchedSparseSetArray;-><init>(Landroid/util/SparseSetArray;)V
+HSPLcom/android/server/utils/WatchedSparseSetArray;-><init>(Lcom/android/server/utils/WatchedSparseSetArray;)V
+HPLcom/android/server/utils/WatchedSparseSetArray;->add(ILjava/lang/Object;)Z
+HPLcom/android/server/utils/WatchedSparseSetArray;->contains(ILjava/lang/Object;)Z
+PLcom/android/server/utils/WatchedSparseSetArray;->get(I)Landroid/util/ArraySet;
+HPLcom/android/server/utils/WatchedSparseSetArray;->keyAt(I)I
+PLcom/android/server/utils/WatchedSparseSetArray;->onChanged()V
+HPLcom/android/server/utils/WatchedSparseSetArray;->size()I
+HSPLcom/android/server/utils/WatchedSparseSetArray;->snapshot()Ljava/lang/Object;
+HSPLcom/android/server/utils/WatchedSparseSetArray;->untrackedStorage()Landroid/util/SparseSetArray;
+HSPLcom/android/server/utils/Watcher;-><init>()V
+PLcom/android/server/utils/quota/Categorizer$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/utils/quota/Categorizer;-><clinit>()V
+PLcom/android/server/utils/quota/Category;-><clinit>()V
+PLcom/android/server/utils/quota/Category;-><init>(Ljava/lang/String;)V
+PLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/utils/quota/Category;->hashCode()I
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;-><init>()V
+HPLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/utils/quota/CountQuotaTracker$$ExternalSyntheticLambda3;-><init>(J)V
+PLcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Landroid/os/Looper;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->-$$Nest$fgetmMaxPeriodMs(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)J
+PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->-$$Nest$mupdateMaxPeriod(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor-IA;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->updateMaxPeriod()V
+PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>()V
+PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor-IA;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Landroid/util/LongArrayQueue;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Ljava/lang/Object;)V
+PLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->reset()V
+PLcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;-><init>()V
+PLcom/android/server/utils/quota/CountQuotaTracker;->$r8$lambda$bpXgHbASkT73xHBfIQStDjbYyHs(Ljava/lang/Void;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+PLcom/android/server/utils/quota/CountQuotaTracker;->$r8$lambda$cM9jWlqtuFAt3Et9NwUilONDTpc(Ljava/lang/Void;)Landroid/util/LongArrayQueue;
+PLcom/android/server/utils/quota/CountQuotaTracker;->-$$Nest$fgetmCategoryCountWindowSizesMs(Lcom/android/server/utils/quota/CountQuotaTracker;)Landroid/util/ArrayMap;
+PLcom/android/server/utils/quota/CountQuotaTracker;-><clinit>()V
+PLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+HPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+PLcom/android/server/utils/quota/CountQuotaTracker;->getHandler()Landroid/os/Handler;
+PLcom/android/server/utils/quota/CountQuotaTracker;->invalidateAllExecutionStatsLocked()V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->isUnderCountQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
+HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
+PLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$4(Ljava/lang/Void;)Landroid/util/LongArrayQueue;
+HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$5(Ljava/lang/Void;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+PLcom/android/server/utils/quota/CountQuotaTracker;->maybeScheduleCleanupAlarmLocked()V
+PLcom/android/server/utils/quota/CountQuotaTracker;->noteEvent(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/utils/quota/CountQuotaTracker;->setCountLimit(Lcom/android/server/utils/quota/Category;IJ)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->setEnabled(Z)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;-><init>(Landroid/content/Context;)V
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimit(ILjava/time/Duration;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimit(Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->addRateLimits([Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;)Lcom/android/server/utils/quota/MultiRateLimiter$Builder;
+PLcom/android/server/utils/quota/MultiRateLimiter$Builder;->build()Lcom/android/server/utils/quota/MultiRateLimiter;
+PLcom/android/server/utils/quota/MultiRateLimiter$RateLimit;-><init>(ILjava/time/Duration;)V
+PLcom/android/server/utils/quota/MultiRateLimiter$RateLimit;->create(ILjava/time/Duration;)Lcom/android/server/utils/quota/MultiRateLimiter$RateLimit;
+PLcom/android/server/utils/quota/MultiRateLimiter;-><clinit>()V
+PLcom/android/server/utils/quota/MultiRateLimiter;-><init>(Ljava/util/List;)V
+PLcom/android/server/utils/quota/MultiRateLimiter;-><init>(Ljava/util/List;Lcom/android/server/utils/quota/MultiRateLimiter-IA;)V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/utils/quota/QuotaTracker;IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
+PLcom/android/server/utils/quota/QuotaTracker$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/utils/quota/QuotaTracker$1;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue;-><init>(Lcom/android/server/utils/quota/QuotaTracker;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue;-><init>(Lcom/android/server/utils/quota/QuotaTracker;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmQueue-IA;)V
+PLcom/android/server/utils/quota/QuotaTracker$Injector;-><init>()V
+HPLcom/android/server/utils/quota/QuotaTracker$Injector;->getElapsedRealtime()J
+PLcom/android/server/utils/quota/QuotaTracker$Injector;->isAlarmManagerReady()Z
+PLcom/android/server/utils/quota/QuotaTracker;->$r8$lambda$7_jWEDO3BU-RIo1JOMCtrF_brqU(Lcom/android/server/utils/quota/QuotaTracker;IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/utils/quota/QuotaTracker;->$r8$lambda$zqw0r2J0L3v3iTYTnBHhbM_aIAc(Lcom/android/server/utils/quota/QuotaTracker;)V
+PLcom/android/server/utils/quota/QuotaTracker;->-$$Nest$sfgetALARM_TAG_QUOTA_CHECK()Ljava/lang/String;
+PLcom/android/server/utils/quota/QuotaTracker;-><clinit>()V
+HPLcom/android/server/utils/quota/QuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+PLcom/android/server/utils/quota/QuotaTracker;->isEnabledLocked()Z
+HPLcom/android/server/utils/quota/QuotaTracker;->isQuotaFreeLocked(ILjava/lang/String;)Z
+HPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleAlarm$0(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleQuotaCheck$2()V
+PLcom/android/server/utils/quota/QuotaTracker;->scheduleAlarm(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+PLcom/android/server/utils/quota/QuotaTracker;->scheduleQuotaCheck()V
+PLcom/android/server/utils/quota/QuotaTracker;->setEnabled(Z)V
+PLcom/android/server/utils/quota/UptcMap$$ExternalSyntheticLambda0;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/utils/quota/UptcMap$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/utils/quota/UptcMap;->$r8$lambda$d6yUTqkiV7qCVDI1h44DX07LvM8(Ljava/util/function/Consumer;Landroid/util/ArrayMap;)V
+PLcom/android/server/utils/quota/UptcMap;-><init>()V
+HPLcom/android/server/utils/quota/UptcMap;->add(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/utils/quota/UptcMap;->forEach(Ljava/util/function/Consumer;)V
+HPLcom/android/server/utils/quota/UptcMap;->get(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
+HPLcom/android/server/utils/quota/UptcMap;->getOrCreate(ILjava/lang/String;Ljava/lang/String;Ljava/util/function/Function;)Ljava/lang/Object;
+PLcom/android/server/utils/quota/UptcMap;->lambda$forEach$0(Ljava/util/function/Consumer;Landroid/util/ArrayMap;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$$ExternalSyntheticLambda1;->onCarrierConfigChanged(IIII)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$1;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$2;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$2;->onCarrierPrivilegesChanged(Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener;-><init>(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$ActiveDataSubscriptionIdListener-IA;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;-><init>()V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;->getActiveDataSubscriptionId()I
+PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;-><clinit>()V
+HPLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;-><init>(ILjava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;->toString()Ljava/lang/String;
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->$r8$lambda$UITr0Y088UTlKS8haj11FOauMy8(Lcom/android/server/vcn/TelephonySubscriptionTracker;IIII)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->$r8$lambda$d-we-Idb2bNLS062826pLy573-w(Lcom/android/server/vcn/TelephonySubscriptionTracker;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;-><clinit>()V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionTrackerCallback;Lcom/android/server/vcn/TelephonySubscriptionTracker$Dependencies;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->handleActionCarrierConfigChanged(II)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->handleSubscriptionsChanged()V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->lambda$handleSubscriptionsChanged$1(Lcom/android/server/vcn/TelephonySubscriptionTracker$TelephonySubscriptionSnapshot;)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->lambda$new$0(IIII)V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->register()V
+PLcom/android/server/vcn/TelephonySubscriptionTracker;->registerCarrierPrivilegesCallbacks()V
+PLcom/android/server/vcn/Vcn;-><clinit>()V
+PLcom/android/server/vcn/Vcn;->getNetworkScore()Landroid/net/NetworkScore;
+PLcom/android/server/vcn/VcnNetworkProvider$1;-><init>(Lcom/android/server/vcn/VcnNetworkProvider;)V
+PLcom/android/server/vcn/VcnNetworkProvider$1;->onNetworkNeeded(Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider$1;->onNetworkUnneeded(Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider$Dependencies;-><init>()V
+PLcom/android/server/vcn/VcnNetworkProvider$Dependencies;->registerNetworkOffer(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkScore;Landroid/net/NetworkCapabilities;Ljava/util/concurrent/Executor;Landroid/net/NetworkProvider$NetworkOfferCallback;)V
+PLcom/android/server/vcn/VcnNetworkProvider;->-$$Nest$mhandleNetworkRequestWithdrawn(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider;->-$$Nest$mhandleNetworkRequested(Lcom/android/server/vcn/VcnNetworkProvider;Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider;-><clinit>()V
+PLcom/android/server/vcn/VcnNetworkProvider;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/vcn/VcnNetworkProvider;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/vcn/VcnNetworkProvider$Dependencies;)V
+PLcom/android/server/vcn/VcnNetworkProvider;->buildCapabilityFilter()Landroid/net/NetworkCapabilities;
+PLcom/android/server/vcn/VcnNetworkProvider;->handleNetworkRequestWithdrawn(Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider;->handleNetworkRequested(Landroid/net/NetworkRequest;)V
+PLcom/android/server/vcn/VcnNetworkProvider;->register()V
+PLcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;-><init>(Ljava/lang/String;)V
+PLcom/android/server/vcn/util/PersistableBundleUtils$LockingReadWriteHelper;->readFromDisk()Landroid/os/PersistableBundle;
+PLcom/android/server/vibrator/AbstractVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)V
+PLcom/android/server/vibrator/AbstractVibratorStep;->acceptVibratorCompleteCallback(I)Z
+PLcom/android/server/vibrator/AbstractVibratorStep;->getVibratorId()I
+PLcom/android/server/vibrator/AbstractVibratorStep;->getVibratorOnDuration()J
+PLcom/android/server/vibrator/AbstractVibratorStep;->handleVibratorOnResult(J)J
+PLcom/android/server/vibrator/AbstractVibratorStep;->nextSteps(I)Ljava/util/List;
+PLcom/android/server/vibrator/AbstractVibratorStep;->nextSteps(JI)Ljava/util/List;
+PLcom/android/server/vibrator/AbstractVibratorStep;->stopVibrating()V
+PLcom/android/server/vibrator/ClippingAmplitudeAndFrequencyAdapter;-><init>()V
+PLcom/android/server/vibrator/ClippingAmplitudeAndFrequencyAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/CompleteEffectVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JZLcom/android/server/vibrator/VibratorController;J)V
+PLcom/android/server/vibrator/CompleteEffectVibratorStep;->isCleanUp()Z
+PLcom/android/server/vibrator/CompleteEffectVibratorStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)V
+PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/ComposePrimitivesVibratorStep;->unrollPrimitiveSegments(Landroid/os/VibrationEffect$Composed;II)Ljava/util/List;
+PLcom/android/server/vibrator/DeviceAdapter;-><init>(Lcom/android/server/vibrator/VibrationSettings;Landroid/util/SparseArray;)V
+PLcom/android/server/vibrator/DeviceAdapter;->adaptToVibrator(ILandroid/os/VibrationEffect;)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/DeviceAdapter;->getAvailableVibratorIds()[I
+PLcom/android/server/vibrator/DeviceAdapter;->getAvailableVibrators()Landroid/util/SparseArray;
+PLcom/android/server/vibrator/FinishSequentialEffectStep;-><init>(Lcom/android/server/vibrator/StartSequentialEffectStep;)V
+PLcom/android/server/vibrator/FinishSequentialEffectStep;->isCleanUp()Z
+PLcom/android/server/vibrator/FinishSequentialEffectStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/HalVibration;-><init>(Landroid/os/IBinder;Landroid/os/CombinedVibration;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
+PLcom/android/server/vibrator/HalVibration;->adaptToDevice(Landroid/os/CombinedVibration$VibratorAdapter;)V
+PLcom/android/server/vibrator/HalVibration;->end(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/HalVibration;->getDebugInfo()Lcom/android/server/vibrator/Vibration$DebugInfo;
+PLcom/android/server/vibrator/HalVibration;->getEffectToPlay()Landroid/os/CombinedVibration;
+PLcom/android/server/vibrator/HalVibration;->getStatsInfo(J)Lcom/android/server/vibrator/VibrationStats$StatsInfo;
+PLcom/android/server/vibrator/HalVibration;->hasEnded()Z
+PLcom/android/server/vibrator/HalVibration;->isRepeating()Z
+PLcom/android/server/vibrator/HalVibration;->scaleEffects(Landroid/os/VibrationEffect$Transformation;)V
+PLcom/android/server/vibrator/HapticFeedbackCustomization;->loadVibrations(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+HPLcom/android/server/vibrator/HapticFeedbackCustomization;->loadVibrationsInternal(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><clinit>()V
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/Vibrator;)V
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)V
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;-><init>(Landroid/content/res/Resources;Landroid/os/VibratorInfo;Landroid/util/SparseArray;)V
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->effectHasCustomization(I)Z
+PLcom/android/server/vibrator/HapticFeedbackVibrationProvider;->loadHapticCustomizations(Landroid/content/res/Resources;Landroid/os/VibratorInfo;)Landroid/util/SparseArray;
+PLcom/android/server/vibrator/InputDeviceDelegate;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/vibrator/InputDeviceDelegate;->isAvailable()Z
+PLcom/android/server/vibrator/InputDeviceDelegate;->onSystemReady()V
+PLcom/android/server/vibrator/InputDeviceDelegate;->updateInputDeviceVibrators(Z)Z
+PLcom/android/server/vibrator/RampDownAdapter;-><init>(II)V
+PLcom/android/server/vibrator/RampDownAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/RampToStepAdapter;-><init>(I)V
+PLcom/android/server/vibrator/RampToStepAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/SplitSegmentsAdapter;-><init>()V
+PLcom/android/server/vibrator/SplitSegmentsAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;-><init>(Lcom/android/server/vibrator/StartSequentialEffectStep;Landroid/os/CombinedVibration$Mono;)V
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->calculateRequiredSyncCapabilities(Landroid/util/SparseArray;)J
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->effectAt(I)Landroid/os/VibrationEffect$Composed;
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->requireMixedTriggerCapability(JJ)Z
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->size()I
+PLcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;->vibratorIdAt(I)I
+PLcom/android/server/vibrator/StartSequentialEffectStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLandroid/os/CombinedVibration$Sequential;I)V
+PLcom/android/server/vibrator/StartSequentialEffectStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;Landroid/os/CombinedVibration$Sequential;)V
+PLcom/android/server/vibrator/StartSequentialEffectStep;->createEffectToVibratorMapping(Landroid/os/CombinedVibration;)Lcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;
+PLcom/android/server/vibrator/StartSequentialEffectStep;->getVibratorOnDuration()J
+PLcom/android/server/vibrator/StartSequentialEffectStep;->nextStep()Lcom/android/server/vibrator/Step;
+PLcom/android/server/vibrator/StartSequentialEffectStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/StartSequentialEffectStep;->startVibrating(Lcom/android/server/vibrator/AbstractVibratorStep;Ljava/util/List;)J
+PLcom/android/server/vibrator/StartSequentialEffectStep;->startVibrating(Lcom/android/server/vibrator/StartSequentialEffectStep$DeviceEffectMap;Ljava/util/List;)J
+PLcom/android/server/vibrator/Step;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;J)V
+PLcom/android/server/vibrator/Step;->calculateWaitTime()J
+PLcom/android/server/vibrator/Step;->compareTo(Lcom/android/server/vibrator/Step;)I
+PLcom/android/server/vibrator/Step;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/vibrator/Step;->getVibration()Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/vibrator/Step;->getVibratorOnDuration()J
+PLcom/android/server/vibrator/Step;->isCleanUp()Z
+PLcom/android/server/vibrator/StepToRampAdapter;-><init>()V
+PLcom/android/server/vibrator/StepToRampAdapter;->adaptToVibrator(Landroid/os/VibratorInfo;Ljava/util/List;I)I
+PLcom/android/server/vibrator/TurnOffVibratorStep;-><init>(Lcom/android/server/vibrator/VibrationStepConductor;JLcom/android/server/vibrator/VibratorController;)V
+PLcom/android/server/vibrator/TurnOffVibratorStep;->isCleanUp()Z
+PLcom/android/server/vibrator/TurnOffVibratorStep;->play()Ljava/util/List;
+PLcom/android/server/vibrator/Vibration$CallerInfo;-><init>(Landroid/os/VibrationAttributes;IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/vibrator/Vibration$DebugInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;Landroid/os/CombinedVibration;Landroid/os/CombinedVibration;FLcom/android/server/vibrator/Vibration$CallerInfo;)V
+PLcom/android/server/vibrator/Vibration$EndInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;)V
+PLcom/android/server/vibrator/Vibration$EndInfo;-><init>(Lcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
+PLcom/android/server/vibrator/Vibration$Status;->$values()[Lcom/android/server/vibrator/Vibration$Status;
+HPLcom/android/server/vibrator/Vibration$Status;-><clinit>()V
+PLcom/android/server/vibrator/Vibration$Status;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/vibrator/Vibration$Status;->getProtoEnumValue()I
+PLcom/android/server/vibrator/Vibration$Status;->values()[Lcom/android/server/vibrator/Vibration$Status;
+PLcom/android/server/vibrator/Vibration;-><clinit>()V
+PLcom/android/server/vibrator/Vibration;-><init>(Landroid/os/IBinder;Lcom/android/server/vibrator/Vibration$CallerInfo;)V
+PLcom/android/server/vibrator/VibrationScaler$ScaleLevel;-><init>(F)V
+PLcom/android/server/vibrator/VibrationScaler;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationScaler;->intensityToEffectStrength(I)I
+PLcom/android/server/vibrator/VibrationScaler;->scale(Landroid/os/VibrationEffect;I)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings$1;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$2;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->isUidForeground(I)Z
+PLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->onUidGone(IZ)V
+HPLcom/android/server/vibrator/VibrationSettings$MyUidObserver;->onUidStateChanged(IIJI)V
+PLcom/android/server/vibrator/VibrationSettings$SettingsBroadcastReceiver;-><init>(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings$SettingsBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibrationSettings$SettingsContentObserver;-><init>(Lcom/android/server/vibrator/VibrationSettings;Landroid/os/Handler;)V
+PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mnotifyListeners(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mupdateBatteryInfo(Lcom/android/server/vibrator/VibrationSettings;Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibrationSettings;->-$$Nest$mupdateRingerMode(Lcom/android/server/vibrator/VibrationSettings;)V
+PLcom/android/server/vibrator/VibrationSettings;-><clinit>()V
+PLcom/android/server/vibrator/VibrationSettings;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/vibrator/VibrationSettings;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/os/vibrator/VibrationConfig;)V
+PLcom/android/server/vibrator/VibrationSettings;->addListener(Lcom/android/server/vibrator/VibrationSettings$OnVibratorSettingsChanged;)V
+PLcom/android/server/vibrator/VibrationSettings;->createEffectFromResource(I)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings;->createEffectFromResource(Landroid/content/res/Resources;I)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings;->createEffectFromTimings([J)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationSettings;->getCurrentIntensity(I)I
+PLcom/android/server/vibrator/VibrationSettings;->getDefaultIntensity(I)I
+PLcom/android/server/vibrator/VibrationSettings;->getLongIntArray(Landroid/content/res/Resources;I)[J
+PLcom/android/server/vibrator/VibrationSettings;->getRampDownDuration()I
+PLcom/android/server/vibrator/VibrationSettings;->getRampStepDuration()I
+PLcom/android/server/vibrator/VibrationSettings;->getRequestVibrationParamsForUsages()[I
+PLcom/android/server/vibrator/VibrationSettings;->loadBooleanSetting(Ljava/lang/String;)Z
+PLcom/android/server/vibrator/VibrationSettings;->loadSystemSetting(Ljava/lang/String;I)I
+PLcom/android/server/vibrator/VibrationSettings;->notifyListeners()V
+PLcom/android/server/vibrator/VibrationSettings;->onSystemReady()V
+PLcom/android/server/vibrator/VibrationSettings;->registerSettingsChangeReceiver(Landroid/content/IntentFilter;)V
+PLcom/android/server/vibrator/VibrationSettings;->registerSettingsObserver(Landroid/net/Uri;)V
+PLcom/android/server/vibrator/VibrationSettings;->shouldIgnoreVibration(Lcom/android/server/vibrator/Vibration$CallerInfo;)Lcom/android/server/vibrator/Vibration$Status;
+PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateForRingerModeLocked(I)Z
+PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateForUserSetting(Lcom/android/server/vibrator/Vibration$CallerInfo;)Z
+PLcom/android/server/vibrator/VibrationSettings;->shouldVibrateInputDevices()Z
+PLcom/android/server/vibrator/VibrationSettings;->toIntensity(II)I
+PLcom/android/server/vibrator/VibrationSettings;->toPositiveIntensity(II)I
+PLcom/android/server/vibrator/VibrationSettings;->update()V
+PLcom/android/server/vibrator/VibrationSettings;->updateBatteryInfo(Landroid/content/Intent;)V
+PLcom/android/server/vibrator/VibrationSettings;->updateRingerMode()V
+HPLcom/android/server/vibrator/VibrationSettings;->updateSettings()V
+PLcom/android/server/vibrator/VibrationStats$StatsInfo;-><init>(IIILcom/android/server/vibrator/Vibration$Status;Lcom/android/server/vibrator/VibrationStats;J)V
+PLcom/android/server/vibrator/VibrationStats$StatsInfo;->filteredKeys(Landroid/util/SparseBooleanArray;Z)[I
+PLcom/android/server/vibrator/VibrationStats$StatsInfo;->writeVibrationReported()V
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmCreateUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndedByUid(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmEndedByUsage(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmInterruptedUsage(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmRepeatCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmStartUptimeMillis(Lcom/android/server/vibrator/VibrationStats;)J
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibrationCompositionTotalSize(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibrationPwleTotalSize(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorComposeCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorComposePwleCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorEffectsUsed(Lcom/android/server/vibrator/VibrationStats;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOffCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOnCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorOnTotalDurationMillis(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorPerformCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorPrimitivesUsed(Lcom/android/server/vibrator/VibrationStats;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorSetAmplitudeCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;->-$$Nest$fgetmVibratorSetExternalControlCount(Lcom/android/server/vibrator/VibrationStats;)I
+PLcom/android/server/vibrator/VibrationStats;-><init>()V
+PLcom/android/server/vibrator/VibrationStats;->getCreateTimeDebug()J
+PLcom/android/server/vibrator/VibrationStats;->getDurationDebug()J
+PLcom/android/server/vibrator/VibrationStats;->getEndTimeDebug()J
+PLcom/android/server/vibrator/VibrationStats;->getStartTimeDebug()J
+PLcom/android/server/vibrator/VibrationStats;->hasEnded()Z
+PLcom/android/server/vibrator/VibrationStats;->hasStarted()Z
+PLcom/android/server/vibrator/VibrationStats;->reportComposePrimitives(J[Landroid/os/vibrator/PrimitiveSegment;)V
+PLcom/android/server/vibrator/VibrationStats;->reportEnded(Lcom/android/server/vibrator/Vibration$CallerInfo;)Z
+PLcom/android/server/vibrator/VibrationStats;->reportStarted()V
+PLcom/android/server/vibrator/VibrationStats;->reportVibratorOff()V
+PLcom/android/server/vibrator/VibrationStepConductor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibrationScaler;)V
+PLcom/android/server/vibrator/VibrationStepConductor$$ExternalSyntheticLambda0;->transform(Landroid/os/VibrationEffect;Ljava/lang/Object;)Landroid/os/VibrationEffect;
+PLcom/android/server/vibrator/VibrationStepConductor;-><clinit>()V
+PLcom/android/server/vibrator/VibrationStepConductor;-><init>(Lcom/android/server/vibrator/HalVibration;Lcom/android/server/vibrator/VibrationSettings;Lcom/android/server/vibrator/DeviceAdapter;Lcom/android/server/vibrator/VibrationScaler;Ljava/util/concurrent/CompletableFuture;Lcom/android/server/vibrator/VibrationThread$VibratorManagerHooks;)V
+PLcom/android/server/vibrator/VibrationStepConductor;->calculateVibrationEndInfo()Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibrationStepConductor;->expectIsVibrationThread(Z)V
+PLcom/android/server/vibrator/VibrationStepConductor;->getVibration()Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/vibrator/VibrationStepConductor;->getVibrators()Landroid/util/SparseArray;
+PLcom/android/server/vibrator/VibrationStepConductor;->hasPendingNotifySignalLocked()Z
+PLcom/android/server/vibrator/VibrationStepConductor;->isFinished()Z
+PLcom/android/server/vibrator/VibrationStepConductor;->nextVibrateStep(JLcom/android/server/vibrator/VibratorController;Landroid/os/VibrationEffect$Composed;IJ)Lcom/android/server/vibrator/AbstractVibratorStep;
+PLcom/android/server/vibrator/VibrationStepConductor;->notifyVibratorComplete(I)V
+PLcom/android/server/vibrator/VibrationStepConductor;->pollNext()Lcom/android/server/vibrator/Step;
+PLcom/android/server/vibrator/VibrationStepConductor;->prepareToStart()V
+PLcom/android/server/vibrator/VibrationStepConductor;->processAllNotifySignals()V
+PLcom/android/server/vibrator/VibrationStepConductor;->processVibratorsComplete([I)V
+PLcom/android/server/vibrator/VibrationStepConductor;->runNextStep()V
+PLcom/android/server/vibrator/VibrationStepConductor;->toSequential(Landroid/os/CombinedVibration;)Landroid/os/CombinedVibration$Sequential;
+PLcom/android/server/vibrator/VibrationStepConductor;->waitForVibrationParamsIfRequired()V
+PLcom/android/server/vibrator/VibrationStepConductor;->waitUntilNextStepIsDue()Z
+PLcom/android/server/vibrator/VibrationThread;-><init>(Landroid/os/PowerManager$WakeLock;Lcom/android/server/vibrator/VibrationThread$VibratorManagerHooks;)V
+PLcom/android/server/vibrator/VibrationThread;->clientVibrationCompleteIfNotAlready(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibrationThread;->playVibration()V
+PLcom/android/server/vibrator/VibrationThread;->run()V
+PLcom/android/server/vibrator/VibrationThread;->runCurrentVibrationWithWakeLock()V
+PLcom/android/server/vibrator/VibrationThread;->runCurrentVibrationWithWakeLockAndDeathLink()V
+PLcom/android/server/vibrator/VibrationThread;->runVibrationOnVibrationThread(Lcom/android/server/vibrator/VibrationStepConductor;)Z
+PLcom/android/server/vibrator/VibrationThread;->waitForVibrationRequest()Lcom/android/server/vibrator/VibrationStepConductor;
+PLcom/android/server/vibrator/VibratorControlService;-><init>(Lcom/android/server/vibrator/VibratorControllerHolder;Lcom/android/server/vibrator/VibrationScaler;Lcom/android/server/vibrator/VibrationSettings;Ljava/lang/Object;)V
+PLcom/android/server/vibrator/VibratorControlService;->shouldRequestVibrationParams(I)Z
+PLcom/android/server/vibrator/VibratorController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibratorController;Z)V
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;-><init>()V
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->compose([Landroid/os/vibrator/PrimitiveSegment;J)J
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->getInfo(Landroid/os/VibratorInfo$Builder;)Z
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->init(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V
+PLcom/android/server/vibrator/VibratorController$NativeWrapper;->off()V
+PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)V
+PLcom/android/server/vibrator/VibratorController;-><init>(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;Lcom/android/server/vibrator/VibratorController$NativeWrapper;)V
+PLcom/android/server/vibrator/VibratorController;->getCurrentAmplitude()F
+PLcom/android/server/vibrator/VibratorController;->getVibratorInfo()Landroid/os/VibratorInfo;
+PLcom/android/server/vibrator/VibratorController;->isVibratorInfoLoadSuccessful()Z
+PLcom/android/server/vibrator/VibratorController;->notifyListenerOnVibrating(Z)V
+PLcom/android/server/vibrator/VibratorController;->off()V
+PLcom/android/server/vibrator/VibratorController;->on([Landroid/os/vibrator/PrimitiveSegment;J)J
+PLcom/android/server/vibrator/VibratorController;->reloadVibratorInfoIfNeeded()V
+PLcom/android/server/vibrator/VibratorController;->reset()V
+PLcom/android/server/vibrator/VibratorController;->setExternalControl(Z)V
+PLcom/android/server/vibrator/VibratorControllerHolder;-><init>()V
+PLcom/android/server/vibrator/VibratorControllerHolder;->getVibratorController()Landroid/frameworks/vibrator/IVibratorController;
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda1;-><init>(IJ)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda2;-><init>(I)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$3clAp4KeKtl_6LJMNjTyvIQT3s8(IJ)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$6sCMCxdISmdoENm6LJ5XtEdSNaY(Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->$r8$lambda$e1LVOLtWrkBnktoOi9j1ZkWqiNw(I)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;-><init>(Landroid/os/Handler;II)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$new$0()V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$writeVibratorStateOffAsync$2(I)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->lambda$writeVibratorStateOnAsync$1(IJ)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibrationReportedAsync(Lcom/android/server/vibrator/VibrationStats$StatsInfo;)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibrationReportedFromQueue()V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibratorStateOffAsync(I)V
+PLcom/android/server/vibrator/VibratorFrameworkStatsLogger;->writeVibratorStateOnAsync(IJ)V
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$$ExternalSyntheticLambda1;->onChange()V
+PLcom/android/server/vibrator/VibratorManagerService$1;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$2;-><clinit>()V
+PLcom/android/server/vibrator/VibratorManagerService$AggregatedVibrationRecord;-><init>(Lcom/android/server/vibrator/Vibration$DebugInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService$ExternalVibratorService;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$Injector;-><init>()V
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->createVibratorController(ILcom/android/server/vibrator/VibratorController$OnVibrationCompleteListener;)Lcom/android/server/vibrator/VibratorController;
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->createVibratorControllerHolder()Lcom/android/server/vibrator/VibratorControllerHolder;
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->getBatteryStatsService()Lcom/android/internal/app/IBatteryStats;
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->getFrameworkStatsLogger(Landroid/os/Handler;)Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;
+PLcom/android/server/vibrator/VibratorManagerService$Injector;->getNativeWrapper()Lcom/android/server/vibrator/VibratorManagerService$NativeWrapper;
+PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/vibrator/VibratorManagerService$Lifecycle;->onStart()V
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;-><init>()V
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->cancelSynced()V
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->getCapabilities()J
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->getVibratorIds()[I
+PLcom/android/server/vibrator/VibratorManagerService$NativeWrapper;->init(Lcom/android/server/vibrator/VibratorManagerService$OnSyncedVibrationCompleteListener;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationCompleteListener;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationCompleteListener;->onComplete(IJ)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationRecords;-><init>(II)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationRecords;->record(Lcom/android/server/vibrator/Vibration$DebugInfo;)Lcom/android/server/vibrator/VibratorManagerService$AggregatedVibrationRecord;
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;-><init>(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks-IA;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOff(I)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->noteVibratorOn(IJ)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->onVibrationCompleted(JLcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibrationThreadCallbacks;->onVibrationThreadReleased(J)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;-><init>(III)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;->record(Lcom/android/server/vibrator/HalVibration;)V
+PLcom/android/server/vibrator/VibratorManagerService$VibratorManagerRecords;->record(Lcom/android/server/vibrator/Vibration$DebugInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmBatteryStatsService(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/internal/app/IBatteryStats;
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmCurrentVibration(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibrationStepConductor;
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmFrameworkStatsLogger(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibratorFrameworkStatsLogger;
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmLock(Lcom/android/server/vibrator/VibratorManagerService;)Ljava/lang/Object;
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fgetmNextVibration(Lcom/android/server/vibrator/VibratorManagerService;)Lcom/android/server/vibrator/VibrationStepConductor;
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$fputmCurrentVibration(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/VibrationStepConductor;)V
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$monVibrationComplete(Lcom/android/server/vibrator/VibratorManagerService;IJ)V
+PLcom/android/server/vibrator/VibratorManagerService;->-$$Nest$mreportFinishedVibrationLocked(Lcom/android/server/vibrator/VibratorManagerService;Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService;-><clinit>()V
+HPLcom/android/server/vibrator/VibratorManagerService;-><init>(Landroid/content/Context;Lcom/android/server/vibrator/VibratorManagerService$Injector;)V
+PLcom/android/server/vibrator/VibratorManagerService;->checkAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)I
+PLcom/android/server/vibrator/VibratorManagerService;->createVibrationStepConductor(Lcom/android/server/vibrator/HalVibration;)Lcom/android/server/vibrator/VibrationStepConductor;
+PLcom/android/server/vibrator/VibratorManagerService;->endVibrationLocked(Lcom/android/server/vibrator/HalVibration;Lcom/android/server/vibrator/Vibration$EndInfo;Z)V
+PLcom/android/server/vibrator/VibratorManagerService;->enforceUpdateAppOpsStatsPermission(I)V
+PLcom/android/server/vibrator/VibratorManagerService;->fillVibrationFallbacks(Lcom/android/server/vibrator/HalVibration;Landroid/os/CombinedVibration;)V
+PLcom/android/server/vibrator/VibratorManagerService;->fillVibrationFallbacks(Lcom/android/server/vibrator/HalVibration;Landroid/os/VibrationEffect;)V
+PLcom/android/server/vibrator/VibratorManagerService;->finishAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService;->fixupAppOpModeLocked(ILandroid/os/VibrationAttributes;)I
+PLcom/android/server/vibrator/VibratorManagerService;->fixupVibrationAttributes(Landroid/os/VibrationAttributes;Landroid/os/CombinedVibration;)Landroid/os/VibrationAttributes;
+PLcom/android/server/vibrator/VibratorManagerService;->getVibratorIds()[I
+PLcom/android/server/vibrator/VibratorManagerService;->getVibratorInfo(I)Landroid/os/VibratorInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->isEffectValid(Landroid/os/CombinedVibration;)Z
+PLcom/android/server/vibrator/VibratorManagerService;->logVibrationStatus(ILandroid/os/VibrationAttributes;Lcom/android/server/vibrator/Vibration$Status;)V
+PLcom/android/server/vibrator/VibratorManagerService;->onVibrationComplete(IJ)V
+PLcom/android/server/vibrator/VibratorManagerService;->reportFinishedVibrationLocked(Lcom/android/server/vibrator/Vibration$EndInfo;)V
+PLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreVibrationForOngoingLocked(Lcom/android/server/vibrator/Vibration;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->shouldIgnoreVibrationLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->startAppOpModeLocked(Lcom/android/server/vibrator/Vibration$CallerInfo;)I
+PLcom/android/server/vibrator/VibratorManagerService;->startVibrationLocked(Lcom/android/server/vibrator/HalVibration;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->startVibrationOnThreadLocked(Lcom/android/server/vibrator/VibrationStepConductor;)Lcom/android/server/vibrator/Vibration$EndInfo;
+PLcom/android/server/vibrator/VibratorManagerService;->systemReady()V
+PLcom/android/server/vibrator/VibratorManagerService;->updateServiceState()V
+PLcom/android/server/vibrator/VibratorManagerService;->vibrate(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/vibrator/VibratorManagerService;->vibrateInternal(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/vibrator/VibratorManagerService;->vibrateWithPermissionCheck(IILjava/lang/String;Landroid/os/CombinedVibration;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)Lcom/android/server/vibrator/HalVibration;
+PLcom/android/server/voiceinteraction/DatabaseHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/voiceinteraction/RecognitionServiceInfo;->getAvailableServices(Landroid/content/Context;I)Ljava/util/List;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$3;->asBinder()Landroid/os/IBinder;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->-$$Nest$mqueryInteractorServices(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->findAvailRecognizer(Ljava/lang/String;I)Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getActiveServiceComponentName()Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurInteractor(I)Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurRecognizer(I)Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getDefaultRecognizer()Ljava/lang/String;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getForceVoiceInteractionServicePackage(Landroid/content/res/Resources;)Ljava/lang/String;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUser(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUserNoTracing(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initRecognizer(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->notifyActivityEventChanged(Landroid/os/IBinder;I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->queryInteractorServices(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurInteractor(Landroid/content/ComponentName;I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurrentUserLocked(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setImplLocked(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededNoTracingLocked(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->unloadAllKeyphraseModels()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$fgetmServiceStub(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$fgetmVoiceInteractionSessionListeners(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->-$$Nest$misUserSupported(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isUserSupported(Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isUserSupported(Lcom/android/server/SystemService$TargetUser;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onBootPhase(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStart()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUserStarting(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/wallpaper/LocalColorRepository;-><init>()V
+PLcom/android/server/wallpaper/LocalColorRepository;->getAreasByDisplayId(I)Ljava/util/List;
+PLcom/android/server/wallpaper/WallpaperCropper;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperCropper;-><init>(Lcom/android/server/wallpaper/WallpaperDisplayHelper;)V
+PLcom/android/server/wallpaper/WallpaperData$BindSource;->$values()[Lcom/android/server/wallpaper/WallpaperData$BindSource;
+PLcom/android/server/wallpaper/WallpaperData$BindSource;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperData$BindSource;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperData$BindSource;->values()[Lcom/android/server/wallpaper/WallpaperData$BindSource;
+HPLcom/android/server/wallpaper/WallpaperData;-><init>(II)V
+PLcom/android/server/wallpaper/WallpaperData;-><init>(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperData;->cropExists()Z
+PLcom/android/server/wallpaper/WallpaperData;->getCropFile()Ljava/io/File;
+PLcom/android/server/wallpaper/WallpaperData;->getFile(Landroid/util/SparseArray;Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/wallpaper/WallpaperData;->getWallpaperFile()Ljava/io/File;
+PLcom/android/server/wallpaper/WallpaperData;->sourceExists()Z
+PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;-><init>(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;Z)V
+PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;-><init>(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;ZLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult-IA;)V
+PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->getLockWallpaperData()Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->getSystemWallpaperData()Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;->success()Z
+PLcom/android/server/wallpaper/WallpaperDataParser;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperDataParser;-><init>(Landroid/content/Context;Lcom/android/server/wallpaper/WallpaperDisplayHelper;Lcom/android/server/wallpaper/WallpaperCropper;)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeFloat(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;F)F
+PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeInt(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
+PLcom/android/server/wallpaper/WallpaperDataParser;->getAttributeString(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/wallpaper/WallpaperDataParser;->loadSettingsLocked(IZZI)Lcom/android/server/wallpaper/WallpaperDataParser$WallpaperLoadingResult;
+PLcom/android/server/wallpaper/WallpaperDataParser;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
+PLcom/android/server/wallpaper/WallpaperDataParser;->migrateFromOld()V
+HPLcom/android/server/wallpaper/WallpaperDataParser;->parseWallpaperAttributes(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wallpaper/WallpaperData;Z)V
+PLcom/android/server/wallpaper/WallpaperDataParser;->saveSettingsLocked(ILcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
+HPLcom/android/server/wallpaper/WallpaperDataParser;->writeWallpaperAttributes(Lcom/android/modules/utils/TypedXmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;-><init>(I)V
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;-><init>(Landroid/hardware/display/DisplayManager;Landroid/view/WindowManager;Lcom/android/server/wm/WindowManagerInternal;Z)V
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;->ensureSaneWallpaperDisplaySize(Lcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;I)V
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getDisplayDataOrCreate(I)Lcom/android/server/wallpaper/WallpaperDisplayHelper$DisplayData;
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getDisplays()[Landroid/view/Display;
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;->getMaximumSizeDimension(I)I
+PLcom/android/server/wallpaper/WallpaperDisplayHelper;->isUsableDisplay(Landroid/view/Display;I)Z
+PLcom/android/server/wallpaper/WallpaperManagerInternal;-><init>()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda13;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda19;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wallpaper/WallpaperCropper;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda6;-><init>(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda6;->run()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda7;->run()V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda8;-><init>(IILandroid/os/Bundle;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$1;->onDisplayChanged(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$4;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$5;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;->connectLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;->ensureStatusHandled()V
+PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V
+PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUserUnlocking(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$LocalService-IA;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;->onScreenTurnedOn(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;->onScreenTurningOn(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperData;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->-$$Nest$mappendConnectorWithCondition(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Ljava/util/function/Predicate;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperData;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->appendConnectorWithCondition(Ljava/util/function/Predicate;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->containsDisplay(I)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->forEachDisplayConnector(Ljava/util/function/Consumer;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->getDisplayConnectorOrCreate(I)Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->initDisplayState()V
+HPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperDestinationChangeHandler;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperDestinationChangeHandler;->complete()V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(Z)Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->updateWallpapers(ILjava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$5ErvDQXwaddOkf73QSp6u6kkQ9Y(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$70f6O3WniAL1EPYwIwKjPj9UKTo(IILandroid/os/Bundle;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$HPV0skZunkb71zseMl_vk0jUzZ8(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$Klm5b07ADsYSKveShfQLaSU4BJU(Lcom/android/server/wallpaper/WallpaperManagerService;ILjava/lang/Integer;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$MtJzR9Tfzpn1ib32AAJG680ugdY(Lcom/android/server/wallpaper/WallpaperManagerService;Ljava/lang/String;)Ljava/lang/Boolean;
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$NZufi7t-APbcRooDKxjzjfXjTj8(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$S4jgCqwuOI416eRiQyNOsDygOVs(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$mkcPPqQQi9_GWMzWCHYLmW8Mmmo(Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->$r8$lambda$pRbDlKnuXuH2cuSxUxGHR4zK0uM(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmContext(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/Context;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmCurrentUserId(Lcom/android/server/wallpaper/WallpaperManagerService;)I
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmImageWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/ComponentName;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmInAmbientMode(Lcom/android/server/wallpaper/WallpaperManagerService;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmLocalColorRepo(Lcom/android/server/wallpaper/WallpaperManagerService;)Lcom/android/server/wallpaper/LocalColorRepository;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmLock(Lcom/android/server/wallpaper/WallpaperManagerService;)Ljava/lang/Object;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmWallpaperMap(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$fgetmWindowManagerInternal(Lcom/android/server/wallpaper/WallpaperManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mattachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mgetWallpapers(Lcom/android/server/wallpaper/WallpaperManagerService;)[Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyScreenTurnedOn(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyScreenTurningOn(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$mnotifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperData;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->-$$Nest$msupportsMultiDisplay(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;-><clinit>()V
+HPLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;)V
+HPLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->changingToSame(Landroid/content/ComponentName;Lcom/android/server/wallpaper/WallpaperData;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->checkCallerIsSystemOrSystemUi()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperBitmaps(II)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperBitmaps(Lcom/android/server/wallpaper/WallpaperData;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->enforcePackageBelongsToUid(Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->errorCheck(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->getActiveWallpapers()[Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getHandlerForBindingWallpaperLocked()Landroid/os/Handler;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperCallbacks(II)Landroid/os/RemoteCallbackList;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfoWithFlags(II)Landroid/app/WallpaperInfo;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpapers()[Lcom/android/server/wallpaper/WallpaperData;
+PLcom/android/server/wallpaper/WallpaperManagerService;->hasPermission(Ljava/lang/String;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->initialize()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->initializeFallbackWallpaper()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->isDefaultComponent(Landroid/content/ComponentName;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->isFromForegroundApp(Ljava/lang/String;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$attachServiceLocked$17(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$errorCheck$4(ILjava/lang/Integer;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$isFromForegroundApp$18(Ljava/lang/String;)Ljava/lang/Boolean;
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$notifyWakingUp$10(IILandroid/os/Bundle;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$notifyWallpaperColorsChanged$0(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$onUnlockUser$5(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$setWallpaperComponentInternal$14(Lcom/android/server/wallpaper/WallpaperManagerService$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$switchUser$6(Lcom/android/server/wallpaper/WallpaperData;Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$updateFallbackConnection$2(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZI)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->maybeDetachLastWallpapers(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyCallbacksLocked(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyScreenTurnedOn(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyScreenTurningOn(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWakingUp(IILandroid/os/Bundle;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperData;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->onBootPhase(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->packageBelongsToUid(Ljava/lang/String;I)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponent(Landroid/content/ComponentName;Ljava/lang/String;II)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;II)V
+HPLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentInternal(Landroid/content/ComponentName;IIZZLandroid/os/IRemoteCallback;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->supportsMultiDisplay(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperData;Landroid/os/IRemoteCallback;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->updateCurrentWallpapers(Lcom/android/server/wallpaper/WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->updateFallbackConnection()V
+PLcom/android/server/wallpaper/WallpaperUtils;-><clinit>()V
+PLcom/android/server/wallpaper/WallpaperUtils;->getCurrentWallpaperId()I
+PLcom/android/server/wallpaper/WallpaperUtils;->getWallpaperDir(I)Ljava/io/File;
+PLcom/android/server/wallpaper/WallpaperUtils;->getWallpaperFiles(I)Ljava/util/List;
+PLcom/android/server/wallpaper/WallpaperUtils;->makeWallpaperIdLocked()I
+PLcom/android/server/wallpaper/WallpaperUtils;->setCurrentWallpaperId(I)V
+PLcom/android/server/wearable/WearableSensingManagerPerUserService;-><clinit>()V
+PLcom/android/server/wearable/WearableSensingManagerPerUserService;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/wearable/WearableSensingManagerPerUserService;->destroyLocked()V
+PLcom/android/server/wearable/WearableSensingManagerService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;)V
+PLcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;)V
+PLcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal;-><init>(Lcom/android/server/wearable/WearableSensingManagerService;Lcom/android/server/wearable/WearableSensingManagerService$WearableSensingManagerInternal-IA;)V
+PLcom/android/server/wearable/WearableSensingManagerService;-><clinit>()V
+PLcom/android/server/wearable/WearableSensingManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wearable/WearableSensingManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/wearable/WearableSensingManagerService;->newServiceLocked(IZ)Lcom/android/server/wearable/WearableSensingManagerPerUserService;
+PLcom/android/server/wearable/WearableSensingManagerService;->onBootPhase(I)V
+PLcom/android/server/wearable/WearableSensingManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/wearable/WearableSensingManagerService;->onServiceRemoved(Lcom/android/server/wearable/WearableSensingManagerPerUserService;I)V
+PLcom/android/server/wearable/WearableSensingManagerService;->onStart()V
+PLcom/android/server/wm/AbsAppSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AbsAppSnapshotController;->initSnapshotScale()F
+PLcom/android/server/wm/AbsAppSnapshotController;->initialize(Lcom/android/server/wm/SnapshotCache;)V
+PLcom/android/server/wm/AbsAppSnapshotController;->setSnapshotEnabled(Z)V
+PLcom/android/server/wm/AbsAppSnapshotController;->shouldDisableSnapshots()Z
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher;-><init>(Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;Landroid/os/Looper;Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl$UiChangesForAccessibilityCallbacksDispatcher;->onRectangleOnScreenRequested(ILandroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->getInstance(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->hasWindowManagerEventDispatcher()Z
+HPLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->isTracingEnabled(J)Z
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->onRectangleOnScreenRequested(ILandroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;->setUiChangesForAccessibilityCallbacks(Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal$UiChangesForAccessibilityCallbacks;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityTracing$LogHandler;-><init>(Lcom/android/server/wm/AccessibilityController$AccessibilityTracing;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityTracing;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AccessibilityController$AccessibilityTracing;->getInstance(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityTracing;
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->-$$Nest$fgetmInitialized(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;)Z
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;Lcom/android/server/wm/AccessibilityWindowsPopulator;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->addPopulatedWindowInfo(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;Ljava/util/List;Ljava/util/Set;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->buildWindowInfoListLocked(Ljava/util/List;Landroid/graphics/Point;)Ljava/util/List;
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows(Z)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->getTopFocusWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindows(Z)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->updateUnaccountedSpace(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToAccessibility(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;Landroid/graphics/Region;Landroid/graphics/Region;)Z
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToUnaccountedSpaceComputation(Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;)Z
+PLcom/android/server/wm/AccessibilityController;->-$$Nest$sfgetSTATIC_LOCK()Ljava/lang/Object;
+PLcom/android/server/wm/AccessibilityController;-><clinit>()V
+PLcom/android/server/wm/AccessibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AccessibilityController;->getAccessibilityControllerInternal(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/AccessibilityController$AccessibilityControllerInternalImpl;
+HPLcom/android/server/wm/AccessibilityController;->hasCallbacks()Z
+PLcom/android/server/wm/AccessibilityController;->onFocusChanged(Lcom/android/server/wm/InputTarget;Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNot(IZ)V
+PLcom/android/server/wm/AccessibilityController;->setFocusedDisplay(I)V
+PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;-><init>()V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInScreen(Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInWindow(Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getTouchableRegionInWindow(ZLandroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Matrix;Landroid/graphics/Matrix;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getType()I
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getUnMagnifiedTouchableRegion(ZLandroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Matrix;Landroid/graphics/Matrix;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->getWindowInfo()Landroid/view/WindowInfo;
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->ignoreRecentsAnimationForAccessibility()Z
+HPLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->initializeData(Lcom/android/server/wm/WindowManagerService;Landroid/view/InputWindowHandle;Landroid/graphics/Matrix;Landroid/os/IBinder;Landroid/graphics/Matrix;)Lcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->isFocused()Z
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->isTouchable()Z
+PLcom/android/server/wm/AccessibilityWindowsPopulator$AccessibilityWindow;->shouldMagnify()Z
+PLcom/android/server/wm/AccessibilityWindowsPopulator$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityWindowsPopulator;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->-$$Nest$mnotifyWindowsChanged(Lcom/android/server/wm/AccessibilityWindowsPopulator;Ljava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;-><clinit>()V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AccessibilityController;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->findMagnificationSpecInverseMatrixIfNeeded(Landroid/util/SparseArray;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->getDisplaysForWindowsChanged(Ljava/util/List;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->getWindowsTransformMatrix(Ljava/util/List;)Ljava/util/HashMap;
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->hasWindowsChanged(Ljava/util/List;Ljava/util/List;)Z
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->notifyWindowsChanged(Ljava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->onWindowInfosChangedInternal([Landroid/view/InputWindowHandle;[Landroid/window/WindowInfosListener$DisplayInfo;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowHandlesAndNotifyWindowsChangeIfNeeded()V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->populateVisibleWindowsOnScreenLocked(ILjava/util/List;)V
+PLcom/android/server/wm/AccessibilityWindowsPopulator;->setWindowsNotification(Z)V
+PLcom/android/server/wm/ActivityCallerState$CallerInfo;-><init>()V
+PLcom/android/server/wm/ActivityCallerState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityCallerState;->addUriIfContentUri(Landroid/net/Uri;Landroid/util/ArraySet;)V
+PLcom/android/server/wm/ActivityCallerState;->computeCallerInfo(Landroid/os/IBinder;Landroid/content/Intent;I)V
+PLcom/android/server/wm/ActivityCallerState;->getContentUrisFromIntent(Landroid/content/Intent;)Landroid/util/ArraySet;
+HSPLcom/android/server/wm/ActivityClientController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityClientController;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
+PLcom/android/server/wm/ActivityClientController;->activityPaused(Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityClientController;->activityResumed(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityClientController;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/ActivityClientController;->activityTopResumedStateLost()V
+PLcom/android/server/wm/ActivityClientController;->getDisplayId(Landroid/os/IBinder;)I
+PLcom/android/server/wm/ActivityClientController;->getTaskForActivity(Landroid/os/IBinder;Z)I
+PLcom/android/server/wm/ActivityClientController;->onSystemReady()V
+PLcom/android/server/wm/ActivityClientController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/ActivityClientController;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityClientController;->reportSizeConfigurations(Landroid/os/IBinder;Landroid/window/SizeConfigurationBuckets;)V
+PLcom/android/server/wm/ActivityClientController;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmActivityInfo(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingFeatureId(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingPackage(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingPid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCallingUid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmCheckedOptions(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmClearOptionsAnimation(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/Runnable;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmIntent(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/Intent;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmRealCallingPid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmRealCallingUid(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmResolveInfo(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmResolvedType(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->-$$Nest$fgetmUserId(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;-><init>(IIIIILandroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->build()Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setCheckedOptions(Landroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setClearOptionsAnimationRunnable(Ljava/lang/Runnable;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;
+HPLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;-><init>(Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo$Builder;)V
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;->getActivityInfo()Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;->getCallingPackage()Ljava/lang/String;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;->getCallingUid()I
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;->getCheckedOptions()Landroid/app/ActivityOptions;
+PLcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;->getIntent()Landroid/content/Intent;
+PLcom/android/server/wm/ActivityInterceptorCallback;->isValidMainlineOrderId(I)Z
+PLcom/android/server/wm/ActivityInterceptorCallback;->isValidOrderId(I)Z
+PLcom/android/server/wm/ActivityInterceptorCallback;->onActivityLaunched(Landroid/app/TaskInfo;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;)V
+PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;-><clinit>()V
+PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;-><init>()V
+PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->getCallingUid()I
+PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->getInstance()Lcom/android/server/wm/ActivityInterceptorCallbackRegistry;
+PLcom/android/server/wm/ActivityInterceptorCallbackRegistry;->registerActivityInterceptorCallback(ILcom/android/server/wm/ActivityInterceptorCallback;)V
+HSPLcom/android/server/wm/ActivityMetricsLaunchObserver;-><init>()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
+PLcom/android/server/wm/ActivityMetricsLogger$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->-$$Nest$fgetmAssociatedTransitionInfo(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->-$$Nest$fputmAssociatedTransitionInfo(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;-><init>()V
+PLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->stopTrace(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;-><init>()V
+PLcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo-IA;)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Landroid/app/ActivityOptions;IZZIIZ)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateCurrentDelay()I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateDelay(J)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->contains(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->create(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Landroid/app/ActivityOptions;ZZIIZZI)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->isInterestingToLoggerAndObserver()Z
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->setLatestLaunchedActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetapplicationInfo(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetbindApplicationDelayMs(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetlaunchedActivityLaunchToken(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetlaunchedActivityLaunchedFromPackage(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetprocessName(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetprocessRecord(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetreason(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->-$$Nest$fgetstartingWindowDelayMs(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot-IA;)V
+HPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityRecord;I)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot-IA;)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->getLaunchState()I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->getPackageOptimizationInfo(Landroid/content/pm/dex/ArtManagerInternal;)Landroid/content/pm/dex/PackageOptimizationInfo;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->isInterestedToEventLog()Z
+PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$9Znu_naMY0TaDnbVNjFqSyiTkcc(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$E5bzb-1VyhAtO6RVNt8gP38XELI(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
+PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$MDDCoWK980XoH_6bZLWfXzhTwEY(Lcom/android/server/wm/ActivityMetricsLogger;Ljava/lang/String;I)V
+PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$kVd50LR3bWCXX7Lj8BYMTU-bGdY(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->$r8$lambda$yb4ber5HhUmLvhJHcMEn3T962l0(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;-><clinit>()V
+HSPLcom/android/server/wm/ActivityMetricsLogger;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->convertTransitionTypeToLaunchObserverTemperature(I)I
+PLcom/android/server/wm/ActivityMetricsLogger;->done(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Ljava/lang/String;J)V
+PLcom/android/server/wm/ActivityMetricsLogger;->getActiveTransitionInfo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+PLcom/android/server/wm/ActivityMetricsLogger;->getAppHibernationManagerInternal()Lcom/android/server/apphibernation/AppHibernationManagerInternal;
+PLcom/android/server/wm/ActivityMetricsLogger;->getAppStartTransitionType(IZ)I
+PLcom/android/server/wm/ActivityMetricsLogger;->getArtManagerInternal()Landroid/content/pm/dex/ArtManagerInternal;
+PLcom/android/server/wm/ActivityMetricsLogger;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
+PLcom/android/server/wm/ActivityMetricsLogger;->isAppCompateStateChangedToLetterboxed(I)Z
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionFinished$1(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZIIZ)V
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$3(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$4(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$notifyFullyDrawn$5(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunchFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyReportFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatState(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppCompatStateInternal(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityMetricsLogger$PackageCompatStateInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppDisplayed(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawnMetrics(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZZ)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppStartMemoryStateCapture(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransition(JILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZII)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Z)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logInTaskActivityStart(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;ZI)V
+PLcom/android/server/wm/ActivityMetricsLogger;->logWindowState()V
+PLcom/android/server/wm/ActivityMetricsLogger;->logWindowState(Ljava/lang/String;I)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;IZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyBeforePackageUnstopped(Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyBindApplication(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyFullyDrawn(Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyStartingWindowDrawn(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/ArrayMap;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->notifyWindowsDrawn(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
+PLcom/android/server/wm/ActivityMetricsLogger;->scheduleCheckActivityToBeDrawnIfSleeping(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->startLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->stopLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda14;-><init>()V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda15;-><init>()V
+HPLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda16;->get()Ljava/lang/Object;
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda17;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda20;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda21;->get()Ljava/lang/Object;
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda31;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$$ExternalSyntheticLambda31;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/ActivityRecord$1;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$2;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityRecord$2;->run()V
+PLcom/android/server/wm/ActivityRecord$3;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$4;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$5;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$6;-><clinit>()V
+PLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$AddStartingWindow-IA;)V
+PLcom/android/server/wm/ActivityRecord$AddStartingWindow;->run()V
+PLcom/android/server/wm/ActivityRecord$Builder;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityRecord$Builder;->build()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord$Builder;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setActivityOptions(Landroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setCaller(Lcom/android/server/wm/WindowProcessController;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setComponentSpecified(Z)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setConfiguration(Landroid/content/res/Configuration;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromFeature(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromPid(I)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setLaunchedFromUid(I)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setRequestCode(I)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setResultTo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setResultWho(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setRootVoiceInteraction(Z)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$Builder;->setSourceRecord(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord$Builder;
+PLcom/android/server/wm/ActivityRecord$State;->$values()[Lcom/android/server/wm/ActivityRecord$State;
+PLcom/android/server/wm/ActivityRecord$State;-><clinit>()V
+PLcom/android/server/wm/ActivityRecord$State;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/wm/ActivityRecord$State;->values()[Lcom/android/server/wm/ActivityRecord$State;
+PLcom/android/server/wm/ActivityRecord$Token;-><init>()V
+PLcom/android/server/wm/ActivityRecord$Token;-><init>(Lcom/android/server/wm/ActivityRecord$Token-IA;)V
+PLcom/android/server/wm/ActivityRecord;->$r8$lambda$0OfvhI5TUgQo6Y024Yo0FylceBE(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->$r8$lambda$I1MSNY3CpU-e9WIQbLSkEsRUKEo(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->$r8$lambda$tbbQczlHwYJa84Bl3WvoMl7sYRg(Lcom/android/server/wm/ActivityRecord;)Landroid/content/Context;
+HPLcom/android/server/wm/ActivityRecord;->$r8$lambda$y0npCffze-hoyeHGzAjmpNlZO0Y(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;)Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityRecord;->-$$Nest$mcontinueLaunchTicking(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;J)V
+PLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IZZLcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Landroid/os/PersistableBundle;Landroid/app/ActivityManager$TaskDescription;JLcom/android/server/wm/ActivityRecord-IA;)V
+PLcom/android/server/wm/ActivityRecord;->activityPaused(Z)V
+PLcom/android/server/wm/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityRecord;->activityStopped(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/ActivityRecord;->addStartingWindow(Ljava/lang/String;ILcom/android/server/wm/ActivityRecord;ZZZZZZZ)Z
+PLcom/android/server/wm/ActivityRecord;->addToStopping(ZZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->addWindow(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->allDrawnStatesConsidered()Z
+PLcom/android/server/wm/ActivityRecord;->allowMoveToFront()Z
+PLcom/android/server/wm/ActivityRecord;->allowTaskSnapshot()Z
+PLcom/android/server/wm/ActivityRecord;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/ActivityRecord;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;F)Z
+PLcom/android/server/wm/ActivityRecord;->applyLocaleOverrideIfNeeded(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->applyOptionsAnimation()V
+PLcom/android/server/wm/ActivityRecord;->applyOptionsAnimation(Landroid/app/ActivityOptions;Landroid/content/Intent;)V
+HPLcom/android/server/wm/ActivityRecord;->areBoundsLetterboxed()Z
+PLcom/android/server/wm/ActivityRecord;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->attachStartingWindow(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/ActivityRecord;->attachedToProcess()Z
+HPLcom/android/server/wm/ActivityRecord;->canAffectSystemUiFlags()Z
+PLcom/android/server/wm/ActivityRecord;->canBeLaunchedOnDisplay(I)Z
+HPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z
+PLcom/android/server/wm/ActivityRecord;->canForceResizeNonResizable(I)Z
+PLcom/android/server/wm/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->canReceiveKeys()Z
+HPLcom/android/server/wm/ActivityRecord;->canResumeByCompat()Z
+HPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked()Z
+HPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->canShowWhenLockedInner(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->canShowWindows()Z
+PLcom/android/server/wm/ActivityRecord;->canTurnScreenOn()Z
+PLcom/android/server/wm/ActivityRecord;->checkAppWindowsReadyToShow()V
+PLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z
+PLcom/android/server/wm/ActivityRecord;->checkKeyguardFlagsChanged()V
+PLcom/android/server/wm/ActivityRecord;->clearAllDrawn()V
+PLcom/android/server/wm/ActivityRecord;->clearOptionsAnimation()V
+PLcom/android/server/wm/ActivityRecord;->clearOptionsAnimationForSiblings()V
+PLcom/android/server/wm/ActivityRecord;->clearThumbnail()V
+PLcom/android/server/wm/ActivityRecord;->commitFinishDrawing(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZ)V
+HPLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZZ)V
+PLcom/android/server/wm/ActivityRecord;->completeResumeLocked()V
+PLcom/android/server/wm/ActivityRecord;->computeCallerInfo(Landroid/os/IBinder;Landroid/content/Intent;I)V
+PLcom/android/server/wm/ActivityRecord;->computeInitialCallerInfo()V
+PLcom/android/server/wm/ActivityRecord;->computeTaskAffinity(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z
+HPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z
+HPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z
+PLcom/android/server/wm/ActivityRecord;->continueLaunchTicking()Z
+PLcom/android/server/wm/ActivityRecord;->deferCommitVisibilityChange(Z)Z
+PLcom/android/server/wm/ActivityRecord;->destroySurfaces()V
+PLcom/android/server/wm/ActivityRecord;->destroySurfaces(Z)V
+PLcom/android/server/wm/ActivityRecord;->determineLaunchSourceType(ILcom/android/server/wm/WindowProcessController;)I
+HPLcom/android/server/wm/ActivityRecord;->ensureActivityConfiguration(Z)Z
+PLcom/android/server/wm/ActivityRecord;->evaluateStartingWindowTheme(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;II)I
+PLcom/android/server/wm/ActivityRecord;->fillsParent()Z
+PLcom/android/server/wm/ActivityRecord;->findMainWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/ActivityRecord;->finishLaunchTickingLocked()V
+PLcom/android/server/wm/ActivityRecord;->finishOrAbortReplacingWindow()V
+PLcom/android/server/wm/ActivityRecord;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
+PLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/ActivityRecord;->forToken(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->getAllowUntrustedEmbeddingStateSharingProperty()Z
+PLcom/android/server/wm/ActivityRecord;->getAppCompatState()I
+HPLcom/android/server/wm/ActivityRecord;->getAppCompatState(Z)I
+HPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityRecord;->getCameraCompatControlState()I
+HPLcom/android/server/wm/ActivityRecord;->getCompatDisplayInsets()Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;
+PLcom/android/server/wm/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I
+PLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/ActivityRecord;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/ActivityRecord;->getDisplayId()I
+PLcom/android/server/wm/ActivityRecord;->getFilteredReferrer(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/wm/ActivityRecord;->getInputApplicationHandle(Z)Landroid/view/InputApplicationHandle;
+PLcom/android/server/wm/ActivityRecord;->getLastParentBeforePip()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityRecord;->getLaunchedFromBubble()Z
+HPLcom/android/server/wm/ActivityRecord;->getLetterboxInnerBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityRecord;->getLockTaskLaunchMode(Landroid/content/pm/ActivityInfo;Landroid/app/ActivityOptions;)I
+PLcom/android/server/wm/ActivityRecord;->getLocusId()Landroid/content/LocusId;
+HPLcom/android/server/wm/ActivityRecord;->getMaxAspectRatio()F
+HPLcom/android/server/wm/ActivityRecord;->getMinAspectRatio()F
+PLcom/android/server/wm/ActivityRecord;->getOrCreateServiceConnectionsHolder()Lcom/android/server/wm/ActivityServiceConnectionsHolder;
+HPLcom/android/server/wm/ActivityRecord;->getOrganizedTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityRecord;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/ActivityRecord;->getOrientation(I)I
+HPLcom/android/server/wm/ActivityRecord;->getOverrideOrientation()I
+PLcom/android/server/wm/ActivityRecord;->getPersistentSavedState()Landroid/os/PersistableBundle;
+PLcom/android/server/wm/ActivityRecord;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ActivityRecord;->getProcessName()Ljava/lang/String;
+PLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation(Z)I
+PLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation(ZI)I
+PLcom/android/server/wm/ActivityRecord;->getRequestedOrientation()I
+HPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityRecord;->getRootTask(Landroid/os/IBinder;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityRecord;->getSavedState()Landroid/os/Bundle;
+PLcom/android/server/wm/ActivityRecord;->getSplashscreenTheme(Landroid/app/ActivityOptions;)I
+PLcom/android/server/wm/ActivityRecord;->getStartingWindowType(ZZZZZZLandroid/window/TaskSnapshot;)I
+PLcom/android/server/wm/ActivityRecord;->getState()Lcom/android/server/wm/ActivityRecord$State;
+HPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityRecord;->getTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/ActivityRecord;->getTurnScreenOnFlag()Z
+PLcom/android/server/wm/ActivityRecord;->getUid()I
+PLcom/android/server/wm/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/uri/UriPermissionOwner;
+HPLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()V
+HPLcom/android/server/wm/ActivityRecord;->handleCompleteDeferredRemoval()Z
+PLcom/android/server/wm/ActivityRecord;->handlesOrientationChangeFromDescendant(I)Z
+PLcom/android/server/wm/ActivityRecord;->hasActivity()Z
+HPLcom/android/server/wm/ActivityRecord;->hasFixedAspectRatio()Z
+HPLcom/android/server/wm/ActivityRecord;->hasOverlayOverUntrustedModeEmbedded()Z
+HPLcom/android/server/wm/ActivityRecord;->hasProcess()Z
+PLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z
+PLcom/android/server/wm/ActivityRecord;->hasStartingWindow()Z
+PLcom/android/server/wm/ActivityRecord;->hasWallpaperBackgroundForLetterbox()Z
+PLcom/android/server/wm/ActivityRecord;->inSizeCompatMode()Z
+PLcom/android/server/wm/ActivityRecord;->isAlwaysOnTop()Z
+HPLcom/android/server/wm/ActivityRecord;->isConfigurationDispatchPaused()Z
+PLcom/android/server/wm/ActivityRecord;->isDisplaySleepingAndSwapping()Z
+PLcom/android/server/wm/ActivityRecord;->isEligibleForLetterboxEducation()Z
+HPLcom/android/server/wm/ActivityRecord;->isEmbedded()Z
+HPLcom/android/server/wm/ActivityRecord;->isEmbeddedInUntrustedMode()Z
+PLcom/android/server/wm/ActivityRecord;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/ActivityRecord;->isFocusable()Z
+PLcom/android/server/wm/ActivityRecord;->isFreezingScreen()Z
+PLcom/android/server/wm/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z
+PLcom/android/server/wm/ActivityRecord;->isIconStylePreferred(I)Z
+PLcom/android/server/wm/ActivityRecord;->isInHistory()Z
+HPLcom/android/server/wm/ActivityRecord;->isInLetterboxAnimation()Z
+PLcom/android/server/wm/ActivityRecord;->isInRootTaskLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityRecord;->isInTransition()Z
+PLcom/android/server/wm/ActivityRecord;->isKeyguardLocked()Z
+PLcom/android/server/wm/ActivityRecord;->isLastWindow(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/ActivityRecord;->isLetterboxedForFixedOrientationAndAspectRatio()Z
+PLcom/android/server/wm/ActivityRecord;->isNoHistory()Z
+PLcom/android/server/wm/ActivityRecord;->isPersistable()Z
+PLcom/android/server/wm/ActivityRecord;->isProcessRunning()Z
+HPLcom/android/server/wm/ActivityRecord;->isRelaunching()Z
+PLcom/android/server/wm/ActivityRecord;->isReportedDrawn()Z
+HPLcom/android/server/wm/ActivityRecord;->isResizeable()Z
+HPLcom/android/server/wm/ActivityRecord;->isResizeable(Z)Z
+PLcom/android/server/wm/ActivityRecord;->isResolverActivity(Ljava/lang/String;)Z
+PLcom/android/server/wm/ActivityRecord;->isResolverOrDelegateActivity()Z
+PLcom/android/server/wm/ActivityRecord;->isRootOfTask()Z
+PLcom/android/server/wm/ActivityRecord;->isSleeping()Z
+HPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;)Z
+PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
+HPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;Lcom/android/server/wm/ActivityRecord$State;)Z
+PLcom/android/server/wm/ActivityRecord;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+PLcom/android/server/wm/ActivityRecord;->isTaskOverlay()Z
+PLcom/android/server/wm/ActivityRecord;->isTopRunningActivity()Z
+PLcom/android/server/wm/ActivityRecord;->isTransitionForward()Z
+HPLcom/android/server/wm/ActivityRecord;->isUid(I)Z
+HPLcom/android/server/wm/ActivityRecord;->isVisible()Z
+HPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z
+HPLcom/android/server/wm/ActivityRecord;->lambda$getBounds$22(Landroid/graphics/Rect;)Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityRecord;->lambda$new$2()Landroid/content/Context;
+PLcom/android/server/wm/ActivityRecord;->lambda$showAllWindowsLocked$14(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->lambda$transferStartingWindowFromHiddenAboveTokenIfNeeded$8(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->logAppCompatState()V
+PLcom/android/server/wm/ActivityRecord;->logStartActivity(ILcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ActivityRecord;->makeActiveIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->makeInvisible()V
+PLcom/android/server/wm/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityRecord;->needsZBoost()Z
+PLcom/android/server/wm/ActivityRecord;->notifyUnknownVisibilityLaunchedForKeyguardTransition()V
+HPLcom/android/server/wm/ActivityRecord;->occludesParent()Z
+HPLcom/android/server/wm/ActivityRecord;->occludesParent(Z)Z
+PLcom/android/server/wm/ActivityRecord;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/ActivityRecord;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/ActivityRecord;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/ActivityRecord;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/ActivityRecord;->onStartingWindowDrawn()V
+PLcom/android/server/wm/ActivityRecord;->onSyncTransactionCommitted(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/ActivityRecord;->onWindowsDrawn()V
+PLcom/android/server/wm/ActivityRecord;->onWindowsGone()V
+PLcom/android/server/wm/ActivityRecord;->onWindowsVisible()V
+PLcom/android/server/wm/ActivityRecord;->orientationRespectedWithInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/ActivityRecord;->pauseKeyDispatchingLocked()V
+PLcom/android/server/wm/ActivityRecord;->postApplyAnimation(ZZ)V
+PLcom/android/server/wm/ActivityRecord;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V
+PLcom/android/server/wm/ActivityRecord;->providesMaxBounds()Z
+PLcom/android/server/wm/ActivityRecord;->providesOrientation()Z
+PLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->removeLaunchTickRunnable()V
+PLcom/android/server/wm/ActivityRecord;->removePauseTimeout()V
+PLcom/android/server/wm/ActivityRecord;->removeStartingWindow()V
+PLcom/android/server/wm/ActivityRecord;->removeStartingWindowAnimation(Z)V
+PLcom/android/server/wm/ActivityRecord;->removeStopTimeout()V
+PLcom/android/server/wm/ActivityRecord;->reportDescendantOrientationChangeIfNeeded()V
+PLcom/android/server/wm/ActivityRecord;->requestUpdateWallpaperIfNeeded()V
+PLcom/android/server/wm/ActivityRecord;->resolveAspectRatioRestriction(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->resolveFixedOrientationConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->resumeKeyDispatchingLocked()V
+PLcom/android/server/wm/ActivityRecord;->scheduleAddStartingWindow()V
+PLcom/android/server/wm/ActivityRecord;->schedulePauseTimeout()V
+PLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)Z
+PLcom/android/server/wm/ActivityRecord;->searchCandidateLaunchingActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord;->setAppLayoutChanges(ILjava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->setClientVisible(Z)V
+PLcom/android/server/wm/ActivityRecord;->setCurrentLaunchCanTurnScreenOn(Z)V
+PLcom/android/server/wm/ActivityRecord;->setCustomizeSplashScreenExitAnimation(Z)V
+PLcom/android/server/wm/ActivityRecord;->setDeferHidingClient(Z)V
+PLcom/android/server/wm/ActivityRecord;->setDropInputMode(I)V
+PLcom/android/server/wm/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->setOptions(Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/ActivityRecord;->setProcess(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityRecord;->setSavedState(Landroid/os/Bundle;)V
+PLcom/android/server/wm/ActivityRecord;->setSizeConfigurations(Landroid/window/SizeConfigurationBuckets;)V
+HPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->setSurfaceControl(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+PLcom/android/server/wm/ActivityRecord;->setTaskHasBeenVisible()Z
+HPLcom/android/server/wm/ActivityRecord;->setVisibility(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V
+PLcom/android/server/wm/ActivityRecord;->setVisible(Z)V
+PLcom/android/server/wm/ActivityRecord;->setVisibleRequested(Z)Z
+PLcom/android/server/wm/ActivityRecord;->setWillCloseOrEnterPip(Z)V
+HPLcom/android/server/wm/ActivityRecord;->shouldBeResumed(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->shouldBeVisibleUnchecked()Z
+HPLcom/android/server/wm/ActivityRecord;->shouldCreateCompatDisplayInsets()Z
+PLcom/android/server/wm/ActivityRecord;->shouldIgnoreOrientationRequests()Z
+HPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->shouldPauseActivity(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->shouldResumeActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->shouldSendCompatFakeFocus()Z
+HPLcom/android/server/wm/ActivityRecord;->shouldStartActivity()Z
+PLcom/android/server/wm/ActivityRecord;->shouldStartChangeTransition(Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/TaskFragment;)Z
+PLcom/android/server/wm/ActivityRecord;->shouldUpdateConfigForDisplayChanged()Z
+PLcom/android/server/wm/ActivityRecord;->shouldUseSolidColorSplashScreen(Lcom/android/server/wm/ActivityRecord;ZLandroid/app/ActivityOptions;I)Z
+PLcom/android/server/wm/ActivityRecord;->showAllWindowsLocked()V
+PLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/ActivityRecord;->showSurfaceOnCreation()Z
+HPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z
+PLcom/android/server/wm/ActivityRecord;->startLaunchTickingLocked()V
+PLcom/android/server/wm/ActivityRecord;->stopFreezingScreen(ZZ)V
+PLcom/android/server/wm/ActivityRecord;->stopIfPossible()V
+PLcom/android/server/wm/ActivityRecord;->supportsMultiWindow()Z
+PLcom/android/server/wm/ActivityRecord;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z
+PLcom/android/server/wm/ActivityRecord;->supportsPictureInPicture()Z
+HPLcom/android/server/wm/ActivityRecord;->supportsSizeChanges()I
+PLcom/android/server/wm/ActivityRecord;->takeRemoteTransition()Landroid/window/RemoteTransition;
+PLcom/android/server/wm/ActivityRecord;->takeSceneTransitionInfo()Landroid/app/ActivityOptions$SceneTransitionInfo;
+HPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;
+PLcom/android/server/wm/ActivityRecord;->transferSplashScreenIfNeeded()Z
+PLcom/android/server/wm/ActivityRecord;->transferStartingWindowFromHiddenAboveTokenIfNeeded()V
+PLcom/android/server/wm/ActivityRecord;->updateAllDrawn()V
+PLcom/android/server/wm/ActivityRecord;->updateAnimatingActivityRegistry()V
+PLcom/android/server/wm/ActivityRecord;->updateColorTransform()V
+HPLcom/android/server/wm/ActivityRecord;->updateCompatDisplayInsets()V
+HPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/ActivityRecord;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/ActivityRecord;->updateReportedConfigurationAndSend()Z
+HPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V
+PLcom/android/server/wm/ActivityRecord;->updateResolvedBoundsPosition(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->updateTaskDescription(Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/ActivityRecord;->updateUntrustedEmbeddingInputProtection()V
+HPLcom/android/server/wm/ActivityRecord;->updateVisibilityIgnoringKeyguard(Z)V
+PLcom/android/server/wm/ActivityRecord;->updateVisibleForServiceConnection()V
+PLcom/android/server/wm/ActivityRecord;->validateStartingWindowTheme(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
+PLcom/android/server/wm/ActivityRecord;->waitForSyncTransactionCommit(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/ActivityRecord;->windowsAreFocusable()Z
+HPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z
+PLcom/android/server/wm/ActivityRecordInputSink;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityRecordInputSink;->applyChangesToSurfaceIfChanged(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/ActivityRecordInputSink;->createInputWindowHandle()Landroid/view/InputWindowHandle;
+PLcom/android/server/wm/ActivityRecordInputSink;->createSurface(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/ActivityRecordInputSink;->getInputWindowHandleWrapper()Lcom/android/server/wm/InputWindowHandleWrapper;
+PLcom/android/server/wm/ActivitySecurityModelFeatureFlags$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;-><clinit>()V
+PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;->initialize(Ljava/util/concurrent/Executor;Landroid/content/pm/PackageManager;)V
+PLcom/android/server/wm/ActivitySecurityModelFeatureFlags;->updateFromDeviceConfig()V
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivitySnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ActivitySnapshotController$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/wm/ActivitySnapshotController$$ExternalSyntheticLambda1;->getSystemDirectoryForUser(I)Ljava/io/File;
+PLcom/android/server/wm/ActivitySnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/SnapshotPersistQueue;)V
+PLcom/android/server/wm/ActivitySnapshotController;->beginSnapshotProcess()V
+PLcom/android/server/wm/ActivitySnapshotController;->createPersistInfoProvider(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;)Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;
+PLcom/android/server/wm/ActivitySnapshotController;->endSnapshotProcess()V
+PLcom/android/server/wm/ActivitySnapshotController;->handleTaskTransition(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivitySnapshotController;->handleTransitionFinish(Ljava/util/ArrayList;)V
+PLcom/android/server/wm/ActivitySnapshotController;->initSnapshotScale()F
+PLcom/android/server/wm/ActivitySnapshotController;->isSnapshotEnabled()Z
+PLcom/android/server/wm/ActivitySnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/ActivityRecord;Z)V
+HSPLcom/android/server/wm/ActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/ActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStarter$Factory;)V
+PLcom/android/server/wm/ActivityStartController;->checkTargetUser(IZIILjava/lang/String;)I
+PLcom/android/server/wm/ActivityStartController;->getPendingRemoteAnimationRegistry()Lcom/android/server/wm/PendingRemoteAnimationRegistry;
+PLcom/android/server/wm/ActivityStartController;->obtainStarter(Landroid/content/Intent;Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStartController;->onExecutionComplete(Lcom/android/server/wm/ActivityStarter;)V
+PLcom/android/server/wm/ActivityStartController;->onExecutionStarted()V
+PLcom/android/server/wm/ActivityStartController;->startHomeActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/ActivityStartController;->startSetupActivity()V
+PLcom/android/server/wm/ActivityStartInterceptor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/content/Context;)V
+HPLcom/android/server/wm/ActivityStartInterceptor;->getInterceptorInfo(Ljava/lang/Runnable;)Lcom/android/server/wm/ActivityInterceptorCallback$ActivityInterceptorInfo;
+PLcom/android/server/wm/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;IILandroid/app/ActivityOptions;Lcom/android/server/wm/TaskDisplayArea;)Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptHarmfulAppIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptHomeIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptLockTaskModeViolationPackageIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptLockedProfileIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptSuspendedPackageIfNeeded()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/pm/ActivityInfo;I)Landroid/content/Intent;
+PLcom/android/server/wm/ActivityStartInterceptor;->isPackageSuspended()Z
+PLcom/android/server/wm/ActivityStartInterceptor;->onActivityLaunched(Landroid/app/TaskInfo;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStartInterceptor;->setStates(IIIILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStarter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TaskFragment;)V
+HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
+PLcom/android/server/wm/ActivityStarter$DefaultFactory;->obtain()Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter$DefaultFactory;->recycle(Lcom/android/server/wm/ActivityStarter;)V
+HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;->setController(Lcom/android/server/wm/ActivityStartController;)V
+PLcom/android/server/wm/ActivityStarter$Request;-><init>()V
+HPLcom/android/server/wm/ActivityStarter$Request;->reset()V
+HPLcom/android/server/wm/ActivityStarter$Request;->resolveActivity(Lcom/android/server/wm/ActivityTaskSupervisor;)V
+HPLcom/android/server/wm/ActivityStarter$Request;->set(Lcom/android/server/wm/ActivityStarter$Request;)V
+PLcom/android/server/wm/ActivityStarter;-><init>(Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
+PLcom/android/server/wm/ActivityStarter;->addOrReparentStartingActivity(Lcom/android/server/wm/Task;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStarter;->adjustLaunchFlagsToDocumentMode(Lcom/android/server/wm/ActivityRecord;ZZI)I
+PLcom/android/server/wm/ActivityStarter;->avoidMoveToFront()Z
+PLcom/android/server/wm/ActivityStarter;->computeLaunchParams(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStarter;->computeLaunchingTaskFlags()V
+PLcom/android/server/wm/ActivityStarter;->computeResolveFilterUid(III)I
+PLcom/android/server/wm/ActivityStarter;->computeSuggestedLaunchDisplayArea(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/ActivityStarter;->computeTargetTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityStarter;->deliverToCurrentTopIfNeeded(Lcom/android/server/wm/Task;Lcom/android/server/uri/NeededUriGrants;)I
+HPLcom/android/server/wm/ActivityStarter;->execute()I
+HPLcom/android/server/wm/ActivityStarter;->executeRequest(Lcom/android/server/wm/ActivityStarter$Request;)I
+PLcom/android/server/wm/ActivityStarter;->getExternalResult(I)I
+PLcom/android/server/wm/ActivityStarter;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/Task;Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityStarter;->getReusableTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityStarter;->handleStartResult(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ILcom/android/server/wm/Transition;Landroid/window/RemoteTransition;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityStarter;->isAllowedToStart(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)I
+PLcom/android/server/wm/ActivityStarter;->onExecutionComplete()V
+PLcom/android/server/wm/ActivityStarter;->onExecutionStarted()V
+PLcom/android/server/wm/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStarter;->recordTransientLaunchIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStarter;->reset(Z)V
+PLcom/android/server/wm/ActivityStarter;->resolveToHeavyWeightSwitcherIfNeeded()I
+PLcom/android/server/wm/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V
+HPLcom/android/server/wm/ActivityStarter;->set(Lcom/android/server/wm/ActivityStarter;)V
+PLcom/android/server/wm/ActivityStarter;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setActivityOptions(Landroid/os/Bundle;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setActivityOptions(Lcom/android/server/wm/SafeActivityOptions;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCaller(Landroid/app/IApplicationThread;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCallingUid(I)Lcom/android/server/wm/ActivityStarter;
+HPLcom/android/server/wm/ActivityStarter;->setInitialState(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;ILcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;II)V
+PLcom/android/server/wm/ActivityStarter;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setNewTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStarter;->setOutActivity([Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setProfilerInfo(Landroid/app/ProfilerInfo;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setReason(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setRequestCode(I)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setResultTo(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setResultWho(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setStartFlags(I)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setUserId(I)Lcom/android/server/wm/ActivityStarter;
+HPLcom/android/server/wm/ActivityStarter;->startActivityInner(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/uri/NeededUriGrants;I)I
+PLcom/android/server/wm/ActivityStarter;->startActivityUnchecked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskFragment;Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/uri/NeededUriGrants;I)I
+HSPLcom/android/server/wm/ActivityTaskManagerInternal;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda12;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda13;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;-><init>(Landroid/app/ActivityManagerInternal;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda18;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda19;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda20;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda20;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda21;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda22;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda23;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda23;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$1;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$H;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->getService()Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onStart()V
+PLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onUserUnlocked(Lcom/android/server/SystemService$TargetUser;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->createSleepTokenAcquirer(Ljava/lang/String;)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZII)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->enableScreenAfterBoot(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getServiceConnectionsHolder(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityServiceConnectionsHolder;
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopApp()Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppDied(Lcom/android/server/wm/WindowProcessController;ZLjava/lang/Runnable;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isCallerRecents(I)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isShuttingDown()Z
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->loadRecentTasksForUser(I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyActiveVoiceInteractionServiceChanged(Landroid/content/ComponentName;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onCleanUpApplicationRecord(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onForceStopPackage(Ljava/lang/String;ZZI)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessMapped(ILcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessUnMapped(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidActive(II)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidInactive(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerActivityStartInterceptor(ILcom/android/server/wm/ActivityInterceptorCallback;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerScreenObserver(Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->resumeTopActivities(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAllowAppSwitches(Ljava/lang/String;II)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setBackgroundActivityStartCallback(Lcom/android/server/wm/BackgroundActivityStartCallback;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setCompanionAppUids(ILjava/util/Set;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setDeviceOwnerUid(I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setProfileOwnerUids(Ljava/util/Set;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->showSystemReadyErrorDialogsIfNeeded()V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeOnAllDisplays(ILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->updateTopComponentForFactoryTest()V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->useTopSchedGroupForTopProcess()Z
+PLcom/android/server/wm/ActivityTaskManagerService$SettingObserver;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$SleepTokenAcquirerImpl;->release(I)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$UiHandler;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;-><init>()V
+PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$G-ZVGkJnOiiiPtzNWf__-3fwOz0(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$gl_rL-Uj8MkGoxcvZAtiOobhr1U(Lcom/android/server/wm/ActivityTaskManagerService;ZZLcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$o1LyOlG7Bjhnk6ihNjw6qxiRkiM(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$xw3oVmq5ZU_M2JzNhcLEohfHV_4(Lcom/android/server/wm/ActivityTaskManagerService;ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->$r8$lambda$zamvtNbvmh2J_IeaFnbzAisM5zY(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmActivityInterceptorCallbacks(Lcom/android/server/wm/ActivityTaskManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmCompanionAppUidsMap(Lcom/android/server/wm/ActivityTaskManagerService;)Ljava/util/Map;
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmRecentTasks(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/RecentTasks;
+HPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmRetainPowerModeAndTopProcessState(Lcom/android/server/wm/ActivityTaskManagerService;)Z
+HSPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fgetmSleeping(Lcom/android/server/wm/ActivityTaskManagerService;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fputmAccessibilityServiceUids(Lcom/android/server/wm/ActivityTaskManagerService;[I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$fputmBackgroundActivityStartCallback(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/BackgroundActivityStartCallback;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$mstart(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->-$$Nest$mupdateEventDispatchingLocked(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->addWindowLayoutReasons(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->applyUpdateLockStateLocked(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->assertPackageMatchesCallingUid(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->checkCallingPermission(Ljava/lang/String;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+PLcom/android/server/wm/ActivityTaskManagerService;->checkPermission(Ljava/lang/String;II)I
+PLcom/android/server/wm/ActivityTaskManagerService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+HPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->createAppWarnings(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;Ljava/io/File;)Lcom/android/server/wm/AppWarnings;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->createTaskSupervisor()Lcom/android/server/wm/ActivityTaskSupervisor;
+HPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZII)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->endPowerMode(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->enforceTaskPermission(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->finishRunningVoiceLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->getActivityClientController()Landroid/app/IActivityClientController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getActivityInterceptorCallbacks()Landroid/util/SparseArray;
+PLcom/android/server/wm/ActivityTaskManagerService;->getActivityStartController()Lcom/android/server/wm/ActivityStartController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAllRootTaskInfosOnDisplay(I)Ljava/util/List;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAnrController(Landroid/content/pm/ApplicationInfo;)Landroid/app/AnrController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAppOpsManager()Landroid/app/AppOpsManager;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAppWarningsLocked()Lcom/android/server/wm/AppWarnings;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getBackgroundActivityStartCallback()Lcom/android/server/wm/BackgroundActivityStartCallback;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getBalAppSwitchesState()I
+PLcom/android/server/wm/ActivityTaskManagerService;->getConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getCurrentUserId()I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForCallingPid()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForPid(I)Landroid/content/res/Configuration;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalLock()Lcom/android/server/wm/WindowManagerGlobalLock;
+PLcom/android/server/wm/ActivityTaskManagerService;->getHomeIntent()Landroid/content/Intent;
+PLcom/android/server/wm/ActivityTaskManagerService;->getInputDispatchingTimeoutMillisLocked(Lcom/android/server/wm/ActivityRecord;)J
+PLcom/android/server/wm/ActivityTaskManagerService;->getInputDispatchingTimeoutMillisLocked(Lcom/android/server/wm/WindowProcessController;)J
+HPLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J
+HPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager;
+PLcom/android/server/wm/ActivityTaskManagerService;->getLockTaskController()Lcom/android/server/wm/LockTaskController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getPackageManager()Landroid/content/pm/IPackageManager;
+PLcom/android/server/wm/ActivityTaskManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
+PLcom/android/server/wm/ActivityTaskManagerService;->getPackageNameIfUnique(II)Ljava/lang/String;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getPermissionPolicyInternal()Lcom/android/server/policy/PermissionPolicyInternal;
+PLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(II)Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Landroid/app/IApplicationThread;)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Ljava/lang/String;I)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks()Lcom/android/server/wm/RecentTasks;
+PLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getSysUiServiceComponentLocked()Landroid/content/ComponentName;
+PLcom/android/server/wm/ActivityTaskManagerService;->getTaskBounds(I)Landroid/graphics/Rect;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getTaskChangeNotificationController()Lcom/android/server/wm/TaskChangeNotificationController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getTasks(IZZI)Ljava/util/List;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTransitionController()Lcom/android/server/wm/TransitionController;
+PLcom/android/server/wm/ActivityTaskManagerService;->getUiContext()Landroid/content/Context;
+PLcom/android/server/wm/ActivityTaskManagerService;->getUserManager()Lcom/android/server/pm/UserManagerService;
+PLcom/android/server/wm/ActivityTaskManagerService;->getWindowOrganizerController()Landroid/window/IWindowOrganizerController;
+PLcom/android/server/wm/ActivityTaskManagerService;->handleIncomingUser(IIILjava/lang/String;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->hasActiveVisibleWindow(I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->increaseAssetConfigurationSeq()I
+PLcom/android/server/wm/ActivityTaskManagerService;->increaseConfigurationSeqLocked()I
+HSPLcom/android/server/wm/ActivityTaskManagerService;->initialize(Lcom/android/server/firewall/IntentFirewall;Lcom/android/server/am/PendingIntentController;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->installSystemProviders()V
+PLcom/android/server/wm/ActivityTaskManagerService;->isBooted()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isBooting()Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isCallerRecents(I)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isControllerAMonkey()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isCrossUserAllowed(II)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isPip2ExperimentEnabled()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isSameApp(ILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isSdkSandboxActivityIntent(Landroid/content/Context;Landroid/content/Intent;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isSleepingLocked()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isSleepingOrShuttingDownLocked()Z
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$applyUpdateLockStateLocked$0(ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$postFinishBooting$12(ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$scheduleAppGcsLocked$13()V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$3(ZZLcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$4(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->logAppTooSlow(Lcom/android/server/wm/WindowProcessController;JLjava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->maybeHideLockedProfileActivityLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->onActivityManagerInternalAdded()V
+PLcom/android/server/wm/ActivityTaskManagerService;->onImeWindowSetOnDisplayArea(ILcom/android/server/wm/DisplayArea;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->onInitPowerManagement()V
+PLcom/android/server/wm/ActivityTaskManagerService;->onSystemReady()V
+PLcom/android/server/wm/ActivityTaskManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->postFinishBooting(ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->printDisplayInfoAndNewLine(Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->registerAnrController(Landroid/app/AnrController;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->resumeAppSwitches()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->retrieveSettings(Landroid/content/ContentResolver;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->scheduleAppGcsLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->setBooted(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setBooting(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setDeviceOwnerUid(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setLastResumedActivityUncheckLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setLockScreenShown(ZZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setProfileOwnerUids(Ljava/util/Set;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->start()V
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;IZ)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startPowerMode(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->startProcessAsync(Lcom/android/server/wm/ActivityRecord;ZZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->startTimeTrackingFocusedActivityLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateActivityApplicationInfo(ILandroid/util/ArrayMap;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateActivityUsageStats(Lcom/android/server/wm/ActivityRecord;I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateAssetConfiguration(Ljava/util/List;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateBatteryStats(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Z)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZ)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZIZ)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->updateCpuStats()V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateEventDispatchingLocked(Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateGlobalConfigurationLocked(Landroid/content/res/Configuration;ZZI)I
+PLcom/android/server/wm/ActivityTaskManagerService;->updatePreviousProcess(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateResumedAppTrace(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateShouldShowDialogsLocked(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateSleepIfNeededLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateTopApp(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/ActivityTaskSupervisor$$ExternalSyntheticLambda0;->run()V
+HSPLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->activityIdleFromMessage(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;->handleMessageInner(Landroid/os/Message;)Z
+HSPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;-><init>()V
+PLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getOpaqueActivity(Lcom/android/server/wm/WindowContainer;Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->getVisibleOpaqueActivity(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor$OpaqueActivityHelper;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;-><init>()V
+HPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor$TaskInfoHelper;->fillAndReturnTop(Lcom/android/server/wm/Task;Landroid/app/TaskInfo;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityTaskSupervisor;->$r8$lambda$NOf6mVLk7SRVOwt1P5P1njNo27o(Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->-$$Nest$fgetmHandler(Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/ActivityTaskSupervisor$ActivityTaskSupervisorHandler;
+HSPLcom/android/server/wm/ActivityTaskSupervisor;-><clinit>()V
+HSPLcom/android/server/wm/ActivityTaskSupervisor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->acquireLaunchWakelock()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;ZZLandroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->beginActivityVisibilityUpdate()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->beginDeferResume()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->canPlaceEntityOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->canPlaceEntityOnDisplay(IIILcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->checkFinishBootingLocked()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->checkReadyForSleepLocked(Z)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;ZZLcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->computeProcessActivityStateBatch()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->endActivityVisibilityUpdate()V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->endDeferResume()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
+PLcom/android/server/wm/ActivityTaskSupervisor;->getActivityMetricsLogger()Lcom/android/server/wm/ActivityMetricsLogger;
+PLcom/android/server/wm/ActivityTaskSupervisor;->getBackgroundActivityLaunchController()Lcom/android/server/wm/BackgroundActivityStartController;
+PLcom/android/server/wm/ActivityTaskSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;Ljava/lang/String;IIZ)I
+PLcom/android/server/wm/ActivityTaskSupervisor;->getDeviceIdForDisplayId(I)I
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->getKeyguardController()Lcom/android/server/wm/KeyguardController;
+PLcom/android/server/wm/ActivityTaskSupervisor;->getLaunchParamsController()Lcom/android/server/wm/LaunchParamsController;
+PLcom/android/server/wm/ActivityTaskSupervisor;->getNextTaskIdForUser()I
+PLcom/android/server/wm/ActivityTaskSupervisor;->getNextTaskIdForUser(I)I
+PLcom/android/server/wm/ActivityTaskSupervisor;->getRunningTasks()Lcom/android/server/wm/RunningTasks;
+PLcom/android/server/wm/ActivityTaskSupervisor;->getSystemChooserActivity()Landroid/content/ComponentName;
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleForcedResizableTaskIfNeeded(Lcom/android/server/wm/Task;I)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;ILcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;ILcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->handleTopResumedStateReleased(Z)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->inActivityVisibilityUpdate()Z
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->initPowerManagement()V
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->initialize()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->isCallerAllowedToLaunchOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->isCallerAllowedToLaunchOnTaskDisplayArea(IILcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo;)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->isRootVisibilityUpdateDeferred()Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->lambda$activityIdleInternal$2()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->nextTaskIdForUser(II)I
+PLcom/android/server/wm/ActivityTaskSupervisor;->onProcessActivityStateChanged(Lcom/android/server/wm/WindowProcessController;Z)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->onRecentTaskAdded(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->onRecentTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->onSystemReady()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->onUserUnlocked(I)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->processStoppingAndFinishingActivities(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->readyToResume()Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->realStartActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;ZZ)Z
+HPLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->removeHistoryRecords(Ljava/util/ArrayList;Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->reportActivityLaunched(ZLcom/android/server/wm/ActivityRecord;JI)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->reportResumedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityTaskSupervisor;->reportWaitingActivityLaunchedIfNeeded(Lcom/android/server/wm/ActivityRecord;I)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/ActivityTaskSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;IIII)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleIdle()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleIdleTimeout(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleProcessStoppingAndFinishingActivitiesIfNeeded()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleStartHome(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedActivityStateIfNeeded()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedActivityStateLossIfNeeded()V
+PLcom/android/server/wm/ActivityTaskSupervisor;->scheduleTopResumedStateLossTimeout(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->setDeferRootVisibilityUpdate(Z)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->setLaunchSource(I)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->setNextTaskIdForUser(II)V
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
+HSPLcom/android/server/wm/ActivityTaskSupervisor;->setRunningTasks(Lcom/android/server/wm/RunningTasks;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->startSpecificActivity(Lcom/android/server/wm/ActivityRecord;ZZ)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->stopWaitingForActivityVisible(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityTaskSupervisor;->updateHomeProcess(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskSupervisor;->updateTopResumedActivityIfNeeded(Ljava/lang/String;)V
+PLcom/android/server/wm/AnimatingActivityRegistry;-><init>()V
+PLcom/android/server/wm/AnimationAdapter;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+PLcom/android/server/wm/AnrController;-><clinit>()V
+PLcom/android/server/wm/AnrController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AnrController;->onFocusChanged(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/AppSnapshotLoader;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/AppTransition$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/AppTransition;)V
+PLcom/android/server/wm/AppTransition;-><clinit>()V
+PLcom/android/server/wm/AppTransition;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/AppTransition;->clear()V
+PLcom/android/server/wm/AppTransition;->clear(Z)V
+PLcom/android/server/wm/AppTransition;->containsTransitRequest(I)Z
+PLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V
+PLcom/android/server/wm/AppTransition;->getFirstAppTransition()I
+PLcom/android/server/wm/AppTransition;->getKeyguardTransition()I
+PLcom/android/server/wm/AppTransition;->getRemoteAnimationController()Lcom/android/server/wm/RemoteAnimationController;
+PLcom/android/server/wm/AppTransition;->getTransitFlags()I
+PLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/ActivityRecord;)I
+PLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z
+PLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransitOld(I)Z
+PLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z
+PLcom/android/server/wm/AppTransition;->isNormalTransit(I)Z
+HPLcom/android/server/wm/AppTransition;->isReady()Z
+HPLcom/android/server/wm/AppTransition;->isRunning()Z
+PLcom/android/server/wm/AppTransition;->isTaskOpenTransitOld(I)Z
+PLcom/android/server/wm/AppTransition;->isTimeout()Z
+HPLcom/android/server/wm/AppTransition;->isTransitionSet()Z
+PLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;II)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->needsBoosting()Z
+PLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V
+PLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(JJ)I
+PLcom/android/server/wm/AppTransition;->postAnimationCallback()V
+PLcom/android/server/wm/AppTransition;->prepare()Z
+PLcom/android/server/wm/AppTransition;->prepareAppTransition(II)Z
+PLcom/android/server/wm/AppTransition;->registerListenerLocked(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/AppTransition;->removeAppTransitionTimeoutCallbacks()V
+PLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V
+PLcom/android/server/wm/AppTransition;->setIdle()V
+PLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppTransition;->setReady()V
+PLcom/android/server/wm/AppTransition;->updateBooster()V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda2;-><init>(ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/AppTransitionController$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/wm/AppTransitionController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/AppTransitionController;->applyAnimations(Landroid/util/ArraySet;Landroid/util/ArraySet;ILandroid/view/WindowManager$LayoutParams;Z)V
+PLcom/android/server/wm/AppTransitionController;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z
+PLcom/android/server/wm/AppTransitionController;->collectActivityTypes(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;)Landroid/util/ArraySet;
+PLcom/android/server/wm/AppTransitionController;->containsVoiceInteraction(Landroid/util/ArraySet;)Z
+PLcom/android/server/wm/AppTransitionController;->findAnimLayoutParamsToken(ILandroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/AppTransitionController;->getAnimLp(Lcom/android/server/wm/ActivityRecord;)Landroid/view/WindowManager$LayoutParams;
+PLcom/android/server/wm/AppTransitionController;->getAnimationTargets(Landroid/util/ArraySet;Landroid/util/ArraySet;Z)Landroid/util/ArraySet;
+PLcom/android/server/wm/AppTransitionController;->getOldWallpaper()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/AppTransitionController;->getRemoteAnimationOverride(Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
+PLcom/android/server/wm/AppTransitionController;->getTopApp(Landroid/util/ArraySet;Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/AppTransitionController;->getTransitCompatType(Lcom/android/server/wm/AppTransition;Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Z)I
+PLcom/android/server/wm/AppTransitionController;->getTransitContainerType(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/AppTransitionController;->handleAppTransitionReady()V
+PLcom/android/server/wm/AppTransitionController;->handleChangingApps(I)V
+PLcom/android/server/wm/AppTransitionController;->handleClosingApps()V
+PLcom/android/server/wm/AppTransitionController;->handleClosingChangingContainers()V
+PLcom/android/server/wm/AppTransitionController;->handleOpeningApps()V
+PLcom/android/server/wm/AppTransitionController;->lookForHighestTokenWithFilter(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/AppTransitionController;->overrideWithRemoteAnimationIfSet(Lcom/android/server/wm/ActivityRecord;ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/AppTransitionController;->overrideWithTaskFragmentRemoteAnimation(ILandroid/util/ArraySet;)Z
+PLcom/android/server/wm/AppTransitionController;->transitionContainsTaskFragmentWithBoundsOverride()Z
+PLcom/android/server/wm/AppTransitionController;->transitionGoodToGo(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Z
+PLcom/android/server/wm/AppTransitionController;->transitionGoodToGoForTaskFragments()Z
+PLcom/android/server/wm/AppTransitionController;->transitionMayContainNonAppWindows(I)Z
+PLcom/android/server/wm/AppTransitionController;->unfreezeEmbeddedChangingWindows()V
+PLcom/android/server/wm/AppWarnings$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/AppWarnings$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/AppWarnings$UiHandler;-><init>(Lcom/android/server/wm/AppWarnings;Landroid/os/Looper;)V
+PLcom/android/server/wm/AppWarnings$UiHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/AppWarnings$UiHandler;->hideUnsupportedDisplaySizeDialog()V
+HSPLcom/android/server/wm/AppWarnings$WriteConfigTask;-><init>(Lcom/android/server/wm/AppWarnings;)V
+HSPLcom/android/server/wm/AppWarnings$WriteConfigTask;-><init>(Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/AppWarnings$WriteConfigTask-IA;)V
+PLcom/android/server/wm/AppWarnings;->$r8$lambda$H4JMXMIkLrrC65qIRbXEOcg8UtQ(Ljava/lang/String;)Z
+PLcom/android/server/wm/AppWarnings;->-$$Nest$mhideUnsupportedDisplaySizeDialogUiThread(Lcom/android/server/wm/AppWarnings;)V
+HSPLcom/android/server/wm/AppWarnings;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;Ljava/io/File;)V
+PLcom/android/server/wm/AppWarnings;->hideUnsupportedDisplaySizeDialogUiThread()V
+PLcom/android/server/wm/AppWarnings;->lambda$showDeprecatedAbiDialogIfNeeded$0(Ljava/lang/String;)Z
+PLcom/android/server/wm/AppWarnings;->onDensityChanged()V
+PLcom/android/server/wm/AppWarnings;->onStartActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/AppWarnings;->readConfigFromFileAmsThread()V
+PLcom/android/server/wm/AppWarnings;->showDeprecatedAbiDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->showDeprecatedTargetDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->showUnsupportedCompileSdkDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->showUnsupportedDisplaySizeDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda0;->onTransactionCommitted()V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;-><init>(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Landroid/util/ArraySet;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;->onCommitted(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->$r8$lambda$BHN96tvxB7fo1aLu6vPwwYkPzqU(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$maddToSync(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$msetReady(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)Z
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->-$$Nest$mtryFinish(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><clinit>()V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><init>(Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;ILjava/lang/String;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;-><init>(Lcom/android/server/wm/BLASTSyncEngine;Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;ILjava/lang/String;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup-IA;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->addToSync(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->finishNow()V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->isIgnoring(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->lambda$finishNow$1(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup$1CommitCallback;)V
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->setReady(Z)Z
+PLcom/android/server/wm/BLASTSyncEngine$SyncGroup;->tryFinish()Z
+PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmActiveSyncs(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
+PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmHandler(Lcom/android/server/wm/BLASTSyncEngine;)Landroid/os/Handler;
+PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmOnIdleListeners(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
+PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmPendingSyncSets(Lcom/android/server/wm/BLASTSyncEngine;)Ljava/util/ArrayList;
+PLcom/android/server/wm/BLASTSyncEngine;->-$$Nest$fgetmWm(Lcom/android/server/wm/BLASTSyncEngine;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/BLASTSyncEngine;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/BLASTSyncEngine;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/Handler;)V
+PLcom/android/server/wm/BLASTSyncEngine;->addOnIdleListener(Ljava/lang/Runnable;)V
+PLcom/android/server/wm/BLASTSyncEngine;->addToSyncSet(ILcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/BLASTSyncEngine;->getSyncGroup(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+PLcom/android/server/wm/BLASTSyncEngine;->getSyncSet(I)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+PLcom/android/server/wm/BLASTSyncEngine;->hasActiveSync()Z
+HPLcom/android/server/wm/BLASTSyncEngine;->onSurfacePlacement()V
+PLcom/android/server/wm/BLASTSyncEngine;->prepareSyncSet(Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;Ljava/lang/String;)Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+PLcom/android/server/wm/BLASTSyncEngine;->scheduleTimeout(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;J)V
+PLcom/android/server/wm/BLASTSyncEngine;->setReady(IZ)Z
+PLcom/android/server/wm/BLASTSyncEngine;->setSyncMethod(II)V
+PLcom/android/server/wm/BLASTSyncEngine;->startSyncSet(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;JZ)V
+PLcom/android/server/wm/BLASTSyncEngine;->startSyncSet(Lcom/android/server/wm/BLASTSyncEngine$TransactionReadyListener;JLjava/lang/String;Z)I
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;->-$$Nest$fgetmComposed(Lcom/android/server/wm/BackNavigationController$AnimationHandler;)Z
+PLcom/android/server/wm/BackNavigationController$AnimationHandler;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->-$$Nest$monFocusWindowChanged(Lcom/android/server/wm/BackNavigationController$NavigationMonitor;Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/BackNavigationController$NavigationMonitor;-><init>(Lcom/android/server/wm/BackNavigationController;)V
+HSPLcom/android/server/wm/BackNavigationController$NavigationMonitor;-><init>(Lcom/android/server/wm/BackNavigationController;Lcom/android/server/wm/BackNavigationController$NavigationMonitor-IA;)V
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->atSameDisplay(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->isMonitorForRemote()Z
+PLcom/android/server/wm/BackNavigationController$NavigationMonitor;->onFocusWindowChanged(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/BackNavigationController;-><clinit>()V
+HSPLcom/android/server/wm/BackNavigationController;-><init>()V
+PLcom/android/server/wm/BackNavigationController;->checkAnimationReady(Lcom/android/server/wm/WallpaperController;)V
+PLcom/android/server/wm/BackNavigationController;->isMonitorTransitionTarget(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/BackNavigationController;->isMonitoringTransition()Z
+PLcom/android/server/wm/BackNavigationController;->isWaitBackTransition()Z
+PLcom/android/server/wm/BackNavigationController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/BackNavigationController;->onFocusChanged(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/BackNavigationController;->onTransactionReady(Lcom/android/server/wm/Transition;Ljava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/BackNavigationController;->onTransitionFinish(Ljava/util/ArrayList;Lcom/android/server/wm/Transition;)Z
+PLcom/android/server/wm/BackNavigationController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallerApp(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingPackage(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Ljava/lang/String;
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingPid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmCallingUid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmIntent(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Landroid/content/Intent;
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmRealCallingUid(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)I
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$fgetmResultForCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$mcallerIsRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$mhasRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->-$$Nest$misPendingIntent(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Z
+HPLcom/android/server/wm/BackgroundActivityStartController$BalState;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;-><init>(Lcom/android/server/wm/BackgroundActivityStartController;IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/wm/BackgroundActivityStartController$BalState-IA;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->callerExplicitOptInOrAutoOptIn()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->callerIsRealCaller()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->hasRealCaller()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->isPendingIntent()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->setResultForCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalState;->setResultForRealCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;)V
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;-><clinit>()V
+HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;-><init>(IZLjava/lang/String;)V
+HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->allows()Z
+HPLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->blocks()Z
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->getCode()I
+PLcom/android/server/wm/BackgroundActivityStartController$BalVerdict;->toString()Ljava/lang/String;
+PLcom/android/server/wm/BackgroundActivityStartController;->-$$Nest$fgetmService(Lcom/android/server/wm/BackgroundActivityStartController;)Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/BackgroundActivityStartController;-><clinit>()V
+HSPLcom/android/server/wm/BackgroundActivityStartController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/BackgroundActivityStartController;->allowBasedOnCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->balCodeToString(I)Ljava/lang/String;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkActivityAllowedToStart(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ZZLcom/android/server/wm/Task;IIII)Z
+PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStart(IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;Landroid/app/BackgroundStartPrivileges;Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/app/ActivityOptions;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->checkBackgroundActivityStartAllowedByCaller(Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+PLcom/android/server/wm/BackgroundActivityStartController;->isHomeApp(ILjava/lang/String;)Z
+PLcom/android/server/wm/BackgroundActivityStartController;->onNewActivityLaunched(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/BackgroundActivityStartController;->statsLog(Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;Lcom/android/server/wm/BackgroundActivityStartController$BalState;)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+HPLcom/android/server/wm/BackgroundLaunchProcessController;-><init>(Ljava/util/function/IntPredicate;Lcom/android/server/wm/BackgroundActivityStartCallback;)V
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->addBoundClientUid(ILjava/lang/String;J)V
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->addOrUpdateAllowBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->areBackgroundActivityStartsAllowed(IILjava/lang/String;IZZZJJJ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->clearBalOptInBoundClientUids()V
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBackgroundStartAllowedByToken(ILjava/lang/String;Z)Z
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->isBoundByForegroundUid()Z
+HPLcom/android/server/wm/BackgroundLaunchProcessController;->removeAllowBackgroundStartPrivileges(Landroid/os/Binder;)V
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;Ljava/lang/String;ZFZ)V
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getDirectory(I)Ljava/io/File;
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getHighResolutionBitmapFile(II)Ljava/io/File;
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getLowResolutionBitmapFile(II)Ljava/io/File;
+PLcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;->getProtoFile(II)Ljava/io/File;
+PLcom/android/server/wm/BaseAppSnapshotPersister;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/BaseAppSnapshotPersister;->removeSnapshot(II)V
+PLcom/android/server/wm/BlurController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/BlurController;)V
+PLcom/android/server/wm/BlurController$$ExternalSyntheticLambda0;->onThermalStatusChanged(I)V
+PLcom/android/server/wm/BlurController$1;-><init>(Lcom/android/server/wm/BlurController;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/BlurController$1;->onTunnelModeEnabledChanged(Z)V
+PLcom/android/server/wm/BlurController$2;-><init>(Lcom/android/server/wm/BlurController;Landroid/os/PowerManager;)V
+PLcom/android/server/wm/BlurController$3;-><init>(Lcom/android/server/wm/BlurController;Landroid/os/Handler;)V
+PLcom/android/server/wm/BlurController;->$r8$lambda$d37IvBCG5pB02WzIgDv5RCisrMc(Lcom/android/server/wm/BlurController;I)V
+PLcom/android/server/wm/BlurController;->-$$Nest$fputmTunnelModeEnabled(Lcom/android/server/wm/BlurController;Z)V
+PLcom/android/server/wm/BlurController;->-$$Nest$mupdateBlurEnabled(Lcom/android/server/wm/BlurController;)V
+PLcom/android/server/wm/BlurController;-><init>(Landroid/content/Context;Landroid/os/PowerManager;)V
+PLcom/android/server/wm/BlurController;->getBlurDisabledSetting()Z
+PLcom/android/server/wm/BlurController;->lambda$new$0(I)V
+PLcom/android/server/wm/BlurController;->notifyBlurEnabledChangedLocked(Z)V
+PLcom/android/server/wm/BlurController;->updateBlurEnabled()V
+HSPLcom/android/server/wm/ClientLifecycleManager;-><init>()V
+HPLcom/android/server/wm/ClientLifecycleManager;->dispatchPendingTransactions()V
+PLcom/android/server/wm/ClientLifecycleManager;->getOrCreatePendingTransaction(Landroid/app/IApplicationThread;)Landroid/app/servertransaction/ClientTransaction;
+PLcom/android/server/wm/ClientLifecycleManager;->onClientTransactionItemScheduled(Landroid/app/servertransaction/ClientTransaction;Z)V
+PLcom/android/server/wm/ClientLifecycleManager;->onLayoutContinued()V
+PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
+PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionAndLifecycleItems(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;Landroid/app/servertransaction/ActivityLifecycleItem;Z)V
+PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
+PLcom/android/server/wm/ClientLifecycleManager;->scheduleTransactionItemNow(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
+PLcom/android/server/wm/ClientLifecycleManager;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/ClientLifecycleManager;->shouldDispatchPendingTransactionsImmediately()Z
+HSPLcom/android/server/wm/CompatModePackages$CompatHandler;-><init>(Lcom/android/server/wm/CompatModePackages;Landroid/os/Looper;)V
+HSPLcom/android/server/wm/CompatModePackages;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/io/File;Landroid/os/Handler;)V
+HPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+PLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;I)F
+HPLcom/android/server/wm/CompatModePackages;->getCompatScale(Ljava/lang/String;IZ)F
+HPLcom/android/server/wm/CompatModePackages;->getCompatScaleFromProvider(Ljava/lang/String;I)Landroid/content/res/CompatibilityInfo$CompatScale;
+HPLcom/android/server/wm/CompatModePackages;->getPackageCompatModeEnabledLocked(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/wm/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
+PLcom/android/server/wm/CompatModePackages;->registerCompatScaleProvider(ILcom/android/server/wm/CompatScaleProvider;)V
+PLcom/android/server/wm/CompatModePackages;->useLegacyScreenCompatMode(Ljava/lang/String;)Z
+PLcom/android/server/wm/CompatScaleProvider;->isValidOrderId(I)Z
+HPLcom/android/server/wm/ConfigurationContainer;-><init>()V
+PLcom/android/server/wm/ConfigurationContainer;->containsListener(Lcom/android/server/wm/ConfigurationContainerListener;)Z
+PLcom/android/server/wm/ConfigurationContainer;->diffRequestedOverrideBounds(Landroid/graphics/Rect;)I
+PLcom/android/server/wm/ConfigurationContainer;->diffRequestedOverrideMaxBounds(Landroid/graphics/Rect;)I
+HPLcom/android/server/wm/ConfigurationContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainer;->equivalentBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/ConfigurationContainer;->equivalentRequestedOverrideBounds(Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/ConfigurationContainer;->equivalentRequestedOverrideMaxBounds(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/ConfigurationContainer;->getActivityType()I
+HPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ConfigurationContainer;->getBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideMaxBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideWindowingMode()I
+HPLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ConfigurationContainer;->getWindowConfiguration()Landroid/app/WindowConfiguration;
+HPLcom/android/server/wm/ConfigurationContainer;->getWindowingMode()I
+HPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z
+PLcom/android/server/wm/ConfigurationContainer;->hasOverrideBounds()Z
+HPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z
+HPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z
+HPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeAssistant()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeDream()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHome()Z
+HPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeHomeOrRecents()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeRecents()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandard()Z
+PLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z
+HPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z
+HPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z
+PLcom/android/server/wm/ConfigurationContainer;->isCompatibleActivityType(II)Z
+PLcom/android/server/wm/ConfigurationContainer;->matchParentBounds()Z
+HPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V
+PLcom/android/server/wm/ConfigurationContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/ConfigurationContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainer;->providesMaxBounds()Z
+PLcom/android/server/wm/ConfigurationContainer;->registerConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
+HPLcom/android/server/wm/ConfigurationContainer;->registerConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;Z)V
+HPLcom/android/server/wm/ConfigurationContainer;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainer;->setActivityType(I)V
+PLcom/android/server/wm/ConfigurationContainer;->setBounds(Landroid/graphics/Rect;)I
+PLcom/android/server/wm/ConfigurationContainer;->setWindowingMode(I)V
+PLcom/android/server/wm/ConfigurationContainer;->unregisterConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
+HPLcom/android/server/wm/ConfigurationContainer;->updateRequestedOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainerListener;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ConfigurationContainerListener;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ContentRecordingController;-><init>()V
+PLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DeferredDisplayUpdater$$ExternalSyntheticLambda0;->setFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DeferredDisplayUpdater;->$r8$lambda$--t3mf11gpWn1Uw3-b-B1MpXHHQ(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DeferredDisplayUpdater;-><clinit>()V
+PLcom/android/server/wm/DeferredDisplayUpdater;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DeferredDisplayUpdater;->applyLatestDisplayInfo()V
+HPLcom/android/server/wm/DeferredDisplayUpdater;->calculateDisplayInfoDiff(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)I
+PLcom/android/server/wm/DeferredDisplayUpdater;->getCurrentDisplayInfo()Landroid/view/DisplayInfo;
+PLcom/android/server/wm/DeferredDisplayUpdater;->isPhysicalDisplayUpdated(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)Z
+PLcom/android/server/wm/DeferredDisplayUpdater;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DeferredDisplayUpdater;->updateDisplayInfo(Ljava/lang/Runnable;)V
+HSPLcom/android/server/wm/DesktopModeLaunchParamsModifier;-><clinit>()V
+HSPLcom/android/server/wm/DesktopModeLaunchParamsModifier;->isDesktopModeSupported()Z
+PLcom/android/server/wm/DeviceStateController$DeviceState;->$values()[Lcom/android/server/wm/DeviceStateController$DeviceState;
+PLcom/android/server/wm/DeviceStateController$DeviceState;-><clinit>()V
+PLcom/android/server/wm/DeviceStateController$DeviceState;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/wm/DeviceStateController;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerGlobalLock;)V
+PLcom/android/server/wm/DeviceStateController;->onDeviceStateReceivedByDisplayManager(I)V
+PLcom/android/server/wm/DeviceStateController;->registerDeviceStateCallback(Ljava/util/function/Consumer;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/DeviceStateController;->shouldReverseRotationDirectionAroundZAxis(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/Dimmer;-><clinit>()V
+PLcom/android/server/wm/Dimmer;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Dimmer;->create(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Dimmer;
+PLcom/android/server/wm/DimmerAnimationHelper$AnimationAdapterFactory;-><init>()V
+PLcom/android/server/wm/DisplayArea$1;-><clinit>()V
+PLcom/android/server/wm/DisplayArea$Dimmable$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/wm/DisplayArea$Dimmable$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayArea$Dimmable;->$r8$lambda$ewKAhLF3xnwcZneP-cgTtyNykBo(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/DisplayArea$Dimmable;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
+PLcom/android/server/wm/DisplayArea$Dimmable;->lambda$prepareSurfaces$0(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/DisplayArea$Dimmable;->prepareSurfaces()V
+PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayArea$Tokens;)V
+HPLcom/android/server/wm/DisplayArea$Tokens$$ExternalSyntheticLambda1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayArea$Tokens;->$r8$lambda$2Q0eZgOlf9COHBhGcrk7N74DbDw(Lcom/android/server/wm/DisplayArea$Tokens;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayArea$Tokens;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;)V
+HPLcom/android/server/wm/DisplayArea$Tokens;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
+PLcom/android/server/wm/DisplayArea$Tokens;->addChild(Lcom/android/server/wm/WindowToken;)V
+PLcom/android/server/wm/DisplayArea$Tokens;->asTokens()Lcom/android/server/wm/DisplayArea$Tokens;
+HPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I
+PLcom/android/server/wm/DisplayArea$Tokens;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/DisplayArea$Tokens;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/DisplayArea$Tokens;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayArea$Type;->$values()[Lcom/android/server/wm/DisplayArea$Type;
+PLcom/android/server/wm/DisplayArea$Type;-><clinit>()V
+PLcom/android/server/wm/DisplayArea$Type;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/wm/DisplayArea$Type;->checkChild(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
+HPLcom/android/server/wm/DisplayArea$Type;->checkSiblings(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
+HPLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/DisplayArea$Type;
+PLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayArea$Type;
+PLcom/android/server/wm/DisplayArea$Type;->values()[Lcom/android/server/wm/DisplayArea$Type;
+HPLcom/android/server/wm/DisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)V
+PLcom/android/server/wm/DisplayArea;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayArea;->asTokens()Lcom/android/server/wm/DisplayArea$Tokens;
+PLcom/android/server/wm/DisplayArea;->fillsParent()Z
+PLcom/android/server/wm/DisplayArea;->findMaxPositionForChildDisplayArea(Lcom/android/server/wm/DisplayArea;)I
+PLcom/android/server/wm/DisplayArea;->findMinPositionForChildDisplayArea(Lcom/android/server/wm/DisplayArea;)I
+HPLcom/android/server/wm/DisplayArea;->findPositionForChildDisplayArea(ILcom/android/server/wm/DisplayArea;)I
+PLcom/android/server/wm/DisplayArea;->forAllActivities(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/DisplayArea;->forAllActivities(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/DisplayArea;->forAllDisplayAreas(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/DisplayArea;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/DisplayArea;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/DisplayArea;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/DisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;Z)Z
+HPLcom/android/server/wm/DisplayArea;->forAllTasks(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/DisplayArea;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/DisplayArea;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayArea;->getDisplayAreaInfo()Landroid/window/DisplayAreaInfo;
+HPLcom/android/server/wm/DisplayArea;->getIgnoreOrientationRequest()Z
+HPLcom/android/server/wm/DisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayArea;->getName()Ljava/lang/String;
+PLcom/android/server/wm/DisplayArea;->getOrientation(I)I
+HPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/DisplayArea;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/DisplayArea;->getStableRect(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/DisplayArea;->getSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/DisplayArea;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/DisplayArea;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/DisplayArea;->handlesOrientationChangeFromDescendant(I)Z
+HPLcom/android/server/wm/DisplayArea;->isOrganized()Z
+PLcom/android/server/wm/DisplayArea;->needsZBoost()Z
+HPLcom/android/server/wm/DisplayArea;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/DisplayArea;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/DisplayArea;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->onUnfrozen()V
+PLcom/android/server/wm/DisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/DisplayArea;->providesMaxBounds()Z
+PLcom/android/server/wm/DisplayArea;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;Z)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayArea;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayArea;->sendDisplayAreaVanished(Landroid/window/IDisplayAreaOrganizer;)V
+PLcom/android/server/wm/DisplayArea;->setOrganizer(Landroid/window/IDisplayAreaOrganizer;Z)V
+PLcom/android/server/wm/DisplayArea;->shouldIgnoreOrientationRequest(I)Z
+PLcom/android/server/wm/DisplayArea;->toString()Ljava/lang/String;
+PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController$DeathRecipient;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;Landroid/window/IDisplayAreaOrganizer;I)V
+PLcom/android/server/wm/DisplayAreaOrganizerController$DisplayAreaOrganizerState;-><init>(Lcom/android/server/wm/DisplayAreaOrganizerController;Landroid/window/IDisplayAreaOrganizer;I)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->$r8$lambda$CvQU9LqFTmbUEmALsGj5S7UV_PU(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->$r8$lambda$wSnU_Pe7TXl_HhzB7fVcyiY4FP4(Lcom/android/server/wm/DisplayAreaOrganizerController;ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/DisplayAreaOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->enforceTaskPermission(Ljava/lang/String;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->getOrganizerByFeature(I)Landroid/window/IDisplayAreaOrganizer;
+PLcom/android/server/wm/DisplayAreaOrganizerController;->lambda$registerOrganizer$0(ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->lambda$registerOrganizer$1(ILjava/util/List;Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayAreaOrganizerController;->organizeDisplayArea(Landroid/window/IDisplayAreaOrganizer;Lcom/android/server/wm/DisplayArea;Ljava/lang/String;)Landroid/window/DisplayAreaAppearedInfo;
+PLcom/android/server/wm/DisplayAreaOrganizerController;->registerOrganizer(Landroid/window/IDisplayAreaOrganizer;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider$$ExternalSyntheticLambda0;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;->configureTrustedHierarchyBuilder(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayAreaPolicy$DefaultProvider;->instantiate(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RootDisplayArea;Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayAreaPolicy;
+PLcom/android/server/wm/DisplayAreaPolicy$Provider;->fromResources(Landroid/content/res/Resources;)Lcom/android/server/wm/DisplayAreaPolicy$Provider;
+PLcom/android/server/wm/DisplayAreaPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/RootDisplayArea;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;-><init>(Lcom/android/server/wm/RootDisplayArea;Ljava/util/List;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;->apply(Ljava/lang/Integer;Landroid/os/Bundle;)Lcom/android/server/wm/RootDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectRootForWindowFunction;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$DefaultSelectTaskDisplayAreaFunction;-><init>(Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder$$ExternalSyntheticLambda0;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;I)Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;-><init>(Lcom/android/server/policy/WindowManagerPolicy;Ljava/lang/String;I)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->all()Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->and([I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->build()Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->except([I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->layerFromType(IZ)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->set(IZ)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->setNewDisplayAreaSupplier(Lcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;->upTo(I)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature$Builder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmId(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmName(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Ljava/lang/String;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmNewDisplayAreaSupplier(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->-$$Nest$fgetmWindowLayers(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)[Z
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;-><init>(Ljava/lang/String;I[ZLcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;-><init>(Ljava/lang/String;I[ZLcom/android/server/wm/DisplayAreaPolicyBuilder$NewDisplayAreaSupplier;Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature-IA;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;->getId()I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmFeatures(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmImeContainer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/DisplayArea$Tokens;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmRoot(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/RootDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$fgetmTaskDisplayAreas(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->-$$Nest$mbuild(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Ljava/util/List;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;-><init>(Lcom/android/server/wm/RootDisplayArea;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addDisplayAreaGroupsToApplicationLayer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;Ljava/util/List;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addFeature(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->addTaskDisplayAreasToApplicationLayer(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)V
+HPLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->build(Ljava/util/List;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->setImeContainer(Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->setTaskDisplayAreas(Ljava/util/List;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;->typeOfLayer(Lcom/android/server/policy/WindowManagerPolicy;I)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->$r8$lambda$VwU16eW1PmOKwR0U1Wij7qH1PtU(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;-><init>(Lcom/android/server/wm/DisplayAreaPolicyBuilder$Feature;ILcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->computeMaxLayer()I
+HPLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->createArea(Lcom/android/server/wm/DisplayArea;[Lcom/android/server/wm/DisplayArea$Tokens;)Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->fillAreaForLayers(Lcom/android/server/wm/DisplayArea$Tokens;[Lcom/android/server/wm/DisplayArea$Tokens;)V
+HPLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->instantiateChildren(Lcom/android/server/wm/DisplayArea;[Lcom/android/server/wm/DisplayArea$Tokens;ILjava/util/Map;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;->lambda$instantiateChildren$0(Lcom/android/server/wm/DisplayAreaPolicyBuilder$PendingArea;)I
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->$r8$lambda$YTS6mATtwOUjwC_PPe0TcCmppOQ(Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/RootDisplayArea;Ljava/util/List;Ljava/util/function/BiFunction;Ljava/util/function/Function;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->findAreaForWindowType(ILandroid/os/Bundle;ZZ)Lcom/android/server/wm/DisplayArea$Tokens;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDisplayAreas(I)Ljava/util/List;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->getDisplayAreas(Lcom/android/server/wm/RootDisplayArea;ILjava/util/List;)V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder$Result;->lambda$new$0(Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;-><init>()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->build(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/DisplayAreaPolicyBuilder$Result;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->containsDefaultTaskDisplayArea(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Z
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->setRootHierarchy(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;)Lcom/android/server/wm/DisplayAreaPolicyBuilder;
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->validate()V
+PLcom/android/server/wm/DisplayAreaPolicyBuilder;->validateIds(Lcom/android/server/wm/DisplayAreaPolicyBuilder$HierarchyBuilder;Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;-><init>()V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;-><init>(Z)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda12;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda14;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda14;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda18;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda18;->run()V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda19;-><init>([I)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda19;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda20;-><init>()V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda20;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda30;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda32;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda33;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda34;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda35;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda35;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda36;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda37;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda38;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda39;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda39;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda40;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda41;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda41;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda42;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda43;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda44;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda44;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda45;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda45;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda46;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda46;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda47;-><init>(Landroid/os/IBinder;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda47;->run()V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[F)V
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda4;->apply(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda50;-><init>([I[ILandroid/graphics/Region;)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda54;-><init>([Z)V
+PLcom/android/server/wm/DisplayContent$$ExternalSyntheticLambda54;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayContent$1;-><init>()V
+PLcom/android/server/wm/DisplayContent$2;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>()V
+PLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>(Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState-IA;)V
+HPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
+PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/wm/DisplayContent$FixedRotationTransitionListener;->shouldDeferRotation()Z
+PLcom/android/server/wm/DisplayContent$ImeContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/DisplayContent$ImeContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/DisplayContent$ImeContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;IZ)V
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindowForce(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/DisplayContent$ImeContainer;->getOrientation(I)I
+PLcom/android/server/wm/DisplayContent$ImeContainer;->setNeedsLayer()V
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->skipImeWindowsDuringTraversal(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/DisplayContent$ImeContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+PLcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/view/IDisplayWindowInsetsController;)V
+PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;-><init>()V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$-dBz3LtsWovWVT0SE5m__EwNfT4(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$-uN73aqsI8TZanC60X9G06a6GDM(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayArea;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$09LjI9IPIDqkx6xQRSSpO0paSaI(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$0qT6GYhjGguOWMyvPDOpZD9lW8A(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$5VVSLdls3hPPHQhvQRptGbZEU1E(Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayShape;I)Landroid/view/DisplayShape;
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$5vVpESsNA57k_2CBS_VsBrdc5Qo(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$ODoFFvXsuJpa6DBeEVK2Nh28Xc0(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$OlRwH3_Eqb403xPL7MPG5vhH0aE(Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$YbN3cIeEsM0DLZIuG7yQvhoeuNM(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$_tz4aBALPch7QAqA8f5IEbuIfEE(ZLcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$f7tHAwMP7F9Y6GRaAF8mvZCW4p4(Lcom/android/server/wm/DisplayContent;Landroid/view/RoundedCorners;I)Landroid/view/RoundedCorners;
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$fxEggzNsTLRHb7So7DIvQvSPsEo(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$g3NtyUymxIbR0_Zt8BGLWPTUWWk(Lcom/android/server/wm/DisplayContent;Landroid/view/PrivacyIndicatorBounds;I)Landroid/view/PrivacyIndicatorBounds;
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$gxfy_OQnZiuljU-tl2O5KLP4WJI([ZLcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$hkBcv35oI_sDzJ-r3_1RUH-fcfo(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$jZHjGh_d804t67Tg169ZuvciwD4(Landroid/os/IBinder;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$jsLbkOO-i9uxdPcBuBSaATpXXAQ([ILcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$m3_QfYVQ2X5TCCaPfidklMmlJ3A(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$nSzlgovjqO6D-KA1rputZkWgFOY(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$ro8qyeDvIUnuK9S-Ac1Fs1DW7Pc(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->$r8$lambda$viMLDYZeNr6UfQB2dUSXkWvClEk(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->$r8$lambda$wQPrC0OEjFFleCp1VlzlAyiSCm4(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->-$$Nest$fgetmFixedRotationLaunchingApp(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->-$$Nest$fgetmImeLayeringTarget(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayContent;-><clinit>()V
+HPLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/DeviceStateController;)V
+HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I
+HPLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V
+HPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;III)V
+PLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V
+PLcom/android/server/wm/DisplayContent;->alwaysCreateRootTask(II)Z
+HPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction()V
+PLcom/android/server/wm/DisplayContent;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/DisplayContent;->assignRelativeLayerForIme(Landroid/view/SurfaceControl$Transaction;Z)V
+PLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
+PLcom/android/server/wm/DisplayContent;->beginHoldScreenUpdate()V
+HPLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotation(I)Landroid/view/DisplayCutout;
+PLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotationAndDisplaySizeUncached(Landroid/view/DisplayCutout;III)Lcom/android/server/wm/utils/WmDisplayCutout;
+PLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotationUncached(Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
+PLcom/android/server/wm/DisplayContent;->calculateDisplayShapeForRotation(I)Landroid/view/DisplayShape;
+PLcom/android/server/wm/DisplayContent;->calculateDisplayShapeForRotationUncached(Landroid/view/DisplayShape;I)Landroid/view/DisplayShape;
+PLcom/android/server/wm/DisplayContent;->calculatePrivacyIndicatorBoundsForRotation(I)Landroid/view/PrivacyIndicatorBounds;
+PLcom/android/server/wm/DisplayContent;->calculatePrivacyIndicatorBoundsForRotationUncached(Landroid/view/PrivacyIndicatorBounds;I)Landroid/view/PrivacyIndicatorBounds;
+HPLcom/android/server/wm/DisplayContent;->calculateRoundedCornersForRotation(I)Landroid/view/RoundedCorners;
+PLcom/android/server/wm/DisplayContent;->calculateRoundedCornersForRotationUncached(Landroid/view/RoundedCorners;I)Landroid/view/RoundedCorners;
+HPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z
+PLcom/android/server/wm/DisplayContent;->canShowTasksInHostDeviceRecents()Z
+HPLcom/android/server/wm/DisplayContent;->canShowWithInsecureKeyguard()Z
+PLcom/android/server/wm/DisplayContent;->canStealTopFocus()Z
+PLcom/android/server/wm/DisplayContent;->canUpdateImeTarget()Z
+PLcom/android/server/wm/DisplayContent;->clearFixedRotationLaunchingApp()V
+PLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V
+PLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZII)I
+PLcom/android/server/wm/DisplayContent;->computeImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
+PLcom/android/server/wm/DisplayContent;->computeImeParent()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayContent;->computeImeTargetIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/DisplayContent;->computeScreenAppConfiguration(Landroid/content/res/Configuration;III)V
+HPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->computeSizeRanges(Landroid/view/DisplayInfo;ZIIFLandroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->configureDisplayPolicy()V
+HPLcom/android/server/wm/DisplayContent;->configureSurfaces(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/DisplayContent;->enableHighFrameRate(Z)V
+PLcom/android/server/wm/DisplayContent;->enableHighPerfTransition(Z)V
+HPLcom/android/server/wm/DisplayContent;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/DisplayContent;->executeAppTransition()V
+PLcom/android/server/wm/DisplayContent;->fillsParent()Z
+PLcom/android/server/wm/DisplayContent;->findAreaForToken(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/DisplayContent;->findAreaForWindowType(ILandroid/os/Bundle;ZZ)Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayContent;->findFocusedWindowIfNeeded(I)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayContent;->finishHoldScreenUpdate()V
+HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/DisplayContent;->forceDesktopMode()Z
+HPLcom/android/server/wm/DisplayContent;->getAsyncRotationController()Lcom/android/server/wm/AsyncRotationController;
+HPLcom/android/server/wm/DisplayContent;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display;
+HPLcom/android/server/wm/DisplayContent;->getDisplayId()I
+HPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
+PLcom/android/server/wm/DisplayContent;->getDisplayRotation()Lcom/android/server/wm/DisplayRotation;
+PLcom/android/server/wm/DisplayContent;->getDisplayUiContext()Landroid/content/Context;
+HPLcom/android/server/wm/DisplayContent;->getFocusedRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/DisplayContent;->getImeContainer()Lcom/android/server/wm/DisplayArea$Tokens;
+PLcom/android/server/wm/DisplayContent;->getImeHostOrFallback(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/DisplayContent;->getImeInputTarget()Lcom/android/server/wm/InputTarget;
+PLcom/android/server/wm/DisplayContent;->getImePolicy()I
+HPLcom/android/server/wm/DisplayContent;->getImeTarget(I)Lcom/android/server/wm/InsetsControlTarget;
+PLcom/android/server/wm/DisplayContent;->getInitialDisplayDensity()I
+PLcom/android/server/wm/DisplayContent;->getInputMethodWindowVisibleHeight()I
+HPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
+PLcom/android/server/wm/DisplayContent;->getInputOverlayLayer()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
+HPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
+HPLcom/android/server/wm/DisplayContent;->getKeepClearAreas(Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/wm/DisplayContent;->getLastHasContent()Z
+PLcom/android/server/wm/DisplayContent;->getMetricsLogger()Lcom/android/internal/logging/MetricsLogger;
+PLcom/android/server/wm/DisplayContent;->getMinimalTaskSizeDp()I
+PLcom/android/server/wm/DisplayContent;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/DisplayContent;->getOrientation()I
+PLcom/android/server/wm/DisplayContent;->getOrientationRequestingTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/DisplayContent;->getRelativeDisplayRotation()I
+PLcom/android/server/wm/DisplayContent;->getRootTaskCount()I
+PLcom/android/server/wm/DisplayContent;->getRotation()I
+PLcom/android/server/wm/DisplayContent;->getRotationAnimation()Lcom/android/server/wm/ScreenRotationAnimation;
+PLcom/android/server/wm/DisplayContent;->getSession()Landroid/view/SurfaceSession;
+PLcom/android/server/wm/DisplayContent;->getStableRect(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/DisplayContent;->handleActivitySizeCompatModeIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/DisplayContent;->handleAnimatingStoppedAndTransition()V
+HPLcom/android/server/wm/DisplayContent;->handleCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/DisplayContent;->handleTopActivityLaunchingInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)Z
+HPLcom/android/server/wm/DisplayContent;->handlesOrientationChangeFromDescendant(I)Z
+PLcom/android/server/wm/DisplayContent;->hasAccess(I)Z
+HPLcom/android/server/wm/DisplayContent;->hasOwnFocus()Z
+HPLcom/android/server/wm/DisplayContent;->inTransition()Z
+PLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V
+PLcom/android/server/wm/DisplayContent;->isHomeSupported()Z
+PLcom/android/server/wm/DisplayContent;->isImeControlledByApp()Z
+PLcom/android/server/wm/DisplayContent;->isInTouchMode()Z
+PLcom/android/server/wm/DisplayContent;->isInputMethodClientFocus(II)Z
+PLcom/android/server/wm/DisplayContent;->isKeyguardAlwaysUnlocked()Z
+HPLcom/android/server/wm/DisplayContent;->isKeyguardGoingAway()Z
+HPLcom/android/server/wm/DisplayContent;->isKeyguardLocked()Z
+HPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
+PLcom/android/server/wm/DisplayContent;->isNextTransitionForward()Z
+PLcom/android/server/wm/DisplayContent;->isPrivate()Z
+PLcom/android/server/wm/DisplayContent;->isReady()Z
+HPLcom/android/server/wm/DisplayContent;->isRemoved()Z
+HPLcom/android/server/wm/DisplayContent;->isRemoving()Z
+PLcom/android/server/wm/DisplayContent;->isRotationChanging()Z
+HPLcom/android/server/wm/DisplayContent;->isSleeping()Z
+PLcom/android/server/wm/DisplayContent;->isTrusted()Z
+PLcom/android/server/wm/DisplayContent;->isVisible()Z
+PLcom/android/server/wm/DisplayContent;->isVisibleRequested()Z
+HPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$34(Lcom/android/server/wm/RecentsAnimationController;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$ensureActivitiesVisible$47(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$getKeepClearAreas$37(Lcom/android/server/wm/RecentsAnimationController;Ljava/util/Set;Ljava/util/Set;Landroid/graphics/Matrix;[FLcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$getRootTaskCount$15([ILcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$new$2(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$3(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$new$4(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$new$5(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$new$6(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$new$7(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$8(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$onImeInsetsClientVisibilityUpdate$27([ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/DisplayContent;->lambda$shouldWaitForSystemDecorWindowsOnBoot$31(Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$topRunningActivity$40(ZLcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/DisplayContent;->lambda$updateDisplayAreaOrganizers$17(Lcom/android/server/wm/DisplayArea;)V
+PLcom/android/server/wm/DisplayContent;->lambda$updateImeControlTarget$28(Landroid/os/IBinder;)V
+PLcom/android/server/wm/DisplayContent;->lambda$updateImeParent$29()V
+PLcom/android/server/wm/DisplayContent;->logsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;Z)Z
+PLcom/android/server/wm/DisplayContent;->notifyInsetsChanged(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/DisplayContent;->okToAnimate(ZZ)Z
+PLcom/android/server/wm/DisplayContent;->okToDisplay()Z
+HPLcom/android/server/wm/DisplayContent;->okToDisplay(ZZ)Z
+PLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V
+HPLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V
+PLcom/android/server/wm/DisplayContent;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayContent;->onDisplayInfoChanged()V
+PLcom/android/server/wm/DisplayContent;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DisplayContent;->onImeInsetsClientVisibilityUpdate()Z
+PLcom/android/server/wm/DisplayContent;->onLastFocusedTaskDisplayAreaChanged(Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/DisplayContent;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/DisplayContent;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->onResize()V
+PLcom/android/server/wm/DisplayContent;->onRunningActivityChanged()V
+PLcom/android/server/wm/DisplayContent;->onTransitionFinished()V
+PLcom/android/server/wm/DisplayContent;->onWindowAnimationFinished(Lcom/android/server/wm/WindowContainer;I)V
+HPLcom/android/server/wm/DisplayContent;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;)I
+HPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V
+HPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V
+PLcom/android/server/wm/DisplayContent;->prepareAppTransition(I)V
+PLcom/android/server/wm/DisplayContent;->prepareAppTransition(II)V
+HPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V
+PLcom/android/server/wm/DisplayContent;->providesMaxBounds()Z
+PLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V
+PLcom/android/server/wm/DisplayContent;->reapplyMagnificationSpec()V
+PLcom/android/server/wm/DisplayContent;->reconfigureDisplayLocked()V
+PLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IILandroid/util/DisplayMetrics;II)I
+PLcom/android/server/wm/DisplayContent;->refreshImeSecureFlag(Landroid/view/SurfaceControl$Transaction;)Z
+PLcom/android/server/wm/DisplayContent;->registerDecorViewGestureListener(Landroid/view/IDecorViewGestureListener;)V
+PLcom/android/server/wm/DisplayContent;->registerPointerEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
+PLcom/android/server/wm/DisplayContent;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;)V
+PLcom/android/server/wm/DisplayContent;->removeImeSurfaceByTarget(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/DisplayContent;->removeImeSurfaceImmediately()V
+PLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/DisplayContent;->requestDisplayUpdate(Ljava/lang/Runnable;)V
+PLcom/android/server/wm/DisplayContent;->rotationForActivityInDifferentOrientation(Lcom/android/server/wm/ActivityRecord;)I
+PLcom/android/server/wm/DisplayContent;->sandboxDisplayApis()Z
+PLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->sendNewConfiguration()Z
+PLcom/android/server/wm/DisplayContent;->setDisplayInfoOverride()V
+HPLcom/android/server/wm/DisplayContent;->setDisplayMirroring()Z
+PLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/DisplayContent;->setIgnoreOrientationRequest(Z)Z
+PLcom/android/server/wm/DisplayContent;->setImeInputTarget(Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/DisplayContent;->setImeLayeringTargetInner(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V
+PLcom/android/server/wm/DisplayContent;->setRemoteInsetsController(Landroid/view/IDisplayWindowInsetsController;)V
+HPLcom/android/server/wm/DisplayContent;->shouldDeferRemoval()Z
+HPLcom/android/server/wm/DisplayContent;->shouldImeAttachedToApp()Z
+PLcom/android/server/wm/DisplayContent;->shouldRotateWithContent()Z
+PLcom/android/server/wm/DisplayContent;->shouldSleep()Z
+PLcom/android/server/wm/DisplayContent;->shouldSyncRotationChange(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->shouldWaitForSystemDecorWindowsOnBoot()Z
+PLcom/android/server/wm/DisplayContent;->toString()Ljava/lang/String;
+PLcom/android/server/wm/DisplayContent;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/DisplayContent;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(IIIFF)V
+HPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded(Landroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(Landroid/content/res/Configuration;)Landroid/view/DisplayInfo;
+PLcom/android/server/wm/DisplayContent;->updateDisplayAreaOrganizers()V
+PLcom/android/server/wm/DisplayContent;->updateDisplayFrames(Lcom/android/server/wm/DisplayFrames;III)Z
+PLcom/android/server/wm/DisplayContent;->updateDisplayFrames(Z)V
+PLcom/android/server/wm/DisplayContent;->updateDisplayInfo(Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked()Z
+HPLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Z)Z
+HPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z
+PLcom/android/server/wm/DisplayContent;->updateImeControlTarget()V
+PLcom/android/server/wm/DisplayContent;->updateImeControlTarget(Z)V
+PLcom/android/server/wm/DisplayContent;->updateImeInputAndControlTarget(Lcom/android/server/wm/InputTarget;)V
+PLcom/android/server/wm/DisplayContent;->updateImeParent()V
+HPLcom/android/server/wm/DisplayContent;->updateKeepClearAreas()V
+PLcom/android/server/wm/DisplayContent;->updateOrientation()Z
+PLcom/android/server/wm/DisplayContent;->updateOrientation(Lcom/android/server/wm/WindowContainer;Z)Landroid/content/res/Configuration;
+HPLcom/android/server/wm/DisplayContent;->updateOrientation(Z)Z
+HPLcom/android/server/wm/DisplayContent;->updateRecording()V
+PLcom/android/server/wm/DisplayContent;->updateRotationUnchecked()Z
+HPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z
+PLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusionLimit()V
+HPLcom/android/server/wm/DisplayContent;->updateTouchExcludeRegion()V
+HPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V
+PLcom/android/server/wm/DisplayFrames;-><clinit>()V
+PLcom/android/server/wm/DisplayFrames;-><init>()V
+PLcom/android/server/wm/DisplayFrames;-><init>(Landroid/view/InsetsState;Landroid/view/DisplayInfo;Landroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;)V
+HPLcom/android/server/wm/DisplayFrames;->update(IIILandroid/view/DisplayCutout;Landroid/view/RoundedCorners;Landroid/view/PrivacyIndicatorBounds;Landroid/view/DisplayShape;)Z
+PLcom/android/server/wm/DisplayHashController$Handler;-><init>(Lcom/android/server/wm/DisplayHashController;Landroid/os/Looper;)V
+PLcom/android/server/wm/DisplayHashController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda12;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/DisplayPolicy;Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda13;->run()V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda14;-><init>()V
+HPLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda2;-><init>(Lcom/android/internal/policy/GestureNavigationSettingsObserver;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda4;-><init>(Lcom/android/internal/policy/ForceShowNavBarSettingsObserver;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda4;->run()V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;-><init>(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;)V
+PLcom/android/server/wm/DisplayPolicy$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
+PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
+PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
+PLcom/android/server/wm/DisplayPolicy$1$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy$1;)V
+PLcom/android/server/wm/DisplayPolicy$1;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayPolicy$2;JJ)V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/DisplayPolicy$2;I)V
+PLcom/android/server/wm/DisplayPolicy$2$$ExternalSyntheticLambda3;->run()V
+PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$LNgePaZheD4TlU5IrmvA1klqhxA(Lcom/android/server/wm/DisplayPolicy$2;I)V
+PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$_oCBJp-Ybw1Pg_ZtEZnsleQENV8(Lcom/android/server/wm/DisplayPolicy$2;JJ)V
+PLcom/android/server/wm/DisplayPolicy$2;->$r8$lambda$qveQftqQbx73evHdRr8UoP4AtdU(Lcom/android/server/wm/DisplayPolicy$2;I)V
+PLcom/android/server/wm/DisplayPolicy$2;-><init>(Lcom/android/server/wm/DisplayPolicy;I)V
+PLcom/android/server/wm/DisplayPolicy$2;->lambda$$0(I)V
+PLcom/android/server/wm/DisplayPolicy$2;->lambda$$2(I)V
+PLcom/android/server/wm/DisplayPolicy$2;->lambda$onAppTransitionStartingLocked$3(JJ)V
+PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionPendingLocked()V
+PLcom/android/server/wm/DisplayPolicy$2;->onAppTransitionStartingLocked(JJ)I
+PLcom/android/server/wm/DisplayPolicy$3;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->-$$Nest$fgetmNeedUpdate(Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;)Z
+PLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;-><init>()V
+HPLcom/android/server/wm/DisplayPolicy$DecorInsets$Info;->update(Lcom/android/server/wm/DisplayContent;III)Landroid/view/InsetsState;
+PLcom/android/server/wm/DisplayPolicy$DecorInsets;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayPolicy$DecorInsets;->get(III)Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;
+PLcom/android/server/wm/DisplayPolicy$PolicyHandler;-><init>(Lcom/android/server/wm/DisplayPolicy;Landroid/os/Looper;)V
+PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$S9Cw3H7Au_8y1didKjHd-o8hjOw(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;Lcom/android/server/statusbar/StatusBarManagerInternal;)V
+PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$apsBX7VdE-wGYMlb3sIKMcyPkLk(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$qTqmnzax3qYvwsMFcbv6VpXmHVI(Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;
+PLcom/android/server/wm/DisplayPolicy;->$r8$lambda$t_gphUvbhCH7Bf26xg6TpoLO9Jg(Lcom/android/server/wm/DisplayPolicy;Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/DisplayPolicy;->-$$Nest$fgetmContext(Lcom/android/server/wm/DisplayPolicy;)Landroid/content/Context;
+PLcom/android/server/wm/DisplayPolicy;->-$$Nest$fgetmHandler(Lcom/android/server/wm/DisplayPolicy;)Landroid/os/Handler;
+PLcom/android/server/wm/DisplayPolicy;-><clinit>()V
+HPLcom/android/server/wm/DisplayPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayPolicy;->addWindowLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
+HPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
+HPLcom/android/server/wm/DisplayPolicy;->applyKeyguardPolicy(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayPolicy;->applyPostLayoutPolicyLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->areSystemBarsForcedConsumedLw()Z
+HPLcom/android/server/wm/DisplayPolicy;->areTypesForciblyShownTransiently(I)Z
+HPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V
+PLcom/android/server/wm/DisplayPolicy;->callStatusBarSafely(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/DisplayPolicy;->chooseNavigationBackgroundWindow(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->chooseNavigationColorWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->clearNavBarOpaqueFlag(I)I
+HPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZ)I
+HPLcom/android/server/wm/DisplayPolicy;->configureStatusBarOpacity(I)I
+PLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->finishKeyguardDrawn()Z
+HPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()V
+PLcom/android/server/wm/DisplayPolicy;->finishScreenTurningOn()Z
+PLcom/android/server/wm/DisplayPolicy;->finishWindowsDrawn()Z
+PLcom/android/server/wm/DisplayPolicy;->focusChangedLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->getContext()Landroid/content/Context;
+PLcom/android/server/wm/DisplayPolicy;->getCurrentUserResources()Landroid/content/res/Resources;
+PLcom/android/server/wm/DisplayPolicy;->getDecorInsetsInfo(III)Lcom/android/server/wm/DisplayPolicy$DecorInsets$Info;
+HPLcom/android/server/wm/DisplayPolicy;->getDisplayId()I
+PLcom/android/server/wm/DisplayPolicy;->getDockMode()I
+PLcom/android/server/wm/DisplayPolicy;->getImeSourceFrameProvider()Lcom/android/internal/util/function/TriFunction;
+HPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
+PLcom/android/server/wm/DisplayPolicy;->getLidState()I
+HPLcom/android/server/wm/DisplayPolicy;->getNotificationShade()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
+PLcom/android/server/wm/DisplayPolicy;->getScreenOnListener()Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;
+PLcom/android/server/wm/DisplayPolicy;->getStatusBar()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
+PLcom/android/server/wm/DisplayPolicy;->getSystemUiContext()Landroid/content/Context;
+PLcom/android/server/wm/DisplayPolicy;->getTopFullscreenOpaqueWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->getWindowCornerRadius()F
+PLcom/android/server/wm/DisplayPolicy;->hasNavigationBar()Z
+HPLcom/android/server/wm/DisplayPolicy;->intersectsAnyInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;I)Z
+PLcom/android/server/wm/DisplayPolicy;->isAwake()Z
+PLcom/android/server/wm/DisplayPolicy;->isCarDockEnablesAccelerometer()Z
+PLcom/android/server/wm/DisplayPolicy;->isDeskDockEnablesAccelerometer()Z
+PLcom/android/server/wm/DisplayPolicy;->isForceShowNavigationBarEnabled()Z
+PLcom/android/server/wm/DisplayPolicy;->isFullyTransparentAllowed(Lcom/android/server/wm/WindowState;I)Z
+PLcom/android/server/wm/DisplayPolicy;->isHdmiPlugged()Z
+HPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->isKeyguardDrawComplete()Z
+PLcom/android/server/wm/DisplayPolicy;->isKeyguardOccluded()Z
+HPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z
+HPLcom/android/server/wm/DisplayPolicy;->isOverlappingWithNavBar(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->isPersistentVrModeEnabled()Z
+PLcom/android/server/wm/DisplayPolicy;->isRemoteInsetsControllerControllingSystemBars()Z
+PLcom/android/server/wm/DisplayPolicy;->isScreenOnEarly()Z
+PLcom/android/server/wm/DisplayPolicy;->isScreenOnFully()Z
+HPLcom/android/server/wm/DisplayPolicy;->isShowingDreamLw()Z
+PLcom/android/server/wm/DisplayPolicy;->isWindowExcludedFromContent(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->isWindowManagerDrawComplete()Z
+PLcom/android/server/wm/DisplayPolicy;->lambda$callStatusBarSafely$8(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/DisplayPolicy;->lambda$getImeSourceFrameProvider$2(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)Ljava/lang/Integer;
+PLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarAttributes$7(II[Lcom/android/internal/view/AppearanceRegion;ZIILjava/lang/String;[Lcom/android/internal/statusbar/LetterboxDetails;Lcom/android/server/statusbar/StatusBarManagerInternal;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemBarsLw$9(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
+HPLcom/android/server/wm/DisplayPolicy;->onConfigurationChanged()V
+PLcom/android/server/wm/DisplayPolicy;->onDisplayInfoChanged(Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/DisplayPolicy;->onSystemUiSettingsChanged()Z
+PLcom/android/server/wm/DisplayPolicy;->removeRelaunchingApp(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/DisplayPolicy;->removeWindowLw(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->resetSystemBarAttributes()V
+PLcom/android/server/wm/DisplayPolicy;->screenTurnedOn()V
+PLcom/android/server/wm/DisplayPolicy;->screenTurningOn(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
+PLcom/android/server/wm/DisplayPolicy;->selectAnimation(Lcom/android/server/wm/WindowState;I)I
+PLcom/android/server/wm/DisplayPolicy;->setAwake(Z)V
+PLcom/android/server/wm/DisplayPolicy;->setDropInputModePolicy(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
+PLcom/android/server/wm/DisplayPolicy;->setHdmiPlugged(ZZ)V
+PLcom/android/server/wm/DisplayPolicy;->setLidState(I)V
+HPLcom/android/server/wm/DisplayPolicy;->shouldBeHiddenByKeyguard(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->simulateLayoutDisplay(Lcom/android/server/wm/DisplayFrames;)V
+PLcom/android/server/wm/DisplayPolicy;->systemReady()V
+HPLcom/android/server/wm/DisplayPolicy;->topAppHidesSystemBar(I)Z
+HPLcom/android/server/wm/DisplayPolicy;->updateConfigurationAndScreenSizeDependentBehaviors()V
+PLcom/android/server/wm/DisplayPolicy;->updateCurrentUserResources()V
+PLcom/android/server/wm/DisplayPolicy;->updateLightNavigationBarLw(ILcom/android/server/wm/WindowState;)I
+HPLcom/android/server/wm/DisplayPolicy;->updateSystemBarAttributes()V
+HPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;I)I
+PLcom/android/server/wm/DisplayPolicy;->validateAddingWindowLw(Landroid/view/WindowManager$LayoutParams;II)I
+PLcom/android/server/wm/DisplayRotation$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/DisplayRotation;)V
+PLcom/android/server/wm/DisplayRotation$OrientationListener;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/wm/DisplayRotation$OrientationListener;->disable()V
+PLcom/android/server/wm/DisplayRotation$OrientationListener;->run()V
+PLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>()V
+PLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>(Lcom/android/server/wm/DisplayRotation$RotationAnimationPair-IA;)V
+PLcom/android/server/wm/DisplayRotation$RotationHistory;-><init>()V
+PLcom/android/server/wm/DisplayRotation$RotationHistory;-><init>(Lcom/android/server/wm/DisplayRotation$RotationHistory-IA;)V
+PLcom/android/server/wm/DisplayRotation$RotationLockHistory$Record;-><init>(IILjava/lang/String;)V
+PLcom/android/server/wm/DisplayRotation$RotationLockHistory$Record;-><init>(IILjava/lang/String;Lcom/android/server/wm/DisplayRotation$RotationLockHistory$Record-IA;)V
+PLcom/android/server/wm/DisplayRotation$RotationLockHistory;-><init>()V
+PLcom/android/server/wm/DisplayRotation$RotationLockHistory;-><init>(Lcom/android/server/wm/DisplayRotation$RotationLockHistory-IA;)V
+PLcom/android/server/wm/DisplayRotation$RotationLockHistory;->addRecord(IILjava/lang/String;)V
+PLcom/android/server/wm/DisplayRotation$SettingsObserver;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/os/Handler;)V
+PLcom/android/server/wm/DisplayRotation$SettingsObserver;->observe()V
+PLcom/android/server/wm/DisplayRotation$SettingsObserver;->onChange(Z)V
+PLcom/android/server/wm/DisplayRotation;->-$$Nest$fgetmContext(Lcom/android/server/wm/DisplayRotation;)Landroid/content/Context;
+PLcom/android/server/wm/DisplayRotation;->-$$Nest$mupdateSettings(Lcom/android/server/wm/DisplayRotation;)Z
+PLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayAddress;Lcom/android/server/wm/DeviceStateController;Lcom/android/server/wm/DisplayRotationCoordinator;)V
+PLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayAddress;Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayWindowSettings;Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/wm/DeviceStateController;Lcom/android/server/wm/DisplayRotationCoordinator;)V
+HPLcom/android/server/wm/DisplayRotation;->configure(II)V
+PLcom/android/server/wm/DisplayRotation;->freezeRotation(ILjava/lang/String;)V
+PLcom/android/server/wm/DisplayRotation;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
+PLcom/android/server/wm/DisplayRotation;->getRotation()I
+PLcom/android/server/wm/DisplayRotation;->initImmersiveAppCompatPolicy(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;
+PLcom/android/server/wm/DisplayRotation;->isFixedToUserRotation()Z
+PLcom/android/server/wm/DisplayRotation;->isRotatingSeamlessly()Z
+PLcom/android/server/wm/DisplayRotation;->isRotationFrozen()Z
+PLcom/android/server/wm/DisplayRotation;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/DisplayRotation;->needSensorRunning()Z
+PLcom/android/server/wm/DisplayRotation;->onUserSwitch()V
+PLcom/android/server/wm/DisplayRotation;->readDefaultDisplayRotation(Landroid/view/DisplayAddress;Lcom/android/server/wm/DisplayContent;)I
+PLcom/android/server/wm/DisplayRotation;->readRotation(I)I
+PLcom/android/server/wm/DisplayRotation;->resetAllowAllRotations()V
+PLcom/android/server/wm/DisplayRotation;->restoreSettings(III)V
+HPLcom/android/server/wm/DisplayRotation;->rotationForOrientation(II)I
+PLcom/android/server/wm/DisplayRotation;->setFixedToUserRotation(I)V
+PLcom/android/server/wm/DisplayRotation;->setUserRotation(IILjava/lang/String;)V
+PLcom/android/server/wm/DisplayRotation;->updateOrientation(IZ)Z
+PLcom/android/server/wm/DisplayRotation;->updateOrientationListener()V
+HPLcom/android/server/wm/DisplayRotation;->updateOrientationListenerLw()V
+HPLcom/android/server/wm/DisplayRotation;->updateRotationUnchecked(Z)Z
+PLcom/android/server/wm/DisplayRotation;->updateSettings()Z
+PLcom/android/server/wm/DisplayRotation;->updateUserDependentConfiguration(Landroid/content/res/Resources;)V
+PLcom/android/server/wm/DisplayRotation;->useDefaultSettingsProvider()Z
+PLcom/android/server/wm/DisplayRotationCoordinator;-><init>()V
+PLcom/android/server/wm/DisplayRotationCoordinator;->isSecondaryInternalDisplay(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/DisplayRotationCoordinator;->setDefaultDisplayDefaultRotation(I)V
+PLcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;->createIfNeeded(Lcom/android/server/wm/LetterboxConfiguration;Lcom/android/server/wm/DisplayRotation;Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayRotationImmersiveAppCompatPolicy;
+PLcom/android/server/wm/DisplayRotationReversionController;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/DisplayRotationReversionController;->isRotationReversionEnabled()Z
+PLcom/android/server/wm/DisplayWindowListenerController$$ExternalSyntheticLambda0;-><init>(Landroid/util/IntArray;)V
+PLcom/android/server/wm/DisplayWindowListenerController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayWindowListenerController;->$r8$lambda$P8K3uBbEYTKb3aHmbBwg4TPLVDk(Landroid/util/IntArray;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowListenerController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayAdded(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayChanged(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayWindowListenerController;->lambda$registerListener$0(Landroid/util/IntArray;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowListenerController;->registerListener(Landroid/view/IDisplayWindowListener;)[I
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->canActivityBeLaunched(Landroid/content/pm/ActivityInfo;Landroid/content/Intent;IIZ)Z
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->canShowTasksInHostDeviceRecents()Z
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->hasController()Z
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->hasDisplayCategory(Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/wm/DisplayWindowPolicyControllerHelper;->onRunningActivityChanged()V
+PLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;-><init>()V
+PLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;-><init>(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;)V
+HPLcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;->setTo(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;)Z
+PLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider;)V
+PLcom/android/server/wm/DisplayWindowSettings;->applyRotationSettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowSettings;->applySettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayWindowSettings;->applySettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;Z)V
+PLcom/android/server/wm/DisplayWindowSettings;->getImePolicyLocked(Lcom/android/server/wm/DisplayContent;)I
+PLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayContent;)I
+PLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;Lcom/android/server/wm/DisplayContent;)I
+PLcom/android/server/wm/DisplayWindowSettings;->isHomeSupportedLocked(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/DisplayWindowSettings;->updateSettingsForDisplay(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/DisplayWindowSettingsProvider$AtomicFileStorage;-><init>(Landroid/util/AtomicFile;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$AtomicFileStorage;->openRead()Ljava/io/InputStream;
+PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;-><init>()V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$FileData;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData-IA;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->getIdentifier(Landroid/view/DisplayInfo;)Ljava/lang/String;
+PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->getSettingsEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
+PLcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettings;->loadSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettings;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettings;->getOrCreateSettingsEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->-$$Nest$smreadSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;-><init>()V
+PLcom/android/server/wm/DisplayWindowSettingsProvider;-><init>(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;Lcom/android/server/wm/DisplayWindowSettingsProvider$WritableSettingsStorage;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getBooleanAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/Boolean;)Ljava/lang/Boolean;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getIntAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;I)I
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getIntegerAttribute(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getOverrideSettingsFile()Landroid/util/AtomicFile;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getSettings(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$SettingsProvider$SettingsEntry;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->getVendorSettingsFile()Landroid/util/AtomicFile;
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->readConfig(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->readDisplay(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;)V
+PLcom/android/server/wm/DisplayWindowSettingsProvider;->readSettings(Lcom/android/server/wm/DisplayWindowSettingsProvider$ReadableSettingsStorage;)Lcom/android/server/wm/DisplayWindowSettingsProvider$FileData;
+PLcom/android/server/wm/DragDropController$1;-><init>(Lcom/android/server/wm/DragDropController;)V
+PLcom/android/server/wm/DragDropController$DragHandler;-><init>(Lcom/android/server/wm/DragDropController;Lcom/android/server/wm/WindowManagerService;Landroid/os/Looper;)V
+PLcom/android/server/wm/DragDropController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/wm/DragDropController;->dragDropActiveLocked()Z
+PLcom/android/server/wm/EmbeddedWindowController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/EmbeddedWindowController;Landroid/os/IBinder;Landroid/window/InputTransferToken;)V
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;-><init>(Lcom/android/server/wm/Session;Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;Lcom/android/server/wm/WindowState;IIIILandroid/window/InputTransferToken;Ljava/lang/String;Z)V
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getApplicationHandle()Landroid/view/InputApplicationHandle;
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getInputTransferToken()Landroid/window/InputTransferToken;
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->getWindowToken()Landroid/os/IBinder;
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->openInputChannel(Landroid/view/InputChannel;)V
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;->toString()Ljava/lang/String;
+PLcom/android/server/wm/EmbeddedWindowController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/EmbeddedWindowController;->add(Landroid/os/IBinder;Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;)V
+PLcom/android/server/wm/EmbeddedWindowController;->get(Landroid/os/IBinder;)Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;
+PLcom/android/server/wm/EmbeddedWindowController;->onWindowRemoved(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/EmbeddedWindowController;->updateProcessController(Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;)V
+PLcom/android/server/wm/EnsureActivitiesVisibleHelper;-><init>(Lcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/EnsureActivitiesVisibleHelper;->makeVisibleAndRestartIfNeeded(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/EventLogTags;->writeWmAddToStopping(IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmBootAnimationDone(J)V
+PLcom/android/server/wm/EventLogTags;->writeWmCreateTask(IIII)V
+PLcom/android/server/wm/EventLogTags;->writeWmPauseActivity(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmRestartActivity(IIILjava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmStopActivity(IILjava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmTaskCreated(I)V
+PLcom/android/server/wm/EventLogTags;->writeWmTaskMoved(IIIII)V
+PLcom/android/server/wm/EventLogTags;->writeWmTaskToFront(III)V
+PLcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateDenylist;)V
+PLcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateDenylist;Lcom/android/server/wm/HighRefreshRateDenylist$OnPropertiesChangedListener-IA;)V
+PLcom/android/server/wm/HighRefreshRateDenylist;-><init>(Landroid/content/res/Resources;Landroid/provider/DeviceConfigInterface;)V
+PLcom/android/server/wm/HighRefreshRateDenylist;->create(Landroid/content/res/Resources;)Lcom/android/server/wm/HighRefreshRateDenylist;
+HPLcom/android/server/wm/HighRefreshRateDenylist;->isDenylisted(Ljava/lang/String;)Z
+PLcom/android/server/wm/HighRefreshRateDenylist;->updateDenylist(Ljava/lang/String;)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/ImeInsetsSourceProvider;->checkShowImePostLayout()V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
+PLcom/android/server/wm/ImeInsetsSourceProvider;->isReadyToShowIme()Z
+PLcom/android/server/wm/ImeInsetsSourceProvider;->onSourceChanged()V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->setClientVisible(Z)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->setFrozen(Z)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->setServerVisible(Z)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsControlTarget;)Z
+PLcom/android/server/wm/ImeInsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ImeInsetsSourceProvider;->updateVisibility()V
+PLcom/android/server/wm/ImeTargetVisibilityPolicy;-><init>()V
+PLcom/android/server/wm/ImeTargetVisibilityPolicy;->canComputeImeParent(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/InputTarget;)Z
+PLcom/android/server/wm/ImeTargetVisibilityPolicy;->shouldComputeImeParentForEmbeddedActivity(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/InputTarget;)Z
+PLcom/android/server/wm/ImmersiveModeConfirmation$1;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;Landroid/os/Looper;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;-><init>(Landroid/content/Context;Landroid/os/Looper;ZZ)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->loadSetting(ILandroid/content/Context;)Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->onSettingChanged(I)Z
+PLcom/android/server/wm/InputConfigAdapter$FlagMapping;-><init>(IIZ)V
+PLcom/android/server/wm/InputConfigAdapter;-><clinit>()V
+HPLcom/android/server/wm/InputConfigAdapter;->applyMapping(ILjava/util/List;)I
+PLcom/android/server/wm/InputConfigAdapter;->computeMask(Ljava/util/List;)I
+HPLcom/android/server/wm/InputConfigAdapter;->getInputConfigFromWindowParams(III)I
+HPLcom/android/server/wm/InputConfigAdapter;->getMask()I
+PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/InputManagerCallback$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/InputManagerCallback;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/InputManagerCallback;->createSurfaceForGestureMonitor(Ljava/lang/String;I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/InputManagerCallback;->getPointerDisplayId()I
+PLcom/android/server/wm/InputManagerCallback;->notifyConfigurationChanged()V
+PLcom/android/server/wm/InputManagerCallback;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/wm/InputManagerCallback;->notifyLidSwitchChanged(JZ)V
+PLcom/android/server/wm/InputManagerCallback;->notifyPointerLocationChanged(Z)V
+PLcom/android/server/wm/InputManagerCallback;->setEventDispatchingLw(Z)V
+PLcom/android/server/wm/InputManagerCallback;->updateInputDispatchModeLw()V
+PLcom/android/server/wm/InputManagerCallback;->waitForInputDevicesReady(J)Z
+PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->-$$Nest$mupdateInputWindows(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V
+PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;)V
+PLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer-IA;)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V
+PLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;)V
+PLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$UpdateInputWindows-IA;)V
+HPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmActiveRecentsActivity(Lcom/android/server/wm/InputMonitor;)Ljava/lang/ref/WeakReference;
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmDisplayContent(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmDisplayRemoved(Lcom/android/server/wm/InputMonitor;)Z
+HPLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmInputTransaction(Lcom/android/server/wm/InputMonitor;)Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmService(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmUpdateInputForAllWindowsConsumer(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fgetmUpdateInputWindowsImmediately(Lcom/android/server/wm/InputMonitor;)Z
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fputmUpdateInputWindowsNeeded(Lcom/android/server/wm/InputMonitor;Z)V
+PLcom/android/server/wm/InputMonitor;->-$$Nest$fputmUpdateInputWindowsPending(Lcom/android/server/wm/InputMonitor;Z)V
+PLcom/android/server/wm/InputMonitor;->-$$Nest$mupdateInputFocusRequest(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputConsumerImpl;)V
+PLcom/android/server/wm/InputMonitor;->-$$Nest$smgetWeak(Ljava/lang/ref/WeakReference;)Ljava/lang/Object;
+PLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;
+PLcom/android/server/wm/InputMonitor;->getWeak(Ljava/lang/ref/WeakReference;)Ljava/lang/Object;
+PLcom/android/server/wm/InputMonitor;->isTrustedOverlay(I)Z
+PLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
+PLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V
+HPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;)V
+PLcom/android/server/wm/InputMonitor;->populateOverlayInputInfo(Lcom/android/server/wm/InputWindowHandleWrapper;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/InputMonitor;->requestFocus(Landroid/os/IBinder;Ljava/lang/String;)V
+HPLcom/android/server/wm/InputMonitor;->resetInputConsumers(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V
+HPLcom/android/server/wm/InputMonitor;->scheduleUpdateInputWindows()V
+PLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/InputMonitor;->setInputWindowInfoIfNeeded(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;Lcom/android/server/wm/InputWindowHandleWrapper;)V
+PLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V
+HPLcom/android/server/wm/InputMonitor;->updateInputFocusRequest(Lcom/android/server/wm/InputConsumerImpl;)V
+HPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V
+PLcom/android/server/wm/InputWindowHandleWrapper;-><init>(Landroid/view/InputWindowHandle;)V
+PLcom/android/server/wm/InputWindowHandleWrapper;->applyChangesToSurface(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/InputWindowHandleWrapper;->clearTouchableRegion()V
+PLcom/android/server/wm/InputWindowHandleWrapper;->forceChange()V
+PLcom/android/server/wm/InputWindowHandleWrapper;->getInputApplicationHandle()Landroid/view/InputApplicationHandle;
+HPLcom/android/server/wm/InputWindowHandleWrapper;->hasWallpaper()Z
+PLcom/android/server/wm/InputWindowHandleWrapper;->isChanged()Z
+HPLcom/android/server/wm/InputWindowHandleWrapper;->isFocusable()Z
+HPLcom/android/server/wm/InputWindowHandleWrapper;->isPaused()Z
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setDispatchingTimeoutMillis(J)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setDisplayId(I)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setFocusable(Z)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setHasWallpaper(Z)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setInputApplicationHandle(Landroid/view/InputApplicationHandle;)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setInputConfigMasked(II)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsFlags(I)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setLayoutParamsType(I)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setName(Ljava/lang/String;)V
+PLcom/android/server/wm/InputWindowHandleWrapper;->setOwnerPid(I)V
+PLcom/android/server/wm/InputWindowHandleWrapper;->setOwnerUid(I)V
+PLcom/android/server/wm/InputWindowHandleWrapper;->setPackageName(Ljava/lang/String;)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setPaused(Z)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setReplaceTouchableRegionWithCrop(Z)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setScaleFactor(F)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setSurfaceInset(I)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setToken(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchOcclusionMode(I)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegion(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setTouchableRegionCrop(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/InputWindowHandleWrapper;->setWindowToken(Landroid/os/IBinder;)V
+PLcom/android/server/wm/InsetsControlTarget;->asWindowOrNull(Lcom/android/server/wm/InsetsControlTarget;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/InsetsControlTarget;->getWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/InsetsControlTarget;->isRequestedVisible(I)Z
+PLcom/android/server/wm/InsetsPolicy$BarWindow;->-$$Nest$mupdateVisibility(Lcom/android/server/wm/InsetsPolicy$BarWindow;Lcom/android/server/wm/InsetsControlTarget;I)V
+PLcom/android/server/wm/InsetsPolicy$BarWindow;-><init>(Lcom/android/server/wm/InsetsPolicy;I)V
+PLcom/android/server/wm/InsetsPolicy$BarWindow;->setVisible(Z)V
+HPLcom/android/server/wm/InsetsPolicy$BarWindow;->updateVisibility(Lcom/android/server/wm/InsetsControlTarget;I)V
+PLcom/android/server/wm/InsetsPolicy$ControlTarget;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;)V
+PLcom/android/server/wm/InsetsPolicy$Host;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/wm/InsetsPolicy$Host;->getHandler()Landroid/os/Handler;
+PLcom/android/server/wm/InsetsPolicy;-><clinit>()V
+PLcom/android/server/wm/InsetsPolicy;-><init>(Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/InsetsPolicy;->abortTransient()V
+HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForRoundedCorners(Lcom/android/server/wm/WindowToken;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->adjustInsetsForWindow(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForFakeControllingSources(Landroid/view/InsetsState;)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->adjustVisibilityForIme(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;Z)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->areTypesForciblyShowing(I)Z
+HPLcom/android/server/wm/InsetsPolicy;->canBeTopFullscreenOpaqueWindow(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/InsetsPolicy;->enforceInsetsPolicyForTarget(Landroid/view/WindowManager$LayoutParams;IZLandroid/view/InsetsState;)Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsPolicy;->forceShowingNavigationBars(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;Z)Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/InsetsPolicy;->hasHiddenSources(I)Z
+PLcom/android/server/wm/InsetsPolicy;->isTransient(I)Z
+HPLcom/android/server/wm/InsetsPolicy;->remoteInsetsControllerControlsSystemBars(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/InsetsPolicy;->updateSystemBars(Lcom/android/server/wm/WindowState;ZZ)V
+PLcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/InsetsSourceProvider;)V
+PLcom/android/server/wm/InsetsSourceProvider$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->-$$Nest$fgetmCapturedLeash(Lcom/android/server/wm/InsetsSourceProvider$ControlAdapter;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;-><init>(Lcom/android/server/wm/InsetsSourceProvider;Landroid/graphics/Point;)V
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/InsetsSourceProvider$ControlAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/InsetsSourceProvider;->$r8$lambda$Dei2KOKOm-G-kdAHiqmNNHB9JPM(Lcom/android/server/wm/InsetsSourceProvider;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/InsetsSourceProvider;->-$$Nest$fgetmAdapter(Lcom/android/server/wm/InsetsSourceProvider;)Lcom/android/server/wm/InsetsSourceProvider$ControlAdapter;
+PLcom/android/server/wm/InsetsSourceProvider;->-$$Nest$fgetmCropToProvidingInsets(Lcom/android/server/wm/InsetsSourceProvider;)Z
+PLcom/android/server/wm/InsetsSourceProvider;-><clinit>()V
+PLcom/android/server/wm/InsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/InsetsSourceProvider;->getControl(Lcom/android/server/wm/InsetsControlTarget;)Landroid/view/InsetsSourceControl;
+PLcom/android/server/wm/InsetsSourceProvider;->getControlTarget()Lcom/android/server/wm/InsetsControlTarget;
+PLcom/android/server/wm/InsetsSourceProvider;->getInsetsHint()Landroid/graphics/Insets;
+PLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
+HPLcom/android/server/wm/InsetsSourceProvider;->getWindowFrameSurfacePosition()Landroid/graphics/Point;
+PLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z
+PLcom/android/server/wm/InsetsSourceProvider;->isControllable()Z
+PLcom/android/server/wm/InsetsSourceProvider;->lambda$new$0(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V
+PLcom/android/server/wm/InsetsSourceProvider;->onSurfaceTransactionApplied()V
+HPLcom/android/server/wm/InsetsSourceProvider;->overridesFrame(I)Z
+PLcom/android/server/wm/InsetsSourceProvider;->setClientVisible(Z)V
+PLcom/android/server/wm/InsetsSourceProvider;->setFlags(II)Z
+PLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V
+PLcom/android/server/wm/InsetsSourceProvider;->setWindowContainer(Lcom/android/server/wm/WindowContainer;Lcom/android/internal/util/function/TriFunction;Landroid/util/SparseArray;)V
+PLcom/android/server/wm/InsetsSourceProvider;->updateClientVisibility(Lcom/android/server/wm/InsetsControlTarget;)Z
+HPLcom/android/server/wm/InsetsSourceProvider;->updateControlForTarget(Lcom/android/server/wm/InsetsControlTarget;Z)V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrameForServerVisibility()V
+PLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/InsetsStateController;)V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/InsetsStateController$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/InsetsStateController$1$$ExternalSyntheticLambda0;-><init>(I)V
+PLcom/android/server/wm/InsetsStateController$1$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/InsetsStateController$1;->$r8$lambda$UjLlQbcGcYIO1UklJ0WxgRK60HM(I)V
+PLcom/android/server/wm/InsetsStateController$1;-><init>(Lcom/android/server/wm/InsetsStateController;)V
+PLcom/android/server/wm/InsetsStateController$1;->lambda$notifyInsetsControlChanged$0(I)V
+PLcom/android/server/wm/InsetsStateController$1;->notifyInsetsControlChanged(I)V
+PLcom/android/server/wm/InsetsStateController;->$r8$lambda$MnP7XA1MDcyrUwoj0hcoT5hTO8E(Lcom/android/server/wm/InsetsStateController;)V
+PLcom/android/server/wm/InsetsStateController;->$r8$lambda$TzYyjwJniEoBgyDjbMpQVgjWyYo(Lcom/android/server/wm/InsetsControlTarget;)Ljava/util/ArrayList;
+PLcom/android/server/wm/InsetsStateController;->-$$Nest$fgetmDisplayContent(Lcom/android/server/wm/InsetsStateController;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/InsetsStateController;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/InsetsStateController;->addToControlMaps(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
+HPLcom/android/server/wm/InsetsStateController;->getControlsForDispatch(Lcom/android/server/wm/InsetsControlTarget;)[Landroid/view/InsetsSourceControl;
+HPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;
+HPLcom/android/server/wm/InsetsStateController;->getOrCreateSourceProvider(II)Lcom/android/server/wm/InsetsSourceProvider;
+PLcom/android/server/wm/InsetsStateController;->getRawInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/InsetsStateController;->getSourceProviders()Landroid/util/SparseArray;
+PLcom/android/server/wm/InsetsStateController;->lambda$addToControlMaps$2(Lcom/android/server/wm/InsetsControlTarget;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/InsetsStateController;->lambda$notifyPendingInsetsControlChanged$3()V
+PLcom/android/server/wm/InsetsStateController;->notifyControlChanged(Lcom/android/server/wm/InsetsControlTarget;)V
+PLcom/android/server/wm/InsetsStateController;->notifyInsetsChanged()V
+HPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V
+HPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V
+PLcom/android/server/wm/InsetsStateController;->onControlTargetChanged(Lcom/android/server/wm/InsetsSourceProvider;Lcom/android/server/wm/InsetsControlTarget;Z)V
+PLcom/android/server/wm/InsetsStateController;->onImeControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;)V
+HPLcom/android/server/wm/InsetsStateController;->onPostLayout()V
+PLcom/android/server/wm/InsetsStateController;->onRequestedVisibleTypesChanged(Lcom/android/server/wm/InsetsControlTarget;)V
+PLcom/android/server/wm/InsetsStateController;->removeFromControlMaps(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsSourceProvider;Z)V
+PLcom/android/server/wm/InsetsStateController;->setForcedConsumingTypes(I)V
+HPLcom/android/server/wm/InsetsStateController;->updateAboveInsetsState(Z)V
+HSPLcom/android/server/wm/KeyguardController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/KeyguardController;)V
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState$$ExternalSyntheticLambda0;-><init>()V
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->$r8$lambda$UYxm3jSn5iwGFQ04QlWkFzJcydA(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmAodShowing(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmKeyguardGoingAway(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmKeyguardShowing(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->-$$Nest$fgetmRequestDismissKeyguard(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILcom/android/server/wm/ActivityTaskManagerInternal$SleepTokenAcquirer;)V
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->getRootTaskForControllingOccluding(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->lambda$getRootTaskForControllingOccluding$0(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->updateVisibility(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/KeyguardController;->-$$Nest$fgetmService(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/ActivityTaskManagerService;
+HPLcom/android/server/wm/KeyguardController;->-$$Nest$fgetmWindowManager(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/KeyguardController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+HPLcom/android/server/wm/KeyguardController;->checkKeyguardVisibility(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/KeyguardController;->getDisplayState(I)Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;
+HPLcom/android/server/wm/KeyguardController;->isKeyguardGoingAway(I)Z
+HPLcom/android/server/wm/KeyguardController;->isKeyguardLocked(I)Z
+PLcom/android/server/wm/KeyguardController;->isKeyguardOccluded(I)Z
+HPLcom/android/server/wm/KeyguardController;->isKeyguardOrAodShowing(I)Z
+PLcom/android/server/wm/KeyguardController;->setKeyguardShown(IZZ)V
+PLcom/android/server/wm/KeyguardController;->setWakeTransitionReady()V
+PLcom/android/server/wm/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/KeyguardController;->updateDeferTransitionForAod(Z)V
+HPLcom/android/server/wm/KeyguardController;->updateVisibility()V
+PLcom/android/server/wm/KeyguardDisableHandler$1;-><init>(Lcom/android/server/wm/KeyguardDisableHandler;)V
+PLcom/android/server/wm/KeyguardDisableHandler$2;-><init>(Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/pm/UserManagerInternal;)V
+PLcom/android/server/wm/KeyguardDisableHandler;-><init>(Lcom/android/server/wm/KeyguardDisableHandler$Injector;Landroid/os/Handler;)V
+PLcom/android/server/wm/KeyguardDisableHandler;->create(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy;Landroid/os/Handler;)Lcom/android/server/wm/KeyguardDisableHandler;
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda6;-><init>()V
+PLcom/android/server/wm/LaunchObserverRegistryImpl$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$43NtWuC87LQ3fIhORDtk6FguY_c(Lcom/android/server/wm/LaunchObserverRegistryImpl;Landroid/content/Intent;J)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$F9z4OJPJG8S6kWyjlSmFdBIxGAs(Lcom/android/server/wm/LaunchObserverRegistryImpl;JJ)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$HB46khtoGy2-lvZU6F6JCBo3THQ(Lcom/android/server/wm/LaunchObserverRegistryImpl;JLandroid/content/ComponentName;II)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$K44Q-L066e13h8I3JRSoRtnlKPw(Lcom/android/server/wm/LaunchObserverRegistryImpl;JLandroid/content/ComponentName;JI)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->$r8$lambda$ic9ginTismFOXJUj86YxV2Pnmpw(Lcom/android/server/wm/LaunchObserverRegistryImpl;Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunched(JLandroid/content/ComponentName;II)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnReportFullyDrawn(JJ)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->handleRegisterLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchFinished(JLandroid/content/ComponentName;JI)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunched(JLandroid/content/ComponentName;II)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onReportFullyDrawn(JJ)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->registerLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;-><init>()V
+PLcom/android/server/wm/LaunchParamsController$LaunchParams;->hasPreferredTaskDisplayArea()Z
+PLcom/android/server/wm/LaunchParamsController$LaunchParams;->isEmpty()Z
+PLcom/android/server/wm/LaunchParamsController$LaunchParams;->reset()V
+HPLcom/android/server/wm/LaunchParamsController$LaunchParams;->set(Lcom/android/server/wm/LaunchParamsController$LaunchParams;)V
+HSPLcom/android/server/wm/LaunchParamsController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/LaunchParamsPersister;)V
+HPLcom/android/server/wm/LaunchParamsController;->calculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;)V
+PLcom/android/server/wm/LaunchParamsController;->layoutTask(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HSPLcom/android/server/wm/LaunchParamsController;->registerDefaultModifiers(Lcom/android/server/wm/ActivityTaskSupervisor;)V
+HSPLcom/android/server/wm/LaunchParamsController;->registerModifier(Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;)V
+HSPLcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/wm/LaunchParamsPersister$$ExternalSyntheticLambda2;->apply(I)Ljava/lang/Object;
+PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;)V
+PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Lcom/android/server/wm/LaunchParamsPersister$PackageListObserver-IA;)V
+HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskSupervisor;Ljava/util/function/IntFunction;)V
+PLcom/android/server/wm/LaunchParamsPersister;->getLaunchParamFolder(I)Ljava/io/File;
+PLcom/android/server/wm/LaunchParamsPersister;->getLaunchParams(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)V
+PLcom/android/server/wm/LaunchParamsPersister;->loadLaunchParams(I)V
+PLcom/android/server/wm/LaunchParamsPersister;->onSystemReady()V
+PLcom/android/server/wm/LaunchParamsPersister;->onUnlockUser(I)V
+PLcom/android/server/wm/LaunchParamsUtil;-><clinit>()V
+HPLcom/android/server/wm/LaunchParamsUtil;->adjustBoundsToFitInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;ILandroid/content/pm/ActivityInfo$WindowLayout;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/LaunchParamsUtil;->centerBounds(Lcom/android/server/wm/TaskDisplayArea;IILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/LaunchParamsUtil;->getDefaultFreeformSize(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;ILandroid/graphics/Rect;)Landroid/util/Size;
+PLcom/android/server/wm/LegacyTransitionTracer;-><init>()V
+PLcom/android/server/wm/LegacyTransitionTracer;->dumpTransitionTargetsToProto(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/Transition;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/LegacyTransitionTracer;->logFinishedTransition(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/LegacyTransitionTracer;->logRemovingStartingWindow(Lcom/android/server/wm/StartingData;)V
+PLcom/android/server/wm/LegacyTransitionTracer;->logSentTransition(Lcom/android/server/wm/Transition;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda0;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda1;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda1;->get()Ljava/lang/Object;
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda2;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda2;->get()Ljava/lang/Object;
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda3;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/LetterboxConfiguration$$ExternalSyntheticLambda3;->get()Ljava/lang/Object;
+PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$2zQBjf58m1mXrJY8pdbqFLLuw2k(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$82HcSBiBrA4v7cCNKfqg6uSnw3k(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$I4U5QJpz5jHeQQ6aVj1Zi7Ry9X8(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->$r8$lambda$klhGmHsmf4_NQnUJBD-o9X_HkDk(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/wm/LetterboxConfiguration;-><init>(Landroid/content/Context;Lcom/android/server/wm/LetterboxConfigurationPersister;)V
+HPLcom/android/server/wm/LetterboxConfiguration;->getDefaultLetterboxBackgroundType()I
+PLcom/android/server/wm/LetterboxConfiguration;->getIsEducationEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->getIsHorizontalReachabilityEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->getIsVerticalReachabilityEnabled()Z
+HPLcom/android/server/wm/LetterboxConfiguration;->getLetterboxBackgroundType()I
+PLcom/android/server/wm/LetterboxConfiguration;->isCameraCompatTreatmentEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->isCameraCompatTreatmentEnabledAtBuildTime()Z
+PLcom/android/server/wm/LetterboxConfiguration;->isCompatFakeFocusEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->isDisplayRotationImmersiveAppCompatPolicyEnabledAtBuildTime()Z
+PLcom/android/server/wm/LetterboxConfiguration;->isPolicyForIgnoringRequestedOrientationEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->isTranslucentLetterboxingEnabled()Z
+HPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioFullscreenEnabled()Z
+HPLcom/android/server/wm/LetterboxConfiguration;->isUserAppAspectRatioSettingsEnabled()Z
+PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$0(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$1(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$2(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->lambda$new$3(Landroid/content/Context;)Ljava/lang/Integer;
+PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxBackgroundTypeFromConfig(Landroid/content/Context;)I
+PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxHorizontalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
+PLcom/android/server/wm/LetterboxConfiguration;->readLetterboxVerticalReachabilityPositionFromConfig(Landroid/content/Context;Z)I
+PLcom/android/server/wm/LetterboxConfiguration;->setDefaultMinAspectRatioForUnresizableApps(F)V
+PLcom/android/server/wm/LetterboxConfigurationPersister$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/LetterboxConfigurationPersister;)V
+PLcom/android/server/wm/LetterboxConfigurationPersister$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/LetterboxConfigurationPersister;->$r8$lambda$SeaEJhhe6Vq36TZNPw0-amAMzIo(Lcom/android/server/wm/LetterboxConfigurationPersister;)V
+PLcom/android/server/wm/LetterboxConfigurationPersister;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
+PLcom/android/server/wm/LetterboxConfigurationPersister;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/io/File;Lcom/android/server/wm/PersisterQueue;Ljava/util/function/Consumer;Ljava/lang/String;)V
+PLcom/android/server/wm/LetterboxConfigurationPersister;->readCurrentConfiguration()V
+PLcom/android/server/wm/LetterboxConfigurationPersister;->runWithDiskReadsThreadPolicy(Ljava/lang/Runnable;)V
+PLcom/android/server/wm/LetterboxConfigurationPersister;->start()V
+PLcom/android/server/wm/LetterboxConfigurationPersister;->useDefaultValue()V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda10;-><init>()V
+HPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda10;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda15;-><init>()V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda15;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda1;-><init>()V
+HPLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda1;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/LetterboxConfiguration;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda3;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/LetterboxConfiguration;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda4;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda5;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda6;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda7;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda8;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda9;-><init>(Lcom/android/server/wm/LetterboxUiController;)V
+PLcom/android/server/wm/LetterboxUiController$$ExternalSyntheticLambda9;->getAsBoolean()Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$8OuAb4WHYeErDUj6GqNmsPR-bzo()Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$JuB8yLagMGFwDrrvd2UCn1C1pIY(Lcom/android/server/wm/LetterboxUiController;)Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$U7dOvaWj01YWdYa2xRymir-u7iE(Lcom/android/server/wm/LetterboxUiController;)Z
+HPLcom/android/server/wm/LetterboxUiController;->$r8$lambda$_MsqrzePtlwGj7PFL530QpPbjUM()Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$i72F-I0RxQu2oFPPqEHfVFbh7Yo(Lcom/android/server/wm/LetterboxUiController;)Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$ps7jq1nOS9OFJPISgAx2C3dVkt8(Lcom/android/server/wm/LetterboxUiController;)Z
+HPLcom/android/server/wm/LetterboxUiController;->$r8$lambda$ueKG2MaFQ7lPhRN_jwsJxXdv0mE()Z
+PLcom/android/server/wm/LetterboxUiController;->$r8$lambda$w9WIA81i4GdEEHGpz0PCTw-RQ3w(Lcom/android/server/wm/LetterboxUiController;)Z
+PLcom/android/server/wm/LetterboxUiController;-><clinit>()V
+HPLcom/android/server/wm/LetterboxUiController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/LetterboxUiController;->findOpaqueNotFinishingActivityBelow()Ljava/util/Optional;
+HPLcom/android/server/wm/LetterboxUiController;->getCropBoundsIfNeeded(Lcom/android/server/wm/WindowState;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/LetterboxUiController;->getLetterboxDetails()Lcom/android/internal/statusbar/LetterboxDetails;
+HPLcom/android/server/wm/LetterboxUiController;->getLetterboxInnerBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/LetterboxUiController;->getRoundedCornersRadius(Lcom/android/server/wm/WindowState;)I
+HPLcom/android/server/wm/LetterboxUiController;->hasInheritedLetterboxBehavior()Z
+PLcom/android/server/wm/LetterboxUiController;->hasInheritedOrientation()Z
+PLcom/android/server/wm/LetterboxUiController;->hasWallpaperBackgroundForLetterbox()Z
+HPLcom/android/server/wm/LetterboxUiController;->isCompatChangeEnabled(J)Z
+PLcom/android/server/wm/LetterboxUiController;->isFromDoubleTap()Z
+HPLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled()Z
+PLcom/android/server/wm/LetterboxUiController;->isHorizontalReachabilityEnabled(Landroid/content/res/Configuration;)Z
+PLcom/android/server/wm/LetterboxUiController;->isLetterboxDoubleTapEducationEnabled()Z
+HPLcom/android/server/wm/LetterboxUiController;->isLetterboxedNotForDisplayCutout(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/LetterboxUiController;->isSurfaceVisible(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/LetterboxUiController;->isSystemOverrideToFullscreenEnabled()Z
+HPLcom/android/server/wm/LetterboxUiController;->isUserFullscreenOverrideEnabled()Z
+HPLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled()Z
+PLcom/android/server/wm/LetterboxUiController;->isVerticalReachabilityEnabled(Landroid/content/res/Configuration;)Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$new$0()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$new$1()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$new$2()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$new$3()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$new$4()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideForceNonResizeApp$7()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideForceResizeApp$6()Z
+PLcom/android/server/wm/LetterboxUiController;->lambda$shouldOverrideMinAspectRatio$5()Z
+HPLcom/android/server/wm/LetterboxUiController;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/LetterboxUiController;->overrideOrientationIfNeeded(I)I
+PLcom/android/server/wm/LetterboxUiController;->readComponentProperty(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/util/function/BooleanSupplier;Ljava/lang/String;)Ljava/lang/Boolean;
+HPLcom/android/server/wm/LetterboxUiController;->requiresRoundedCorners(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldApplyUserFullscreenOverride()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldApplyUserMinAspectRatioOverride()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldEnableUserAspectRatioSettings()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldEnableWithOptInOverrideAndOptOutProperty(Ljava/util/function/BooleanSupplier;ZLjava/lang/Boolean;)Z
+PLcom/android/server/wm/LetterboxUiController;->shouldEnableWithOverrideAndProperty(Ljava/util/function/BooleanSupplier;ZLjava/lang/Boolean;)Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldNotLayoutLetterbox(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideForceNonResizeApp()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideForceResizeApp()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldOverrideMinAspectRatio()Z
+PLcom/android/server/wm/LetterboxUiController;->shouldSendFakeFocus()Z
+HPLcom/android/server/wm/LetterboxUiController;->shouldShowLetterboxUi(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/LetterboxUiController;->updateInheritedLetterbox()V
+HPLcom/android/server/wm/LetterboxUiController;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/LetterboxUiController;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/LetterboxUiController;->updateRoundedCornersIfNeeded(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/LetterboxUiController;->updateWallpaperForLetterbox(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/LocalAnimationAdapter$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/LocalAnimationAdapter;->$r8$lambda$UaYzKKcZYGPfDd4JouVmDEKELq0(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/LocalAnimationAdapter;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/LocalAnimationAdapter;->lambda$startAnimation$0(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/LocalAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HSPLcom/android/server/wm/LockTaskController$LockTaskToken;-><init>()V
+HSPLcom/android/server/wm/LockTaskController$LockTaskToken;-><init>(Lcom/android/server/wm/LockTaskController$LockTaskToken-IA;)V
+HSPLcom/android/server/wm/LockTaskController;-><clinit>()V
+HSPLcom/android/server/wm/LockTaskController;-><init>(Landroid/content/Context;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Handler;Lcom/android/server/wm/TaskChangeNotificationController;)V
+PLcom/android/server/wm/LockTaskController;->getLockTaskAuth(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/LockTaskController;->getLockTaskFeaturesForUser(I)I
+PLcom/android/server/wm/LockTaskController;->getRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/LockTaskController;->isActivityAllowed(ILjava/lang/String;I)Z
+PLcom/android/server/wm/LockTaskController;->isKeyguardAllowed(I)Z
+PLcom/android/server/wm/LockTaskController;->isLockTaskModeViolationInternal(Lcom/android/server/wm/WindowContainer;ILandroid/content/Intent;I)Z
+PLcom/android/server/wm/LockTaskController;->isNewTaskLockTaskModeViolation(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/LockTaskController;->isPackageAllowlisted(ILjava/lang/String;)Z
+PLcom/android/server/wm/LockTaskController;->isTaskAuthAllowlisted(I)Z
+PLcom/android/server/wm/LockTaskController;->isWirelessEmergencyAlert(Landroid/content/Intent;)Z
+PLcom/android/server/wm/LockTaskController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/MirrorActiveUids;-><init>()V
+PLcom/android/server/wm/MirrorActiveUids;->getUidState(I)I
+HPLcom/android/server/wm/MirrorActiveUids;->hasNonAppVisibleWindow(I)Z
+PLcom/android/server/wm/MirrorActiveUids;->onNonAppSurfaceVisibilityChanged(IZ)V
+HPLcom/android/server/wm/MirrorActiveUids;->onUidActive(II)V
+PLcom/android/server/wm/MirrorActiveUids;->onUidInactive(I)V
+HPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V
+PLcom/android/server/wm/NonAppWindowAnimationAdapter;->shouldAttachNavBarToApp(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;I)Z
+PLcom/android/server/wm/NonAppWindowAnimationAdapter;->shouldStartNonAppWindowAnimationsForKeyguardExit(I)Z
+HSPLcom/android/server/wm/PackageConfigPersister;-><clinit>()V
+HSPLcom/android/server/wm/PackageConfigPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/PackageConfigPersister;->findRecord(Landroid/util/SparseArray;Ljava/lang/String;I)Lcom/android/server/wm/PackageConfigPersister$PackageConfigRecord;
+PLcom/android/server/wm/PackageConfigPersister;->getUserConfigsDir(I)Ljava/io/File;
+PLcom/android/server/wm/PackageConfigPersister;->loadUserPackages(I)V
+HPLcom/android/server/wm/PackageConfigPersister;->updateConfigIfNeeded(Lcom/android/server/wm/ConfigurationContainer;ILjava/lang/String;)V
+HSPLcom/android/server/wm/PendingRemoteAnimationRegistry;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Landroid/os/Handler;)V
+PLcom/android/server/wm/PendingRemoteAnimationRegistry;->overrideOptionsIfNeeded(Ljava/lang/String;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
+HSPLcom/android/server/wm/PersisterQueue$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;-><init>(Lcom/android/server/wm/PersisterQueue;Ljava/lang/String;)V
+HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;-><init>(Lcom/android/server/wm/PersisterQueue;Ljava/lang/String;Lcom/android/server/wm/PersisterQueue$LazyTaskWriterThread-IA;)V
+PLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;->run()V
+PLcom/android/server/wm/PersisterQueue;->-$$Nest$fgetmListeners(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
+PLcom/android/server/wm/PersisterQueue;->-$$Nest$fgetmWriteQueue(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
+PLcom/android/server/wm/PersisterQueue;->-$$Nest$mprocessNextItem(Lcom/android/server/wm/PersisterQueue;)V
+HSPLcom/android/server/wm/PersisterQueue;-><clinit>()V
+HSPLcom/android/server/wm/PersisterQueue;-><init>()V
+HSPLcom/android/server/wm/PersisterQueue;-><init>(JJ)V
+PLcom/android/server/wm/PersisterQueue;->addItem(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;Z)V
+HSPLcom/android/server/wm/PersisterQueue;->addListener(Lcom/android/server/wm/PersisterQueue$Listener;)V
+PLcom/android/server/wm/PersisterQueue;->findLastItem(Ljava/util/function/Predicate;Ljava/lang/Class;)Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
+PLcom/android/server/wm/PersisterQueue;->processNextItem()V
+PLcom/android/server/wm/PersisterQueue;->removeItems(Ljava/util/function/Predicate;Ljava/lang/Class;)V
+PLcom/android/server/wm/PersisterQueue;->startPersisting()V
+PLcom/android/server/wm/PersisterQueue;->yieldIfQueueTooDeep()V
+PLcom/android/server/wm/PhysicalDisplaySwitchTransitionLauncher;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/Context;Lcom/android/server/wm/TransitionController;)V
+PLcom/android/server/wm/PhysicalDisplaySwitchTransitionLauncher;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TransitionController;)V
+PLcom/android/server/wm/PinnedTaskController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/PinnedTaskController;)V
+PLcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedTaskController;)V
+PLcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedTaskController;Lcom/android/server/wm/PinnedTaskController$PinnedTaskListenerDeathHandler-IA;)V
+PLcom/android/server/wm/PinnedTaskController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/PinnedTaskController;->isFreezingTaskConfig(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/PinnedTaskController;->onActivityHidden(Landroid/content/ComponentName;)V
+PLcom/android/server/wm/PinnedTaskController;->onPostDisplayConfigurationChanged()V
+PLcom/android/server/wm/PinnedTaskController;->reloadResources()V
+PLcom/android/server/wm/PinnedTaskController;->setAdjustedForIme(ZI)V
+PLcom/android/server/wm/PointerEventDispatcher;-><init>(Landroid/view/InputChannel;)V
+PLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
+PLcom/android/server/wm/PossibleDisplayInfoMapper;-><init>(Landroid/hardware/display/DisplayManagerInternal;)V
+PLcom/android/server/wm/PossibleDisplayInfoMapper;->removePossibleDisplayInfos(I)V
+PLcom/android/server/wm/ProtoLogCache$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/ProtoLogCache;-><clinit>()V
+HPLcom/android/server/wm/ProtoLogCache;->update()V
+HSPLcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda0;-><init>()V
+HSPLcom/android/server/wm/RecentTasks$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/RecentTasks;)V
+HSPLcom/android/server/wm/RecentTasks$1;-><init>(Lcom/android/server/wm/RecentTasks;)V
+HSPLcom/android/server/wm/RecentTasks;-><clinit>()V
+HSPLcom/android/server/wm/RecentTasks;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/RecentTasks;->add(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RecentTasks;->cleanupLocked(I)V
+PLcom/android/server/wm/RecentTasks;->containsTaskId(II)Z
+PLcom/android/server/wm/RecentTasks;->createRecentTaskInfo(Lcom/android/server/wm/Task;ZZ)Landroid/app/ActivityManager$RecentTaskInfo;
+PLcom/android/server/wm/RecentTasks;->findRemoveIndexForAddTask(Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/RecentTasks;->findRemoveIndexForTask(Lcom/android/server/wm/Task;Z)I
+PLcom/android/server/wm/RecentTasks;->getCurrentProfileIds()[I
+PLcom/android/server/wm/RecentTasks;->getInputListener()Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
+PLcom/android/server/wm/RecentTasks;->getPersistableTaskIds(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/RecentTasks;->getProfileIds(I)Ljava/util/Set;
+PLcom/android/server/wm/RecentTasks;->getRecentTasks(IIZII)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wm/RecentTasks;->getRecentTasksImpl(IIZII)Ljava/util/ArrayList;
+PLcom/android/server/wm/RecentTasks;->getRecentsComponentUid()I
+PLcom/android/server/wm/RecentTasks;->getTask(I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RecentTasks;->getTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/wm/RecentTasks;->getUserInfo(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/wm/RecentTasks;->hasCompatibleActivityTypeAndWindowingMode(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RecentTasks;->isActiveRecentTask(Lcom/android/server/wm/Task;Landroid/util/SparseBooleanArray;)Z
+HPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z
+PLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/Task;IIZ)Z
+PLcom/android/server/wm/RecentTasks;->isRecentsComponent(Landroid/content/ComponentName;I)Z
+PLcom/android/server/wm/RecentTasks;->isUserRunning(II)Z
+PLcom/android/server/wm/RecentTasks;->isVisibleRecentTask(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/RecentTasks;->loadParametersFromResources(Landroid/content/res/Resources;)V
+PLcom/android/server/wm/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V
+PLcom/android/server/wm/RecentTasks;->loadRecentsComponent(Landroid/content/res/Resources;)V
+PLcom/android/server/wm/RecentTasks;->loadUserRecentsLocked(I)V
+PLcom/android/server/wm/RecentTasks;->notifyTaskAdded(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/RecentTasks;->notifyTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
+PLcom/android/server/wm/RecentTasks;->onActivityIdle(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RecentTasks;->onSystemReadyLocked()V
+PLcom/android/server/wm/RecentTasks;->processNextAffiliateChainLocked(I)I
+HSPLcom/android/server/wm/RecentTasks;->registerCallback(Lcom/android/server/wm/RecentTasks$Callbacks;)V
+PLcom/android/server/wm/RecentTasks;->removeForAddTask(Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/RecentTasks;->syncPersistentTaskIdsLocked()V
+PLcom/android/server/wm/RecentTasks;->trimInactiveRecentTasks()V
+PLcom/android/server/wm/RecentTasks;->usersWithRecentsLoadedLocked()[I
+PLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;-><init>()V
+HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->refreshRateEquals(F)Z
+HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->reset()Z
+HPLcom/android/server/wm/RefreshRatePolicy$FrameRateVote;->update(FII)Z
+PLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;-><init>(Lcom/android/server/wm/RefreshRatePolicy;)V
+HPLcom/android/server/wm/RefreshRatePolicy$PackageRefreshRate;->get(Ljava/lang/String;)Landroid/view/SurfaceControl$RefreshRateRange;
+PLcom/android/server/wm/RefreshRatePolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/DisplayInfo;Lcom/android/server/wm/HighRefreshRateDenylist;)V
+HPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I
+PLcom/android/server/wm/RefreshRatePolicy;->findLowRefreshRateMode(Landroid/view/DisplayInfo;Landroid/view/Display$Mode;)Landroid/view/Display$Mode;
+HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMaxRefreshRate(Lcom/android/server/wm/WindowState;)F
+HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredMinRefreshRate(Lcom/android/server/wm/WindowState;)F
+HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I
+HPLcom/android/server/wm/RefreshRatePolicy;->updateFrameRateVote(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/RemoteDisplayChangeController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/RemoteDisplayChangeController;)V
+PLcom/android/server/wm/RemoteDisplayChangeController;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RemoteDisplayChangeController;->isWaitingForRemoteDisplayChange()Z
+PLcom/android/server/wm/ResetTargetTaskHelper;-><init>()V
+PLcom/android/server/wm/RootDisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootDisplayArea;->findAreaForWindowTypeInLayer(IZZ)Lcom/android/server/wm/DisplayArea$Tokens;
+PLcom/android/server/wm/RootDisplayArea;->getRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
+PLcom/android/server/wm/RootDisplayArea;->isOrientationDifferentFromDisplay()Z
+PLcom/android/server/wm/RootDisplayArea;->onHierarchyBuilt(Ljava/util/ArrayList;[Lcom/android/server/wm/DisplayArea$Tokens;Ljava/util/Map;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda13;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;-><init>(Lcom/android/server/wm/Task;[Z[I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda16;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda17;-><init>([ILandroid/app/ActivityTaskManager$RootTaskInfo;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda17;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;-><init>([Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda21;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda21;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;-><init>()V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda22;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;-><init>([Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda24;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda26;-><init>(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[I)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;-><init>()V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda28;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda29;-><init>(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda29;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda33;-><init>(Lcom/android/server/wm/RootWindowContainer;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda33;->run()V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda34;-><init>(I[Z)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda34;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda37;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda38;-><init>(Lcom/android/server/wm/RootWindowContainer;ILjava/lang/String;ZZ)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda38;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;-><init>(IZLjava/util/ArrayList;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda39;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda43;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda49;-><init>(Lcom/android/server/policy/PermissionPolicyInternal;)V
+HPLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda49;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;-><init>(Landroid/util/ArrayMap;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda6;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/RootWindowContainer$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RootWindowContainer$1;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer$AttachApplicationHelper-IA;)V
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->accept(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->process(Lcom/android/server/wm/WindowProcessController;)Z
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->reset()V
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RootWindowContainer$AttachApplicationHelper;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;-><init>()V
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->init(ILjava/lang/String;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->process(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->test(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->process(Ljava/lang/String;Ljava/util/Set;ZZIZ)Z
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->reset(Ljava/lang/String;Ljava/util/Set;ZZIZ)V
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/RootWindowContainer$MyHandler;-><init>(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V
+HPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;-><init>(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable-IA;)V
+PLcom/android/server/wm/RootWindowContainer$RankTaskLayersRunnable;->run()V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1CWL2ckOwG2YY7rgrO99GUxebQw(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1PKw-jY8iC_kT9skcjP0rNvpTMU(Lcom/android/server/wm/RootWindowContainer;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$1y84R2j6aqQu7hhZU6_qdTFvwxk(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$DFaa7QLApF8rlf4uiy_4K0Hxf2Y(Lcom/android/server/wm/RootWindowContainer;ILjava/lang/String;ZZLcom/android/server/wm/TaskDisplayArea;Ljava/lang/Boolean;)Ljava/lang/Boolean;
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$GiNtNK8RPrGEtQpM7eTz88NTYLY(I[ZLcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$IE3IrglzO8K3AUkc78Ck4Lwua94(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$OBluQOlE0gINhfaHzjBgNIe3b4E(IZLjava/util/ArrayList;Ljava/lang/String;ILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$R79sBJymzrWJ0ntJ8XhLsNaaEiM(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$ZWXgnb1KNcgfkLsPBW2m_vjAFaM(Lcom/android/server/wm/RootWindowContainer;I)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$c2GqB8Z3BGGFuy9XgFrzk3ZupFM(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$cnDv250HlSET-GBlf9zK0KW0JGk(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$dBbdl9I9IH9cWk0Fetqaz9kLR_E(Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$eFO9OL6w_8O86IbHYLCIHm_G2rw(Landroid/util/ArrayMap;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$hKjOcjgxM4mtNbo193fYs2CiS30(Lcom/android/server/wm/Task;[Z[ILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$mFYBP9S0waFMJPTAOjY-WDY8Efs(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[ILcom/android/server/wm/TaskFragment;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$pWnnVvVtAcnTwGFZvVBYLFjOP64([ILandroid/app/ActivityTaskManager$RootTaskInfo;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$sjhjsJnrwdp8YM512XyLr3LJaA0([ZLcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->$r8$lambda$w6CXK9g_LDMiMSu03H1dcm6ZUYs([ZLcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->-$$Nest$fgetmTaskLayersChanged(Lcom/android/server/wm/RootWindowContainer;)Z
+PLcom/android/server/wm/RootWindowContainer;->-$$Nest$fputmTaskLayersChanged(Lcom/android/server/wm/RootWindowContainer;Z)V
+HPLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/RootWindowContainer;->allPausedActivitiesComplete()Z
+HPLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesIdle()Z
+PLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesVisible()Z
+PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(II)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer;->applySleepTokens(Z)V
+HPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction()V
+HPLcom/android/server/wm/RootWindowContainer;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
+PLcom/android/server/wm/RootWindowContainer;->canLaunchOnDisplay(Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/RootWindowContainer;->canStartHomeOnDisplayArea(Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/TaskDisplayArea;Z)Z
+HPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V
+PLcom/android/server/wm/RootWindowContainer;->clearDisplayInfoCaches(I)V
+HPLcom/android/server/wm/RootWindowContainer;->clearFrameChangingWindows()V
+HPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
+PLcom/android/server/wm/RootWindowContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/ConfigurationContainer;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/RootWindowContainer;->dispatchConfigurationToChild(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible()V
+HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/RootWindowContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;IZ)Z
+PLcom/android/server/wm/RootWindowContainer;->executeAppTransitionForAllDisplay()V
+PLcom/android/server/wm/RootWindowContainer;->findTask(ILjava/lang/String;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->findTask(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->finishDisabledPackageActivities(Ljava/lang/String;Ljava/util/Set;ZZIZ)Z
+PLcom/android/server/wm/RootWindowContainer;->forAllDisplayPolicies(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/RootWindowContainer;->getAllRootTaskInfos(I)Ljava/util/ArrayList;
+PLcom/android/server/wm/RootWindowContainer;->getCurrentInputMethodWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/RootWindowContainer;->getDefaultDisplay()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->getDefaultTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->getDisplayRotationCoordinator()Lcom/android/server/wm/DisplayRotationCoordinator;
+PLcom/android/server/wm/RootWindowContainer;->getDumpActivities(Ljava/lang/String;ZZI)Ljava/util/ArrayList;
+PLcom/android/server/wm/RootWindowContainer;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer;->getRootTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityTaskManager$RootTaskInfo;
+PLcom/android/server/wm/RootWindowContainer;->getRunningTasks(ILjava/util/List;IILandroid/util/ArraySet;I)V
+HPLcom/android/server/wm/RootWindowContainer;->getTaskToShowPermissionDialogOn(Ljava/lang/String;I)I
+HPLcom/android/server/wm/RootWindowContainer;->getTopDisplayFocusedRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootWindowContainer;->getTopFocusedDisplayContent()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z
+HPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V
+PLcom/android/server/wm/RootWindowContainer;->hasAwakeDisplay()Z
+HPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z
+PLcom/android/server/wm/RootWindowContainer;->hasVisibleWindowAboveButDoesNotOwnNotificationShade(I)Z
+PLcom/android/server/wm/RootWindowContainer;->invalidateTaskLayers()V
+PLcom/android/server/wm/RootWindowContainer;->isAttached()Z
+HPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z
+PLcom/android/server/wm/RootWindowContainer;->isOnTop()Z
+PLcom/android/server/wm/RootWindowContainer;->isTopDisplayFocusedRootTask(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$allPausedActivitiesComplete$38([ZLcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$allResumedActivitiesVisible$37([ZLcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$findTask$15(Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/TaskDisplayArea;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->lambda$getAllRootTaskInfos$24(Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$getDumpActivities$44(IZLjava/util/ArrayList;Ljava/lang/String;ILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$getRootTaskInfo$21(Lcom/android/server/wm/Task;[Z[ILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$getRootTaskInfo$22([ILandroid/app/ActivityTaskManager$RootTaskInfo;Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$getTaskToShowPermissionDialogOn$42(Lcom/android/server/policy/PermissionPolicyInternal;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RootWindowContainer;->lambda$getTaskToShowPermissionDialogOn$43(Lcom/android/server/policy/PermissionPolicyInternal;ILjava/lang/String;[ILcom/android/server/wm/TaskFragment;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$hasVisibleWindowAboveButDoesNotOwnNotificationShade$33(I[ZLcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$onDisplayChanged$25(I)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$7(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$rankTaskLayers$28(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$rankTaskLayers$29(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$resumeFocusedTasksTopActivities$17(Lcom/android/server/wm/Task;[ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$startHomeOnDisplay$11(ILjava/lang/String;ZZLcom/android/server/wm/TaskDisplayArea;Ljava/lang/Boolean;)Ljava/lang/Boolean;
+PLcom/android/server/wm/RootWindowContainer;->lambda$startHomeOnEmptyDisplays$10(Ljava/lang/String;Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$updateDisplayImePolicyCache$26(Landroid/util/ArrayMap;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/RootWindowContainer;->onDisplayChanged(I)V
+PLcom/android/server/wm/RootWindowContainer;->onDisplayManagerReceivedDeviceState(I)V
+PLcom/android/server/wm/RootWindowContainer;->onSettingsRetrieved()V
+HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement()V
+HPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace()V
+PLcom/android/server/wm/RootWindowContainer;->rankTaskLayers()V
+PLcom/android/server/wm/RootWindowContainer;->resolveActivityType(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/RootWindowContainer;->resolveHomeActivity(ILandroid/content/Intent;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities()Z
+PLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/wm/RootWindowContainer;->resumeFocusedTasksTopActivities(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
+PLcom/android/server/wm/RootWindowContainer;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/RootWindowContainer;->shouldPlacePrimaryHomeOnDisplay(I)Z
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnAllDisplays(ILjava/lang/String;)Z
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;I)Z
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnEmptyDisplays(Ljava/lang/String;)V
+PLcom/android/server/wm/RootWindowContainer;->startHomeOnTaskDisplayArea(ILjava/lang/String;Lcom/android/server/wm/TaskDisplayArea;ZZ)Z
+PLcom/android/server/wm/RootWindowContainer;->startPowerModeLaunchIfNeeded(ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->updateDisplayImePolicyCache()V
+HPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z
+PLcom/android/server/wm/RootWindowContainer;->updateUIDsPresentOnDisplay()V
+PLcom/android/server/wm/RootWindowContainer;->updateUserRootTask(ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RotationWatcherController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/RunningTasks$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/RunningTasks;)V
+PLcom/android/server/wm/RunningTasks$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RunningTasks;->$r8$lambda$MfBca7mzpEqQjGaOD89UUs0nLyk(Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/RunningTasks;-><init>()V
+PLcom/android/server/wm/RunningTasks;->accept(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/RunningTasks;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;J)Landroid/app/ActivityManager$RunningTaskInfo;
+HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;ILcom/android/server/wm/RecentTasks;Lcom/android/server/wm/WindowContainer;ILandroid/util/ArraySet;)V
+PLcom/android/server/wm/RunningTasks;->lambda$getTasks$0(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RunningTasks;->processTaskInWindowContainer(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/SafeActivityOptions;->checkPermissions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/app/ActivityOptions;II)V
+PLcom/android/server/wm/SafeActivityOptions;->fromBundle(Landroid/os/Bundle;)Lcom/android/server/wm/SafeActivityOptions;
+PLcom/android/server/wm/SafeActivityOptions;->getLaunchTaskDisplayArea(Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/SafeActivityOptions;->getOptions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityTaskSupervisor;)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/SafeActivityOptions;->getOriginalOptions()Landroid/app/ActivityOptions;
+PLcom/android/server/wm/SafeActivityOptions;->isSystemOrSystemUI(II)Z
+PLcom/android/server/wm/SafeActivityOptions;->mergeActivityOptions(Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/SafeActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle;
+HPLcom/android/server/wm/SafeActivityOptions;->setCallerOptions(Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/SafeActivityOptions;->setCallingPidUidForRemoteAnimationAdapter(Landroid/app/ActivityOptions;II)V
+PLcom/android/server/wm/ScreenRecordingCallbackController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ScreenRecordingCallbackController;->onProcessActivityVisibilityChanged(IZ)V
+PLcom/android/server/wm/SensitiveContentPackages;-><init>()V
+PLcom/android/server/wm/Session$$ExternalSyntheticLambda3;-><init>(Z)V
+PLcom/android/server/wm/Session$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/Session;->$r8$lambda$71MlbzHo9XQfq1o5frufHv-e65Q(ZLcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;)V
+HPLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;II)V
+PLcom/android/server/wm/Session;->actionOnWallpaper(Landroid/os/IBinder;Ljava/util/function/BiConsumer;)V
+PLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
+PLcom/android/server/wm/Session;->addToDisplayAsUser(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
+PLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/Session;->grantInputChannel(ILandroid/view/SurfaceControl;Landroid/os/IBinder;Landroid/window/InputTransferToken;IIIILandroid/os/IBinder;Landroid/window/InputTransferToken;Ljava/lang/String;Landroid/view/InputChannel;)V
+PLcom/android/server/wm/Session;->hasWindow()Z
+PLcom/android/server/wm/Session;->isClientDead()Z
+PLcom/android/server/wm/Session;->lambda$setShouldZoomOutWallpaper$2(ZLcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/wm/Session;->onWindowAdded(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Session;->onWindowRemoved(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V
+HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/os/Bundle;)I
+PLcom/android/server/wm/Session;->relayoutAsync(Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIII)V
+PLcom/android/server/wm/Session;->remove(Landroid/os/IBinder;)V
+PLcom/android/server/wm/Session;->setHasOverlayUi(Z)V
+PLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
+PLcom/android/server/wm/Session;->setOnBackInvokedCallbackInfo(Landroid/view/IWindow;Landroid/window/OnBackInvokedCallbackInfo;)V
+PLcom/android/server/wm/Session;->setShouldZoomOutWallpaper(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/SmoothDimmer;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/SmoothDimmer;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/DimmerAnimationHelper$AnimationAdapterFactory;)V
+HPLcom/android/server/wm/SmoothDimmer;->getDimBounds()Landroid/graphics/Rect;
+HPLcom/android/server/wm/SmoothDimmer;->resetDimStates()V
+PLcom/android/server/wm/SnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;)V
+PLcom/android/server/wm/SnapshotCache;->clearRunningCache()V
+PLcom/android/server/wm/SnapshotCache;->getSnapshot(Ljava/lang/Integer;)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/SnapshotCache;->onIdRemoved(Ljava/lang/Integer;)V
+PLcom/android/server/wm/SnapshotCache;->removeRunningEntry(Ljava/lang/Integer;)V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;-><init>()V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->add(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->allOpensOptInOnBackInvoked()Z
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask$OpenCloseActivities;->recordSnapshot(Lcom/android/server/wm/ActivitySnapshotController;)V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask;-><init>()V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask;-><init>(Lcom/android/server/wm/SnapshotController$ActivitiesByTask-IA;)V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask;->put(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/SnapshotController$ActivitiesByTask;->recordSnapshot(Lcom/android/server/wm/ActivitySnapshotController;)V
+PLcom/android/server/wm/SnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/SnapshotController;->isTransitionClose(I)Z
+PLcom/android/server/wm/SnapshotController;->isTransitionOpen(I)Z
+PLcom/android/server/wm/SnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/SnapshotController;->onTransactionReady(ILjava/util/ArrayList;)V
+PLcom/android/server/wm/SnapshotController;->onTransitionFinish(ILjava/util/ArrayList;)V
+PLcom/android/server/wm/SnapshotController;->onTransitionStarting(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/SnapshotController;->setPause(Z)V
+PLcom/android/server/wm/SnapshotController;->systemReady()V
+PLcom/android/server/wm/SnapshotPersistQueue$1;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Ljava/lang/String;)V
+PLcom/android/server/wm/SnapshotPersistQueue$1;->run()V
+PLcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;->write()V
+PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;-><init>(Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;I)V
+PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->isReady(Lcom/android/server/pm/UserManagerInternal;)Z
+PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->onDequeuedLocked()V
+PLcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;->onQueuedLocked()V
+PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmLock(Lcom/android/server/wm/SnapshotPersistQueue;)Ljava/lang/Object;
+PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmPaused(Lcom/android/server/wm/SnapshotPersistQueue;)Z
+PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmUserManagerInternal(Lcom/android/server/wm/SnapshotPersistQueue;)Lcom/android/server/pm/UserManagerInternal;
+PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fgetmWriteQueue(Lcom/android/server/wm/SnapshotPersistQueue;)Ljava/util/ArrayDeque;
+PLcom/android/server/wm/SnapshotPersistQueue;->-$$Nest$fputmQueueIdling(Lcom/android/server/wm/SnapshotPersistQueue;Z)V
+PLcom/android/server/wm/SnapshotPersistQueue;-><init>()V
+PLcom/android/server/wm/SnapshotPersistQueue;->addToQueueInternal(Lcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;Z)V
+PLcom/android/server/wm/SnapshotPersistQueue;->createDeleteWriteQueueItem(IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)Lcom/android/server/wm/SnapshotPersistQueue$DeleteWriteQueueItem;
+PLcom/android/server/wm/SnapshotPersistQueue;->deleteSnapshot(IILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/SnapshotPersistQueue;->ensureStoreQueueDepthLocked()V
+PLcom/android/server/wm/SnapshotPersistQueue;->getLock()Ljava/lang/Object;
+PLcom/android/server/wm/SnapshotPersistQueue;->sendToQueueLocked(Lcom/android/server/wm/SnapshotPersistQueue$WriteQueueItem;)V
+PLcom/android/server/wm/SnapshotPersistQueue;->setPaused(Z)V
+PLcom/android/server/wm/SnapshotPersistQueue;->start()V
+PLcom/android/server/wm/SnapshotPersistQueue;->systemReady()V
+PLcom/android/server/wm/SplashScreenExceptionList$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SplashScreenExceptionList;)V
+PLcom/android/server/wm/SplashScreenExceptionList;-><clinit>()V
+PLcom/android/server/wm/SplashScreenExceptionList;-><init>(Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/SplashScreenExceptionList;->isException(Ljava/lang/String;ILjava/util/function/Supplier;)Z
+PLcom/android/server/wm/SplashScreenExceptionList;->parseDeviceConfigPackageList(Ljava/lang/String;)V
+PLcom/android/server/wm/SplashScreenExceptionList;->updateDeviceConfig(Ljava/lang/String;)V
+PLcom/android/server/wm/SplashScreenStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;II)V
+PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/StartingSurfaceController$StartingSurface;
+PLcom/android/server/wm/SplashScreenStartingData;->needRevealAnimation()Z
+PLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManagerService;I)V
+PLcom/android/server/wm/StartingData;->hasImeSurface()Z
+PLcom/android/server/wm/StartingSurfaceController$StartingSurface;-><init>(Lcom/android/server/wm/StartingSurfaceController;Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;)V
+PLcom/android/server/wm/StartingSurfaceController$StartingSurface;->remove(ZZ)V
+PLcom/android/server/wm/StartingSurfaceController;->-$$Nest$fgetmService(Lcom/android/server/wm/StartingSurfaceController;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/StartingSurfaceController;-><clinit>()V
+PLcom/android/server/wm/StartingSurfaceController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/StartingSurfaceController;->createSplashScreenStartingSurface(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/StartingSurfaceController$StartingSurface;
+PLcom/android/server/wm/StartingSurfaceController;->isExceptionApp(Ljava/lang/String;ILjava/util/function/Supplier;)Z
+PLcom/android/server/wm/StartingSurfaceController;->makeStartingWindowTypeParameter(ZZZZZZZZIZLjava/lang/String;I)I
+PLcom/android/server/wm/StartingSurfaceController;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ZZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda2;->makeAnimator()Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda5;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda5;->doFrame(J)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda6;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$$ExternalSyntheticLambda6;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$1;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationEnd(Landroid/animation/Animator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationStart(Landroid/animation/Animator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;->-$$Nest$fgetmCancelled(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)Z
+PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
+PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$ToSJy1KwSRMhh9jEX86pHrCMpsM(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$ZTJ0zv3TBWmm9N7PsMhXlrn1N_k(Lcom/android/server/wm/SurfaceAnimationRunner;J)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$qJwhWRhUrmZXvj8AiaQY-79qSPU(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$rSMLySCWRN8MY7ZdHCaQcDy2620(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->$r8$lambda$tBHqgETCQ96oQUzgbS-jgwe9EfU(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmAnimationHandler(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/AnimationHandler;
+PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmAnimationThreadHandler(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/os/Handler;
+PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmCancelLock(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
+PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmFrameTransaction(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/SurfaceAnimationRunner;->-$$Nest$fgetmLock(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
+PLcom/android/server/wm/SurfaceAnimationRunner;-><clinit>()V
+PLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Lcom/android/server/wm/SurfaceAnimationRunner$AnimatorFactory;Landroid/view/SurfaceControl$Transaction;Landroid/os/PowerManagerInternal;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Ljava/util/function/Supplier;Landroid/os/PowerManagerInternal;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->applyTransaction()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->applyTransformation(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/view/SurfaceControl$Transaction;J)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->continueStartingAnimations()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->deferStartingAnimations()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$0()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$1()Landroid/animation/ValueAnimator;
+HPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$startAnimationLocked$4(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->onAnimationLeashLost(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->requiresEdgeExtension(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;)Z
+PLcom/android/server/wm/SurfaceAnimationRunner;->scheduleApplyTransaction()V
+PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimation(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimationLocked(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->startAnimations(J)V
+PLcom/android/server/wm/SurfaceAnimationRunner;->startPendingAnimationsLocked()V
+HSPLcom/android/server/wm/SurfaceAnimationThread;-><init>()V
+HSPLcom/android/server/wm/SurfaceAnimationThread;->ensureThreadLocked()V
+HSPLcom/android/server/wm/SurfaceAnimationThread;->get()Lcom/android/server/wm/SurfaceAnimationThread;
+HSPLcom/android/server/wm/SurfaceAnimationThread;->getHandler()Landroid/os/Handler;
+HPLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda0;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/SurfaceAnimator$$ExternalSyntheticLambda1;->run()V
+PLcom/android/server/wm/SurfaceAnimator$Animatable;->onLeashAnimationStarting(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/SurfaceAnimator$Animatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+PLcom/android/server/wm/SurfaceAnimator;->$r8$lambda$A_SDCtBYtLcYDAAdc6Nygk1chE0(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/SurfaceAnimator;->$r8$lambda$jpWLmdZ8WD7VMOkNht1QSuwzXVM(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+HPLcom/android/server/wm/SurfaceAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/SurfaceAnimator;->animationTypeToString(I)Ljava/lang/String;
+PLcom/android/server/wm/SurfaceAnimator;->cancelAnimation()V
+HPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V
+HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIIIIZLjava/util/function/Supplier;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SurfaceAnimator;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
+PLcom/android/server/wm/SurfaceAnimator;->getAnimationType()I
+HPLcom/android/server/wm/SurfaceAnimator;->getFinishedCallback(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+HPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
+HPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
+PLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0(Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+PLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$1(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/SurfaceAnimator;->removeLeash(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$Animatable;Landroid/view/SurfaceControl;Z)Z
+HPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V
+HPLcom/android/server/wm/SurfaceAnimator;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/SurfaceAnimator;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
+HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceFreezer;)V
+HPLcom/android/server/wm/SurfaceFreezer;-><init>(Lcom/android/server/wm/SurfaceFreezer$Freezable;Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/SurfaceFreezer;->hasLeash()Z
+PLcom/android/server/wm/SurfaceFreezer;->takeLeashForAnimation()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SurfaceFreezer;->unfreeze(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/SurfaceFreezer;->unfreezeInner(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/SurfaceSyncGroupController;-><init>()V
+PLcom/android/server/wm/SynchedDeviceConfig$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SynchedDeviceConfig;)V
+PLcom/android/server/wm/SynchedDeviceConfig$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder-IA;)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;->addDeviceConfigEntry(Ljava/lang/String;ZZ)Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;->build()Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$fgetmDefaultValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
+HPLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$mgetValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$misBuildTimeFlagEnabled(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)Z
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->-$$Nest$mupdateValue(Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;Z)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;-><init>(Ljava/lang/String;ZZ)V
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;-><init>(Ljava/lang/String;ZZLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry-IA;)V
+HPLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->getValue()Z
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->isBuildTimeFlagEnabled()Z
+PLcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;->updateValue(Z)V
+PLcom/android/server/wm/SynchedDeviceConfig;->$r8$lambda$wnSiPqxpYWD7zDbmlb4cH3CKru0(Lcom/android/server/wm/SynchedDeviceConfig;Ljava/lang/String;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)V
+PLcom/android/server/wm/SynchedDeviceConfig;->-$$Nest$mstart(Lcom/android/server/wm/SynchedDeviceConfig;)Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SynchedDeviceConfig;->-$$Nest$mupdateFlags(Lcom/android/server/wm/SynchedDeviceConfig;)Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SynchedDeviceConfig;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/Map;)V
+PLcom/android/server/wm/SynchedDeviceConfig;-><init>(Ljava/lang/String;Ljava/util/concurrent/Executor;Ljava/util/Map;Lcom/android/server/wm/SynchedDeviceConfig-IA;)V
+PLcom/android/server/wm/SynchedDeviceConfig;->builder(Ljava/lang/String;Ljava/util/concurrent/Executor;)Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigBuilder;
+HPLcom/android/server/wm/SynchedDeviceConfig;->getFlagValue(Ljava/lang/String;)Z
+PLcom/android/server/wm/SynchedDeviceConfig;->isBuildTimeFlagEnabled(Ljava/lang/String;)Z
+PLcom/android/server/wm/SynchedDeviceConfig;->isDeviceConfigFlagEnabled(Ljava/lang/String;Z)Z
+PLcom/android/server/wm/SynchedDeviceConfig;->lambda$updateFlags$0(Ljava/lang/String;Lcom/android/server/wm/SynchedDeviceConfig$SynchedDeviceConfigEntry;)V
+PLcom/android/server/wm/SynchedDeviceConfig;->start()Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SynchedDeviceConfig;->updateFlags()Lcom/android/server/wm/SynchedDeviceConfig;
+PLcom/android/server/wm/SystemGesturesPointerEventListener$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/SystemGesturesPointerEventListener$1;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->$r8$lambda$ny76CjJQ3d_Eeus7bZqFDsxdevk(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->-$$Nest$fgetmContext(Lcom/android/server/wm/SystemGesturesPointerEventListener;)Landroid/content/Context;
+PLcom/android/server/wm/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->lambda$systemReady$0()V
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->onDisplayInfoChanged(Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->systemReady()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda12;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda13;-><init>()V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda13;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda18;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda19;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda19;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda23;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda23;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda25;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda26;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda26;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda27;-><init>([Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda27;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/Task$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda30;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda30;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda31;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda31;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda34;-><init>(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda34;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda38;-><init>([I)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda38;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda40;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda40;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda42;-><init>(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda42;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[I)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda9;-><init>()V
+PLcom/android/server/wm/Task$$ExternalSyntheticLambda9;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task$ActivityTaskHandler;-><init>(Lcom/android/server/wm/Task;Landroid/os/Looper;)V
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAffinity(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAffinityIntent(Lcom/android/server/wm/Task$Builder;Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetAutoRemoveRecents(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingFeatureId(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingPackage(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetCallingUid(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastDescription(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastSnapshotData(Lcom/android/server/wm/Task$Builder;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastTaskDescription(Lcom/android/server/wm/Task$Builder;Landroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetLastTimeMoved(Lcom/android/server/wm/Task$Builder;J)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetNeverRelinquishIdentity(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetNextAffiliateTaskId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetOrigActivity(Lcom/android/server/wm/Task$Builder;Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetPrevAffiliateTaskId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRealActivitySuspended(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetResizeMode(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRootAffinity(Lcom/android/server/wm/Task$Builder;Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetRootWasReset(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetSupportsPictureInPicture(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetTaskAffiliation(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetUserId(Lcom/android/server/wm/Task$Builder;I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetUserSetupComplete(Lcom/android/server/wm/Task$Builder;Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->-$$Nest$msetVoiceInteractor(Lcom/android/server/wm/Task$Builder;Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/Task$Builder;->build()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task$Builder;->buildInner()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task$Builder;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setActivityOptions(Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setActivityType(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setAffinity(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setAffinityIntent(Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setAutoRemoveRecents(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setCallingFeatureId(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setCallingUid(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setEffectiveUid(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setLastDescription(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setLastSnapshotData(Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setLastTaskDescription(Landroid/app/ActivityManager$TaskDescription;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setLastTimeMoved(J)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setLaunchFlags(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setMinHeight(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setMinWidth(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setNeverRelinquishIdentity(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setNextAffiliateTaskId(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setOnTop(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setOrigActivity(Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setParent(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setPrevAffiliateTaskId(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setRealActivity(Landroid/content/ComponentName;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setRealActivitySuspended(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setResizeMode(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setRootAffinity(Ljava/lang/String;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setRootWasReset(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setSourceTask(Lcom/android/server/wm/Task;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setSupportsPictureInPicture(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setTaskAffiliation(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setTaskId(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setUserId(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setUserSetupComplete(Z)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setVoiceInteractor(Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setVoiceSession(Landroid/service/voice/IVoiceInteractionSession;)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->setWindowingMode(I)Lcom/android/server/wm/Task$Builder;
+PLcom/android/server/wm/Task$Builder;->validateRootTask(Lcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task$FindRootHelper-IA;)V
+HPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task$FindRootHelper;->test(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task$FindRootHelper;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$16T_SxnYaCQXjj5Qiv_85QK8tNM([Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskFragment;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$4zsmVM6sEcyslE_Xq2B45vvi_PE(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ZLcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/Task;->$r8$lambda$5TiwEo-YMpMik2pDaOLatEjRPl8(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$5kdOuobKsweeXF6gUQF93WfbSkc(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$71YccE_AQP42Bwnq_wvEDeaMask(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z
+HPLcom/android/server/wm/Task;->$r8$lambda$DbhuUlekQ2cVQp1TiLmGb_W7C-g(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->$r8$lambda$Hr9sWL6lAgfuIPdEeR0dqxlQnL4(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[ILcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/Task;->$r8$lambda$MGdkroLlOek4EWRGZFVNRyZtNnY(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$RV6KjZIk2zFL0tBVbRRqDyUNDSM(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->$r8$lambda$Wnyj0mZCQymmNf74WH7X7NQELpQ(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$eRF5AQqEOlK-E-ZFx2bqmj1YY7o(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->$r8$lambda$mZnFDLY4z-d2CM7h_5X1sXJHhI8([ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->$r8$lambda$tVpkFMG2_bx-FznGmNjbpYswPyE(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/modules/utils/TypedXmlSerializer;)Z
+PLcom/android/server/wm/Task;->-$$Nest$fputmHasBeenVisible(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/Task;->-$$Nest$maddChild(Lcom/android/server/wm/Task;Lcom/android/server/wm/WindowContainer;IZ)V
+PLcom/android/server/wm/Task;-><clinit>()V
+HPLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;IIIILjava/lang/String;Ljava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLandroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;Landroid/app/ActivityManager$RecentTaskInfo$PersistedTaskSnapshotData;IIIILjava/lang/String;Ljava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLandroid/os/IBinder;ZZLcom/android/server/wm/Task-IA;)V
+PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+PLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/WindowContainer;IZ)V
+PLcom/android/server/wm/Task;->adjustBoundsForDisplayChangeIfNeeded(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/Task;->adjustForMinimalTaskDimensions(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Task;->canAffectSystemUiFlags()Z
+PLcom/android/server/wm/Task;->canBeOrganized()Z
+PLcom/android/server/wm/Task;->canReuseAsLeafTask()Z
+PLcom/android/server/wm/Task;->checkReadyForSleep()V
+HPLcom/android/server/wm/Task;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->clearRootProcess()V
+PLcom/android/server/wm/Task;->closeRecentsChain()V
+PLcom/android/server/wm/Task;->computeMinUserPosition(II)I
+HPLcom/android/server/wm/Task;->cropWindowsToRootTaskBounds()Z
+PLcom/android/server/wm/Task;->dispatchTaskInfoChangedIfNeeded(Z)V
+PLcom/android/server/wm/Task;->enableEnterPipOnTaskSwitch(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)V
+HPLcom/android/server/wm/Task;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/Task;->executeAppTransition(Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;)V
+PLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;Z)V
+HPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;ZLcom/android/server/wm/TaskDisplayArea;)V
+PLcom/android/server/wm/Task;->findEnterPipOnTaskSwitchCandidate(Lcom/android/server/wm/Task;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/Task;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/Task;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/Task;->fromWindowContainerToken(Landroid/window/WindowContainerToken;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->getAdjacentTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->getAdjustedChildPosition(Lcom/android/server/wm/WindowContainer;I)I
+PLcom/android/server/wm/Task;->getAnimatingActivityRegistry()Lcom/android/server/wm/AnimatingActivityRegistry;
+PLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;
+HPLcom/android/server/wm/Task;->getBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Task;->getDescendantTaskCount()I
+HPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Task;->getDisplayCutoutInsets()Landroid/graphics/Rect;
+PLcom/android/server/wm/Task;->getDisplayInfo()Landroid/view/DisplayInfo;
+PLcom/android/server/wm/Task;->getDumpActivitiesLocked(Ljava/lang/String;I)Ljava/util/ArrayList;
+PLcom/android/server/wm/Task;->getHasBeenVisible()Z
+PLcom/android/server/wm/Task;->getLaunchBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/Task;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/Task;->getOrganizedTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->getPictureInPictureParams(Lcom/android/server/wm/ActivityRecord;)Landroid/app/PictureInPictureParams;
+HPLcom/android/server/wm/Task;->getRelativePosition()Landroid/graphics/Point;
+PLcom/android/server/wm/Task;->getRootActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->getRootActivity(Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->getRootTaskId()I
+PLcom/android/server/wm/Task;->getStartingWindowInfo(Lcom/android/server/wm/ActivityRecord;)Landroid/window/StartingWindowInfo;
+PLcom/android/server/wm/Task;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription;
+PLcom/android/server/wm/Task;->getTaskInfo()Landroid/app/ActivityManager$RunningTaskInfo;
+PLcom/android/server/wm/Task;->getTopFullscreenActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getTopLeafTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->getTopPausingActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->handlesOrientationChangeFromDescendant(I)Z
+HPLcom/android/server/wm/Task;->hasVisibleChildren()Z
+PLcom/android/server/wm/Task;->isAlwaysOnTop()Z
+PLcom/android/server/wm/Task;->isCompatible(II)Z
+PLcom/android/server/wm/Task;->isDragResizing()Z
+HPLcom/android/server/wm/Task;->isFocused()Z
+PLcom/android/server/wm/Task;->isForceHiddenForPinnedTask()Z
+PLcom/android/server/wm/Task;->isInTask(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->isLeafTask()Z
+HPLcom/android/server/wm/Task;->isOrganized()Z
+HPLcom/android/server/wm/Task;->isResizeable()Z
+HPLcom/android/server/wm/Task;->isResizeable(Z)Z
+HPLcom/android/server/wm/Task;->isRootTask()Z
+PLcom/android/server/wm/Task;->isTaskId(I)Z
+PLcom/android/server/wm/Task;->isTopRootTaskInDisplayArea()Z
+PLcom/android/server/wm/Task;->isTopRunningNonDelayed(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->lambda$ensureActivitiesVisible$19(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->lambda$findEnterPipOnTaskSwitchCandidate$22([Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskFragment;)Z
+PLcom/android/server/wm/Task;->lambda$getDescendantTaskCount$5([ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->lambda$getDumpActivitiesLocked$29(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$getTopFullscreenActivity$9(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$getTopVisibleActivity$10(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$pauseActivityIfNeeded$0(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;[ILcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/Task;->lambda$resumeTopActivityInnerLocked$20(Lcom/android/server/wm/TaskFragment;[ZLcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ZLcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/Task;->lambda$startActivityLocked$21(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$topStartingWindow$1(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/Task;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/Task;->minimalResumeActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->moveToFront(Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->moveToFront(Ljava/lang/String;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->notifyActivityDrawnLocked(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->onAppFocusChanged(Z)V
+PLcom/android/server/wm/Task;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Task;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/Task;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/Task;->onConfigurationChangedInner(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/Task;->onDescendantActivityAdded(ZILcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/Task;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/Task;->pauseActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/Task;->positionChildAtTop(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/Task;->prepareSurfaces()V
+PLcom/android/server/wm/Task;->removeLaunchTickMessages()V
+PLcom/android/server/wm/Task;->removedFromRecents()V
+HPLcom/android/server/wm/Task;->resolveLeafTaskOnlyOverrideConfigs(Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Task;->restoreFromXml(Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/server/wm/ActivityTaskSupervisor;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
+PLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/wm/Task;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
+PLcom/android/server/wm/Task;->returnsToHomeRootTask()Z
+PLcom/android/server/wm/Task;->reuseAsLeafTask(Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->reuseOrCreateTask(Landroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ZLcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->saveActivityToXml(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/modules/utils/TypedXmlSerializer;)Z
+PLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded()V
+PLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/Task;->saveToXml(Lcom/android/modules/utils/TypedXmlSerializer;)V
+PLcom/android/server/wm/Task;->sendTaskAppeared()V
+PLcom/android/server/wm/Task;->sendTaskFragmentParentInfoChangedIfNeeded()V
+PLcom/android/server/wm/Task;->sendTaskVanished(Landroid/window/ITaskOrganizer;)V
+PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;)I
+PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)I
+PLcom/android/server/wm/Task;->setBoundsUnchecked(Landroid/graphics/Rect;)I
+PLcom/android/server/wm/Task;->setDeferTaskAppear(Z)V
+PLcom/android/server/wm/Task;->setHasBeenVisible(Z)V
+PLcom/android/server/wm/Task;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
+HPLcom/android/server/wm/Task;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/Task;->setIntent(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->setIntent(Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/Task;->setLastNonFullscreenBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Task;->setLockTaskAuth(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/Task;->setNextAffiliate(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->setPrevAffiliate(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/Task;->setRootProcess(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/Task;->setSurfaceControl(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+HPLcom/android/server/wm/Task;->setTaskDescriptionFromActivityAboveRoot(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z
+PLcom/android/server/wm/Task;->setTaskOrganizer(Landroid/window/ITaskOrganizer;)Z
+PLcom/android/server/wm/Task;->setTaskOrganizer(Landroid/window/ITaskOrganizer;Z)Z
+HPLcom/android/server/wm/Task;->shouldIgnoreInput()Z
+HPLcom/android/server/wm/Task;->shouldSleepActivities()Z
+PLcom/android/server/wm/Task;->shouldStartChangeTransition(ILandroid/graphics/Rect;)Z
+PLcom/android/server/wm/Task;->showForAllUsers()Z
+PLcom/android/server/wm/Task;->showSurfaceOnCreation()Z
+PLcom/android/server/wm/Task;->showToCurrentUser()Z
+PLcom/android/server/wm/Task;->startActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;ZZLandroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->taskAppearedReady()Z
+PLcom/android/server/wm/Task;->toString()Ljava/lang/String;
+PLcom/android/server/wm/Task;->topActivityContainsStartingWindow()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->topRunningActivityLocked()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->topRunningNonDelayedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->topStartingWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/Task;->touchActiveTime()V
+PLcom/android/server/wm/Task;->updateEffectiveIntent()V
+PLcom/android/server/wm/Task;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/Task;->updateSurfaceBounds()V
+PLcom/android/server/wm/Task;->updateSurfaceSize(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Task;->updateTaskDescription()V
+PLcom/android/server/wm/Task;->updateTaskMovement(ZZI)V
+PLcom/android/server/wm/Task;->updateTaskOrganizerState()Z
+PLcom/android/server/wm/Task;->updateTaskOrganizerState(Z)Z
+PLcom/android/server/wm/Task;->warnForNonLeafTask(Ljava/lang/String;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda0;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda10;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda11;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda12;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda13;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda14;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda15;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda16;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda17;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda18;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda19;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda1;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda20;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda21;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda22;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda23;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda24;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda2;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda3;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda4;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda5;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda6;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda7;-><init>()V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;-><init>()V
+PLcom/android/server/wm/TaskChangeNotificationController$$ExternalSyntheticLambda9;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/wm/TaskChangeNotificationController;Landroid/os/Looper;)V
+HPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$4eLcfeE5EsykOVynmzu3fgpLtiE(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$JFI_F_hpE-kLZOK3Tx2KyHgWbCk(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$NW5zZAkpJyS6Ig7DBkUclrq7o6E(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$UIO9IjTxPd3zzG6wdFibHMsY7g4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$XnL-keZKaVwst4Q0DM1DZhp59bY(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$ah1JsV-rMqKWq8lKZtNZ807zrV4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->$r8$lambda$qoDZrtY2jOJf4Ahc6jYayChKO5Q(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskCreated(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskDescriptionChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskDisplayChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskFocusChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskListUpdated(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskMovedToFront(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$fgetmNotifyTaskStackChanged(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->-$$Nest$mforAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;Landroid/os/Handler;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$17(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$18(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$20(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$3(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDescriptionChanged(Landroid/app/TaskInfo;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDisplayChanged(II)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskFocusChanged(IZ)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskListUpdated()V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskMovedToFront(Landroid/app/TaskInfo;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskStackChanged()V
+PLcom/android/server/wm/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+HPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;-><init>(II)V
+HPLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TaskDisplayArea;I)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda2;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/ActivityRecord;[I)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/TaskDisplayArea$$ExternalSyntheticLambda8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$-yYfdy_akJG5D9nqec8kHkxQAJQ(Lcom/android/server/wm/TaskDisplayArea;ILcom/android/server/wm/TaskDisplayArea;Ljava/lang/Integer;)Ljava/lang/Integer;
+PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$6sIz9TvyA24gS3CFAzKz-0ley5A(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$UO54rDaQ1J_Js1LvzH8layvsInU(IILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$udumU_p2qVGWQKVeQAzWyl3Pn00(Lcom/android/server/wm/ActivityRecord;[ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->$r8$lambda$yqAwegtF8wTOFBeiZ1NP5uEzU-c(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;I)V
+PLcom/android/server/wm/TaskDisplayArea;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;IZZ)V
+PLcom/android/server/wm/TaskDisplayArea;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+PLcom/android/server/wm/TaskDisplayArea;->addChildTask(Lcom/android/server/wm/Task;I)V
+PLcom/android/server/wm/TaskDisplayArea;->addRootTaskReferenceIfNeeded(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/TaskDisplayArea;->adjustRootTaskLayer(Landroid/view/SurfaceControl$Transaction;Ljava/util/ArrayList;I)I
+HPLcom/android/server/wm/TaskDisplayArea;->allResumedActivitiesComplete()Z
+HPLcom/android/server/wm/TaskDisplayArea;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/TaskDisplayArea;->assignRootTaskOrdering(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/TaskDisplayArea;->canCreateRemoteAnimationTarget()Z
+PLcom/android/server/wm/TaskDisplayArea;->canHostHomeTask()Z
+HPLcom/android/server/wm/TaskDisplayArea;->canSpecifyOrientation(I)Z
+PLcom/android/server/wm/TaskDisplayArea;->createRootTask(IIZ)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->createRootTask(IIZLandroid/app/ActivityOptions;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/TaskDisplayArea;->findMaxPositionForRootTask(Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/TaskDisplayArea;->findMinPositionForRootTask(Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/TaskDisplayArea;->findPositionForRootTask(ILcom/android/server/wm/Task;Z)I
+PLcom/android/server/wm/TaskDisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/TaskDisplayArea;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/TaskDisplayArea;->getDisplayId()I
+PLcom/android/server/wm/TaskDisplayArea;->getFocusedActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskDisplayArea;->getFocusedRootTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
+PLcom/android/server/wm/TaskDisplayArea;->getLastFocusedRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getLaunchRootTask(IILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getLaunchRootTask(IILandroid/app/ActivityOptions;Lcom/android/server/wm/Task;ILcom/android/server/wm/Task;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getNextRootTaskId()I
+PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootHomeTask(Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootTask(IIZLcom/android/server/wm/Task;Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getOrCreateRootTask(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;Lcom/android/server/wm/LaunchParamsController$LaunchParams;IIZ)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getOrientation(I)I
+PLcom/android/server/wm/TaskDisplayArea;->getPriority(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/TaskDisplayArea;->getRootHomeTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->getRootTask(II)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/TaskDisplayArea;->getTopRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskDisplayArea;->getTopRootTaskInWindowingMode(I)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskDisplayArea;->isRemoved()Z
+PLcom/android/server/wm/TaskDisplayArea;->isRootTaskVisible(I)Z
+PLcom/android/server/wm/TaskDisplayArea;->isTopRootTask(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->isValidWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->isWindowingModeSupported(IZZZ)Z
+PLcom/android/server/wm/TaskDisplayArea;->lambda$ensureActivitiesVisible$8(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->lambda$getOrientation$3(ILcom/android/server/wm/TaskDisplayArea;Ljava/lang/Integer;)Ljava/lang/Integer;
+HPLcom/android/server/wm/TaskDisplayArea;->lambda$getRootTask$0(IILcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->lambda$getTopRootTask$1(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskDisplayArea;->lambda$pauseBackTasks$5(Lcom/android/server/wm/ActivityRecord;[ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/TaskDisplayArea;->onLeafTaskMoved(Lcom/android/server/wm/Task;ZZ)V
+PLcom/android/server/wm/TaskDisplayArea;->onRootTaskOrderChanged(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->onRootTaskWindowingModeChanged(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->pauseBackTasks(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskDisplayArea;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/TaskDisplayArea;->positionChildTaskAt(ILcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskDisplayArea;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;Z)Ljava/lang/Object;
+PLcom/android/server/wm/TaskDisplayArea;->removeRootTaskReferenceIfNeeded(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskDisplayArea;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
+PLcom/android/server/wm/TaskDisplayArea;->setWindowingMode(I)V
+PLcom/android/server/wm/TaskDisplayArea;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/TaskDisplayArea;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/TaskDisplayArea;->updateLastFocusedRootTask(Lcom/android/server/wm/Task;Ljava/lang/String;)V
+PLcom/android/server/wm/TaskDisplayArea;->validateWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/TaskFpsCallbackController;-><init>(Landroid/content/Context;)V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda2;-><init>()V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda3;-><init>()V
+HPLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/wm/TaskFragment$$ExternalSyntheticLambda5;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskFragment;->$r8$lambda$LfH9JXdblx4yrdmd8r4hGTdO21s(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskFragment;->$r8$lambda$cCOreq8AkspWCLOBq9Dd3lEozFQ(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->$r8$lambda$r5eGjEkD1wu6Ga_1VPus8wI2pTM(Lcom/android/server/wm/TaskFragment;)V
+PLcom/android/server/wm/TaskFragment;->$r8$lambda$um2HAmqSIS709S6Ch2gyOMoXFPA(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskFragment;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/TaskFragment;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+PLcom/android/server/wm/TaskFragment;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->calculateInsetFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/TaskFragment;->canBeResumed(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->canCreateRemoteAnimationTarget()Z
+PLcom/android/server/wm/TaskFragment;->canSpecifyOrientation()Z
+PLcom/android/server/wm/TaskFragment;->canStartChangeTransition()Z
+PLcom/android/server/wm/TaskFragment;->clearLastPausedActivity()V
+PLcom/android/server/wm/TaskFragment;->completePause(ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/TaskFragment;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/view/DisplayInfo;Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;)V
+HPLcom/android/server/wm/TaskFragment;->fillsParent()Z
+HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/TaskFragment;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/TaskFragment;->forAllTaskFragments(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/TaskFragment;->fromTaskFragmentToken(Landroid/os/IBinder;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->getActivityType()I
+HPLcom/android/server/wm/TaskFragment;->getAdjacentTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+HPLcom/android/server/wm/TaskFragment;->getDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/TaskFragment;->getDisplayId()I
+PLcom/android/server/wm/TaskFragment;->getFragmentToken()Landroid/os/IBinder;
+HPLcom/android/server/wm/TaskFragment;->getOrganizedTaskFragment()Lcom/android/server/wm/TaskFragment;
+PLcom/android/server/wm/TaskFragment;->getOrganizerProcessIfDifferent(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/TaskFragment;->getOrientation(I)I
+PLcom/android/server/wm/TaskFragment;->getPausingActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/TaskFragment;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->getRootTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskFragment;->getRootTaskFragment()Lcom/android/server/wm/TaskFragment;
+PLcom/android/server/wm/TaskFragment;->getTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskFragment;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->getTopNonFinishingActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I
+HPLcom/android/server/wm/TaskFragment;->handleCompleteDeferredRemoval()Z
+PLcom/android/server/wm/TaskFragment;->hasDirectChildActivities()Z
+HPLcom/android/server/wm/TaskFragment;->hasRunningActivity(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/TaskFragment;->intersectWithInsetsIfFits(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/TaskFragment;->isAttached()Z
+HPLcom/android/server/wm/TaskFragment;->isEmbedded()Z
+HPLcom/android/server/wm/TaskFragment;->isFocusableAndVisible()Z
+HPLcom/android/server/wm/TaskFragment;->isForceHidden()Z
+HPLcom/android/server/wm/TaskFragment;->isForceTranslucent()Z
+PLcom/android/server/wm/TaskFragment;->isLeafTaskFragment()Z
+PLcom/android/server/wm/TaskFragment;->isOrganizedTaskFragment()Z
+PLcom/android/server/wm/TaskFragment;->isReadyToTransit()Z
+PLcom/android/server/wm/TaskFragment;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+HPLcom/android/server/wm/TaskFragment;->isTopActivityFocusable()Z
+HPLcom/android/server/wm/TaskFragment;->isTopActivityLaunchedBehind()Z
+HPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskFragment;->isTranslucent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->isTranslucentForTransition()Z
+PLcom/android/server/wm/TaskFragment;->lambda$clearLastPausedActivity$8(Lcom/android/server/wm/TaskFragment;)V
+HPLcom/android/server/wm/TaskFragment;->lambda$getTopNonFinishingActivity$2(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->lambda$getTopNonFinishingActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->lambda$topRunningActivity$4(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskFragment;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$State;Ljava/lang/String;)V
+PLcom/android/server/wm/TaskFragment;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TaskFragment;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/TaskFragment;->prepareSurfaces()V
+PLcom/android/server/wm/TaskFragment;->providesOrientation()Z
+HPLcom/android/server/wm/TaskFragment;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/TaskFragment;->resumeTopActivity(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Z)Z
+PLcom/android/server/wm/TaskFragment;->schedulePauseActivity(Lcom/android/server/wm/ActivityRecord;ZZZLjava/lang/String;)V
+PLcom/android/server/wm/TaskFragment;->sendTaskFragmentInfoChanged()V
+PLcom/android/server/wm/TaskFragment;->setClosingChangingStartBoundsIfNeeded()Z
+PLcom/android/server/wm/TaskFragment;->setResumedActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+PLcom/android/server/wm/TaskFragment;->setSurfaceControl(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/TaskFragment;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskFragment;->shouldDeferRemoval()Z
+PLcom/android/server/wm/TaskFragment;->shouldReportOrientationUnspecified()Z
+PLcom/android/server/wm/TaskFragment;->shouldSleepOrShutDownActivities()Z
+PLcom/android/server/wm/TaskFragment;->startPausing(ZLcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/TaskFragment;->startPausing(ZZLcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/TaskFragment;->supportsMultiWindow()Z
+HPLcom/android/server/wm/TaskFragment;->supportsMultiWindowInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;)Z
+HPLcom/android/server/wm/TaskFragment;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/TaskFragment;->updateActivityVisibilities(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/TaskFragment;->updateOrganizedTaskFragmentSurface()V
+PLcom/android/server/wm/TaskFragment;->warnForNonLeafTaskFragment(Ljava/lang/String;)V
+HSPLcom/android/server/wm/TaskFragmentOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowOrganizerController;)V
+HPLcom/android/server/wm/TaskFragmentOrganizerController;->dispatchPendingEvents()V
+PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TaskLaunchParamsModifier;II)V
+PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda2;-><init>(Ljava/util/List;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->$r8$lambda$TjxGreTpw9xhmmPZAU-spdevuA4(Ljava/util/List;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->$r8$lambda$cOwEsqAlVxZJC8Bgaj_hUt2vkL8(Lcom/android/server/wm/TaskLaunchParamsModifier;IILcom/android/server/wm/TaskDisplayArea;)Z
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;-><init>(Lcom/android/server/wm/ActivityTaskSupervisor;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToAvoidConflict(Landroid/graphics/Rect;Ljava/util/List;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToAvoidConflictInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->adjustBoundsToFitInDisplayArea(Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->appendLog(Ljava/lang/String;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->boundsConflict(Ljava/util/List;Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/TaskLaunchParamsModifier;->calculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
+PLcom/android/server/wm/TaskLaunchParamsModifier;->canApplyFreeformWindowPolicy(Lcom/android/server/wm/TaskDisplayArea;I)Z
+PLcom/android/server/wm/TaskLaunchParamsModifier;->canCalculateBoundsForFullscreenTask(Lcom/android/server/wm/TaskDisplayArea;I)Z
+PLcom/android/server/wm/TaskLaunchParamsModifier;->canInheritWindowingModeFromSource(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/TaskDisplayArea;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TaskLaunchParamsModifier;->getFallbackDisplayAreaForActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStarter$Request;)Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/TaskLaunchParamsModifier;->getPreferredLaunchTaskDisplayArea(Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStarter$Request;)Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/TaskLaunchParamsModifier;->getTaskBounds(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/content/pm/ActivityInfo$WindowLayout;IZLandroid/graphics/Rect;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->initLogBuilder(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->lambda$adjustBoundsToAvoidConflictInDisplayArea$2(Ljava/util/List;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->lambda$calculate$0(IILcom/android/server/wm/TaskDisplayArea;)Z
+PLcom/android/server/wm/TaskLaunchParamsModifier;->onCalculate(Lcom/android/server/wm/Task;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityStarter$Request;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
+PLcom/android/server/wm/TaskLaunchParamsModifier;->outputLog()V
+PLcom/android/server/wm/TaskLaunchParamsModifier;->resolveOrientation(Lcom/android/server/wm/ActivityRecord;)I
+PLcom/android/server/wm/TaskLaunchParamsModifier;->resolveOrientation(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskDisplayArea;Landroid/graphics/Rect;)I
+PLcom/android/server/wm/TaskLaunchParamsModifier;->sizeMatches(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
+PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/TaskOrganizerController$$ExternalSyntheticLambda3;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/TaskOrganizerController$DeathRecipient;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;)V
+PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;-><init>(Lcom/android/server/wm/Task;I)V
+PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;-><init>(Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;I)V
+PLcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;->isLifecycleEvent()Z
+PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;-><init>()V
+PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/TaskOrganizerController$StartingWindowAnimationAdaptor;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;-><init>(Landroid/window/ITaskOrganizer;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->onTaskAppeared(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->onTaskInfoChanged(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$RunningTaskInfo;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;->prepareLeash(Lcom/android/server/wm/Task;Ljava/lang/String;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->-$$Nest$mdispatchTaskInfoChanged(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->-$$Nest$mgetPendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;Lcom/android/server/wm/Task;I)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;-><init>(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->addPendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
+HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchPendingEvents()V
+HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->dispatchTaskInfoChanged(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->getPendingLifecycleTaskEvent(Lcom/android/server/wm/Task;)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->getPendingTaskEvent(Lcom/android/server/wm/Task;I)Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->numPendingTaskEvents()I
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;->removePendingTaskEvent(Lcom/android/server/wm/TaskOrganizerController$PendingTaskEvent;)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$fgetmOrganizer(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerCallbacks;
+HPLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$fgetmPendingEventsQueue(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;)Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerPendingEventsQueue;
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->-$$Nest$maddTask(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;-><init>(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;I)V
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->addTask(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;->addTaskWithoutCallback(Lcom/android/server/wm/Task;Ljava/lang/String;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/TaskOrganizerController;->$r8$lambda$VSKvVVPI5NKYlAdukWH1TzgUuVQ(Lcom/android/server/wm/TaskOrganizerController;Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
+PLcom/android/server/wm/TaskOrganizerController;->$r8$lambda$ersYTYpQCW6sGFO8mYwHFWIJ7D0(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/TaskOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/TaskOrganizerController;->addStartingWindow(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;ILandroid/window/TaskSnapshot;)Z
+PLcom/android/server/wm/TaskOrganizerController;->applyStartingWindowAnimation(Lcom/android/server/wm/WindowState;)Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingEvents()V
+PLcom/android/server/wm/TaskOrganizerController;->getTaskOrganizer()Landroid/window/ITaskOrganizer;
+PLcom/android/server/wm/TaskOrganizerController;->lambda$registerTaskOrganizer$0(Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskOrganizerController;->lambda$registerTaskOrganizer$1(Landroid/window/ITaskOrganizer;ILjava/util/ArrayList;)V
+PLcom/android/server/wm/TaskOrganizerController;->onTaskAppeared(Landroid/window/ITaskOrganizer;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskOrganizerController;->onTaskInfoChanged(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskOrganizerController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/TaskOrganizerController;->registerTaskOrganizer(Landroid/window/ITaskOrganizer;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/wm/TaskOrganizerController;->removeStartingWindow(Lcom/android/server/wm/Task;Landroid/window/ITaskOrganizer;ZZ)V
+PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/TaskPersister$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskPersister$1;-><init>(Lcom/android/server/wm/TaskPersister;)V
+PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->-$$Nest$fgetmTask(Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->process()V
+PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->saveToXml(Lcom/android/server/wm/Task;)[B
+PLcom/android/server/wm/TaskPersister;->$r8$lambda$hpGvDr585n6hexBdLZakDSAsCLU(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Z
+PLcom/android/server/wm/TaskPersister;->-$$Nest$smgetUserTasksDir(I)Ljava/io/File;
+HSPLcom/android/server/wm/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/wm/ActivityTaskSupervisor;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/PersisterQueue;)V
+PLcom/android/server/wm/TaskPersister;->getUserImagesDir(I)Ljava/io/File;
+PLcom/android/server/wm/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File;
+PLcom/android/server/wm/TaskPersister;->getUserTasksDir(I)Ljava/io/File;
+PLcom/android/server/wm/TaskPersister;->lambda$wakeup$1(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Z
+PLcom/android/server/wm/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
+PLcom/android/server/wm/TaskPersister;->onPreProcessItem(Z)V
+PLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V
+PLcom/android/server/wm/TaskPersister;->removeThumbnails(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
+PLcom/android/server/wm/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskPersister;->wakeup(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
+PLcom/android/server/wm/TaskPersister;->writeTaskIdsFiles()V
+PLcom/android/server/wm/TaskPositioningController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppSnapshotLoader;)V
+PLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/TaskSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/SnapshotPersistQueue;)V
+PLcom/android/server/wm/TaskSnapshotController;->clearSnapshotCache()V
+PLcom/android/server/wm/TaskSnapshotController;->createPersistInfoProvider(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/BaseAppSnapshotPersister$DirectoryResolver;)Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;
+PLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskSnapshotController;->removeAndDeleteSnapshot(II)V
+PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[ILcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
+PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->isReady(Lcom/android/server/pm/UserManagerInternal;)Z
+PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
+PLcom/android/server/wm/TaskSnapshotPersister;->-$$Nest$fgetmPersistedTaskIdsSinceLastRemoveObsolete(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet;
+PLcom/android/server/wm/TaskSnapshotPersister;-><init>(Lcom/android/server/wm/SnapshotPersistQueue;Lcom/android/server/wm/BaseAppSnapshotPersister$PersistInfoProvider;)V
+PLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/TaskSnapshotPersister;->removeSnapshot(II)V
+PLcom/android/server/wm/TaskSystemBarsListenerController;-><init>()V
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/TransitionController$Logger;)V
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/Transition$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/Transition$ChangeInfo;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition$ChangeInfo;->getChangeFlags(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/Transition$ChangeInfo;->getTransitMode(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/Transition$ChangeInfo;->hasChanged()Z
+PLcom/android/server/wm/Transition$ReadyTracker;-><clinit>()V
+PLcom/android/server/wm/Transition$ReadyTracker;-><init>(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/Transition$ReadyTrackerOld;-><init>()V
+PLcom/android/server/wm/Transition$ReadyTrackerOld;-><init>(Lcom/android/server/wm/Transition$ReadyTrackerOld-IA;)V
+PLcom/android/server/wm/Transition$ReadyTrackerOld;->addGroup(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition$ReadyTrackerOld;->allReady()Z
+PLcom/android/server/wm/Transition$ReadyTrackerOld;->setReadyFrom(Lcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/Transition$Targets;-><init>()V
+PLcom/android/server/wm/Transition$Targets;-><init>(Lcom/android/server/wm/Transition$Targets-IA;)V
+PLcom/android/server/wm/Transition$Targets;->add(Lcom/android/server/wm/Transition$ChangeInfo;)V
+PLcom/android/server/wm/Transition$Targets;->getListSortedByZ()Ljava/util/ArrayList;
+PLcom/android/server/wm/Transition$Targets;->remove(I)V
+PLcom/android/server/wm/Transition$Token;-><init>(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/Transition;->$r8$lambda$ae2rOBsvLNpO5hISqyOOeQUaP48(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/Transition;->-$$Nest$smgetDisplayId(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/Transition;->-$$Nest$smisInputMethod(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->-$$Nest$smisReadyGroup(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->-$$Nest$smisTranslucent(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->-$$Nest$smisWallpaper(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;-><init>(IILcom/android/server/wm/TransitionController;Lcom/android/server/wm/BLASTSyncEngine;)V
+PLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/DisplayContent;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/Transition;->addOnTopTasks(Lcom/android/server/wm/Task;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/Transition;->applyDisplayChangeIfNeeded(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/Transition;->applyReady()V
+PLcom/android/server/wm/Transition;->asyncTraceBegin(Ljava/lang/String;I)V
+PLcom/android/server/wm/Transition;->asyncTraceEnd(I)V
+PLcom/android/server/wm/Transition;->buildCleanupTransaction(Landroid/view/SurfaceControl$Transaction;Landroid/window/TransitionInfo;)V
+PLcom/android/server/wm/Transition;->buildFinishTransaction(Landroid/view/SurfaceControl$Transaction;Landroid/window/TransitionInfo;)V
+PLcom/android/server/wm/Transition;->calculateTargets(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/Transition;->calculateTransitionInfo(IILjava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)Landroid/window/TransitionInfo;
+PLcom/android/server/wm/Transition;->calculateTransitionRoots(Landroid/window/TransitionInfo;Ljava/util/ArrayList;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Transition;->canPromote(Lcom/android/server/wm/Transition$ChangeInfo;Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)Z
+PLcom/android/server/wm/Transition;->checkEnterPipOnFinish(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Transition;->cleanUpInternal()V
+HPLcom/android/server/wm/Transition;->collect(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition;->collectExistenceChange(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition;->collectOrderChanges(Z)V
+PLcom/android/server/wm/Transition;->commitConfigAtEndActivities()V
+PLcom/android/server/wm/Transition;->commitVisibleActivities(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Transition;->commitVisibleWallpapers()V
+PLcom/android/server/wm/Transition;->containsChangeFor(Lcom/android/server/wm/WindowContainer;Ljava/util/ArrayList;)Z
+PLcom/android/server/wm/Transition;->findCommonAncestor(Ljava/util/ArrayList;Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/Transition;->finishTransition()V
+PLcom/android/server/wm/Transition;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/Transition;
+PLcom/android/server/wm/Transition;->getAnimatableParent(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/Transition;->getDisplayId(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/Transition;->getFinishTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/Transition;->getFlags()I
+PLcom/android/server/wm/Transition;->getLayoutParamsForAnimationsStyle(ILjava/util/ArrayList;)Landroid/view/WindowManager$LayoutParams;
+PLcom/android/server/wm/Transition;->getLeashSurface(Lcom/android/server/wm/WindowContainer;Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/Transition;->getOrigParentSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/Transition;->getPipActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Transition;->getStartTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/Transition;->getSyncId()I
+PLcom/android/server/wm/Transition;->getTaskRotationAnimation(Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/Transition;->getToken()Landroid/os/IBinder;
+PLcom/android/server/wm/Transition;->handleLegacyRecentsStartBehavior(Lcom/android/server/wm/DisplayContent;Landroid/window/TransitionInfo;)V
+PLcom/android/server/wm/Transition;->isAborted()Z
+PLcom/android/server/wm/Transition;->isCollecting()Z
+PLcom/android/server/wm/Transition;->isInTransientHide(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/Transition;->isInTransition(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->isInputMethod(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->isReadyGroup(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->isStarted()Z
+PLcom/android/server/wm/Transition;->isTransientLaunch(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Transition;->isTransientVisible(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/Transition;->isTranslucent(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->isWallpaper(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->lambda$addOnTopTasks$2(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/Transition;->legacyRestoreNavigationBarFromApp()V
+HPLcom/android/server/wm/Transition;->onTransactionReady(ILandroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Transition;->populateParentChanges(Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)V
+PLcom/android/server/wm/Transition;->recordDisplay(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/Transition;->recordTaskOrder(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition;->reportIfNotTop(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/Transition;->reportStartReasonsToLogger()V
+PLcom/android/server/wm/Transition;->resetSurfaceTransform(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Transition;->sendRemoteCallback(Landroid/os/IRemoteCallback;)V
+PLcom/android/server/wm/Transition;->setEndFixedRotationIfNeeded(Landroid/window/TransitionInfo$Change;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Transition;->setReady(Lcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/Transition;->shouldApplyOnDisplayThread()Z
+PLcom/android/server/wm/Transition;->shouldUsePerfHint(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/Transition;->shouldWallpaperBeVisible()Z
+PLcom/android/server/wm/Transition;->snapshotStartState(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/Transition;->start()V
+PLcom/android/server/wm/Transition;->startCollecting(J)V
+PLcom/android/server/wm/Transition;->tryPromote(Lcom/android/server/wm/Transition$Targets;Landroid/util/ArrayMap;)V
+PLcom/android/server/wm/Transition;->updateDisplayLayers(Lcom/android/server/wm/DisplayContent;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Transition;->updateTransientFlags(Lcom/android/server/wm/Transition$ChangeInfo;)V
+PLcom/android/server/wm/Transition;->validateKeyguardOcclusion()V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/TransitionController;)V
+PLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda3;->run()V
+HSPLcom/android/server/wm/TransitionController$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/TransitionController;)V
+HSPLcom/android/server/wm/TransitionController$Lock;-><init>(Lcom/android/server/wm/TransitionController;)V
+PLcom/android/server/wm/TransitionController$Lock;->doNotifyLocked()V
+PLcom/android/server/wm/TransitionController$Logger;-><init>()V
+PLcom/android/server/wm/TransitionController$Logger;->buildOnFinishLog()Ljava/lang/String;
+PLcom/android/server/wm/TransitionController$Logger;->buildOnSendLog()Ljava/lang/String;
+PLcom/android/server/wm/TransitionController$Logger;->logOnFinish()V
+PLcom/android/server/wm/TransitionController$Logger;->logOnSend()V
+PLcom/android/server/wm/TransitionController$Logger;->logOnSendAsync(Landroid/os/Handler;)V
+PLcom/android/server/wm/TransitionController$Logger;->run()V
+PLcom/android/server/wm/TransitionController$Logger;->toMsString(J)Ljava/lang/String;
+HSPLcom/android/server/wm/TransitionController$RemotePlayer;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/TransitionController$RemotePlayer;->clear()V
+HSPLcom/android/server/wm/TransitionController$TransitionMetricsReporter;-><init>()V
+PLcom/android/server/wm/TransitionController$TransitionMetricsReporter;->reportAnimationStart(Landroid/os/IBinder;J)V
+HSPLcom/android/server/wm/TransitionController;-><clinit>()V
+HSPLcom/android/server/wm/TransitionController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/TransitionController;->assignTrack(Lcom/android/server/wm/Transition;Landroid/window/TransitionInfo;)V
+HPLcom/android/server/wm/TransitionController;->canAssignLayers(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->collect(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/TransitionController;->collectExistenceChange(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/TransitionController;->collectForDisplayAreaChange(Lcom/android/server/wm/DisplayArea;)V
+PLcom/android/server/wm/TransitionController;->createAndStartCollecting(I)Lcom/android/server/wm/Transition;
+PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionFinished(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionPending()V
+PLcom/android/server/wm/TransitionController;->dispatchLegacyAppTransitionStarting(Landroid/window/TransitionInfo;J)V
+PLcom/android/server/wm/TransitionController;->finishTransition(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->getCollectingTransitionId()I
+PLcom/android/server/wm/TransitionController;->getCollectingTransitionType()I
+PLcom/android/server/wm/TransitionController;->getTransitionPlayer()Landroid/window/ITransitionPlayer;
+HPLcom/android/server/wm/TransitionController;->inCollectingTransition(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->inFinishingTransition(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/TransitionController;->inPlayingTransition(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/TransitionController;->inTransition()Z
+HPLcom/android/server/wm/TransitionController;->inTransition(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->isAnimating()Z
+HPLcom/android/server/wm/TransitionController;->isCollecting()Z
+PLcom/android/server/wm/TransitionController;->isCollecting(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/TransitionController;->isPlaying()Z
+HPLcom/android/server/wm/TransitionController;->isShellTransitionsEnabled()Z
+PLcom/android/server/wm/TransitionController;->isTransientCollect(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/TransitionController;->isTransientLaunch(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TransitionController;->isTransientVisible(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/TransitionController;->isTransitionOnDisplay(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/TransitionController;->moveToCollecting(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->moveToPlaying(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->onCommittedInvisibles()V
+PLcom/android/server/wm/TransitionController;->onTransitionPopulated(Lcom/android/server/wm/Transition;)V
+PLcom/android/server/wm/TransitionController;->recordTaskOrder(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/TransitionController;->registerLegacyListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/TransitionController;->registerTransitionPlayer(Landroid/window/ITransitionPlayer;Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/TransitionController;->requestStartTransition(Lcom/android/server/wm/Transition;Lcom/android/server/wm/Task;Landroid/window/RemoteTransition;Landroid/window/TransitionRequestInfo$DisplayChange;)Lcom/android/server/wm/Transition;
+PLcom/android/server/wm/TransitionController;->setReady(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/TransitionController;->setReady(Lcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/TransitionController;->setSyncEngine(Lcom/android/server/wm/BLASTSyncEngine;)V
+PLcom/android/server/wm/TransitionController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/TransitionController;->shouldKeepFocus(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/TransitionController;->tryStartCollectFromQueue()V
+PLcom/android/server/wm/TransitionController;->updateAnimatingState()V
+PLcom/android/server/wm/TransitionController;->updateRunningRemoteAnimation(Lcom/android/server/wm/Transition;Z)V
+PLcom/android/server/wm/TransitionController;->useFullReadyTracking()Z
+HPLcom/android/server/wm/TransitionController;->useShellTransitionsRotation()Z
+PLcom/android/server/wm/TransitionController;->validateStates()V
+PLcom/android/server/wm/TrustedPresentationListenerController$Listeners;-><init>(Lcom/android/server/wm/TrustedPresentationListenerController;)V
+PLcom/android/server/wm/TrustedPresentationListenerController$Listeners;-><init>(Lcom/android/server/wm/TrustedPresentationListenerController;Lcom/android/server/wm/TrustedPresentationListenerController$Listeners-IA;)V
+PLcom/android/server/wm/TrustedPresentationListenerController;-><init>()V
+PLcom/android/server/wm/UnknownAppVisibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z
+PLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/UnknownAppVisibilityController;->clear()V
+PLcom/android/server/wm/UnknownAppVisibilityController;->isVisibilityUnknown(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;-><init>(Lcom/android/server/wm/VisibleActivityProcessTracker;Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;->run()V
+HSPLcom/android/server/wm/VisibleActivityProcessTracker;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/VisibleActivityProcessTracker;->hasVisibleActivity(I)Z
+HPLcom/android/server/wm/VisibleActivityProcessTracker;->match(ILjava/util/function/Predicate;)Z
+PLcom/android/server/wm/VisibleActivityProcessTracker;->onActivityResumedWhileVisible(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/VisibleActivityProcessTracker;->onAllActivitiesInvisible(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/VisibleActivityProcessTracker;->onAnyActivityVisible(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/VisibleActivityProcessTracker;->removeProcess(Lcom/android/server/wm/WindowProcessController;)Lcom/android/server/wm/VisibleActivityProcessTracker$CpuTimeRecord;
+HSPLcom/android/server/wm/VrController$1;-><init>(Lcom/android/server/wm/VrController;)V
+HSPLcom/android/server/wm/VrController;-><clinit>()V
+HSPLcom/android/server/wm/VrController;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/wm/VrController;->isInterestingToSchedGroup()Z
+PLcom/android/server/wm/VrController;->onSystemReady()V
+PLcom/android/server/wm/WallpaperAnimationAdapter;->shouldStartWallpaperAnimation(Lcom/android/server/wm/DisplayContent;)Z
+PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WallpaperController;)V
+PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WallpaperController;)V
+PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WallpaperController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WallpaperController;)V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult$TopWallpaper;-><init>()V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult$TopWallpaper;->reset()V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>()V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult-IA;)V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->getTopWallpaper(Z)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->hasTopHideWhenLockedWallpaper()Z
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->hasTopShowWhenLockedWallpaper()Z
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setIsWallpaperTargetForLetterbox(Z)V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopShowWhenLockedWallpaper(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController;->$r8$lambda$P67TWw1sKQnPyyNd8sIWPsJ8xts(Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->$r8$lambda$weWYh946v1vMY5HxrZ0ItBnQ548(Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V
+HPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V
+PLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V
+HPLcom/android/server/wm/WallpaperController;->findWallpaperTarget()V
+PLcom/android/server/wm/WallpaperController;->getAllTopWallpapers()Ljava/util/List;
+PLcom/android/server/wm/WallpaperController;->getDisplayWidthOffset(ILandroid/graphics/Rect;Z)I
+PLcom/android/server/wm/WallpaperController;->getTokenForTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WallpaperWindowToken;
+PLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeededLegacy()V
+HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController;->isBackNavigationTarget(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->isRecentsTransitionTarget(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z
+HPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z
+PLcom/android/server/wm/WallpaperController;->lambda$new$0(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WallpaperController;->lambda$new$1(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->onDisplaySwitchFinished()V
+PLcom/android/server/wm/WallpaperController;->resetLargestDisplay(Landroid/view/Display;)V
+PLcom/android/server/wm/WallpaperController;->setShouldZoomOutWallpaper(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/WallpaperController;->setWallpaperCropUtils(Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;)V
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;Z)Z
+PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(ZZ)V
+PLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
+PLcom/android/server/wm/WallpaperVisibilityListeners;-><init>()V
+PLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
+PLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;ZLandroid/os/Bundle;)V
+PLcom/android/server/wm/WallpaperWindowToken;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
+PLcom/android/server/wm/WallpaperWindowToken;->canShowWhenLocked()Z
+HPLcom/android/server/wm/WallpaperWindowToken;->commitVisibility(Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->isVisible()Z
+PLcom/android/server/wm/WallpaperWindowToken;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/WallpaperWindowToken;->setCropHints(Landroid/util/SparseArray;)V
+PLcom/android/server/wm/WallpaperWindowToken;->setShowWhenLocked(Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->setVisibility(Z)V
+PLcom/android/server/wm/WallpaperWindowToken;->setVisible(Z)V
+PLcom/android/server/wm/WallpaperWindowToken;->setVisibleRequested(Z)Z
+PLcom/android/server/wm/WallpaperWindowToken;->showWallpaper()Z
+PLcom/android/server/wm/WallpaperWindowToken;->toString()Ljava/lang/String;
+PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(Z)V
+PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(Z)V
+PLcom/android/server/wm/WindowAnimationSpec$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/WindowAnimationSpec$$ExternalSyntheticLambda0;->get()Ljava/lang/Object;
+PLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>()V
+PLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>(Lcom/android/server/wm/WindowAnimationSpec$TmpValues-IA;)V
+PLcom/android/server/wm/WindowAnimationSpec;->$r8$lambda$O4wc4-tRjiP9nCMbsYU_dS1zsf4()Lcom/android/server/wm/WindowAnimationSpec$TmpValues;
+PLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;Landroid/graphics/Rect;ZIZF)V
+PLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;ZF)V
+HPLcom/android/server/wm/WindowAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
+PLcom/android/server/wm/WindowAnimationSpec;->asWindowAnimationSpec()Lcom/android/server/wm/WindowAnimationSpec;
+PLcom/android/server/wm/WindowAnimationSpec;->canSkipFirstFrame()Z
+PLcom/android/server/wm/WindowAnimationSpec;->getDuration()J
+PLcom/android/server/wm/WindowAnimationSpec;->hasExtension()Z
+PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowAnimator;)V
+PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowAnimator;)V
+HPLcom/android/server/wm/WindowAnimator$$ExternalSyntheticLambda1;->doFrame(J)V
+HPLcom/android/server/wm/WindowAnimator;->$r8$lambda$AS_wbK9i-bc6ocCFop7s9PnXP80(Lcom/android/server/wm/WindowAnimator;J)V
+PLcom/android/server/wm/WindowAnimator;->$r8$lambda$W57Ag5fzVY7lre5WxW-Fd7sotY8(Lcom/android/server/wm/WindowAnimator;)V
+PLcom/android/server/wm/WindowAnimator;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowAnimator;->addAfterPrepareSurfacesRunnable(Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/WindowAnimator;->animate(J)V
+HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
+HPLcom/android/server/wm/WindowAnimator;->executeAfterPrepareSurfacesRunnables()V
+PLcom/android/server/wm/WindowAnimator;->lambda$new$0()V
+HPLcom/android/server/wm/WindowAnimator;->lambda$new$1(J)V
+PLcom/android/server/wm/WindowAnimator;->ready()V
+HPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
+HPLcom/android/server/wm/WindowAnimator;->updateRunningExpensiveAnimationsLegacy()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda10;-><init>()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda10;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda12;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda12;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda13;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda13;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda14;-><init>()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda14;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda3;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;-><init>()V
+PLcom/android/server/wm/WindowContainer$$ExternalSyntheticLambda5;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper-IA;)V
+HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V
+PLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WindowContainer$RemoteToken;-><init>(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer$RemoteToken;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/WindowContainer$RemoteToken;
+PLcom/android/server/wm/WindowContainer$RemoteToken;->getContainer()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer$RemoteToken;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowContainer$RemoteToken;->toWindowContainerToken()Landroid/window/WindowContainerToken;
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$P9uMBneLM2Si1UANWoV5uQ4DSY8(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$U6J3FM52jcz63vJUvQI_Psg5VIc(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$WCX56CLXmDYVEESH4qAkWTB4kQ4(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$XL8lUmIHE8kzhQRm7NA0j1UqJ8E(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$ggkMLWSQVBUcbk3w7M1d4KAgVVA(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->$r8$lambda$mgkrQnQJbqksG7kwkWi3ZEb0Xsc(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowContainer;->-$$Nest$fgetmConsumerWrapperPool(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
+HPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+HPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V
+PLcom/android/server/wm/WindowContainer;->allSyncFinished()Z
+PLcom/android/server/wm/WindowContainer;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowContainer;->asDisplayArea()Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/WindowContainer;->asDisplayContent()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowContainer;->asTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/WindowContainer;->asTaskFragment()Lcom/android/server/wm/TaskFragment;
+PLcom/android/server/wm/WindowContainer;->asWallpaperToken()Lcom/android/server/wm/WallpaperWindowToken;
+PLcom/android/server/wm/WindowContainer;->asWindowState()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowContainer;->asWindowToken()Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/WindowContainer;->assignChildLayers()V
+HPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/WindowContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;IZ)V
+PLcom/android/server/wm/WindowContainer;->canCreateRemoteAnimationTarget()Z
+PLcom/android/server/wm/WindowContainer;->canStartChangeTransition()Z
+PLcom/android/server/wm/WindowContainer;->cancelAnimation()V
+HPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V
+PLcom/android/server/wm/WindowContainer;->commitPendingTransaction()V
+PLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I
+PLcom/android/server/wm/WindowContainer;->computeScreenLayout(III)I
+HPLcom/android/server/wm/WindowContainer;->createMergedSparseArray(Landroid/util/SparseArray;Landroid/util/SparseArray;)Landroid/util/SparseArray;
+HPLcom/android/server/wm/WindowContainer;->createSurfaceControl(Z)V
+PLcom/android/server/wm/WindowContainer;->doAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainer;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
+PLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/WindowContainer;->forAllDisplayAreas(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTaskFragments(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/WindowContainer;->forAllLeafTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllRootTasks(Ljava/util/function/Predicate;Z)Z
+PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/WindowContainer;->forAllTaskDisplayAreas(Ljava/util/function/Predicate;)Z
+PLcom/android/server/wm/WindowContainer;->forAllTaskFragments(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/WindowContainer;->forAllTaskFragments(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;)V
+PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;Z)V
+HPLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Predicate;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V
+PLcom/android/server/wm/WindowContainer;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getActivityBelow(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowContainer;->getAnimatingContainer()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getAnimatingContainer(II)Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getAnimationLeash()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainer;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainer;->getBottomMostActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
+HPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getChildCount()I
+PLcom/android/server/wm/WindowContainer;->getControllableInsetProvider()Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/WindowContainer;->getDisplayArea()Lcom/android/server/wm/DisplayArea;
+PLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/WindowContainer;->getInsetsSourceProviders()Landroid/util/SparseArray;
+PLcom/android/server/wm/WindowContainer;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;)Ljava/lang/Object;
+PLcom/android/server/wm/WindowContainer;->getItemFromTaskDisplayAreas(Ljava/util/function/Function;Z)Ljava/lang/Object;
+PLcom/android/server/wm/WindowContainer;->getLastLayer()I
+PLcom/android/server/wm/WindowContainer;->getLastOrientationSource()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getOrientation()I
+HPLcom/android/server/wm/WindowContainer;->getOrientation(I)I
+PLcom/android/server/wm/WindowContainer;->getOverrideOrientation()I
+HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/ConfigurationContainer;
+HPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex()I
+PLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/WindowContainer;->getRelativeDisplayRotation()I
+HPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Point;)V
+HPLcom/android/server/wm/WindowContainer;->getRelativePosition(Landroid/graphics/Rect;Landroid/graphics/Point;)V
+PLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation()I
+PLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation(ZI)I
+PLcom/android/server/wm/WindowContainer;->getRootDisplayArea()Lcom/android/server/wm/RootDisplayArea;
+HPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->getRootTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->getSession()Landroid/view/SurfaceSession;
+HPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainer;->getSurfaceHeight()I
+PLcom/android/server/wm/WindowContainer;->getSurfaceWidth()I
+PLcom/android/server/wm/WindowContainer;->getSyncGroup()Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;
+HPLcom/android/server/wm/WindowContainer;->getSyncTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowContainer;->getTaskDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+PLcom/android/server/wm/WindowContainer;->getTaskFragment(Ljava/util/function/Predicate;)Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;
+PLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowContainer;->getTopMostTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowContainer;->getTreeWeight()I
+HPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowContainer;->getWindowType()I
+HPLcom/android/server/wm/WindowContainer;->handleCompleteDeferredRemoval()Z
+PLcom/android/server/wm/WindowContainer;->handlesOrientationChangeFromDescendant(I)Z
+PLcom/android/server/wm/WindowContainer;->hasActivity()Z
+HPLcom/android/server/wm/WindowContainer;->hasChild(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/WindowContainer;->hasInsetsSourceProvider()Z
+HPLcom/android/server/wm/WindowContainer;->inTransition()Z
+HPLcom/android/server/wm/WindowContainer;->inTransitionSelfOrParent()Z
+PLcom/android/server/wm/WindowContainer;->isAnimating()Z
+HPLcom/android/server/wm/WindowContainer;->isAnimating(I)Z
+HPLcom/android/server/wm/WindowContainer;->isAnimating(II)Z
+PLcom/android/server/wm/WindowContainer;->isAppTransitioning()Z
+HPLcom/android/server/wm/WindowContainer;->isAttached()Z
+HPLcom/android/server/wm/WindowContainer;->isClosingWhenResizing()Z
+PLcom/android/server/wm/WindowContainer;->isDescendantOf(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/WindowContainer;->isExitAnimationRunningSelfOrChild()Z
+HPLcom/android/server/wm/WindowContainer;->isFocusable()Z
+HPLcom/android/server/wm/WindowContainer;->isOnTop()Z
+PLcom/android/server/wm/WindowContainer;->isOrganized()Z
+HPLcom/android/server/wm/WindowContainer;->isSelfAnimating(II)Z
+PLcom/android/server/wm/WindowContainer;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+HPLcom/android/server/wm/WindowContainer;->isVisible()Z
+HPLcom/android/server/wm/WindowContainer;->isVisibleRequested()Z
+PLcom/android/server/wm/WindowContainer;->isWaitingForTransitionStart()Z
+PLcom/android/server/wm/WindowContainer;->lambda$getActivityBelow$2(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getBottomMostActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getTopMostActivity$4(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getTopMostTask$12(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$isAppTransitioning$0(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$waitForAllWindowsDrawn$13(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowContainer;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/WindowContainer;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/WindowContainer;->makeSurface()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/WindowContainer;->needsZBoost()Z
+HPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
+PLcom/android/server/wm/WindowContainer;->okToAnimate()Z
+PLcom/android/server/wm/WindowContainer;->okToAnimate(ZZ)Z
+PLcom/android/server/wm/WindowContainer;->okToDisplay()Z
+PLcom/android/server/wm/WindowContainer;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainer;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/WindowContainer;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V
+HPLcom/android/server/wm/WindowContainer;->onChildAdded(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->onChildRemoved(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->onChildVisibilityRequested(Z)V
+HPLcom/android/server/wm/WindowContainer;->onChildVisibleRequestedChanged(Lcom/android/server/wm/WindowContainer;)Z
+HPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowContainer;->onDescendantOrientationChanged(Lcom/android/server/wm/WindowContainer;)Z
+PLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V
+HPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/WindowContainer;->onParentResize()V
+PLcom/android/server/wm/WindowContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowContainer;->onResize()V
+PLcom/android/server/wm/WindowContainer;->onSyncFinishedDrawing()Z
+HPLcom/android/server/wm/WindowContainer;->onSyncReparent(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->onSyncTransactionCommitted(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowContainer;->onUnfrozen()V
+PLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V
+PLcom/android/server/wm/WindowContainer;->prepareSync()Z
+PLcom/android/server/wm/WindowContainer;->processGetActivityWithBoundary(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[ZLcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowContainer;->providesOrientation()Z
+PLcom/android/server/wm/WindowContainer;->reassignLayer(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowContainer;->reduceOnAllTaskDisplayAreas(Ljava/util/function/BiFunction;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/WindowContainer;->registerWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;)V
+PLcom/android/server/wm/WindowContainer;->registerWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;Z)V
+PLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->removeImmediately()V
+PLcom/android/server/wm/WindowContainer;->resetSurfacePositionForAnimationLeash(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V
+PLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
+PLcom/android/server/wm/WindowContainer;->setCanScreenshot(Landroid/view/SurfaceControl$Transaction;Z)Z
+PLcom/android/server/wm/WindowContainer;->setControllableInsetProvider(Lcom/android/server/wm/InsetsSourceProvider;)V
+HPLcom/android/server/wm/WindowContainer;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
+HPLcom/android/server/wm/WindowContainer;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/WindowContainer;->setOrientation(I)V
+PLcom/android/server/wm/WindowContainer;->setOrientation(ILcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->setOverrideOrientation(I)V
+HPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContainer;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
+PLcom/android/server/wm/WindowContainer;->setSurfaceControl(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/WindowContainer;->setSyncGroup(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)V
+HPLcom/android/server/wm/WindowContainer;->setVisibleRequested(Z)Z
+PLcom/android/server/wm/WindowContainer;->showSurfaceOnCreation()Z
+HPLcom/android/server/wm/WindowContainer;->showWallpaper()Z
+PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZI)V
+PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainer;->syncNextBuffer()Z
+PLcom/android/server/wm/WindowContainer;->unregisterWindowContainerListener(Lcom/android/server/wm/WindowContainerListener;)V
+HPLcom/android/server/wm/WindowContainer;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WindowContainer;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->updateSurfacePositionNonOrganized()V
+PLcom/android/server/wm/WindowContainer;->waitForAllWindowsDrawn()V
+PLcom/android/server/wm/WindowContainer;->waitForSyncTransactionCommit(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/WindowContainerListener;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowContainerListener;->onVisibleRequestedChanged(Z)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;-><init>(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;-><init>(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient-IA;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl$DeathRecipient;->linkToDeath()V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmClientToken(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)Landroid/os/IBinder;
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmOptions(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)Landroid/os/Bundle;
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$fgetmType(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;)I
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$mregister(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Z)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->-$$Nest$mupdateContainer(Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;-><init>(Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;-><init>(Lcom/android/server/wm/WindowContextListenerController;Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;Lcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl-IA;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->clear()V
+HPLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->dispatchWindowContextInfoChange()V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->getUid()I
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->register()V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->register(Z)V
+PLcom/android/server/wm/WindowContextListenerController$WindowContextListenerImpl;->updateContainer(Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowContextListenerController;-><init>()V
+PLcom/android/server/wm/WindowContextListenerController;->assertCallerCanModifyListener(Landroid/os/IBinder;ZI)Z
+PLcom/android/server/wm/WindowContextListenerController;->getOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
+PLcom/android/server/wm/WindowContextListenerController;->getWindowType(Landroid/os/IBinder;)I
+PLcom/android/server/wm/WindowContextListenerController;->hasListener(Landroid/os/IBinder;)Z
+PLcom/android/server/wm/WindowContextListenerController;->registerWindowContainerListener(Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;)V
+PLcom/android/server/wm/WindowContextListenerController;->registerWindowContainerListener(Lcom/android/server/wm/WindowProcessController;Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;ILandroid/os/Bundle;Z)V
+PLcom/android/server/wm/WindowContextListenerController;->updateContainerForWindowContextListener(Landroid/os/IBinder;Lcom/android/server/wm/WindowContainer;)V
+PLcom/android/server/wm/WindowFrames;-><clinit>()V
+HPLcom/android/server/wm/WindowFrames;-><init>()V
+HPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z
+PLcom/android/server/wm/WindowFrames;->hasContentChanged()Z
+PLcom/android/server/wm/WindowFrames;->hasInsetsChanged()Z
+PLcom/android/server/wm/WindowFrames;->isFrameSizeChangeReported()Z
+PLcom/android/server/wm/WindowFrames;->onResizeHandled()V
+HPLcom/android/server/wm/WindowFrames;->parentFrameWasClippedByDisplayCutout()Z
+PLcom/android/server/wm/WindowFrames;->setContentChanged(Z)V
+PLcom/android/server/wm/WindowFrames;->setParentFrameWasClippedByDisplayCutout(Z)V
+HPLcom/android/server/wm/WindowFrames;->setReportResizeHints()Z
+PLcom/android/server/wm/WindowList;-><init>()V
+PLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object;
+HPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
+PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
+PLcom/android/server/wm/WindowManagerConstants$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Ljava/lang/Runnable;Landroid/provider/DeviceConfigInterface;)V
+PLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/provider/DeviceConfigInterface;)V
+PLcom/android/server/wm/WindowManagerConstants;->start(Ljava/util/concurrent/Executor;)V
+PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExcludedByPreQStickyImmersive()V
+PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLimitDp()V
+PLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLogDebounceMillis()V
+PLcom/android/server/wm/WindowManagerFlags;-><init>()V
+HSPLcom/android/server/wm/WindowManagerGlobalLock;-><init>()V
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;-><init>()V
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionPendingLocked()V
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionStartingLocked(JJ)I
+PLcom/android/server/wm/WindowManagerInternal;-><init>()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda0;-><init>([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda16;-><init>()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda16;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda18;-><init>()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda18;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda21;-><init>()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda21;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;-><init>(Lcom/android/server/wm/WindowManagerService$SettingsObserver;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda22;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;-><init>()V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda23;->get()Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;-><init>()V
+HPLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda24;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda30;->run()V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$$ExternalSyntheticLambda4;->getRootForDisplay(I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowManagerService$1;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$4;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService$5;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$5;->run()V
+PLcom/android/server/wm/WindowManagerService$6;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$7;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$8;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$H;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$ImeTargetVisibilityPolicyImpl-IA;)V
+PLcom/android/server/wm/WindowManagerService$LocalService$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowManagerService$LocalService;I)V
+PLcom/android/server/wm/WindowManagerService$LocalService$$ExternalSyntheticLambda0;->run()V
+PLcom/android/server/wm/WindowManagerService$LocalService;->$r8$lambda$lk-ezvC20UqC557MIWFnPJCqHrs(Lcom/android/server/wm/WindowManagerService$LocalService;I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$LocalService-IA;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;IILandroid/os/Bundle;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->clearSnapshotCache()V
+PLcom/android/server/wm/WindowManagerService$LocalService;->getAccessibilityController()Lcom/android/server/wm/WindowManagerInternal$AccessibilityControllerInternal;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getDisplayIdForWindow(Landroid/os/IBinder;)I
+PLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowTokenFromWindowStates()Landroid/os/IBinder;
+HPLcom/android/server/wm/WindowManagerService$LocalService;->hasInputMethodClientFocus(Landroid/os/IBinder;III)I
+PLcom/android/server/wm/WindowManagerService$LocalService;->hasNavigationBar(I)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->lambda$onDisplayManagerReceivedDeviceState$0(I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->onDisplayManagerReceivedDeviceState(I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZZI)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->requestTraversalFromDisplayManager()V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->setAccessibilityIdToSurfaceMetadata(Landroid/os/IBinder;I)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setDismissImeOnBackKeyPressed(Z)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setInputMethodTargetChangeListener(Lcom/android/server/wm/ImeTargetChangeListener;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperCropHints(Landroid/os/IBinder;Landroid/util/SparseArray;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperCropUtils(Lcom/android/server/wallpaper/WallpaperCropper$WallpaperCropUtils;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWallpaperShowWhenLocked(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodTargetWindow(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Landroid/os/Message;JI)V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->loadSettings()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateMaximumObscuringOpacityForTouch()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateSystemUiSettings(Z)V
+PLcom/android/server/wm/WindowManagerService;->$r8$lambda$-03A0KzACDP8viIeBR6fHGPyC3E(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->$r8$lambda$5NrEVxBS-ypo1Qb5HZIOjzN6KD0(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/WindowManagerService;->$r8$lambda$mwBTKetH1qw0F1b0kyWqrfq23P8([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService;->$r8$lambda$q098u3YRqNN-dXhSIeNTldOKDX4(Lcom/android/server/wm/WindowManagerService;I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowManagerService;->-$$Nest$fgetmTransaction(Lcom/android/server/wm/WindowManagerService;)Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/WindowManagerService;->-$$Nest$mcheckBootAnimationCompleteLocked(Lcom/android/server/wm/WindowManagerService;)Z
+PLcom/android/server/wm/WindowManagerService;->-$$Nest$mperformEnableScreen(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/WindowManagerService;-><clinit>()V
+HPLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService;->addKeyguardLockedStateListener(Lcom/android/internal/policy/IKeyguardLockedStateListener;)V
+HPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIILandroid/view/InputChannel;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/graphics/Rect;[F)I
+PLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;IILandroid/os/Bundle;)V
+PLcom/android/server/wm/WindowManagerService;->applyForcedPropertiesForDefaultDisplay()Z
+HPLcom/android/server/wm/WindowManagerService;->attachWindowContextToDisplayArea(Landroid/app/IApplicationThread;Landroid/os/IBinder;IILandroid/os/Bundle;)Landroid/window/WindowContextInfo;
+PLcom/android/server/wm/WindowManagerService;->attachWindowContextToWindowToken(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/os/IBinder;)Landroid/window/WindowContextInfo;
+HSPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V
+PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z
+PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;Z)Z
+HPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V
+PLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration;
+PLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration;
+PLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/SurfaceControl;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
+PLcom/android/server/wm/WindowManagerService;->createWatermark()V
+PLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z
+PLcom/android/server/wm/WindowManagerService;->dispatchImeInputTargetVisibilityChanged(Landroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/WindowManagerService;->dispatchKeyguardLockedState()V
+PLcom/android/server/wm/WindowManagerService;->displayReady()V
+PLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
+PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V
+HPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
+PLcom/android/server/wm/WindowManagerService;->enforceSubscribeToKeyguardLockedStatePermission()V
+PLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z
+HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/WindowManagerService;->freezeDisplayRotation(IILjava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->freezeRotation(ILjava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->getAnimatorDurationScaleSetting()F
+PLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V
+PLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I
+HPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
+HPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I
+PLcom/android/server/wm/WindowManagerService;->getDisplayAreaPolicyProvider()Lcom/android/server/wm/DisplayAreaPolicy$Provider;
+PLcom/android/server/wm/WindowManagerService;->getDisplayContentOrCreate(ILandroid/os/IBinder;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I
+PLcom/android/server/wm/WindowManagerService;->getImeDisplayId()I
+PLcom/android/server/wm/WindowManagerService;->getInputManagerCallback()Lcom/android/server/wm/InputManagerCallback;
+PLcom/android/server/wm/WindowManagerService;->getInputTargetFromToken(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;
+PLcom/android/server/wm/WindowManagerService;->getInputTargetFromWindowTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/InputTarget;
+HPLcom/android/server/wm/WindowManagerService;->getInsetsSourceControls(Lcom/android/server/wm/WindowState;Landroid/view/InsetsSourceControl$Array;)V
+PLcom/android/server/wm/WindowManagerService;->getLidState()I
+HPLcom/android/server/wm/WindowManagerService;->getRecentsAnimationController()Lcom/android/server/wm/RecentsAnimationController;
+PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZZ)Landroid/window/TaskSnapshot;
+PLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleSetting()F
+PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F
+PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleSetting()F
+PLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerService;->grantInputChannel(Lcom/android/server/wm/Session;IIILandroid/view/SurfaceControl;Landroid/os/IBinder;Landroid/window/InputTransferToken;IIIILandroid/os/IBinder;Landroid/window/InputTransferToken;Ljava/lang/String;Landroid/view/InputChannel;)V
+PLcom/android/server/wm/WindowManagerService;->hasNavigationBar(I)Z
+PLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V
+PLcom/android/server/wm/WindowManagerService;->initPolicy()V
+PLcom/android/server/wm/WindowManagerService;->isDisplayRotationFrozen(I)Z
+PLcom/android/server/wm/WindowManagerService;->isInTouchMode(I)Z
+PLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z
+PLcom/android/server/wm/WindowManagerService;->isRecentsAnimationTarget(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z
+PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z
+HPLcom/android/server/wm/WindowManagerService;->isUserVisible(I)Z
+PLcom/android/server/wm/WindowManagerService;->lambda$dispatchImeInputTargetVisibilityChanged$7(Landroid/os/IBinder;ZZ)V
+PLcom/android/server/wm/WindowManagerService;->lambda$dispatchKeyguardLockedState$5()V
+PLcom/android/server/wm/WindowManagerService;->lambda$main$1([Lcom/android/server/wm/WindowManagerService;Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService;->lambda$new$2(I)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/DisplayWindowSettingsProvider;Ljava/util/function/Supplier;Ljava/util/function/Function;)Lcom/android/server/wm/WindowManagerService;
+HPLcom/android/server/wm/WindowManagerService;->makeSurfaceBuilder(Landroid/view/SurfaceSession;)Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowManagerService;->mapOrientationRequest(I)I
+HPLcom/android/server/wm/WindowManagerService;->monitor()V
+PLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V
+PLcom/android/server/wm/WindowManagerService;->onAnimationFinished()V
+PLcom/android/server/wm/WindowManagerService;->onInitReady()V
+PLcom/android/server/wm/WindowManagerService;->onKeyguardShowingAndNotOccludedChanged()V
+PLcom/android/server/wm/WindowManagerService;->onProcessActivityVisibilityChanged(IZ)V
+PLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V
+PLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/WindowManagerService;->onUserSwitched()V
+PLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;)Landroid/view/IWindowSession;
+PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V
+HPLcom/android/server/wm/WindowManagerService;->performEnableScreen()V
+HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowManagerService;->queryHdrSupport()Z
+PLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z
+PLcom/android/server/wm/WindowManagerService;->registerDecorViewGestureListener(Landroid/view/IDecorViewGestureListener;I)V
+PLcom/android/server/wm/WindowManagerService;->registerDisplayWindowListener(Landroid/view/IDisplayWindowListener;)[I
+PLcom/android/server/wm/WindowManagerService;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;I)V
+PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
+HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/WindowManager$LayoutParams;IIIIIILandroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/view/InsetsSourceControl$Array;Landroid/os/Bundle;)I
+PLcom/android/server/wm/WindowManagerService;->removeClientToken(Lcom/android/server/wm/Session;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;ZZI)V
+HPLcom/android/server/wm/WindowManagerService;->reportFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->requestTraversal()V
+HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V
+PLcom/android/server/wm/WindowManagerService;->sanitizeFlagSlippery(ILjava/lang/String;II)I
+PLcom/android/server/wm/WindowManagerService;->sanitizeSpyWindow(ILjava/lang/String;II)I
+PLcom/android/server/wm/WindowManagerService;->sanitizeWindowType(Lcom/android/server/wm/Session;ILandroid/os/IBinder;I)I
+HPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V
+PLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V
+PLcom/android/server/wm/WindowManagerService;->setDisplayChangeWindowController(Landroid/view/IDisplayChangeWindowController;)V
+PLcom/android/server/wm/WindowManagerService;->setDisplayWindowInsetsController(ILandroid/view/IDisplayWindowInsetsController;)V
+PLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
+PLcom/android/server/wm/WindowManagerService;->setFixedToUserRotation(II)V
+PLcom/android/server/wm/WindowManagerService;->setGlobalShadowSettings()V
+HPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
+PLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V
+PLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
+PLcom/android/server/wm/WindowManagerService;->systemReady()V
+PLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
+PLcom/android/server/wm/WindowManagerService;->unprivilegedAppCanCreateTokenWith(Lcom/android/server/wm/WindowState;IIILandroid/os/IBinder;Ljava/lang/String;)Z
+HPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z
+PLcom/android/server/wm/WindowManagerService;->updateInputChannel(Landroid/os/IBinder;IIILandroid/view/SurfaceControl;Ljava/lang/String;Landroid/view/InputApplicationHandle;IIIILandroid/graphics/Region;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V
+HPLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;-><init>()V
+HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
+HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
+PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V
+PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V
+PLcom/android/server/wm/WindowOrganizerController$CallerInfo;-><init>()V
+HSPLcom/android/server/wm/WindowOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/Transition;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;)I
+PLcom/android/server/wm/WindowOrganizerController;->applyTransaction(Landroid/window/WindowContainerTransaction;ILcom/android/server/wm/Transition;Lcom/android/server/wm/WindowOrganizerController$CallerInfo;Lcom/android/server/wm/Transition;)I
+PLcom/android/server/wm/WindowOrganizerController;->finishTransition(Landroid/os/IBinder;Landroid/window/WindowContainerTransaction;)V
+PLcom/android/server/wm/WindowOrganizerController;->getApplyToken()Landroid/os/IBinder;
+PLcom/android/server/wm/WindowOrganizerController;->getDisplayAreaOrganizerController()Landroid/window/IDisplayAreaOrganizerController;
+PLcom/android/server/wm/WindowOrganizerController;->getTaskOrganizerController()Landroid/window/ITaskOrganizerController;
+PLcom/android/server/wm/WindowOrganizerController;->getTransitionController()Lcom/android/server/wm/TransitionController;
+PLcom/android/server/wm/WindowOrganizerController;->getTransitionMetricsReporter()Landroid/window/ITransitionMetricsReporter;
+PLcom/android/server/wm/WindowOrganizerController;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/wm/WindowOrganizerController;->registerTransitionPlayer(Landroid/window/ITransitionPlayer;)V
+PLcom/android/server/wm/WindowOrganizerController;->startTransition(ILandroid/os/IBinder;Landroid/window/WindowContainerTransaction;)Landroid/os/IBinder;
+PLcom/android/server/wm/WindowOrganizerController;->startTransition(Landroid/os/IBinder;Landroid/window/WindowContainerTransaction;)V
+PLcom/android/server/wm/WindowOrientationListener$AccelSensorJudge;-><init>(Lcom/android/server/wm/WindowOrientationListener;Landroid/content/Context;)V
+PLcom/android/server/wm/WindowOrientationListener$OrientationJudge;-><init>(Lcom/android/server/wm/WindowOrientationListener;)V
+PLcom/android/server/wm/WindowOrientationListener;-><clinit>()V
+PLcom/android/server/wm/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/wm/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;II)V
+PLcom/android/server/wm/WindowOrientationListener;->canDetectOrientation()Z
+PLcom/android/server/wm/WindowOrientationListener;->disable()V
+PLcom/android/server/wm/WindowOrientationListener;->getHandler()Landroid/os/Handler;
+PLcom/android/server/wm/WindowOrientationListener;->getProposedRotation()I
+PLcom/android/server/wm/WindowOrientationListener;->setCurrentRotation(I)V
+PLcom/android/server/wm/WindowOrientationListener;->shouldStayEnabledWhileDreaming()Z
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda10;-><init>()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda10;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;-><init>()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda2;-><init>(Lcom/android/server/wm/WindowProcessController;Z)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda2;->run()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;-><init>()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;-><init>()V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda7;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda8;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/WindowProcessController$$ExternalSyntheticLambda8;->test(I)Z
+PLcom/android/server/wm/WindowProcessController;->$r8$lambda$MrxcMrQULT9udb0_Bvq5Va6C48k(Lcom/android/server/wm/WindowProcessController;Z)V
+HPLcom/android/server/wm/WindowProcessController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;IILjava/lang/Object;Lcom/android/server/wm/WindowProcessListener;)V
+PLcom/android/server/wm/WindowProcessController;->addActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/WindowProcessController;->addAnimatingReason(I)V
+HPLcom/android/server/wm/WindowProcessController;->addBoundClientUid(ILjava/lang/String;J)V
+PLcom/android/server/wm/WindowProcessController;->addOrUpdateBackgroundStartPrivileges(Landroid/os/Binder;Landroid/app/BackgroundStartPrivileges;)V
+HPLcom/android/server/wm/WindowProcessController;->addPackage(Ljava/lang/String;)V
+PLcom/android/server/wm/WindowProcessController;->addRecentTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/WindowProcessController;->addToPendingTop()V
+PLcom/android/server/wm/WindowProcessController;->appEarlyNotResponding(Ljava/lang/String;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/WindowProcessController;->appNotResponding(Ljava/lang/String;Ljava/lang/Runnable;Ljava/lang/Runnable;)Z
+HPLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed(IZ)Lcom/android/server/wm/BackgroundActivityStartController$BalVerdict;
+HPLcom/android/server/wm/WindowProcessController;->areBackgroundFgsStartsAllowed()Z
+HPLcom/android/server/wm/WindowProcessController;->clearActivities()V
+HPLcom/android/server/wm/WindowProcessController;->clearBoundClientUids()V
+PLcom/android/server/wm/WindowProcessController;->clearPackageList()V
+HPLcom/android/server/wm/WindowProcessController;->clearRecentTasks()V
+HPLcom/android/server/wm/WindowProcessController;->computeOomAdjFromActivities(Lcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;)I
+HPLcom/android/server/wm/WindowProcessController;->computeProcessActivityState()V
+PLcom/android/server/wm/WindowProcessController;->createProfilerInfoIfNeeded()Landroid/app/ProfilerInfo;
+PLcom/android/server/wm/WindowProcessController;->destroy()V
+HPLcom/android/server/wm/WindowProcessController;->dispatchConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->getChildCount()I
+PLcom/android/server/wm/WindowProcessController;->getCpuTime()J
+PLcom/android/server/wm/WindowProcessController;->getCurrentAdj()I
+PLcom/android/server/wm/WindowProcessController;->getCurrentProcState()I
+PLcom/android/server/wm/WindowProcessController;->getInputDispatchingTimeoutMillis()J
+PLcom/android/server/wm/WindowProcessController;->getPackageList()Ljava/util/List;
+HPLcom/android/server/wm/WindowProcessController;->getParent()Lcom/android/server/wm/ConfigurationContainer;
+PLcom/android/server/wm/WindowProcessController;->getPid()I
+PLcom/android/server/wm/WindowProcessController;->getReportedProcState()I
+PLcom/android/server/wm/WindowProcessController;->getRequiredAbi()Ljava/lang/String;
+PLcom/android/server/wm/WindowProcessController;->getThread()Landroid/app/IApplicationThread;
+HPLcom/android/server/wm/WindowProcessController;->getTopActivityDeviceId()I
+PLcom/android/server/wm/WindowProcessController;->getTopActivityDisplayArea()Lcom/android/server/wm/TaskDisplayArea;
+HPLcom/android/server/wm/WindowProcessController;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowProcessController;->handleAppDied()Z
+HPLcom/android/server/wm/WindowProcessController;->hasActivities()Z
+HPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z
+HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
+PLcom/android/server/wm/WindowProcessController;->hasEmbeddedWindow()Z
+PLcom/android/server/wm/WindowProcessController;->hasEverLaunchedActivity()Z
+HPLcom/android/server/wm/WindowProcessController;->hasRecentTasks()Z
+PLcom/android/server/wm/WindowProcessController;->hasResumedActivity()Z
+PLcom/android/server/wm/WindowProcessController;->hasStartedActivity(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/WindowProcessController;->hasThread()Z
+HPLcom/android/server/wm/WindowProcessController;->hasVisibleActivities()Z
+HPLcom/android/server/wm/WindowProcessController;->isFactoryTestProcess()Z
+HPLcom/android/server/wm/WindowProcessController;->isHeavyWeightProcess()Z
+HPLcom/android/server/wm/WindowProcessController;->isHomeProcess()Z
+PLcom/android/server/wm/WindowProcessController;->isInstrumenting()Z
+PLcom/android/server/wm/WindowProcessController;->isInterestingToUser()Z
+HPLcom/android/server/wm/WindowProcessController;->isPreviousProcess()Z
+HPLcom/android/server/wm/WindowProcessController;->isRemoved()Z
+PLcom/android/server/wm/WindowProcessController;->isUsingWrapper()Z
+PLcom/android/server/wm/WindowProcessController;->lambda$setAnimating$3(Z)V
+PLcom/android/server/wm/WindowProcessController;->onConfigurationChangePreScheduled(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/WindowProcessController;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/WindowProcessController;->onServiceStarted(Landroid/content/pm/ServiceInfo;)V
+PLcom/android/server/wm/WindowProcessController;->onStartActivity(ILandroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/WindowProcessController;->onTopProcChanged()V
+PLcom/android/server/wm/WindowProcessController;->pauseConfigurationDispatch()V
+PLcom/android/server/wm/WindowProcessController;->postPendingUiCleanMsg(Z)V
+PLcom/android/server/wm/WindowProcessController;->prepareConfigurationForLaunchingActivity()Landroid/content/res/Configuration;
+PLcom/android/server/wm/WindowProcessController;->prepareOomAdjustment()V
+PLcom/android/server/wm/WindowProcessController;->registerActivityConfigurationListener(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/WindowProcessController;->registerDisplayAreaConfigurationListener(Lcom/android/server/wm/DisplayArea;)V
+HPLcom/android/server/wm/WindowProcessController;->registeredForDisplayAreaConfigChanges()Z
+PLcom/android/server/wm/WindowProcessController;->removeAnimatingReason(I)V
+HPLcom/android/server/wm/WindowProcessController;->removeBackgroundStartPrivileges(Landroid/os/Binder;)V
+HPLcom/android/server/wm/WindowProcessController;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->resumeConfigurationDispatch()Z
+PLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
+PLcom/android/server/wm/WindowProcessController;->scheduleClientTransactionItem(Landroid/app/servertransaction/ClientTransactionItem;)V
+PLcom/android/server/wm/WindowProcessController;->setAnimating(Z)V
+PLcom/android/server/wm/WindowProcessController;->setCrashing(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setCurrentAdj(I)V
+HPLcom/android/server/wm/WindowProcessController;->setCurrentProcState(I)V
+HPLcom/android/server/wm/WindowProcessController;->setCurrentSchedulingGroup(I)V
+HPLcom/android/server/wm/WindowProcessController;->setDebugging(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setFgInteractionTime(J)V
+HPLcom/android/server/wm/WindowProcessController;->setHasClientActivities(Z)V
+PLcom/android/server/wm/WindowProcessController;->setHasForegroundServices(Z)V
+PLcom/android/server/wm/WindowProcessController;->setHasOverlayUi(Z)V
+PLcom/android/server/wm/WindowProcessController;->setInstrumenting(ZIZ)V
+HPLcom/android/server/wm/WindowProcessController;->setInteractionEventTime(J)V
+PLcom/android/server/wm/WindowProcessController;->setLastActivityLaunchTime(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/WindowProcessController;->setLastReportedConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowProcessController;->setNotResponding(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setPendingUiClean(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V
+PLcom/android/server/wm/WindowProcessController;->setPersistent(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setPid(I)V
+HPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V
+HPLcom/android/server/wm/WindowProcessController;->setRequiredAbi(Ljava/lang/String;)V
+PLcom/android/server/wm/WindowProcessController;->setRunningRemoteAnimation(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V
+HPLcom/android/server/wm/WindowProcessController;->setUsingWrapper(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
+PLcom/android/server/wm/WindowProcessController;->shouldSetProfileProc()Z
+PLcom/android/server/wm/WindowProcessController;->unregisterActivityConfigurationListener()V
+HPLcom/android/server/wm/WindowProcessController;->unregisterConfigurationListeners()V
+PLcom/android/server/wm/WindowProcessController;->unregisterDisplayAreaConfigurationListener()V
+HPLcom/android/server/wm/WindowProcessController;->updateActivityConfigurationListener()V
+PLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZZ)V
+PLcom/android/server/wm/WindowProcessController;->updateRapidActivityLaunch(Lcom/android/server/wm/ActivityRecord;JJ)V
+PLcom/android/server/wm/WindowProcessController;->updateServiceConnectionActivities()V
+HPLcom/android/server/wm/WindowProcessController;->updateTopResumingActivityInProcessIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/WindowProcessControllerMap;-><init>()V
+PLcom/android/server/wm/WindowProcessControllerMap;->getPidMap()Landroid/util/SparseArray;
+HPLcom/android/server/wm/WindowProcessControllerMap;->getProcess(I)Lcom/android/server/wm/WindowProcessController;
+HPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/WindowProcessControllerMap;->remove(I)V
+HPLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;-><init>(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;)V
+HPLcom/android/server/wm/WindowState$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;-><init>()V
+PLcom/android/server/wm/WindowState$$ExternalSyntheticLambda3;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/WindowState$1;-><init>()V
+PLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V
+HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V
+PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$WindowId-IA;)V
+PLcom/android/server/wm/WindowState;->$r8$lambda$ZpBAxyV_EYA5etsArmi-qkwlhf0(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowState;->$r8$lambda$fef2KYzxiyPlqMk0JTPv9yWQXp0(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowState;->$r8$lambda$qWwwoLu0LTUue2Ex5efd6I7CVfs(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WindowState;-><clinit>()V
+HPLcom/android/server/wm/WindowState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/Session;Landroid/view/IWindow;Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;ILandroid/view/WindowManager$LayoutParams;IIIZ)V
+HPLcom/android/server/wm/WindowState;->adjustRegionInFreefromWindowMode(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V
+HPLcom/android/server/wm/WindowState;->applyDims()V
+HPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/WindowState;->areAppWindowBoundsLetterboxed()Z
+PLcom/android/server/wm/WindowState;->asWindowState()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
+HPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z
+HPLcom/android/server/wm/WindowState;->canBeHiddenByKeyguard()Z
+HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z
+HPLcom/android/server/wm/WindowState;->canReceiveKeys()Z
+HPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z
+HPLcom/android/server/wm/WindowState;->canReceiveTouchInput()Z
+PLcom/android/server/wm/WindowState;->canScreenshotIme()Z
+PLcom/android/server/wm/WindowState;->canShowWhenLocked()Z
+PLcom/android/server/wm/WindowState;->cancelAndRedraw()Z
+PLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
+PLcom/android/server/wm/WindowState;->cleanupAnimatingExitWindow()V
+PLcom/android/server/wm/WindowState;->clearFrozenInsetsState()V
+PLcom/android/server/wm/WindowState;->clearPolicyVisibilityFlag(I)V
+PLcom/android/server/wm/WindowState;->commitFinishDrawing(Landroid/view/SurfaceControl$Transaction;)Z
+HPLcom/android/server/wm/WindowState;->computeDragResizing()Z
+PLcom/android/server/wm/WindowState;->consumeInsetsChange()V
+HPLcom/android/server/wm/WindowState;->cropRegionToRootTaskBoundsIfNeeded(Landroid/graphics/Region;)V
+PLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
+PLcom/android/server/wm/WindowState;->destroySurfaceUnchecked()V
+PLcom/android/server/wm/WindowState;->disposeInputChannel()V
+PLcom/android/server/wm/WindowState;->executeDrawHandlers(Landroid/view/SurfaceControl$Transaction;I)Z
+HPLcom/android/server/wm/WindowState;->fillClientWindowFramesAndConfiguration(Landroid/window/ClientWindowFrames;Landroid/util/MergedConfiguration;ZZ)V
+HPLcom/android/server/wm/WindowState;->fillsDisplay()Z
+PLcom/android/server/wm/WindowState;->fillsParent()Z
+HPLcom/android/server/wm/WindowState;->finishDrawing(Landroid/view/SurfaceControl$Transaction;I)Z
+PLcom/android/server/wm/WindowState;->finishSync(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;Z)V
+HPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/WindowState;->freezeInsetsState()V
+PLcom/android/server/wm/WindowState;->getActivityRecord()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/WindowState;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
+HPLcom/android/server/wm/WindowState;->getBaseType()I
+HPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowState;->getCompatInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/WindowState;->getCompatScaleForClient()F
+HPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/WindowState;->getDisableFlags()I
+HPLcom/android/server/wm/WindowState;->getDisplayFrames(Lcom/android/server/wm/DisplayFrames;)Lcom/android/server/wm/DisplayFrames;
+PLcom/android/server/wm/WindowState;->getDisplayId()I
+HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;
+PLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z
+HPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->getFrame()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowState;->getImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/WindowState;->getImeInputTarget()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutMillis()J
+HPLcom/android/server/wm/WindowState;->getInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/WindowState;->getInsetsState(Z)Landroid/view/InsetsState;
+HPLcom/android/server/wm/WindowState;->getKeepClearAreas(Ljava/util/Collection;Ljava/util/Collection;Landroid/graphics/Matrix;[F)V
+HPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;
+PLcom/android/server/wm/WindowState;->getLastReportedConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowState;->getMergedInsetsState()Landroid/view/InsetsState;
+HPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/WindowState;->getOrientationChanging()Z
+HPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
+HPLcom/android/server/wm/WindowState;->getOwningUid()I
+PLcom/android/server/wm/WindowState;->getParentFrame()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowState;->getRectsInScreenSpace(Ljava/util/List;Landroid/graphics/Matrix;[F)Ljava/util/List;
+PLcom/android/server/wm/WindowState;->getRelativeFrame()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getRequestedVisibleTypes()I
+PLcom/android/server/wm/WindowState;->getRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/WindowState;->getSession()Landroid/view/SurfaceSession;
+HPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;Landroid/view/WindowManager$LayoutParams;)V
+PLcom/android/server/wm/WindowState;->getSyncMethod()I
+PLcom/android/server/wm/WindowState;->getSystemGestureExclusion()Ljava/util/List;
+HPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/WindowState;->getTaskFragment()Lcom/android/server/wm/TaskFragment;
+HPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getTouchOcclusionMode()I
+HPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V
+PLcom/android/server/wm/WindowState;->getWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowState;->getWindowFrames()Lcom/android/server/wm/WindowFrames;
+PLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo;
+PLcom/android/server/wm/WindowState;->getWindowState()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;
+PLcom/android/server/wm/WindowState;->getWindowToken()Landroid/os/IBinder;
+HPLcom/android/server/wm/WindowState;->getWindowType()I
+HPLcom/android/server/wm/WindowState;->handleCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V
+PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z
+HPLcom/android/server/wm/WindowState;->hasCompatScale()Z
+HPLcom/android/server/wm/WindowState;->hasMoved()Z
+HPLcom/android/server/wm/WindowState;->hasWallpaper()Z
+PLcom/android/server/wm/WindowState;->hasWallpaperForLetterboxBackground()Z
+PLcom/android/server/wm/WindowState;->hide(ZZ)Z
+PLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z
+PLcom/android/server/wm/WindowState;->inRelaunchingActivity()Z
+PLcom/android/server/wm/WindowState;->initAppOpsState()V
+PLcom/android/server/wm/WindowState;->initExclusionRestrictions()V
+HPLcom/android/server/wm/WindowState;->isAnimationRunningSelfOrParent()Z
+HPLcom/android/server/wm/WindowState;->isChildWindow()Z
+HPLcom/android/server/wm/WindowState;->isDimming()Z
+HPLcom/android/server/wm/WindowState;->isDisplayed()Z
+HPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z
+PLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z
+HPLcom/android/server/wm/WindowState;->isDrawn()Z
+HPLcom/android/server/wm/WindowState;->isDreamWindow()Z
+HPLcom/android/server/wm/WindowState;->isFocused()Z
+HPLcom/android/server/wm/WindowState;->isFullyTransparent()Z
+HPLcom/android/server/wm/WindowState;->isGoneForLayout()Z
+HPLcom/android/server/wm/WindowState;->isImeLayeringTarget()Z
+PLcom/android/server/wm/WindowState;->isImeOverlayLayeringTarget()Z
+HPLcom/android/server/wm/WindowState;->isImplicitlyExcludingAllSystemGestures()Z
+PLcom/android/server/wm/WindowState;->isInputMethodClientFocus(II)Z
+PLcom/android/server/wm/WindowState;->isInteresting()Z
+PLcom/android/server/wm/WindowState;->isLaidOut()Z
+PLcom/android/server/wm/WindowState;->isLastConfigReportedToClient()Z
+PLcom/android/server/wm/WindowState;->isLegacyPolicyVisibility()Z
+HPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutout()Z
+HPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z
+HPLcom/android/server/wm/WindowState;->isOnScreen()Z
+HPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z
+HPLcom/android/server/wm/WindowState;->isParentWindowGoneForLayout()Z
+HPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z
+HPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z
+HPLcom/android/server/wm/WindowState;->isRequestedVisible(I)Z
+PLcom/android/server/wm/WindowState;->isRtl()Z
+PLcom/android/server/wm/WindowState;->isSecureLocked()Z
+HPLcom/android/server/wm/WindowState;->isSelfAnimating(II)Z
+PLcom/android/server/wm/WindowState;->isSelfOrAncestorWindowAnimatingExit()Z
+HPLcom/android/server/wm/WindowState;->isStartingWindowAssociatedToTask()Z
+PLcom/android/server/wm/WindowState;->isSyncFinished(Lcom/android/server/wm/BLASTSyncEngine$SyncGroup;)Z
+PLcom/android/server/wm/WindowState;->isTrustedOverlay()Z
+HPLcom/android/server/wm/WindowState;->isVisible()Z
+HPLcom/android/server/wm/WindowState;->isVisibleByPolicy()Z
+HPLcom/android/server/wm/WindowState;->isVisibleByPolicyOrInsets()Z
+PLcom/android/server/wm/WindowState;->isVisibleNow()Z
+HPLcom/android/server/wm/WindowState;->isVisibleRequested()Z
+HPLcom/android/server/wm/WindowState;->isVisibleRequestedOrAdding()Z
+HPLcom/android/server/wm/WindowState;->isWindowTrustedOverlay()Z
+PLcom/android/server/wm/WindowState;->lambda$new$1(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowState;->lambda$removeIfPossible$2(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WindowState;->lambda$updateAboveInsetsState$3(Landroid/view/InsetsState;Landroid/util/ArraySet;Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowState;->logExclusionRestrictions(I)V
+PLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V
+PLcom/android/server/wm/WindowState;->markRedrawForSyncReported()V
+PLcom/android/server/wm/WindowState;->matchesDisplayAreaBounds()Z
+HPLcom/android/server/wm/WindowState;->mightAffectAllDrawn()Z
+HPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z
+HPLcom/android/server/wm/WindowState;->needsZBoost()Z
+PLcom/android/server/wm/WindowState;->notifyInsetsControlChanged(I)V
+PLcom/android/server/wm/WindowState;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowState;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)V
+HPLcom/android/server/wm/WindowState;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowState;->onExitAnimationDone()V
+PLcom/android/server/wm/WindowState;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/WindowState;->onResizeHandled()V
+HPLcom/android/server/wm/WindowState;->onSurfaceShownChanged(Z)V
+HPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V
+HPLcom/android/server/wm/WindowState;->performShowLocked()Z
+HPLcom/android/server/wm/WindowState;->prepareSurfaces()V
+PLcom/android/server/wm/WindowState;->prepareSync()Z
+PLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V
+PLcom/android/server/wm/WindowState;->providesDisplayDecorInsets()Z
+HPLcom/android/server/wm/WindowState;->registeredForDisplayAreaConfigChanges()Z
+HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(I)I
+HPLcom/android/server/wm/WindowState;->removeIfPossible()V
+PLcom/android/server/wm/WindowState;->removeImmediately()V
+PLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(Z)V
+PLcom/android/server/wm/WindowState;->requestDrawIfNeeded(Ljava/util/List;)V
+PLcom/android/server/wm/WindowState;->requestRedrawForSync()V
+PLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
+PLcom/android/server/wm/WindowState;->resetAppOpsState()V
+HPLcom/android/server/wm/WindowState;->resetContentChanged()V
+PLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V
+PLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V
+PLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V
+HPLcom/android/server/wm/WindowState;->setFrames(Landroid/window/ClientWindowFrames;II)V
+PLcom/android/server/wm/WindowState;->setHasSurface(Z)V
+PLcom/android/server/wm/WindowState;->setHiddenWhileSuspended(Z)V
+HPLcom/android/server/wm/WindowState;->setInitialSurfaceControlProperties(Landroid/view/SurfaceControl$Builder;)V
+PLcom/android/server/wm/WindowState;->setLastExclusionHeights(III)V
+PLcom/android/server/wm/WindowState;->setOnBackInvokedCallbackInfo(Landroid/window/OnBackInvokedCallbackInfo;)V
+PLcom/android/server/wm/WindowState;->setPolicyVisibilityFlag(I)V
+HPLcom/android/server/wm/WindowState;->setReportResizeHints()Z
+PLcom/android/server/wm/WindowState;->setRequestedSize(II)V
+PLcom/android/server/wm/WindowState;->setRequestedVisibleTypes(I)V
+PLcom/android/server/wm/WindowState;->setViewVisibility(I)V
+PLcom/android/server/wm/WindowState;->setWallpaperOffset(IIF)Z
+HPLcom/android/server/wm/WindowState;->setWindowScale(II)V
+PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V
+HPLcom/android/server/wm/WindowState;->shouldCheckTokenVisibleRequested()Z
+PLcom/android/server/wm/WindowState;->shouldControlIme()Z
+HPLcom/android/server/wm/WindowState;->shouldDrawBlurBehind()Z
+PLcom/android/server/wm/WindowState;->shouldMagnify()Z
+PLcom/android/server/wm/WindowState;->shouldSendRedrawForSync()Z
+PLcom/android/server/wm/WindowState;->shouldSyncWithBuffers()Z
+HPLcom/android/server/wm/WindowState;->show(ZZ)Z
+HPLcom/android/server/wm/WindowState;->showForAllUsers()Z
+HPLcom/android/server/wm/WindowState;->showToCurrentUser()Z
+PLcom/android/server/wm/WindowState;->showWallpaper()Z
+HPLcom/android/server/wm/WindowState;->skipLayout()Z
+PLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/animation/Animation;)V
+HPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V
+PLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
+HPLcom/android/server/wm/WindowState;->syncNextBuffer()Z
+HPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V
+HPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Point;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->updateAboveInsetsState(Landroid/view/InsetsState;Landroid/util/SparseArray;Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V
+PLcom/android/server/wm/WindowState;->updateGlobalScale()V
+HPLcom/android/server/wm/WindowState;->updateLastFrames()V
+HPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V
+HPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V
+HPLcom/android/server/wm/WindowState;->updateScaleIfNeeded()V
+HPLcom/android/server/wm/WindowState;->updateSourceFrame(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z
+HPLcom/android/server/wm/WindowState;->wouldBeVisibleRequestedIfPolicyIgnored()Z
+HPLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
+PLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z
+HPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked()Lcom/android/server/wm/WindowSurfaceController;
+PLcom/android/server/wm/WindowStateAnimator;->destroySurface(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked(Landroid/view/SurfaceControl$Transaction;)Z
+HPLcom/android/server/wm/WindowStateAnimator;->getShown()Z
+HPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
+HPLcom/android/server/wm/WindowStateAnimator;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowStateAnimator;->onAnimationFinished()V
+HPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
+PLcom/android/server/wm/WindowStateAnimator;->setColorSpaceAgnosticLocked(Z)V
+HPLcom/android/server/wm/WindowSurfaceController;-><init>(Ljava/lang/String;IILcom/android/server/wm/WindowStateAnimator;I)V
+PLcom/android/server/wm/WindowSurfaceController;->destroy(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowSurfaceController;->getShown()Z
+PLcom/android/server/wm/WindowSurfaceController;->getSurfaceControl(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z
+PLcom/android/server/wm/WindowSurfaceController;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowSurfaceController;->hideSurface(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(Landroid/view/SurfaceControl$Transaction;F)Z
+PLcom/android/server/wm/WindowSurfaceController;->setColorSpaceAgnostic(Landroid/view/SurfaceControl$Transaction;Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V
+PLcom/android/server/wm/WindowSurfaceController;->showRobustly(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;)V
+PLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer$Traverser-IA;)V
+HPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V
+PLcom/android/server/wm/WindowSurfacePlacer;->-$$Nest$fgetmService(Lcom/android/server/wm/WindowSurfacePlacer;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/WindowSurfacePlacer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
+PLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V
+PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z
+HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
+PLcom/android/server/wm/WindowSurfacePlacer;->isTraversalScheduled()Z
+PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
+HPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V
+HPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
+PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowToken;)V
+PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda1;-><init>(Lcom/android/server/wm/WindowToken;Z)V
+PLcom/android/server/wm/WindowToken$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/WindowToken$Builder;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;I)V
+HPLcom/android/server/wm/WindowToken$Builder;->build()Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/WindowToken$Builder;->setDisplayContent(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken$Builder;->setFromClientToken(Z)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken$Builder;->setOptions(Landroid/os/Bundle;)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken$Builder;->setOwnerCanManageAppTokens(Z)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken$Builder;->setPersistOnEmpty(Z)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken$Builder;->setRoundedCornerOverlay(Z)Lcom/android/server/wm/WindowToken$Builder;
+PLcom/android/server/wm/WindowToken;->$r8$lambda$-pSQy6fdr3VlGcmvSVCsObZoXyQ(Lcom/android/server/wm/WindowToken;ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowToken;->$r8$lambda$nGO-xASDAxBQTRuMNfGImeCJxk0(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
+PLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V
+HPLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;ZZZLandroid/os/Bundle;)V
+HPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowToken;->asWindowToken()Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/WindowToken;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+PLcom/android/server/wm/WindowToken;->createSurfaceControl(Z)V
+PLcom/android/server/wm/WindowToken;->finishFixedRotationTransform()V
+PLcom/android/server/wm/WindowToken;->finishFixedRotationTransform(Ljava/lang/Runnable;)V
+PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayFrames()Lcom/android/server/wm/DisplayFrames;
+PLcom/android/server/wm/WindowToken;->getFixedRotationTransformDisplayInfo()Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/WindowToken;->getFixedRotationTransformInsetsState()Landroid/view/InsetsState;
+PLcom/android/server/wm/WindowToken;->getName()Ljava/lang/String;
+PLcom/android/server/wm/WindowToken;->getWindowLayerFromType()I
+PLcom/android/server/wm/WindowToken;->getWindowType()I
+PLcom/android/server/wm/WindowToken;->hasFixedRotationTransform()Z
+PLcom/android/server/wm/WindowToken;->hasSizeCompatBounds()Z
+HPLcom/android/server/wm/WindowToken;->isClientVisible()Z
+PLcom/android/server/wm/WindowToken;->isEmpty()Z
+PLcom/android/server/wm/WindowToken;->isFinishingFixedRotationTransform()Z
+HPLcom/android/server/wm/WindowToken;->isFixedRotationTransforming()Z
+PLcom/android/server/wm/WindowToken;->lambda$new$0(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
+PLcom/android/server/wm/WindowToken;->lambda$setInsetsFrozen$1(ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowToken;->makeSurface()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowToken;->prepareSync()Z
+PLcom/android/server/wm/WindowToken;->removeImmediately()V
+PLcom/android/server/wm/WindowToken;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/WindowToken;->setClientVisible(Z)V
+PLcom/android/server/wm/WindowToken;->setExiting(Z)V
+PLcom/android/server/wm/WindowToken;->setInsetsFrozen(Z)V
+HPLcom/android/server/wm/WindowToken;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowToken;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
+PLcom/android/server/wm/WindowTracing$$ExternalSyntheticLambda0;-><init>(Lcom/android/server/wm/WindowTracing;)V
+PLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;I)V
+PLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;Lcom/android/server/wm/WindowManagerGlobalLock;I)V
+PLcom/android/server/wm/WindowTracing;->createDefaultAndStartLooper(Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;)Lcom/android/server/wm/WindowTracing;
+HPLcom/android/server/wm/WindowTracing;->isEnabled()Z
+PLcom/android/server/wm/WindowTracing;->logAndPrintln(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowTracing;->logState(Ljava/lang/String;)V
+PLcom/android/server/wm/WindowTracing;->setBufferCapacity(ILjava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowTracing;->setLogLevel(ILjava/io/PrintWriter;)V
+HSPLcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;-><init>()V
+PLcom/android/server/wm/utils/DisplayInfoOverrides$$ExternalSyntheticLambda0;->setFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/utils/DisplayInfoOverrides;->$r8$lambda$jgt4-o-_IMdp6knRL61iyTsmoLA(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+HSPLcom/android/server/wm/utils/DisplayInfoOverrides;-><clinit>()V
+HSPLcom/android/server/wm/utils/DisplayInfoOverrides;->copyDisplayInfoFields(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;Lcom/android/server/wm/utils/DisplayInfoOverrides$DisplayInfoFieldsUpdater;)V
+HPLcom/android/server/wm/utils/DisplayInfoOverrides;->lambda$static$0(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)V
+PLcom/android/server/wm/utils/InsetUtils;->rotateInsets(Landroid/graphics/Rect;I)V
+HPLcom/android/server/wm/utils/RegionUtils;->forEachRectReverse(Landroid/graphics/Region;Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/utils/RegionUtils;->rectListToRegion(Ljava/util/List;Landroid/graphics/Region;)V
+PLcom/android/server/wm/utils/RotationCache;-><init>(Lcom/android/server/wm/utils/RotationCache$RotationDependentComputation;)V
+HPLcom/android/server/wm/utils/RotationCache;->getOrCompute(Ljava/lang/Object;I)Ljava/lang/Object;
+PLcom/android/server/wm/utils/WmDisplayCutout;-><clinit>()V
+PLcom/android/server/wm/utils/WmDisplayCutout;-><init>(Landroid/view/DisplayCutout;Landroid/util/Size;)V
+PLcom/android/server/wm/utils/WmDisplayCutout;->getDisplayCutout()Landroid/view/DisplayCutout;
+PLcom/android/systemui/shared/FeatureFlagsImpl;-><clinit>()V
+PLcom/android/systemui/shared/FeatureFlagsImpl;-><init>()V
+PLcom/android/systemui/shared/FeatureFlagsImpl;->enableHomeDelay()Z
+PLcom/android/systemui/shared/FeatureFlagsImpl;->load_overrides_systemui()V
+PLcom/android/systemui/shared/Flags;-><clinit>()V
+PLcom/android/systemui/shared/Flags;->enableHomeDelay()Z
+HSPLcom/android/wm/shell/FeatureFlagsImpl;-><clinit>()V
+HSPLcom/android/wm/shell/FeatureFlagsImpl;-><init>()V
+HSPLcom/android/wm/shell/FeatureFlagsImpl;->enableDesktopWindowing()Z
+PLcom/android/wm/shell/FeatureFlagsImpl;->enablePip2Implementation()Z
+HSPLcom/android/wm/shell/Flags;-><clinit>()V
+HSPLcom/android/wm/shell/Flags;->enableDesktopWindowing()Z
+PLcom/android/wm/shell/Flags;->enablePip2Implementation()Z
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index b89e0d8..96c65565 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -127,6 +127,7 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.IBinder.DeathRecipient;
+import android.os.OutcomeReceiver;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.Process;
@@ -2828,9 +2829,18 @@
             replaceResponseLocked(authenticatedResponse, (FillResponse) result, newClientState);
         } else if (result instanceof GetCredentialResponse) {
             Slog.d(TAG, "Received GetCredentialResponse from authentication flow");
-            Dataset dataset = getDatasetFromCredentialResponse((GetCredentialResponse) result);
-            if (dataset != null) {
-                autoFill(requestId, datasetIdx, dataset, false, UI_TYPE_UNKNOWN);
+            boolean isCredmanCallbackInvoked = false;
+            if (Flags.autofillCredmanIntegration()) {
+                GetCredentialResponse response = (GetCredentialResponse) result;
+                isCredmanCallbackInvoked = invokeCredentialManagerCallback(response);
+            }
+
+            if (!isCredmanCallbackInvoked) {
+                Dataset dataset = getDatasetFromCredentialResponse(
+                    (GetCredentialResponse) result);
+                if (dataset != null) {
+                    autoFill(requestId, datasetIdx, dataset, false, UI_TYPE_UNKNOWN);
+                }
             }
         } else if (result instanceof Dataset) {
             if (datasetIdx != AutofillManager.AUTHENTICATION_ID_DATASET_ID_UNDEFINED) {
@@ -2868,6 +2878,49 @@
         }
     }
 
+    private boolean invokeCredentialManagerCallback(GetCredentialResponse response) {
+        synchronized (mLock) {
+            return invokeCredentialManagerCallbackLocked(response);
+        }
+    }
+
+    @GuardedBy("mLock")
+    private boolean invokeCredentialManagerCallbackLocked(GetCredentialResponse response) {
+        AutofillId autofillId = response.getAutofillId();
+        if (autofillId != null) {
+            OutcomeReceiver<GetCredentialResponse,
+                    GetCredentialException> callback =
+                    getCredmanCallbackFromContextsLocked(autofillId);
+            if (callback != null) {
+                Slog.w(TAG, "Propagating response to Credential Manager callback");
+                callback.onResult(response);
+                return true;
+            } else {
+                Slog.w(TAG, "Received Credential Manager response but no callback found");
+            }
+        } else {
+            Slog.w(TAG, "Received Credential Manager response but no autofillId found");
+        }
+        return false;
+    }
+
+    @GuardedBy("mLock")
+    @Nullable
+    private OutcomeReceiver<GetCredentialResponse,
+            GetCredentialException> getCredmanCallbackFromContextsLocked(
+            @NonNull AutofillId autofillId) {
+        final int numContexts = mContexts.size();
+        for (int i = numContexts - 1; i >= 0; i--) {
+            final FillContext context = mContexts.get(i);
+            final ViewNode node = Helper.findViewNodeByAutofillId(context.getStructure(),
+                    autofillId);
+            if (node != null) {
+                return node.getCredentialManagerCallback();
+            }
+        }
+        return null;
+    }
+
     private Dataset getDatasetFromCredentialResponse(GetCredentialResponse result) {
         if (result == null) {
             return null;
@@ -5036,16 +5089,23 @@
             protected void onReceiveResult(int resultCode, Bundle resultData) {
                 if (resultCode == SUCCESS_CREDMAN_SELECTOR) {
                     Slog.d(TAG, "onReceiveResult from Credential Manager bottom sheet");
+                    boolean isCredmanCallbackInvoked = false;
                     GetCredentialResponse getCredentialResponse =
                             resultData.getParcelable(
                                     CredentialProviderService.EXTRA_GET_CREDENTIAL_RESPONSE,
                                     GetCredentialResponse.class);
-                    Dataset datasetFromCredential = getDatasetFromCredentialResponse(
-                            getCredentialResponse);
-                    if (datasetFromCredential != null) {
-                        autoFill(requestId, /*datasetIndex=*/-1,
-                                datasetFromCredential, false,
-                                UI_TYPE_CREDMAN_BOTTOM_SHEET);
+
+                    isCredmanCallbackInvoked =
+                            invokeCredentialManagerCallback(getCredentialResponse);
+
+                    if (!isCredmanCallbackInvoked) {
+                        Dataset datasetFromCredential = getDatasetFromCredentialResponse(
+                                getCredentialResponse);
+                        if (datasetFromCredential != null) {
+                            autoFill(requestId, /*datasetIndex=*/-1,
+                                    datasetFromCredential, false,
+                                    UI_TYPE_CREDMAN_BOTTOM_SHEET);
+                        }
                     }
                 } else if (resultCode == FAILURE_CREDMAN_SELECTOR) {
                     GetCredentialException exception =  resultData.getParcelable(
diff --git a/services/companion/TEST_MAPPING b/services/companion/TEST_MAPPING
index ae6d591..02a3b8f 100644
--- a/services/companion/TEST_MAPPING
+++ b/services/companion/TEST_MAPPING
@@ -8,9 +8,7 @@
     },
     {
       "name": "CtsCompanionDeviceManagerNoCompanionServicesTestCases"
-    }
-  ],
-  "postsubmit": [
+    },
     {
       "name": "CtsCompanionDeviceManagerMultiProcessTestCases"
     }
diff --git a/services/companion/java/com/android/server/companion/virtual/TEST_MAPPING b/services/companion/java/com/android/server/companion/virtual/TEST_MAPPING
index 5a548fd..82ab098 100644
--- a/services/companion/java/com/android/server/companion/virtual/TEST_MAPPING
+++ b/services/companion/java/com/android/server/companion/virtual/TEST_MAPPING
@@ -33,6 +33,14 @@
       ]
     },
     {
+      "name": "CtsVirtualDevicesCameraTestCases",
+      "options": [
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
+    },
+    {
       "name": "CtsHardwareTestCases",
       "options": [
         {
@@ -54,11 +62,33 @@
           "exclude-annotation": "android.support.test.filters.FlakyTest"
         }
       ]
+    }
+  ],
+  "postsubmit": [
+    {
+      "name": "CtsMediaAudioTestCases",
+      "options": [
+        {
+          "include-filter": "android.media.audio.cts.AudioFocusWithVdmTest"
+        },
+        {
+          "exclude-annotation": "androidx.test.filters.FlakyTest"
+        }
+      ]
     },
     {
-      "name": "CtsVirtualDevicesCameraTestCases",
+      "name": "CtsPermissionTestCases",
       "options": [
         {
+          "include-filter": "android.permissionmultidevice.cts.DeviceAwarePermissionGrantTest"
+        },
+        {
+          "include-filter": "android.permission.cts.DevicePermissionsTest"
+        },
+        {
+          "include-filter": "android.permission.cts.PermissionUpdateListenerTest"
+        },
+        {
           "exclude-annotation": "androidx.test.filters.FlakyTest"
         }
       ]
diff --git a/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java b/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
index 44d0132..fff283d 100644
--- a/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
+++ b/services/core/java/com/android/server/SensitiveContentProtectionManagerService.java
@@ -16,8 +16,8 @@
 
 package com.android.server;
 
+import static android.permission.flags.Flags.sensitiveNotificationAppProtection;
 import static android.provider.Settings.Global.DISABLE_SCREEN_SHARE_PROTECTIONS_FOR_APPS_AND_NOTIFICATIONS;
-
 import static com.android.internal.util.Preconditions.checkNotNull;
 
 import android.annotation.NonNull;
@@ -50,8 +50,12 @@
 public final class SensitiveContentProtectionManagerService extends SystemService {
     private static final String TAG = "SensitiveContentProtect";
     private static final boolean DEBUG = false;
+    private static final boolean sNotificationProtectionEnabled =
+            sensitiveNotificationAppProtection();
 
-    @VisibleForTesting NotificationListener mNotificationListener;
+    @VisibleForTesting
+    @Nullable
+    NotificationListener mNotificationListener;
     private @Nullable MediaProjectionManager mProjectionManager;
     private @Nullable WindowManagerInternal mWindowManager;
 
@@ -88,7 +92,9 @@
 
     public SensitiveContentProtectionManagerService(@NonNull Context context) {
         super(context);
-        mNotificationListener = new NotificationListener();
+        if (sNotificationProtectionEnabled) {
+            mNotificationListener = new NotificationListener();
+        }
     }
 
     @Override
@@ -120,13 +126,15 @@
         //  handler, delegate, and binder death recipient
         mProjectionManager.addCallback(mProjectionCallback, getContext().getMainThreadHandler());
 
-        try {
-            mNotificationListener.registerAsSystemService(
-                    getContext(),
-                    new ComponentName(getContext(), NotificationListener.class),
-                    UserHandle.USER_ALL);
-        } catch (RemoteException e) {
-            // Intra-process call, should never happen.
+        if (sNotificationProtectionEnabled) {
+            try {
+                mNotificationListener.registerAsSystemService(
+                        getContext(),
+                        new ComponentName(getContext(), NotificationListener.class),
+                        UserHandle.USER_ALL);
+            } catch (RemoteException e) {
+                // Intra-process call, should never happen.
+            }
         }
     }
 
@@ -136,11 +144,12 @@
         if (mProjectionManager != null) {
             mProjectionManager.removeCallback(mProjectionCallback);
         }
-
-        try {
-            mNotificationListener.unregisterAsSystemService();
-        } catch (RemoteException e) {
-            // Intra-process call, should never happen.
+        if (sNotificationProtectionEnabled) {
+            try {
+                mNotificationListener.unregisterAsSystemService();
+            } catch (RemoteException e) {
+                // Intra-process call, should never happen.
+            }
         }
 
         if (mWindowManager != null) {
@@ -160,7 +169,9 @@
 
         synchronized (mSensitiveContentProtectionLock) {
             mProjectionActive = true;
-            updateAppsThatShouldBlockScreenCapture();
+            if (sNotificationProtectionEnabled) {
+                updateAppsThatShouldBlockScreenCapture();
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/SystemConfig.java b/services/core/java/com/android/server/SystemConfig.java
index a341b4a..2e14abb 100644
--- a/services/core/java/com/android/server/SystemConfig.java
+++ b/services/core/java/com/android/server/SystemConfig.java
@@ -263,6 +263,10 @@
     // location settings are off, for emergency purposes, as read from the configuration files.
     final ArrayMap<String, ArraySet<String>> mAllowIgnoreLocationSettings = new ArrayMap<>();
 
+    // These are the packages that are allow-listed to be able to access camera when
+    // the camera privacy state is for driver assistance apps only.
+    final ArrayMap<String, Boolean> mAllowlistCameraPrivacy = new ArrayMap<>();
+
     // These are the action strings of broadcasts which are whitelisted to
     // be delivered anonymously even to apps which target O+.
     final ArraySet<String> mAllowImplicitBroadcasts = new ArraySet<>();
@@ -483,6 +487,10 @@
         return mAllowedAssociations;
     }
 
+    public ArrayMap<String, Boolean> getCameraPrivacyAllowlist() {
+        return mAllowlistCameraPrivacy;
+    }
+
     public ArraySet<String> getBugreportWhitelistedPackages() {
         return mBugreportWhitelistedPackages;
     }
@@ -1062,6 +1070,22 @@
                         }
                         XmlUtils.skipCurrentTag(parser);
                     } break;
+                    case "camera-privacy-allowlisted-app" : {
+                        if (allowOverrideAppRestrictions) {
+                            String pkgname = parser.getAttributeValue(null, "package");
+                            boolean isMandatory = XmlUtils.readBooleanAttribute(
+                                    parser, "mandatory", false);
+                            if (pkgname == null) {
+                                Slog.w(TAG, "<" + name + "> without package in "
+                                        + permFile + " at " + parser.getPositionDescription());
+                            } else {
+                                mAllowlistCameraPrivacy.put(pkgname, isMandatory);
+                            }
+                        } else {
+                            logNotAllowedInPartition(name, permFile, parser);
+                        }
+                        XmlUtils.skipCurrentTag(parser);
+                    } break;
                     case "allow-ignore-location-settings": {
                         if (allowOverrideAppRestrictions) {
                             String pkgname = parser.getAttributeValue(null, "package");
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index 82d9377..05010f88 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -1986,9 +1986,11 @@
         // the status bar should be totally disabled, the calls below will
         // have no effect until the device is unlocked.
         if (mStatusBarManager != null) {
-            mStatusBarManager.disable(mCarModeEnabled
-                    ? StatusBarManager.DISABLE_NOTIFICATION_TICKER
-                    : StatusBarManager.DISABLE_NONE);
+            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+            if (mCarModeEnabled) {
+                info.setNotificationTickerDisabled(true);
+            }
+            mStatusBarManager.requestDisabledComponent(info, "adjustStatusBarCarModeLocked");
         }
 
         if (mNotificationManager == null) {
diff --git a/services/core/java/com/android/server/adaptiveauth/AdaptiveAuthService.java b/services/core/java/com/android/server/adaptiveauth/AdaptiveAuthService.java
new file mode 100644
index 0000000..3312be2
--- /dev/null
+++ b/services/core/java/com/android/server/adaptiveauth/AdaptiveAuthService.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2024 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 com.android.server.adaptiveauth;
+
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.hardware.biometrics.AuthenticationStateListener;
+import android.hardware.biometrics.BiometricManager;
+import android.hardware.biometrics.BiometricSourceType;
+import android.os.Build;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.SystemClock;
+import android.util.Log;
+import android.util.Slog;
+import android.util.SparseIntArray;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockSettingsInternal;
+import com.android.internal.widget.LockSettingsStateListener;
+import com.android.server.LocalServices;
+import com.android.server.SystemService;
+import com.android.server.pm.UserManagerInternal;
+import com.android.server.wm.WindowManagerInternal;
+
+import java.util.Objects;
+
+/**
+ * @hide
+ */
+public class AdaptiveAuthService extends SystemService {
+    private static final String TAG = "AdaptiveAuthService";
+    private static final boolean DEBUG = Build.IS_DEBUGGABLE && Log.isLoggable(TAG, Log.DEBUG);
+
+    @VisibleForTesting
+    static final int MAX_ALLOWED_FAILED_AUTH_ATTEMPTS = 5;
+    private static final int MSG_REPORT_PRIMARY_AUTH_ATTEMPT = 1;
+    private static final int MSG_REPORT_BIOMETRIC_AUTH_ATTEMPT = 2;
+    private static final int AUTH_SUCCESS = 1;
+    private static final int AUTH_FAILURE = 0;
+
+    private final LockPatternUtils mLockPatternUtils;
+    private final LockSettingsInternal mLockSettings;
+    private final BiometricManager mBiometricManager;
+    private final KeyguardManager mKeyguardManager;
+    private final PowerManager mPowerManager;
+    private final WindowManagerInternal mWindowManager;
+    private final UserManagerInternal mUserManager;
+    @VisibleForTesting
+    final SparseIntArray mFailedAttemptsForUser = new SparseIntArray();
+
+    public AdaptiveAuthService(Context context) {
+        this(context, new LockPatternUtils(context));
+    }
+
+    @VisibleForTesting
+    public AdaptiveAuthService(Context context, LockPatternUtils lockPatternUtils) {
+        super(context);
+        mLockPatternUtils = lockPatternUtils;
+        mLockSettings = Objects.requireNonNull(
+                LocalServices.getService(LockSettingsInternal.class));
+        mBiometricManager = Objects.requireNonNull(
+                context.getSystemService(BiometricManager.class));
+        mKeyguardManager = Objects.requireNonNull(context.getSystemService(KeyguardManager.class));
+        mPowerManager = Objects.requireNonNull(context.getSystemService(PowerManager.class));
+        mWindowManager = Objects.requireNonNull(
+                LocalServices.getService(WindowManagerInternal.class));
+        mUserManager = Objects.requireNonNull(LocalServices.getService(UserManagerInternal.class));
+    }
+
+    @Override
+    public void onStart() {}
+
+    @Override
+    public void onBootPhase(int phase) {
+        if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
+            init();
+        }
+    }
+
+    @VisibleForTesting
+    void init() {
+        mLockSettings.registerLockSettingsStateListener(mLockSettingsStateListener);
+        mBiometricManager.registerAuthenticationStateListener(mAuthenticationStateListener);
+    }
+
+    private final LockSettingsStateListener mLockSettingsStateListener =
+            new LockSettingsStateListener() {
+                @Override
+                public void onAuthenticationSucceeded(int userId) {
+                    if (DEBUG) {
+                        Slog.d(TAG, "LockSettingsStateListener#onAuthenticationSucceeded");
+                    }
+                    mHandler.obtainMessage(MSG_REPORT_PRIMARY_AUTH_ATTEMPT, AUTH_SUCCESS, userId)
+                            .sendToTarget();
+                }
+
+                @Override
+                public void onAuthenticationFailed(int userId) {
+                    Slog.i(TAG, "LockSettingsStateListener#onAuthenticationFailed");
+                    mHandler.obtainMessage(MSG_REPORT_PRIMARY_AUTH_ATTEMPT, AUTH_FAILURE, userId)
+                            .sendToTarget();
+                }
+            };
+
+    private final AuthenticationStateListener mAuthenticationStateListener =
+            new AuthenticationStateListener.Stub() {
+                @Override
+                public void onAuthenticationStarted(int requestReason) {}
+
+                @Override
+                public void onAuthenticationStopped() {}
+
+                @Override
+                public void onAuthenticationSucceeded(int requestReason, int userId) {
+                    if (DEBUG) {
+                        Slog.d(TAG, "AuthenticationStateListener#onAuthenticationSucceeded");
+                    }
+                    mHandler.obtainMessage(MSG_REPORT_BIOMETRIC_AUTH_ATTEMPT, AUTH_SUCCESS, userId)
+                            .sendToTarget();
+                }
+
+                @Override
+                public void onAuthenticationFailed(int requestReason, int userId) {
+                    Slog.i(TAG, "AuthenticationStateListener#onAuthenticationFailed");
+                    mHandler.obtainMessage(MSG_REPORT_BIOMETRIC_AUTH_ATTEMPT, AUTH_FAILURE, userId)
+                            .sendToTarget();
+                }
+
+                @Override
+                public void onAuthenticationAcquired(BiometricSourceType biometricSourceType,
+                        int requestReason, int acquiredInfo) {}
+            };
+
+    private final Handler mHandler = new Handler(Looper.getMainLooper()) {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_REPORT_PRIMARY_AUTH_ATTEMPT:
+                    handleReportPrimaryAuthAttempt(msg.arg1 != AUTH_FAILURE, msg.arg2);
+                    break;
+                case MSG_REPORT_BIOMETRIC_AUTH_ATTEMPT:
+                    handleReportBiometricAuthAttempt(msg.arg1 != AUTH_FAILURE, msg.arg2);
+                    break;
+            }
+        }
+    };
+
+    private void handleReportPrimaryAuthAttempt(boolean success, int userId) {
+        if (DEBUG) {
+            Slog.d(TAG, "handleReportPrimaryAuthAttempt: success=" + success
+                    + ", userId=" + userId);
+        }
+        reportAuthAttempt(success, userId);
+    }
+
+    private void handleReportBiometricAuthAttempt(boolean success, int userId) {
+        if (DEBUG) {
+            Slog.d(TAG, "handleReportBiometricAuthAttempt: success=" + success
+                    + ", userId=" + userId);
+        }
+        reportAuthAttempt(success, userId);
+    }
+
+    private void reportAuthAttempt(boolean success, int userId) {
+        if (success) {
+            // Deleting the entry effectively resets the counter of failed attempts for the user
+            mFailedAttemptsForUser.delete(userId);
+            return;
+        }
+
+        final int numFailedAttempts = mFailedAttemptsForUser.get(userId, 0) + 1;
+        Slog.i(TAG, "reportAuthAttempt: numFailedAttempts=" + numFailedAttempts
+                + ", userId=" + userId);
+        mFailedAttemptsForUser.put(userId, numFailedAttempts);
+
+        // Don't lock again if the device is already locked and if Keyguard is already showing and
+        // isn't trivially dismissible
+        if (mKeyguardManager.isDeviceLocked(userId) && mKeyguardManager.isKeyguardLocked()) {
+            Slog.d(TAG, "Not locking the device because the device is already locked.");
+            return;
+        }
+
+        if (numFailedAttempts < MAX_ALLOWED_FAILED_AUTH_ATTEMPTS) {
+            Slog.d(TAG, "Not locking the device because the number of failed attempts is below"
+                    + " the threshold.");
+            return;
+        }
+
+        //TODO: additionally consider the trust signal before locking device
+        lockDevice(userId);
+    }
+
+    /**
+     * Locks the device and requires primary auth or biometric auth for unlocking
+     */
+    private void lockDevice(int userId) {
+        // Require either primary auth or biometric auth to unlock the device again. Keyguard and
+        // bouncer will also check the StrongAuthFlag for the user to display correct strings for
+        // explaining why the device is locked
+        mLockPatternUtils.requireStrongAuth(SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST, userId);
+
+        // If userId is a profile that has a different parent userId (regardless of its profile
+        // type, or whether it's a profile with unified challenges or not), its parent userId that
+        // owns the Keyguard will also be locked
+        final int parentUserId = mUserManager.getProfileParentId(userId);
+        Slog.i(TAG, "lockDevice: userId=" + userId + ", parentUserId=" + parentUserId);
+        if (parentUserId != userId) {
+            mLockPatternUtils.requireStrongAuth(SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST,
+                    parentUserId);
+        }
+
+        // Power off the display
+        mPowerManager.goToSleep(SystemClock.uptimeMillis());
+
+        // Lock the device
+        mWindowManager.lockNow();
+    }
+}
diff --git a/services/core/java/com/android/server/am/AppStartInfoTracker.java b/services/core/java/com/android/server/am/AppStartInfoTracker.java
index c857235..1dc384d 100644
--- a/services/core/java/com/android/server/am/AppStartInfoTracker.java
+++ b/services/core/java/com/android/server/am/AppStartInfoTracker.java
@@ -383,6 +383,11 @@
         start.setDefiningUid(definingUid > 0 ? definingUid : app.info.uid);
         start.setProcessName(app.processName);
         start.setPackageName(app.info.packageName);
+        if (android.content.pm.Flags.stayStopped()) {
+            // TODO: Verify this is created at the right time to have the correct force-stopped
+            // state in the ProcessRecord. Also use the WindowProcessRecord if activity.
+            start.setForceStopped(app.wasForceStopped());
+        }
     }
 
     void reportApplicationOnCreateTimeNanos(ProcessRecord app, long timeNs) {
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index d92a24b..150f406 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -2256,10 +2256,9 @@
                         }
                     }
 
-                    // Check binder errors to frozen processes with a local freezer lock
-                    synchronized (mFreezerLock) {
-                        binderErrorLocked(pids);
-                    }
+                    // Check binder errors to frozen processes
+                    // Freezer lock is not required as we don't perform (un)freeze operations here
+                    binderErrorInternal(pids);
                 } break;
                 default:
                     return;
@@ -2618,7 +2617,7 @@
         mFreezeHandler.sendEmptyMessage(BINDER_ERROR_MSG);
     }
 
-    private void binderErrorLocked(IntArray pids) {
+    private void binderErrorInternal(IntArray pids) {
         // PIDs that run out of async binder buffer when being frozen
         ArraySet<Integer> pidsAsync = (mFreezerBinderAsyncThreshold < 0) ? null : new ArraySet<>();
 
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 7d82f0c..df46e5d 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -19,6 +19,7 @@
 import static android.app.ActivityManager.PROCESS_CAPABILITY_ALL;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_ALL_IMPLICIT;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_BFSL;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
@@ -67,7 +68,10 @@
 import static android.content.Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE;
 import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_CAMERA;
 import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION;
+import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK;
 import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MICROPHONE;
+import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL;
+import static android.media.audio.Flags.foregroundAudioControl;
 import static android.os.Process.SCHED_OTHER;
 import static android.os.Process.THREAD_GROUP_BACKGROUND;
 import static android.os.Process.THREAD_GROUP_DEFAULT;
@@ -2266,6 +2270,15 @@
                             (fgsType & FOREGROUND_SERVICE_TYPE_LOCATION)
                                     != 0 ? PROCESS_CAPABILITY_FOREGROUND_LOCATION : 0;
 
+                    if (foregroundAudioControl()) { // flag check
+                        final int fgsAudioType = FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK
+                                | FOREGROUND_SERVICE_TYPE_CAMERA
+                                | FOREGROUND_SERVICE_TYPE_MICROPHONE
+                                | FOREGROUND_SERVICE_TYPE_PHONE_CALL;
+                        capabilityFromFGS |= (psr.getForegroundServiceTypes() & fgsAudioType) != 0
+                                ? PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL : 0;
+                    }
+
                     final boolean enabled = state.getCachedCompatChange(
                             CACHED_COMPAT_CHANGE_CAMERA_MICROPHONE_CAPABILITY);
                     if (enabled) {
diff --git a/services/core/java/com/android/server/am/OomAdjusterModernImpl.java b/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
index f85b03e..1bf779a 100644
--- a/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
+++ b/services/core/java/com/android/server/am/OomAdjusterModernImpl.java
@@ -722,14 +722,8 @@
         performNewUpdateOomAdjLSP(oomAdjReason, topApp, targetProcesses, activeUids,
                 fullUpdate, now, UNKNOWN_ADJ);
 
-        if (fullUpdate) {
-            assignCachedAdjIfNecessary(mProcessList.getLruProcessesLOSP());
-        } else {
-            activeProcesses.clear();
-            activeProcesses.addAll(targetProcesses);
-            assignCachedAdjIfNecessary(activeProcesses);
-            activeProcesses.clear();
-        }
+        // TODO: b/319163103 - optimize cache adj assignment to not require the whole lru list.
+        assignCachedAdjIfNecessary(mProcessList.getLruProcessesLOSP());
         postUpdateOomAdjInnerLSP(oomAdjReason, activeUids, now, nowElapsed, oldTime);
         targetProcesses.clear();
 
@@ -996,11 +990,11 @@
                             && service.mState.getMaxAdj() < FOREGROUND_APP_ADJ)
                     || (service.mState.getCurAdj() <= FOREGROUND_APP_ADJ
                             && service.mState.getCurrentSchedulingGroup() > SCHED_GROUP_BACKGROUND
-                            && service.mState.getCurProcState() <= PROCESS_STATE_TOP)) {
+                            && service.mState.getCurProcState() <= PROCESS_STATE_TOP)
+                    || (service.isSdkSandbox && cr.binding.attributedClient != null)) {
                 continue;
             }
 
-
             computeServiceHostOomAdjLSP(cr, service, app, now, topApp, fullUpdate, false, false,
                     oomAdjReason, cachedAdj, false, false);
         }
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index d23d9fb..9883f09 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -1678,7 +1678,11 @@
                 final ArrayList<ConnectionRecord> clist = serviceConnections.valueAt(j);
                 for (int k = clist.size() - 1; k >= 0; k--) {
                     final ConnectionRecord cr = clist.get(k);
-                    consumer.accept(cr.binding.client);
+                    if (isSdkSandbox && cr.binding.attributedClient != null) {
+                        consumer.accept(cr.binding.attributedClient);
+                    } else {
+                        consumer.accept(cr.binding.client);
+                    }
                 }
             }
         }
@@ -1689,25 +1693,5 @@
                 consumer.accept(conn.client);
             }
         }
-        // If this process is a sandbox itself, also add the app on whose behalf
-        // its running
-        if (isSdkSandbox) {
-            for (int is = mServices.numberOfRunningServices() - 1; is >= 0; is--) {
-                ServiceRecord s = mServices.getRunningServiceAt(is);
-                ArrayMap<IBinder, ArrayList<ConnectionRecord>> serviceConnections =
-                        s.getConnections();
-                for (int conni = serviceConnections.size() - 1; conni >= 0; conni--) {
-                    ArrayList<ConnectionRecord> clist = serviceConnections.valueAt(conni);
-                    for (int i = clist.size() - 1; i >= 0; i--) {
-                        ConnectionRecord cr = clist.get(i);
-                        ProcessRecord attributedApp = cr.binding.attributedClient;
-                        if (attributedApp == null || attributedApp == this) {
-                            continue;
-                        }
-                        consumer.accept(attributedApp);
-                    }
-                }
-            }
-        }
     }
 }
diff --git a/services/core/java/com/android/server/am/ProcessServiceRecord.java b/services/core/java/com/android/server/am/ProcessServiceRecord.java
index 57d233e..562beaf 100644
--- a/services/core/java/com/android/server/am/ProcessServiceRecord.java
+++ b/services/core/java/com/android/server/am/ProcessServiceRecord.java
@@ -205,10 +205,10 @@
     }
 
     /**
-     * Returns the FGS typps, but it doesn't tell if the types include "NONE" or not, so
-     * do not use it outside of this class.
+     * Returns the FGS types, but it doesn't tell if the types include "NONE" or not, use
+     * {@link #hasForegroundServices()}
      */
-    private int getForegroundServiceTypes() {
+    int getForegroundServiceTypes() {
         return mHasForegroundServices ? mFgServiceTypes : 0;
     }
 
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index 55ac4cf..34ba7f0 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -97,6 +97,7 @@
 import android.os.IRemoteCallback;
 import android.os.IUserManager;
 import android.os.Message;
+import android.os.PowerManagerInternal;
 import android.os.PowerWhitelistManager;
 import android.os.Process;
 import android.os.RemoteCallbackList;
@@ -1934,9 +1935,12 @@
     }
 
     /**
-     * Start user, if its not already running, and bring it to foreground.
+     * Start user, if it's not already running, and bring it to foreground.
      */
     void startUserInForeground(@UserIdInt int targetUserId) {
+        if (android.multiuser.Flags.setPowerModeDuringUserSwitch()) {
+            mInjector.setPerformancePowerMode(true);
+        }
         boolean success = startUser(targetUserId, USER_START_MODE_FOREGROUND);
         if (!success) {
             mInjector.getWindowManager().setSwitchingUser(false);
@@ -2146,6 +2150,9 @@
     }
 
     private void endUserSwitch() {
+        if (android.multiuser.Flags.setPowerModeDuringUserSwitch()) {
+            mInjector.setPerformancePowerMode(false);
+        }
         final int nextUserId;
         synchronized (mLock) {
             nextUserId = ObjectUtils.getOrElse(mPendingTargetUserIds.poll(), UserHandle.USER_NULL);
@@ -3535,6 +3542,7 @@
         private final ActivityManagerService mService;
         private UserManagerService mUserManager;
         private UserManagerInternal mUserManagerInternal;
+        private PowerManagerInternal mPowerManagerInternal;
         private Handler mHandler;
         private final Object mUserSwitchingDialogLock = new Object();
         @GuardedBy("mUserSwitchingDialogLock")
@@ -3636,6 +3644,13 @@
             return mUserManagerInternal;
         }
 
+        PowerManagerInternal getPowerManagerInternal() {
+            if (mPowerManagerInternal == null) {
+                mPowerManagerInternal = LocalServices.getService(PowerManagerInternal.class);
+            }
+            return mPowerManagerInternal;
+        }
+
         KeyguardManager getKeyguardManager() {
             return mService.mContext.getSystemService(KeyguardManager.class);
         }
@@ -3829,6 +3844,12 @@
             getSystemServiceManager().onUserStarting(TimingsTraceAndSlog.newAsyncLog(), userId);
         }
 
+        void setPerformancePowerMode(boolean enabled) {
+            Slogf.i(TAG, "Setting power mode MODE_FIXED_PERFORMANCE to " + enabled);
+            getPowerManagerInternal().setPowerMode(
+                    PowerManagerInternal.MODE_FIXED_PERFORMANCE, enabled);
+        }
+
         void onSystemUserVisibilityChanged(boolean visible) {
             getUserManagerInternal().onSystemUserVisibilityChanged(visible);
         }
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 5c95d43..fca1199 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -106,6 +106,7 @@
 import android.content.pm.PermissionInfo;
 import android.content.pm.UserInfo;
 import android.database.ContentObserver;
+import android.hardware.SensorPrivacyManager;
 import android.hardware.camera2.CameraDevice.CAMERA_AUDIO_RESTRICTION;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -151,6 +152,7 @@
 import com.android.internal.app.IAppOpsService;
 import com.android.internal.app.IAppOpsStartedCallback;
 import com.android.internal.app.MessageSamplingConfig;
+import com.android.internal.camera.flags.Flags;
 import com.android.internal.compat.IPlatformCompat;
 import com.android.internal.os.Clock;
 import com.android.internal.pm.pkg.component.ParsedAttribution;
@@ -164,7 +166,6 @@
 import com.android.server.LocalManagerRegistry;
 import com.android.server.LocalServices;
 import com.android.server.LockGuard;
-import com.android.server.SystemServerInitThreadPool;
 import com.android.server.SystemServiceManager;
 import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
 import com.android.server.pm.PackageList;
@@ -223,6 +224,8 @@
      */
     private static final int CURRENT_VERSION = 1;
 
+    private SensorPrivacyManager mSensorPrivacyManager;
+
     // Write at most every 30 minutes.
     static final long WRITE_DELAY = DEBUG ? 1000 : 30*60*1000;
 
@@ -655,11 +658,11 @@
             return attributedOp;
         }
 
-        @NonNull OpEntry createEntryLocked() {
+        @NonNull OpEntry createEntryLocked(String persistentDeviceId) {
             // TODO(b/308201969): Update this method when we introduce disk persistence of events
             // for accesses on external devices.
             final ArrayMap<String, AttributedOp> attributedOps = mDeviceAttributedOps.get(
-                    PERSISTENT_DEVICE_ID_DEFAULT);
+                    persistentDeviceId);
             final ArrayMap<String, AppOpsManager.AttributedOpEntry> attributionEntries =
                     new ArrayMap<>(attributedOps.size());
             for (int i = 0; i < attributedOps.size(); i++) {
@@ -1034,7 +1037,7 @@
                                 new Ops(pkgName, uidState));
                     }
 
-                    createSandboxUidStateIfNotExistsForAppLocked(uid);
+                    createSandboxUidStateIfNotExistsForAppLocked(uid, null);
                 }
             } else if (action.equals(ACTION_PACKAGE_REMOVED) && !intent.hasExtra(EXTRA_REPLACING)) {
                 synchronized (AppOpsService.this) {
@@ -1046,69 +1049,8 @@
                     return;
                 }
 
-                ArrayMap<String, String> dstAttributionTags = new ArrayMap<>();
-                ArraySet<String> attributionTags = new ArraySet<>();
-                attributionTags.add(null);
-                if (pkg.getAttributions() != null) {
-                    int numAttributions = pkg.getAttributions().size();
-                    for (int attributionNum = 0; attributionNum < numAttributions;
-                            attributionNum++) {
-                        ParsedAttribution attribution = pkg.getAttributions().get(attributionNum);
-                        attributionTags.add(attribution.getTag());
-
-                        int numInheritFrom = attribution.getInheritFrom().size();
-                        for (int inheritFromNum = 0; inheritFromNum < numInheritFrom;
-                                inheritFromNum++) {
-                            dstAttributionTags.put(attribution.getInheritFrom().get(inheritFromNum),
-                                    attribution.getTag());
-                        }
-                    }
-                }
-
                 synchronized (AppOpsService.this) {
-                    UidState uidState = mUidStates.get(uid);
-                    if (uidState == null) {
-                        return;
-                    }
-
-                    Ops ops = uidState.pkgOps.get(pkgName);
-                    if (ops == null) {
-                        return;
-                    }
-
-                    // Reset cached package properties to re-initialize when needed
-                    ops.bypass = null;
-                    ops.knownAttributionTags.clear();
-
-                    // Merge data collected for removed attributions into their successor
-                    // attributions
-                    int numOps = ops.size();
-                    for (int opNum = 0; opNum < numOps; opNum++) {
-                        Op op = ops.valueAt(opNum);
-                        for (int deviceIndex = op.mDeviceAttributedOps.size() - 1; deviceIndex >= 0;
-                                deviceIndex--) {
-                            ArrayMap<String, AttributedOp> attributedOps =
-                                    op.mDeviceAttributedOps.valueAt(deviceIndex);
-                            for (int tagIndex = attributedOps.size() - 1; tagIndex >= 0;
-                                    tagIndex--) {
-                                String tag = attributedOps.keyAt(tagIndex);
-                                if (attributionTags.contains(tag)) {
-                                    // attribution still exist after upgrade
-                                    continue;
-                                }
-
-                                String newAttributionTag = dstAttributionTags.get(tag);
-
-                                AttributedOp newAttributedOp = op.getOrCreateAttribution(op,
-                                        newAttributionTag,
-                                        op.mDeviceAttributedOps.keyAt(deviceIndex));
-                                newAttributedOp.add(attributedOps.get(tag));
-                                attributedOps.remove(tag);
-
-                                scheduleFastWriteLocked();
-                            }
-                        }
-                    }
+                    refreshAttributionsLocked(pkg, uid);
                 }
             }
         }
@@ -1132,41 +1074,6 @@
         mContext.registerReceiverAsUser(mOnPackageUpdatedReceiver, UserHandle.ALL,
                 packageUpdateFilter, null, null);
 
-        synchronized (this) {
-            for (int uidNum = mUidStates.size() - 1; uidNum >= 0; uidNum--) {
-                int uid = mUidStates.keyAt(uidNum);
-                UidState uidState = mUidStates.valueAt(uidNum);
-
-                String[] pkgsInUid = getPackagesForUid(uidState.uid);
-                if (ArrayUtils.isEmpty(pkgsInUid) && uid >= Process.FIRST_APPLICATION_UID) {
-                    uidState.clear();
-                    mUidStates.removeAt(uidNum);
-                    scheduleFastWriteLocked();
-                    continue;
-                }
-
-                ArrayMap<String, Ops> pkgs = uidState.pkgOps;
-
-                int numPkgs = pkgs.size();
-                for (int pkgNum = 0; pkgNum < numPkgs; pkgNum++) {
-                    String pkg = pkgs.keyAt(pkgNum);
-
-                    String action;
-                    if (!ArrayUtils.contains(pkgsInUid, pkg)) {
-                        action = ACTION_PACKAGE_REMOVED;
-                    } else {
-                        action = Intent.ACTION_PACKAGE_REPLACED;
-                    }
-
-                    SystemServerInitThreadPool.submit(
-                            () -> mOnPackageUpdatedReceiver.onReceive(mContext, new Intent(action)
-                                    .setData(Uri.fromParts("package", pkg, null))
-                                    .putExtra(Intent.EXTRA_UID, uid)),
-                            "Update app-ops uidState in case package " + pkg + " changed");
-                }
-            }
-        }
-
         prepareInternalCallbacks();
 
         final IntentFilter packageSuspendFilter = new IntentFilter();
@@ -1231,6 +1138,7 @@
                         }
                     }
                 });
+        mSensorPrivacyManager = SensorPrivacyManager.getInstance(mContext);
     }
 
     @VisibleForTesting
@@ -1253,20 +1161,27 @@
     void initializeUidStates() {
         UserManagerInternal umi = getUserManagerInternal();
         synchronized (this) {
+            SparseBooleanArray knownUids = new SparseBooleanArray();
+
+            for (int uid : NON_PACKAGE_UIDS) {
+                if (!mUidStates.contains(uid)) {
+                    mUidStates.put(uid, new UidState(uid));
+                }
+                knownUids.put(uid, true);
+            }
+
             int[] userIds = umi.getUserIds();
             try (PackageManagerLocal.UnfilteredSnapshot snapshot =
                          getPackageManagerLocal().withUnfilteredSnapshot()) {
                 Map<String, PackageState> packageStates = snapshot.getPackageStates();
                 for (int i = 0; i < userIds.length; i++) {
                     int userId = userIds[i];
-                    initializeUserUidStatesLocked(userId, packageStates);
+                    initializeUserUidStatesLocked(userId, packageStates, knownUids);
                 }
-            }
 
-            for (int uid : NON_PACKAGE_UIDS) {
-                mUidStates.put(uid, new UidState(uid));
+                trimUidStatesLocked(knownUids, packageStates);
+                mUidStatesInitialized = true;
             }
-            mUidStatesInitialized = true;
         }
     }
 
@@ -1274,26 +1189,34 @@
         synchronized (this) {
             try (PackageManagerLocal.UnfilteredSnapshot snapshot =
                     getPackageManagerLocal().withUnfilteredSnapshot()) {
-                initializeUserUidStatesLocked(userId, snapshot.getPackageStates());
+                initializeUserUidStatesLocked(userId, snapshot.getPackageStates(), null);
             }
         }
     }
 
     private void initializeUserUidStatesLocked(int userId, Map<String,
-            PackageState> packageStates) {
+            PackageState> packageStates, SparseBooleanArray knownUids) {
         for (Map.Entry<String, PackageState> entry : packageStates.entrySet()) {
-            int appId = entry.getValue().getAppId();
+            PackageState packageState = entry.getValue();
+            if (packageState.isApex()) {
+                continue;
+            }
+            int appId = packageState.getAppId();
             String packageName = entry.getKey();
 
-            initializePackageUidStateLocked(userId, appId, packageName);
+            initializePackageUidStateLocked(userId, appId, packageName, knownUids);
         }
     }
 
     /*
       Be careful not to clear any existing data; only want to add objects that don't already exist.
      */
-    private void initializePackageUidStateLocked(int userId, int appId, String packageName) {
+    private void initializePackageUidStateLocked(int userId, int appId, String packageName,
+            SparseBooleanArray knownUids) {
         int uid = UserHandle.getUid(userId, appId);
+        if (knownUids != null) {
+            knownUids.put(uid, true);
+        }
         UidState uidState = getUidStateLocked(uid, true);
         Ops ops = uidState.pkgOps.get(packageName);
         if (ops == null) {
@@ -1311,7 +1234,105 @@
             }
         }
 
-        createSandboxUidStateIfNotExistsForAppLocked(uid);
+        createSandboxUidStateIfNotExistsForAppLocked(uid, knownUids);
+    }
+
+    private void trimUidStatesLocked(SparseBooleanArray knownUids,
+            Map<String, PackageState> packageStates) {
+        synchronized (this) {
+            // Remove what may have been added during persistence parsing
+            for (int i = mUidStates.size() - 1; i >= 0; i--) {
+                int uid = mUidStates.keyAt(i);
+                if (knownUids.get(uid, false)) {
+                    if (uid >= Process.FIRST_APPLICATION_UID) {
+                        ArrayMap<String, Ops> pkgOps = mUidStates.valueAt(i).pkgOps;
+                        for (int j = 0; j < pkgOps.size(); j++) {
+                            String pkgName = pkgOps.keyAt(j);
+                            if (!packageStates.containsKey(pkgName)) {
+                                pkgOps.removeAt(j);
+                                continue;
+                            }
+                            AndroidPackage pkg = packageStates.get(pkgName).getAndroidPackage();
+                            if (pkg != null) {
+                                refreshAttributionsLocked(pkg, uid);
+                            }
+                        }
+                        if (pkgOps.isEmpty()) {
+                            mUidStates.remove(i);
+                        }
+                    }
+                } else {
+                    mUidStates.removeAt(i);
+                }
+            }
+        }
+    }
+
+    @GuardedBy("this")
+    private void refreshAttributionsLocked(AndroidPackage pkg, int uid) {
+        String pkgName = pkg.getPackageName();
+        ArrayMap<String, String> dstAttributionTags = new ArrayMap<>();
+        ArraySet<String> attributionTags = new ArraySet<>();
+        attributionTags.add(null);
+        if (pkg.getAttributions() != null) {
+            int numAttributions = pkg.getAttributions().size();
+            for (int attributionNum = 0; attributionNum < numAttributions;
+                    attributionNum++) {
+                ParsedAttribution attribution = pkg.getAttributions().get(attributionNum);
+                attributionTags.add(attribution.getTag());
+
+                int numInheritFrom = attribution.getInheritFrom().size();
+                for (int inheritFromNum = 0; inheritFromNum < numInheritFrom;
+                        inheritFromNum++) {
+                    dstAttributionTags.put(attribution.getInheritFrom().get(inheritFromNum),
+                            attribution.getTag());
+                }
+            }
+        }
+
+        UidState uidState = mUidStates.get(uid);
+        if (uidState == null) {
+            return;
+        }
+
+        Ops ops = uidState.pkgOps.get(pkgName);
+        if (ops == null) {
+            return;
+        }
+
+        // Reset cached package properties to re-initialize when needed
+        ops.bypass = null;
+        ops.knownAttributionTags.clear();
+
+        // Merge data collected for removed attributions into their successor
+        // attributions
+        int numOps = ops.size();
+        for (int opNum = 0; opNum < numOps; opNum++) {
+            Op op = ops.valueAt(opNum);
+            for (int deviceIndex = op.mDeviceAttributedOps.size() - 1; deviceIndex >= 0;
+                    deviceIndex--) {
+                ArrayMap<String, AttributedOp> attributedOps =
+                        op.mDeviceAttributedOps.valueAt(deviceIndex);
+                for (int tagIndex = attributedOps.size() - 1; tagIndex >= 0;
+                        tagIndex--) {
+                    String tag = attributedOps.keyAt(tagIndex);
+                    if (attributionTags.contains(tag)) {
+                        // attribution still exist after upgrade
+                        continue;
+                    }
+
+                    String newAttributionTag = dstAttributionTags.get(tag);
+
+                    AttributedOp newAttributedOp = op.getOrCreateAttribution(op,
+                            newAttributionTag,
+                            op.mDeviceAttributedOps.keyAt(deviceIndex));
+                    newAttributedOp.add(attributedOps.get(tag));
+                    attributedOps.remove(tag);
+
+                    scheduleFastWriteLocked();
+                }
+            }
+        }
     }
 
     /**
@@ -1529,13 +1550,14 @@
         mHistoricalRegistry.shutdown();
     }
 
-    private ArrayList<AppOpsManager.OpEntry> collectOps(Ops pkgOps, int[] ops) {
+    private ArrayList<AppOpsManager.OpEntry> collectOps(Ops pkgOps, int[] ops,
+            String persistentDeviceId) {
         ArrayList<AppOpsManager.OpEntry> resOps = null;
         if (ops == null) {
             resOps = new ArrayList<>();
             for (int j=0; j<pkgOps.size(); j++) {
                 Op curOp = pkgOps.valueAt(j);
-                resOps.add(getOpEntryForResult(curOp));
+                resOps.add(getOpEntryForResult(curOp, persistentDeviceId));
             }
         } else {
             for (int j=0; j<ops.length; j++) {
@@ -1544,7 +1566,7 @@
                     if (resOps == null) {
                         resOps = new ArrayList<>();
                     }
-                    resOps.add(getOpEntryForResult(curOp));
+                    resOps.add(getOpEntryForResult(curOp, persistentDeviceId));
                 }
             }
         }
@@ -1588,16 +1610,23 @@
         return resOps;
     }
 
-    private static @NonNull OpEntry getOpEntryForResult(@NonNull Op op) {
-        return op.createEntryLocked();
+    private static @NonNull OpEntry getOpEntryForResult(@NonNull Op op, String persistentDeviceId) {
+        return op.createEntryLocked(persistentDeviceId);
     }
 
     @Override
     public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) {
+        return getPackagesForOpsForDevice(ops, PERSISTENT_DEVICE_ID_DEFAULT);
+    }
+
+    @Override
+    public List<AppOpsManager.PackageOps> getPackagesForOpsForDevice(int[] ops,
+            @NonNull String persistentDeviceId) {
         final int callingUid = Binder.getCallingUid();
         final boolean hasAllPackageAccess = mContext.checkPermission(
                 Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(),
                 Binder.getCallingUid(), null) == PackageManager.PERMISSION_GRANTED;
+
         ArrayList<AppOpsManager.PackageOps> res = null;
         synchronized (this) {
             final int uidStateCount = mUidStates.size();
@@ -1606,21 +1635,24 @@
                 if (uidState.pkgOps.isEmpty()) {
                     continue;
                 }
+                // Caller can always see their packages and with a permission all.
+                if (!hasAllPackageAccess && callingUid != uidState.uid) {
+                    continue;
+                }
+
                 ArrayMap<String, Ops> packages = uidState.pkgOps;
                 final int packageCount = packages.size();
                 for (int j = 0; j < packageCount; j++) {
                     Ops pkgOps = packages.valueAt(j);
-                    ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops);
+                    ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops,
+                            persistentDeviceId);
                     if (resOps != null) {
                         if (res == null) {
                             res = new ArrayList<>();
                         }
                         AppOpsManager.PackageOps resPackage = new AppOpsManager.PackageOps(
                                 pkgOps.packageName, pkgOps.uidState.uid, resOps);
-                        // Caller can always see their packages and with a permission all.
-                        if (hasAllPackageAccess || callingUid == pkgOps.uidState.uid) {
-                            res.add(resPackage);
-                        }
+                        res.add(resPackage);
                     }
                 }
             }
@@ -1642,7 +1674,8 @@
             if (pkgOps == null) {
                 return null;
             }
-            ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops);
+            ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops,
+                    PERSISTENT_DEVICE_ID_DEFAULT);
             if (resOps == null || resOps.size() == 0) {
                 return null;
             }
@@ -4246,8 +4279,15 @@
         return uidState;
     }
 
-    private void createSandboxUidStateIfNotExistsForAppLocked(int uid) {
+    private void createSandboxUidStateIfNotExistsForAppLocked(int uid,
+            SparseBooleanArray knownUids) {
+        if (UserHandle.getAppId(uid) < Process.FIRST_APPLICATION_UID) {
+            return;
+        }
         final int sandboxUid = Process.toSdkSandboxUid(uid);
+        if (knownUids != null) {
+            knownUids.put(sandboxUid, true);
+        }
         getUidStateLocked(sandboxUid, true);
     }
 
@@ -4642,6 +4682,10 @@
         return pmi.isPackageSuspended(packageName, UserHandle.getUserId(uid));
     }
 
+    private boolean isAutomotive() {
+        return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
+    }
+
     private boolean isOpRestrictedLocked(int uid, int code, String packageName,
             String attributionTag, int virtualDeviceId, @Nullable RestrictionBypass appBypass,
             boolean isCheckOp) {
@@ -4658,6 +4702,13 @@
             }
         }
 
+        if ((code == OP_CAMERA) && isAutomotive()) {
+            if ((Flags.cameraPrivacyAllowlist())
+                    && (mSensorPrivacyManager.isCameraPrivacyEnabled(packageName))) {
+                return true;
+            }
+        }
+
         int userHandle = UserHandle.getUserId(uid);
         restrictionSetCount = mOpUserRestrictions.size();
 
diff --git a/services/core/java/com/android/server/appop/AppOpsUidStateTrackerImpl.java b/services/core/java/com/android/server/appop/AppOpsUidStateTrackerImpl.java
index 23a384f..bc6ef20 100644
--- a/services/core/java/com/android/server/appop/AppOpsUidStateTrackerImpl.java
+++ b/services/core/java/com/android/server/appop/AppOpsUidStateTrackerImpl.java
@@ -16,6 +16,7 @@
 
 package com.android.server.appop;
 
+import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_LOCATION;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
@@ -30,6 +31,7 @@
 import static android.app.AppOpsManager.OP_NONE;
 import static android.app.AppOpsManager.OP_RECEIVE_EXPLICIT_USER_INTERACTION_AUDIO;
 import static android.app.AppOpsManager.OP_RECORD_AUDIO;
+import static android.app.AppOpsManager.OP_TAKE_AUDIO_FOCUS;
 import static android.app.AppOpsManager.UID_STATE_FOREGROUND_SERVICE;
 import static android.app.AppOpsManager.UID_STATE_MAX_LAST_NON_RESTRICTED;
 import static android.app.AppOpsManager.UID_STATE_TOP;
@@ -139,7 +141,6 @@
     }
 
     private int evalModeInternal(int uid, int code, int uidState, int uidCapability) {
-
         if (getUidAppWidgetVisible(uid) || mActivityManagerInternal.isPendingTopUid(uid)
                 || mActivityManagerInternal.isTempAllowlistedForFgsWhileInUse(uid)) {
             return MODE_ALLOWED;
@@ -173,6 +174,8 @@
             case OP_RECORD_AUDIO:
             case OP_RECEIVE_EXPLICIT_USER_INTERACTION_AUDIO:
                 return PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
+            case OP_TAKE_AUDIO_FOCUS:
+                return PROCESS_CAPABILITY_FOREGROUND_AUDIO_CONTROL;
             default:
                 return PROCESS_CAPABILITY_NONE;
         }
diff --git a/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java b/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java
index a6d5050..9ed3a99 100644
--- a/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java
+++ b/services/core/java/com/android/server/appop/LegacyAppOpStateParser.java
@@ -49,15 +49,7 @@
      */
     public int readState(AtomicFile file, SparseArray<SparseIntArray> uidModes,
             SparseArray<ArrayMap<String, SparseIntArray>> userPackageModes) {
-        FileInputStream stream;
-        try {
-            stream = file.openRead();
-        } catch (FileNotFoundException e) {
-            Slog.i(TAG, "No existing app ops " + file.getBaseFile() + "; starting empty");
-            return NO_FILE_VERSION;
-        }
-
-        try {
+        try (FileInputStream stream = file.openRead()) {
             TypedXmlPullParser parser = Xml.resolvePullParser(stream);
             int type;
             while ((type = parser.next()) != XmlPullParser.START_TAG
@@ -95,6 +87,9 @@
                 }
             }
             return versionAtBoot;
+        } catch (FileNotFoundException e) {
+            Slog.i(TAG, "No existing app ops " + file.getBaseFile() + "; starting empty");
+            return NO_FILE_VERSION;
         } catch (XmlPullParserException e) {
             throw new RuntimeException(e);
         } catch (IOException e) {
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 53255a0..559a1d6 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -32,7 +32,9 @@
 import static android.media.AudioManager.STREAM_SYSTEM;
 import static android.media.audio.Flags.autoPublicVolumeApiHardening;
 import static android.media.audio.Flags.automaticBtDeviceType;
+import static android.media.audio.Flags.featureSpatialAudioHeadtrackingLowLatency;
 import static android.media.audio.Flags.focusFreezeTestApi;
+import static android.media.audio.Flags.foregroundAudioControl;
 import static android.media.audiopolicy.Flags.enableFadeManagerConfiguration;
 import static android.os.Process.FIRST_APPLICATION_UID;
 import static android.os.Process.INVALID_UID;
@@ -1355,7 +1357,8 @@
 
         mMusicFxHelper = new MusicFxHelper(mContext, mAudioHandler);
 
-        mHardeningEnforcer = new HardeningEnforcer(mContext, isPlatformAutomotive());
+        mHardeningEnforcer = new HardeningEnforcer(mContext, isPlatformAutomotive(), mAppOps,
+                context.getPackageManager());
     }
 
     private void initVolumeStreamStates() {
@@ -4516,15 +4519,20 @@
     }
 
     private void dumpFlags(PrintWriter pw) {
-        pw.println("\nFun with Flags: ");
+
+        pw.println("\nFun with Flags:");
         pw.println("\tandroid.media.audio.autoPublicVolumeApiHardening:"
                 + autoPublicVolumeApiHardening());
+        pw.println("\tandroid.media.audio.Flags.automaticBtDeviceType:"
+                + automaticBtDeviceType());
+        pw.println("\tandroid.media.audio.featureSpatialAudioHeadtrackingLowLatency:"
+                + featureSpatialAudioHeadtrackingLowLatency());
         pw.println("\tandroid.media.audio.focusFreezeTestApi:"
                 + focusFreezeTestApi());
         pw.println("\tcom.android.media.audio.disablePrescaleAbsoluteVolume:"
                 + disablePrescaleAbsoluteVolume());
-        pw.println("\tandroid.media.audiopolicy.enableFadeManagerConfiguration:"
-                + enableFadeManagerConfiguration());
+        pw.println("\tandroid.media.audio.foregroundAudioControl:"
+                + foregroundAudioControl());
     }
 
     private void dumpAudioMode(PrintWriter pw) {
@@ -10170,10 +10178,38 @@
                     .record();
             return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
         }
+
+        // does caller have system privileges to bypass HardeningEnforcer
+        boolean permissionOverridesCheck = false;
+        if ((mContext.checkCallingOrSelfPermission(
+                Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
+                == PackageManager.PERMISSION_GRANTED)
+                || (mContext.checkCallingOrSelfPermission(Manifest.permission.MODIFY_AUDIO_ROUTING)
+                == PackageManager.PERMISSION_GRANTED)) {
+            permissionOverridesCheck = true;
+        } else if (uid < UserHandle.AID_APP_START) {
+            permissionOverridesCheck = true;
+        }
+
+        final long token = Binder.clearCallingIdentity();
+        try {
+            if (!permissionOverridesCheck && mHardeningEnforcer.blockFocusMethod(uid,
+                    HardeningEnforcer.METHOD_AUDIO_MANAGER_REQUEST_AUDIO_FOCUS,
+                    clientId, durationHint, callingPackageName)) {
+                final String reason = "Audio focus request blocked by hardening";
+                Log.w(TAG, reason);
+                mmi.set(MediaMetrics.Property.EARLY_RETURN, reason).record();
+                return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+
         mmi.record();
         return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
                 clientId, callingPackageName, attributionTag, flags, sdk,
-                forceFocusDuckingForAccessibility(aa, durationHint, uid), -1 /*testUid, ignored*/);
+                forceFocusDuckingForAccessibility(aa, durationHint, uid), -1 /*testUid, ignored*/,
+                permissionOverridesCheck);
     }
 
     /** see {@link AudioManager#requestAudioFocusForTest(AudioFocusRequest, String, int, int)} */
@@ -10190,7 +10226,7 @@
         }
         return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
                 clientId, callingPackageName, null, flags,
-                sdk, false /*forceDuck*/, fakeUid);
+                sdk, false /*forceDuck*/, fakeUid, true /*permissionOverridesCheck*/);
     }
 
     public int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, AudioAttributes aa,
@@ -11634,6 +11670,7 @@
             pw.println("\nMessage handler is null");
         }
         dumpFlags(pw);
+        mHardeningEnforcer.dump(pw);
         mMediaFocusControl.dump(pw);
         dumpStreamStates(pw);
         dumpVolumeGroups(pw);
diff --git a/services/core/java/com/android/server/audio/HardeningEnforcer.java b/services/core/java/com/android/server/audio/HardeningEnforcer.java
index 4ceb83b2..409ed17 100644
--- a/services/core/java/com/android/server/audio/HardeningEnforcer.java
+++ b/services/core/java/com/android/server/audio/HardeningEnforcer.java
@@ -18,13 +18,21 @@
 import static android.media.audio.Flags.autoPublicVolumeApiHardening;
 
 import android.Manifest;
+import android.annotation.NonNull;
+import android.app.ActivityManager;
+import android.app.AppOpsManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.media.AudioFocusRequest;
 import android.media.AudioManager;
 import android.os.Binder;
 import android.os.UserHandle;
 import android.text.TextUtils;
-import android.util.Log;
+import android.util.Slog;
+
+import com.android.server.utils.EventLogger;
+
+import java.io.PrintWriter;
 
 /**
  * Class to encapsulate all audio API hardening operations
@@ -32,10 +40,19 @@
 public class HardeningEnforcer {
 
     private static final String TAG = "AS.HardeningEnforcer";
+    private static final boolean DEBUG = false;
+    private static final int LOG_NB_EVENTS = 20;
 
     final Context mContext;
+    final AppOpsManager mAppOps;
     final boolean mIsAutomotive;
 
+    final ActivityManager mActivityManager;
+    final PackageManager mPackageManager;
+
+    final EventLogger mEventLogger = new EventLogger(LOG_NB_EVENTS,
+            "Hardening enforcement");
+
     /**
      * Matches calls from {@link AudioManager#setStreamVolume(int, int, int)}
      */
@@ -56,10 +73,24 @@
      * Matches calls from {@link AudioManager#setRingerMode(int)}
      */
     public static final int METHOD_AUDIO_MANAGER_SET_RINGER_MODE = 200;
+    /**
+     * Matches calls from {@link AudioManager#requestAudioFocus(AudioFocusRequest)}
+     * and legacy variants
+     */
+    public static final int METHOD_AUDIO_MANAGER_REQUEST_AUDIO_FOCUS = 300;
 
-    public HardeningEnforcer(Context ctxt, boolean isAutomotive) {
+    public HardeningEnforcer(Context ctxt, boolean isAutomotive, AppOpsManager appOps,
+            PackageManager pm) {
         mContext = ctxt;
         mIsAutomotive = isAutomotive;
+        mAppOps = appOps;
+        mActivityManager = ctxt.getSystemService(ActivityManager.class);
+        mPackageManager = pm;
+    }
+
+    protected void dump(PrintWriter pw) {
+        // log
+        mEventLogger.dump(pw);
     }
 
     /**
@@ -84,7 +115,7 @@
             }
             // TODO metrics?
             // TODO log for audio dumpsys?
-            Log.e(TAG, "Preventing volume method " + volumeMethod + " for "
+            Slog.e(TAG, "Preventing volume method " + volumeMethod + " for "
                     + getPackNameForUid(Binder.getCallingUid()));
             return true;
         }
@@ -92,10 +123,40 @@
         return false;
     }
 
+    /**
+     * Checks whether the call in the current thread should be allowed or blocked
+     * @param focusMethod name of the method to check, for logging purposes
+     * @param clientId id of the requester
+     * @param durationHint focus type being requested
+     * @return false if the method call is allowed, true if it should be a no-op
+     */
+    protected boolean blockFocusMethod(int callingUid, int focusMethod, @NonNull String clientId,
+            int durationHint, @NonNull String packageName) {
+        if (packageName.isEmpty()) {
+            packageName = getPackNameForUid(callingUid);
+        }
+
+        if (checkAppOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, callingUid, packageName)) {
+            if (DEBUG) {
+                Slog.i(TAG, "blockFocusMethod pack:" + packageName + " NOT blocking");
+            }
+            return false;
+        }
+
+        String errorMssg = "Focus request DENIED for uid:" + callingUid
+                + " clientId:" + clientId + " req:" + durationHint
+                + " procState:" + mActivityManager.getUidProcessState(callingUid);
+
+        // TODO metrics
+        mEventLogger.enqueueAndSlog(errorMssg, EventLogger.Event.ALOGI, TAG);
+
+        return true;
+    }
+
     private String getPackNameForUid(int uid) {
         final long token = Binder.clearCallingIdentity();
         try {
-            final String[] names = mContext.getPackageManager().getPackagesForUid(uid);
+            final String[] names = mPackageManager.getPackagesForUid(uid);
             if (names == null
                     || names.length == 0
                     || TextUtils.isEmpty(names[0])) {
@@ -106,4 +167,18 @@
             Binder.restoreCallingIdentity(token);
         }
     }
+
+    /**
+     * Checks the given op without throwing
+     * @param op the appOp code
+     * @param uid the calling uid
+     * @param packageName the package name of the caller
+     * @return return false if the operation is not allowed
+     */
+    private boolean checkAppOp(int op, int uid, @NonNull String packageName) {
+        if (mAppOps.checkOpNoThrow(op, uid, packageName) != AppOpsManager.MODE_ALLOWED) {
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java
index 1376bde..35d38e2 100644
--- a/services/core/java/com/android/server/audio/MediaFocusControl.java
+++ b/services/core/java/com/android/server/audio/MediaFocusControl.java
@@ -1090,11 +1090,14 @@
      *                  accessibility.
      * @param testUid ignored if flags doesn't contain AudioManager.AUDIOFOCUS_FLAG_TEST
      *                otherwise the UID being injected for testing
+     * @param permissionOverridesCheck true if permission checks guaranteed that the call should
+     *                                 go through, false otherwise (e.g. non-privileged caller)
      * @return
      */
     protected int requestAudioFocus(@NonNull AudioAttributes aa, int focusChangeHint, IBinder cb,
             IAudioFocusDispatcher fd, @NonNull String clientId, @NonNull String callingPackageName,
-            String attributionTag, int flags, int sdk, boolean forceDuck, int testUid) {
+            String attributionTag, int flags, int sdk, boolean forceDuck, int testUid,
+            boolean permissionOverridesCheck) {
         new MediaMetrics.Item(mMetricsId)
                 .setUid(Binder.getCallingUid())
                 .set(MediaMetrics.Property.CALLING_PACKAGE, callingPackageName)
@@ -1126,10 +1129,9 @@
             return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
         }
 
-        if ((flags != AudioManager.AUDIOFOCUS_FLAG_TEST)
-                // note we're using the real uid for appOp evaluation
-                && (mAppOps.noteOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, Binder.getCallingUid(),
-                        callingPackageName, attributionTag, null) != AppOpsManager.MODE_ALLOWED)) {
+        final int res = mAppOps.noteOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, Binder.getCallingUid(),
+                callingPackageName, attributionTag, null);
+        if (!permissionOverridesCheck && res != AppOpsManager.MODE_ALLOWED) {
             return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
         }
 
diff --git a/services/core/java/com/android/server/audio/SpatializerHelper.java b/services/core/java/com/android/server/audio/SpatializerHelper.java
index 8d76731..3b5fa7f 100644
--- a/services/core/java/com/android/server/audio/SpatializerHelper.java
+++ b/services/core/java/com/android/server/audio/SpatializerHelper.java
@@ -26,6 +26,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
 import android.media.AudioAttributes;
@@ -1611,6 +1612,9 @@
         pw.println("\tsupports binaural:" + mBinauralSupported + " / transaural:"
                 + mTransauralSupported);
         pw.println("\tmSpatOutput:" + mSpatOutput);
+        pw.println("\thas FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY:"
+                + mAudioService.mContext.getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_AUDIO_SPATIAL_HEADTRACKING_LOW_LATENCY));
     }
 
     private static String spatStateString(int state) {
diff --git a/services/core/java/com/android/server/biometrics/OWNERS b/services/core/java/com/android/server/biometrics/OWNERS
index 1bf2aef..4703efb 100644
--- a/services/core/java/com/android/server/biometrics/OWNERS
+++ b/services/core/java/com/android/server/biometrics/OWNERS
@@ -2,7 +2,6 @@
 
 graciecheng@google.com
 ilyamaty@google.com
-jaggies@google.com
 jbolinger@google.com
 jeffpu@google.com
 joshmccloskey@google.com
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 7ebc311..ad89444 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -534,6 +534,7 @@
     private final DisplayManagerFlags mFlags;
 
     private final DisplayNotificationManager mDisplayNotificationManager;
+    private final ExternalDisplayStatsService mExternalDisplayStatsService;
 
     /**
      * Applications use {@link android.view.Display#getRefreshRate} and
@@ -568,7 +569,6 @@
         mInjector = injector;
         mContext = context;
         mFlags = injector.getFlags();
-        mDisplayNotificationManager = new DisplayNotificationManager(mFlags, mContext);
         mHandler = new DisplayManagerHandler(DisplayThread.get().getLooper());
         mUiHandler = UiThread.getHandler();
         mDisplayDeviceRepo = new DisplayDeviceRepository(mSyncRoot, mPersistentDataStore);
@@ -597,6 +597,10 @@
         mConfigParameterProvider = new DeviceConfigParameterProvider(DeviceConfigInterface.REAL);
         mExtraDisplayLoggingPackageName = DisplayProperties.debug_vri_package().orElse(null);
         mExtraDisplayEventLogging = !TextUtils.isEmpty(mExtraDisplayLoggingPackageName);
+
+        mExternalDisplayStatsService = new ExternalDisplayStatsService(mContext, mHandler);
+        mDisplayNotificationManager = new DisplayNotificationManager(mFlags, mContext,
+                mExternalDisplayStatsService);
         mExternalDisplayPolicy = new ExternalDisplayPolicy(new ExternalDisplayPolicyInjector());
     }
 
@@ -1911,6 +1915,7 @@
             return;
         }
         releaseDisplayAndEmitEvent(display, DisplayManagerGlobal.EVENT_DISPLAY_DISCONNECTED);
+        mExternalDisplayPolicy.handleLogicalDisplayDisconnectedLocked(display);
     }
 
     @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
@@ -1977,7 +1982,7 @@
 
         setupLogicalDisplay(display);
 
-        if (ExternalDisplayPolicy.isExternalDisplay(display)) {
+        if (ExternalDisplayPolicy.isExternalDisplayLocked(display)) {
             mExternalDisplayPolicy.handleExternalDisplayConnectedLocked(display);
         } else {
             sendDisplayEventLocked(display, DisplayManagerGlobal.EVENT_DISPLAY_CONNECTED);
@@ -2002,6 +2007,8 @@
         sendDisplayEventIfEnabledLocked(display, DisplayManagerGlobal.EVENT_DISPLAY_ADDED);
 
         updateLogicalDisplayState(display);
+
+        mExternalDisplayPolicy.handleLogicalDisplayAddedLocked(display);
     }
 
     private void handleLogicalDisplayChangedLocked(@NonNull LogicalDisplay display) {
@@ -3280,7 +3287,7 @@
             final var logicalDisplay = mLogicalDisplayMapper.getDisplayLocked(displayId);
             if (logicalDisplay == null) {
                 Slog.w(TAG, "enableConnectedDisplay: Can not find displayId=" + displayId);
-            } else if (ExternalDisplayPolicy.isExternalDisplay(logicalDisplay)) {
+            } else if (ExternalDisplayPolicy.isExternalDisplayLocked(logicalDisplay)) {
                 mExternalDisplayPolicy.setExternalDisplayEnabledLocked(logicalDisplay, enabled);
             } else {
                 mLogicalDisplayMapper.setDisplayEnabledLocked(logicalDisplay, enabled);
@@ -4966,6 +4973,11 @@
                 return session;
             }
         }
+
+        @Override
+        public void onPresentation(int displayId, boolean isShown) {
+            mExternalDisplayPolicy.onPresentation(displayId, isShown);
+        }
     }
 
     class DesiredDisplayModeSpecsObserver
@@ -5123,5 +5135,14 @@
         public Handler getHandler() {
             return mHandler;
         }
+
+        /**
+         * Gets service used for metrics collection.
+         */
+        @Override
+        @NonNull
+        public ExternalDisplayStatsService getExternalDisplayStatsService() {
+            return mExternalDisplayStatsService;
+        }
     }
 }
diff --git a/services/core/java/com/android/server/display/ExternalDisplayPolicy.java b/services/core/java/com/android/server/display/ExternalDisplayPolicy.java
index dbe1e14..ab7c503 100644
--- a/services/core/java/com/android/server/display/ExternalDisplayPolicy.java
+++ b/services/core/java/com/android/server/display/ExternalDisplayPolicy.java
@@ -57,7 +57,7 @@
     @VisibleForTesting
     static final String ENABLE_ON_CONNECT = "persist.sys.display.enable_on_connect.external";
 
-    static boolean isExternalDisplay(@NonNull final LogicalDisplay logicalDisplay) {
+    static boolean isExternalDisplayLocked(@NonNull final LogicalDisplay logicalDisplay) {
         return logicalDisplay.getDisplayInfoLocked().type == TYPE_EXTERNAL;
     }
 
@@ -85,6 +85,9 @@
 
         @NonNull
         Handler getHandler();
+
+        @NonNull
+        ExternalDisplayStatsService getExternalDisplayStatsService();
     }
 
     @NonNull
@@ -99,6 +102,8 @@
     private final DisplayNotificationManager mDisplayNotificationManager;
     @NonNull
     private final Handler mHandler;
+    @NonNull
+    private final ExternalDisplayStatsService mExternalDisplayStatsService;
     @ThrottlingStatus
     private volatile int mStatus = THROTTLING_NONE;
 
@@ -109,6 +114,7 @@
         mFlags = mInjector.getFlags();
         mDisplayNotificationManager = mInjector.getDisplayNotificationManager();
         mHandler = mInjector.getHandler();
+        mExternalDisplayStatsService = mInjector.getExternalDisplayStatsService();
     }
 
     /**
@@ -141,7 +147,7 @@
      */
     void setExternalDisplayEnabledLocked(@NonNull final LogicalDisplay logicalDisplay,
             final boolean enabled) {
-        if (!isExternalDisplay(logicalDisplay)) {
+        if (!isExternalDisplayLocked(logicalDisplay)) {
             Slog.e(TAG, "setExternalDisplayEnabledLocked called for non external display");
             return;
         }
@@ -170,7 +176,7 @@
      * user to decide how to use this display.
      */
     void handleExternalDisplayConnectedLocked(@NonNull final LogicalDisplay logicalDisplay) {
-        if (!isExternalDisplay(logicalDisplay)) {
+        if (!isExternalDisplayLocked(logicalDisplay)) {
             Slog.e(TAG, "handleExternalDisplayConnectedLocked called for non-external display");
             return;
         }
@@ -183,6 +189,8 @@
             return;
         }
 
+        mExternalDisplayStatsService.onDisplayConnected(logicalDisplay);
+
         if ((Build.IS_ENG || Build.IS_USERDEBUG)
                 && SystemProperties.getBoolean(ENABLE_ON_CONNECT, false)) {
             Slog.w(TAG, "External display is enabled by default, bypassing user consent.");
@@ -209,9 +217,59 @@
         }
     }
 
+    /**
+     * Upon external display become unavailable.
+     */
+    void handleLogicalDisplayDisconnectedLocked(@NonNull final LogicalDisplay logicalDisplay) {
+        // Type of the display here is always UNKNOWN, so we can't verify it is an external display
+
+        if (!mFlags.isConnectedDisplayManagementEnabled()) {
+            return;
+        }
+
+        mExternalDisplayStatsService.onDisplayDisconnected(logicalDisplay.getDisplayIdLocked());
+    }
+
+    /**
+     * Upon external display gets added.
+     */
+    void handleLogicalDisplayAddedLocked(@NonNull final LogicalDisplay logicalDisplay) {
+        if (!isExternalDisplayLocked(logicalDisplay)) {
+            return;
+        }
+
+        if (!mFlags.isConnectedDisplayManagementEnabled()) {
+            return;
+        }
+
+        mExternalDisplayStatsService.onDisplayAdded(logicalDisplay.getDisplayIdLocked());
+    }
+
+    /**
+     * Upon presentation started.
+     */
+    void onPresentation(int displayId, boolean isShown) {
+        synchronized (mSyncRoot) {
+            var logicalDisplay = mLogicalDisplayMapper.getDisplayLocked(displayId);
+            if (logicalDisplay == null || !isExternalDisplayLocked(logicalDisplay)) {
+                return;
+            }
+        }
+
+        if (!mFlags.isConnectedDisplayManagementEnabled()) {
+            return;
+        }
+
+        if (isShown) {
+            mExternalDisplayStatsService.onPresentationWindowAdded(displayId);
+        } else {
+            mExternalDisplayStatsService.onPresentationWindowRemoved(displayId);
+        }
+    }
+
     @GuardedBy("mSyncRoot")
     private void disableExternalDisplayLocked(@NonNull final LogicalDisplay logicalDisplay) {
-        if (!isExternalDisplay(logicalDisplay)) {
+        if (!isExternalDisplayLocked(logicalDisplay)) {
             return;
         }
 
@@ -245,6 +303,8 @@
 
         mLogicalDisplayMapper.setDisplayEnabledLocked(logicalDisplay, /*enabled=*/ false);
 
+        mExternalDisplayStatsService.onDisplayDisabled(logicalDisplay.getDisplayIdLocked());
+
         if (DEBUG) {
             Slog.d(TAG, "disableExternalDisplayLocked complete"
                                 + " displayId=" + logicalDisplay.getDisplayIdLocked());
diff --git a/services/core/java/com/android/server/display/ExternalDisplayStatsService.java b/services/core/java/com/android/server/display/ExternalDisplayStatsService.java
new file mode 100644
index 0000000..f6f23d9
--- /dev/null
+++ b/services/core/java/com/android/server/display/ExternalDisplayStatsService.java
@@ -0,0 +1,662 @@
+/*
+ * Copyright (C) 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 com.android.server.display;
+
+import static android.media.AudioDeviceInfo.TYPE_HDMI;
+import static android.media.AudioDeviceInfo.TYPE_HDMI_ARC;
+import static android.media.AudioDeviceInfo.TYPE_USB_DEVICE;
+import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.media.AudioManager;
+import android.media.AudioManager.AudioPlaybackCallback;
+import android.media.AudioPlaybackConfiguration;
+import android.os.Handler;
+import android.os.PowerManager;
+import android.provider.Settings;
+import android.util.Slog;
+import android.util.SparseIntArray;
+import android.view.Display;
+import android.view.DisplayInfo;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.display.utils.DebugUtils;
+
+import java.util.List;
+
+
+/**
+ * Manages metrics logging for external display.
+ */
+public final class ExternalDisplayStatsService {
+    private static final String TAG = "ExternalDisplayStatsService";
+    // To enable these logs, run:
+    // 'adb shell setprop persist.log.tag.ExternalDisplayStatsService DEBUG && adb reboot'
+    private static final boolean DEBUG = DebugUtils.isDebuggable(TAG);
+
+    private static final int INVALID_DISPLAYS_COUNT = -1;
+    private static final int DISCONNECTED_STATE =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__DISCONNECTED;
+    private static final int CONNECTED_STATE =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__CONNECTED;
+    private static final int MIRRORING_STATE =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__MIRRORING;
+    private static final int EXTENDED_STATE =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__EXTENDED;
+    private static final int PRESENTATION_WHILE_MIRRORING =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_WHILE_MIRRORING;
+    private static final int PRESENTATION_WHILE_EXTENDED =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_WHILE_EXTENDED;
+    private static final int PRESENTATION_ENDED =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_ENDED;
+    private static final int KEYGUARD =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__KEYGUARD;
+    private static final int DISABLED_STATE =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__DISABLED;
+    private static final int AUDIO_SINK_CHANGED =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__AUDIO_SINK_CHANGED;
+    private static final int ERROR_HOTPLUG_CONNECTION =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_HOTPLUG_CONNECTION;
+    private static final int ERROR_DISPLAYPORT_LINK_FAILED =
+            FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_DISPLAYPORT_LINK_FAILED;
+    private static final int ERROR_CABLE_NOT_CAPABLE_DISPLAYPORT =
+            FrameworkStatsLog
+                    .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_CABLE_NOT_CAPABLE_DISPLAYPORT;
+
+    private final Injector mInjector;
+
+    @GuardedBy("mExternalDisplayStates")
+    private final SparseIntArray mExternalDisplayStates = new SparseIntArray();
+
+    /**
+     * Count of interactive external displays or INVALID_DISPLAYS_COUNT, modified only from Handler
+     */
+    private int mInteractiveExternalDisplays;
+
+    /**
+     * Guards init deinit, modified only from Handler
+     */
+    private boolean mIsInitialized;
+
+    /**
+     * Whether audio plays on external display, modified only from Handler
+     */
+    private boolean mIsExternalDisplayUsedForAudio;
+
+    private final AudioPlaybackCallback mAudioPlaybackCallback = new AudioPlaybackCallback() {
+        private final Runnable mLogStateAfterAudioSinkEnabled =
+                () -> logStateAfterAudioSinkChanged(true);
+        private final Runnable mLogStateAfterAudioSinkDisabled =
+                () -> logStateAfterAudioSinkChanged(false);
+
+        @Override
+        public void onPlaybackConfigChanged(List<AudioPlaybackConfiguration> configs) {
+            super.onPlaybackConfigChanged(configs);
+            scheduleAudioSinkChange(isExternalDisplayUsedForAudio(configs));
+        }
+
+        private boolean isExternalDisplayUsedForAudio(List<AudioPlaybackConfiguration> configs) {
+            for (var config : configs) {
+                var info = config.getAudioDeviceInfo();
+                if (config.isActive() && info != null
+                            && info.isSink()
+                            && (info.getType() == TYPE_HDMI
+                                        || info.getType() == TYPE_HDMI_ARC
+                                        || info.getType() == TYPE_USB_DEVICE)) {
+                    if (DEBUG) {
+                        Slog.d(TAG, "isExternalDisplayUsedForAudio:"
+                                                    + " use " + info.getProductName()
+                                                    + " isActive=" + config.isActive()
+                                                    + " isSink=" + info.isSink()
+                                                    + " type=" + info.getType());
+                    }
+                    return true;
+                }
+                if (DEBUG) {
+                    // info is null if the device is not available at the time of query.
+                    if (info != null) {
+                        Slog.d(TAG, "isExternalDisplayUsedForAudio:"
+                                            + " drop " + info.getProductName()
+                                            + " isActive=" + config.isActive()
+                                            + " isSink=" + info.isSink()
+                                            + " type=" + info.getType());
+                    }
+                }
+            }
+            return false;
+        }
+
+        private void scheduleAudioSinkChange(final boolean isAudioOnExternalDisplay) {
+            if (DEBUG) {
+                Slog.d(TAG, "scheduleAudioSinkChange:"
+                                    + " mIsExternalDisplayUsedForAudio="
+                                    + mIsExternalDisplayUsedForAudio
+                                    + " isAudioOnExternalDisplay="
+                                    + isAudioOnExternalDisplay);
+            }
+            mInjector.getHandler().removeCallbacks(mLogStateAfterAudioSinkEnabled);
+            mInjector.getHandler().removeCallbacks(mLogStateAfterAudioSinkDisabled);
+            final var callback = isAudioOnExternalDisplay ? mLogStateAfterAudioSinkEnabled
+                                   : mLogStateAfterAudioSinkDisabled;
+            if (isAudioOnExternalDisplay) {
+                mInjector.getHandler().postDelayed(callback, /*delayMillis=*/ 10000L);
+            } else {
+                mInjector.getHandler().post(callback);
+            }
+        }
+    };
+
+    private final BroadcastReceiver mInteractivityReceiver = new BroadcastReceiver() {
+        /**
+         * Verifies that there is a change to the mInteractiveExternalDisplays and logs the change.
+         * Executed within a handler - no need to keep lock on mInteractiveExternalDisplays update.
+         */
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            int interactiveDisplaysCount = 0;
+            synchronized (mExternalDisplayStates) {
+                if (mExternalDisplayStates.size() == 0) {
+                    return;
+                }
+                for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                    if (mInjector.isInteractive(mExternalDisplayStates.keyAt(i))) {
+                        interactiveDisplaysCount++;
+                    }
+                }
+            }
+
+            // For the first time, mInteractiveExternalDisplays is INVALID_DISPLAYS_COUNT(-1)
+            // which is always not equal to interactiveDisplaysCount.
+            if (mInteractiveExternalDisplays == interactiveDisplaysCount) {
+                return;
+            } else if (0 == interactiveDisplaysCount) {
+                logExternalDisplayIdleStarted();
+            } else if (INVALID_DISPLAYS_COUNT != mInteractiveExternalDisplays) {
+                // Log Only if mInteractiveExternalDisplays was previously initialised.
+                // Otherwise no need to log that idle has ended, as we assume it never started.
+                // This is because, currently for enabling external display, the display must be
+                // non-idle for the user to press the Mirror/Dismiss dialog button.
+                logExternalDisplayIdleEnded();
+            }
+            mInteractiveExternalDisplays = interactiveDisplaysCount;
+        }
+    };
+
+    ExternalDisplayStatsService(Context context, Handler handler) {
+        this(new Injector(context, handler));
+    }
+
+    @VisibleForTesting
+    ExternalDisplayStatsService(Injector injector) {
+        mInjector = injector;
+    }
+
+    /**
+     * Write log on hotplug connection error
+     */
+    public void onHotplugConnectionError() {
+        logExternalDisplayError(ERROR_HOTPLUG_CONNECTION);
+    }
+
+    /**
+     * Write log on DisplayPort link training failure
+     */
+    public void onDisplayPortLinkTrainingFailure() {
+        logExternalDisplayError(ERROR_DISPLAYPORT_LINK_FAILED);
+    }
+
+    /**
+     * Write log on USB cable not capable DisplayPort
+     */
+    public void onCableNotCapableDisplayPort() {
+        logExternalDisplayError(ERROR_CABLE_NOT_CAPABLE_DISPLAYPORT);
+    }
+
+    void onDisplayConnected(final LogicalDisplay display) {
+        DisplayInfo displayInfo = display.getDisplayInfoLocked();
+        if (displayInfo == null || displayInfo.type != Display.TYPE_EXTERNAL) {
+            return;
+        }
+        logStateConnected(display.getDisplayIdLocked());
+    }
+
+    void onDisplayAdded(int displayId) {
+        if (mInjector.isExtendedDisplayEnabled()) {
+            logStateExtended(displayId);
+        } else {
+            logStateMirroring(displayId);
+        }
+    }
+
+    void onDisplayDisabled(int displayId) {
+        logStateDisabled(displayId);
+    }
+
+    void onDisplayDisconnected(int displayId) {
+        logStateDisconnected(displayId);
+    }
+
+    /**
+     * Callback triggered upon presentation window gets added.
+     */
+    void onPresentationWindowAdded(int displayId) {
+        logExternalDisplayPresentationStarted(displayId);
+    }
+
+    /**
+     * Callback triggered upon presentation window gets removed.
+     */
+    void onPresentationWindowRemoved(int displayId) {
+        logExternalDisplayPresentationEnded(displayId);
+    }
+
+    @VisibleForTesting
+    boolean isInteractiveExternalDisplays() {
+        return mInteractiveExternalDisplays != 0;
+    }
+
+    @VisibleForTesting
+    boolean isExternalDisplayUsedForAudio() {
+        return mIsExternalDisplayUsedForAudio;
+    }
+
+    private void logExternalDisplayError(int errorType) {
+        final int countOfExternalDisplays;
+        synchronized (mExternalDisplayStates) {
+            countOfExternalDisplays = mExternalDisplayStates.size();
+        }
+
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                errorType, countOfExternalDisplays,
+                mIsExternalDisplayUsedForAudio);
+        if (DEBUG) {
+            Slog.d(TAG, "logExternalDisplayError"
+                                + " countOfExternalDisplays=" + countOfExternalDisplays
+                                + " errorType=" + errorType
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+    }
+
+    private void scheduleInit() {
+        mInjector.getHandler().post(() -> {
+            if (mIsInitialized) {
+                Slog.e(TAG, "scheduleInit is called but already initialized");
+                return;
+            }
+            mIsInitialized = true;
+            var filter = new IntentFilter();
+            filter.addAction(Intent.ACTION_SCREEN_OFF);
+            filter.addAction(Intent.ACTION_SCREEN_ON);
+            mInteractiveExternalDisplays = INVALID_DISPLAYS_COUNT;
+            mIsExternalDisplayUsedForAudio = false;
+            mInjector.registerInteractivityReceiver(mInteractivityReceiver, filter);
+            mInjector.registerAudioPlaybackCallback(mAudioPlaybackCallback);
+        });
+    }
+
+    private void scheduleDeinit() {
+        mInjector.getHandler().post(() -> {
+            if (!mIsInitialized) {
+                Slog.e(TAG, "scheduleDeinit is called but never initialized");
+                return;
+            }
+            mIsInitialized = false;
+            mInjector.unregisterInteractivityReceiver(mInteractivityReceiver);
+            mInjector.unregisterAudioPlaybackCallback(mAudioPlaybackCallback);
+        });
+    }
+
+    private void logStateConnected(final int displayId) {
+        final int countOfExternalDisplays, state;
+        synchronized (mExternalDisplayStates) {
+            state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state != DISCONNECTED_STATE) {
+                return;
+            }
+            mExternalDisplayStates.put(displayId, CONNECTED_STATE);
+            countOfExternalDisplays = mExternalDisplayStates.size();
+        }
+
+        if (countOfExternalDisplays == 1) {
+            scheduleInit();
+        }
+
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                CONNECTED_STATE, countOfExternalDisplays, mIsExternalDisplayUsedForAudio);
+        if (DEBUG) {
+            Slog.d(TAG, "logStateConnected"
+                                + " displayId=" + displayId
+                                + " countOfExternalDisplays=" + countOfExternalDisplays
+                                + " currentState=" + state
+                                + " state=" + CONNECTED_STATE
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+    }
+
+    private void logStateDisconnected(final int displayId) {
+        final int countOfExternalDisplays, state;
+        synchronized (mExternalDisplayStates) {
+            state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE) {
+                if (DEBUG) {
+                    Slog.d(TAG, "logStateDisconnected"
+                                        + " displayId=" + displayId
+                                        + " already disconnected");
+                }
+                return;
+            }
+            countOfExternalDisplays = mExternalDisplayStates.size();
+            mExternalDisplayStates.delete(displayId);
+        }
+
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                DISCONNECTED_STATE, countOfExternalDisplays,
+                mIsExternalDisplayUsedForAudio);
+
+        if (DEBUG) {
+            Slog.d(TAG, "logStateDisconnected"
+                                + " displayId=" + displayId
+                                + " countOfExternalDisplays=" + countOfExternalDisplays
+                                + " currentState=" + state
+                                + " state=" + DISCONNECTED_STATE
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+
+        if (countOfExternalDisplays == 1) {
+            scheduleDeinit();
+        }
+    }
+
+    private void logStateMirroring(final int displayId) {
+        synchronized (mExternalDisplayStates) {
+            final int state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE || state == MIRRORING_STATE) {
+                return;
+            }
+            for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                if (mExternalDisplayStates.keyAt(i) != displayId) {
+                    continue;
+                }
+                mExternalDisplayStates.put(displayId, MIRRORING_STATE);
+                mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                        MIRRORING_STATE, i + 1, mIsExternalDisplayUsedForAudio);
+                if (DEBUG) {
+                    Slog.d(TAG, "logStateMirroring"
+                                        + " displayId=" + displayId
+                                        + " countOfExternalDisplays=" + (i + 1)
+                                        + " currentState=" + state
+                                        + " state=" + MIRRORING_STATE
+                                        + " mIsExternalDisplayUsedForAudio="
+                                        + mIsExternalDisplayUsedForAudio);
+                }
+            }
+        }
+    }
+
+    private void logStateExtended(final int displayId) {
+        synchronized (mExternalDisplayStates) {
+            final int state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE || state == EXTENDED_STATE) {
+                return;
+            }
+            for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                if (mExternalDisplayStates.keyAt(i) != displayId) {
+                    continue;
+                }
+                mExternalDisplayStates.put(displayId, EXTENDED_STATE);
+                mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                        EXTENDED_STATE, i + 1, mIsExternalDisplayUsedForAudio);
+                if (DEBUG) {
+                    Slog.d(TAG, "logStateExtended"
+                                        + " displayId=" + displayId
+                                        + " countOfExternalDisplays=" + (i + 1)
+                                        + " currentState=" + state
+                                        + " state=" + EXTENDED_STATE
+                                        + " mIsExternalDisplayUsedForAudio="
+                                        + mIsExternalDisplayUsedForAudio);
+                }
+            }
+        }
+    }
+
+    private void logStateDisabled(final int displayId) {
+        synchronized (mExternalDisplayStates) {
+            final int state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE || state == DISABLED_STATE) {
+                return;
+            }
+            for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                if (mExternalDisplayStates.keyAt(i) != displayId) {
+                    continue;
+                }
+                mExternalDisplayStates.put(displayId, DISABLED_STATE);
+                mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                        DISABLED_STATE, i + 1, mIsExternalDisplayUsedForAudio);
+                if (DEBUG) {
+                    Slog.d(TAG, "logStateDisabled"
+                                        + " displayId=" + displayId
+                                        + " countOfExternalDisplays=" + (i + 1)
+                                        + " currentState=" + state
+                                        + " state=" + DISABLED_STATE
+                                        + " mIsExternalDisplayUsedForAudio="
+                                        + mIsExternalDisplayUsedForAudio);
+                }
+            }
+        }
+    }
+
+    private void logExternalDisplayPresentationStarted(int displayId) {
+        final int countOfExternalDisplays, state;
+        synchronized (mExternalDisplayStates) {
+            state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE) {
+                return;
+            }
+            countOfExternalDisplays = mExternalDisplayStates.size();
+        }
+
+        final var newState = mInjector.isExtendedDisplayEnabled() ? PRESENTATION_WHILE_EXTENDED
+                                     : PRESENTATION_WHILE_MIRRORING;
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                newState, countOfExternalDisplays,
+                mIsExternalDisplayUsedForAudio);
+        if (DEBUG) {
+            Slog.d(TAG, "logExternalDisplayPresentationStarted"
+                                + " state=" + state
+                                + " newState=" + newState
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+    }
+
+    private void logExternalDisplayPresentationEnded(int displayId) {
+        final int countOfExternalDisplays, state;
+        synchronized (mExternalDisplayStates) {
+            state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+            if (state == DISCONNECTED_STATE) {
+                return;
+            }
+            countOfExternalDisplays = mExternalDisplayStates.size();
+        }
+
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                PRESENTATION_ENDED, countOfExternalDisplays,
+                mIsExternalDisplayUsedForAudio);
+        if (DEBUG) {
+            Slog.d(TAG, "logExternalDisplayPresentationEnded"
+                                + " state=" + state
+                                + " countOfExternalDisplays=" + countOfExternalDisplays
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+    }
+
+    private void logExternalDisplayIdleStarted() {
+        synchronized (mExternalDisplayStates) {
+            for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                        KEYGUARD, i + 1, mIsExternalDisplayUsedForAudio);
+                if (DEBUG) {
+                    final int displayId = mExternalDisplayStates.keyAt(i);
+                    final int state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+                    Slog.d(TAG, "logExternalDisplayIdleStarted"
+                                        + " displayId=" + displayId
+                                        + " currentState=" + state
+                                        + " countOfExternalDisplays=" + (i + 1)
+                                        + " state=" + KEYGUARD
+                                        + " mIsExternalDisplayUsedForAudio="
+                                        + mIsExternalDisplayUsedForAudio);
+                }
+            }
+        }
+    }
+
+    private void logExternalDisplayIdleEnded() {
+        synchronized (mExternalDisplayStates) {
+            for (var i = 0; i < mExternalDisplayStates.size(); i++) {
+                final int displayId = mExternalDisplayStates.keyAt(i);
+                final int state = mExternalDisplayStates.get(displayId, DISCONNECTED_STATE);
+                if (state == DISCONNECTED_STATE) {
+                    return;
+                }
+                mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                        state, i + 1, mIsExternalDisplayUsedForAudio);
+                if (DEBUG) {
+                    Slog.d(TAG, "logExternalDisplayIdleEnded"
+                                        + " displayId=" + displayId
+                                        + " state=" + state
+                                        + " countOfExternalDisplays=" + (i + 1)
+                                        + " mIsExternalDisplayUsedForAudio="
+                                        + mIsExternalDisplayUsedForAudio);
+                }
+            }
+        }
+    }
+
+    /**
+     * Executed within Handler
+     */
+    private void logStateAfterAudioSinkChanged(boolean enabled) {
+        if (mIsExternalDisplayUsedForAudio == enabled) {
+            return;
+        }
+        mIsExternalDisplayUsedForAudio = enabled;
+        int countOfExternalDisplays;
+        synchronized (mExternalDisplayStates) {
+            countOfExternalDisplays = mExternalDisplayStates.size();
+        }
+        mInjector.writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                AUDIO_SINK_CHANGED, countOfExternalDisplays,
+                mIsExternalDisplayUsedForAudio);
+        if (DEBUG) {
+            Slog.d(TAG, "logStateAfterAudioSinkChanged"
+                                + " countOfExternalDisplays)="
+                                + countOfExternalDisplays
+                                + " mIsExternalDisplayUsedForAudio="
+                                + mIsExternalDisplayUsedForAudio);
+        }
+    }
+
+    /**
+     * Implements necessary functionality for {@link ExternalDisplayStatsService}
+     */
+    static class Injector {
+        @NonNull
+        private final Context mContext;
+        @NonNull
+        private final Handler mHandler;
+        @Nullable
+        private AudioManager mAudioManager;
+        @Nullable
+        private PowerManager mPowerManager;
+
+        Injector(@NonNull Context context, @NonNull Handler handler) {
+            mContext = context;
+            mHandler = handler;
+        }
+
+        boolean isExtendedDisplayEnabled() {
+            try {
+                return 0 != Settings.Global.getInt(
+                        mContext.getContentResolver(),
+                        DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, 0);
+            } catch (Throwable e) {
+                // Some services might not be initialised yet to be able to call getInt
+                return false;
+            }
+        }
+
+        void registerInteractivityReceiver(BroadcastReceiver interactivityReceiver,
+                IntentFilter filter) {
+            mContext.registerReceiver(interactivityReceiver, filter, /*broadcastPermission=*/ null,
+                    mHandler, Context.RECEIVER_NOT_EXPORTED);
+        }
+
+        void unregisterInteractivityReceiver(BroadcastReceiver interactivityReceiver) {
+            mContext.unregisterReceiver(interactivityReceiver);
+        }
+
+        void registerAudioPlaybackCallback(
+                AudioPlaybackCallback audioPlaybackCallback) {
+            if (mAudioManager == null) {
+                mAudioManager = mContext.getSystemService(AudioManager.class);
+            }
+            if (mAudioManager != null) {
+                mAudioManager.registerAudioPlaybackCallback(audioPlaybackCallback, mHandler);
+            }
+        }
+
+        void unregisterAudioPlaybackCallback(
+                AudioPlaybackCallback audioPlaybackCallback) {
+            if (mAudioManager == null) {
+                mAudioManager = mContext.getSystemService(AudioManager.class);
+            }
+            if (mAudioManager != null) {
+                mAudioManager.unregisterAudioPlaybackCallback(audioPlaybackCallback);
+            }
+        }
+
+        boolean isInteractive(int displayId) {
+            if (mPowerManager == null) {
+                mPowerManager = mContext.getSystemService(PowerManager.class);
+            }
+            // By default it is interactive, unless power manager is initialised and says it is not.
+            return mPowerManager == null || mPowerManager.isInteractive(displayId);
+        }
+
+        @NonNull
+        Handler getHandler() {
+            return mHandler;
+        }
+
+        void writeLog(int externalDisplayStateChanged, int event, int numberOfDisplays,
+                boolean isExternalDisplayUsedForAudio) {
+            FrameworkStatsLog.write(externalDisplayStateChanged, event, numberOfDisplays,
+                    isExternalDisplayUsedForAudio);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/display/notifications/DisplayNotificationManager.java b/services/core/java/com/android/server/display/notifications/DisplayNotificationManager.java
index 405c149..280a7e1 100644
--- a/services/core/java/com/android/server/display/notifications/DisplayNotificationManager.java
+++ b/services/core/java/com/android/server/display/notifications/DisplayNotificationManager.java
@@ -30,6 +30,7 @@
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.display.ExternalDisplayStatsService;
 import com.android.server.display.feature.DisplayManagerFlags;
 
 /**
@@ -45,6 +46,10 @@
         /** Get {@link ConnectedDisplayUsbErrorsDetector} or null if not available. */
         @Nullable
         ConnectedDisplayUsbErrorsDetector getUsbErrorsDetector();
+
+        /** Get {@link com.android.server.display.ExternalDisplayStatsService} or null */
+        @Nullable
+        ExternalDisplayStatsService getExternalDisplayStatsService();
     }
 
     private static final String TAG = "DisplayNotificationManager";
@@ -59,7 +64,10 @@
     private NotificationManager mNotificationManager;
     private ConnectedDisplayUsbErrorsDetector mConnectedDisplayUsbErrorsDetector;
 
-    public DisplayNotificationManager(final DisplayManagerFlags flags, final Context context) {
+    private final ExternalDisplayStatsService mExternalDisplayStatsService;
+
+    public DisplayNotificationManager(final DisplayManagerFlags flags, final Context context,
+            final ExternalDisplayStatsService statsService) {
         this(flags, context, new Injector() {
             @Nullable
             @Override
@@ -72,6 +80,12 @@
             public ConnectedDisplayUsbErrorsDetector getUsbErrorsDetector() {
                 return new ConnectedDisplayUsbErrorsDetector(flags, context);
             }
+
+            @Nullable
+            @Override
+            public ExternalDisplayStatsService getExternalDisplayStatsService() {
+                return statsService;
+            }
         });
     }
 
@@ -81,6 +95,7 @@
         mConnectedDisplayErrorHandlingEnabled = flags.isConnectedDisplayErrorHandlingEnabled();
         mContext = context;
         mInjector = injector;
+        mExternalDisplayStatsService = injector.getExternalDisplayStatsService();
     }
 
     /**
@@ -111,6 +126,8 @@
             return;
         }
 
+        mExternalDisplayStatsService.onDisplayPortLinkTrainingFailure();
+
         sendErrorNotification(createErrorNotification(
                 R.string.connected_display_unavailable_notification_title,
                 R.string.connected_display_unavailable_notification_content,
@@ -129,6 +146,8 @@
             return;
         }
 
+        mExternalDisplayStatsService.onCableNotCapableDisplayPort();
+
         sendErrorNotification(createErrorNotification(
                 R.string.connected_display_unavailable_notification_title,
                 R.string.connected_display_unavailable_notification_content,
@@ -145,6 +164,8 @@
             return;
         }
 
+        mExternalDisplayStatsService.onHotplugConnectionError();
+
         sendErrorNotification(createErrorNotification(
                 R.string.connected_display_unavailable_notification_title,
                 R.string.connected_display_unavailable_notification_content,
diff --git a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
index f96bb8fb..23fe5cc 100644
--- a/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
+++ b/services/core/java/com/android/server/inputmethod/HandwritingModeController.java
@@ -83,16 +83,19 @@
     private @Nullable String mDelegatePackageName;
     private @Nullable String mDelegatorPackageName;
     private boolean mDelegatorFromDefaultHomePackage;
+    private boolean mDelegationConnectionlessFlow;
     private Runnable mDelegationIdleTimeoutRunnable;
     private Handler mDelegationIdleTimeoutHandler;
     private IntConsumer mPointerToolTypeConsumer;
+    private final Runnable mDiscardDelegationTextRunnable;
     private HandwritingEventReceiverSurface mHandwritingSurface;
 
     private int mCurrentRequestId;
 
     @AnyThread
     HandwritingModeController(Context context, Looper uiThreadLooper,
-            Runnable inkWindowInitRunnable, IntConsumer toolTypeConsumer) {
+            Runnable inkWindowInitRunnable, IntConsumer toolTypeConsumer,
+            Runnable discardDelegationTextRunnable) {
         mContext = context;
         mLooper = uiThreadLooper;
         mCurrentDisplayId = Display.INVALID_DISPLAY;
@@ -102,6 +105,7 @@
         mCurrentRequestId = 0;
         mInkWindowInitRunnable = inkWindowInitRunnable;
         mPointerToolTypeConsumer = toolTypeConsumer;
+        mDiscardDelegationTextRunnable = discardDelegationTextRunnable;
     }
 
     /**
@@ -163,7 +167,8 @@
      * @see InputMethodManager#prepareStylusHandwritingDelegation(View, String)
      */
     void prepareStylusHandwritingDelegation(
-            int userId, @NonNull String delegatePackageName, @NonNull String delegatorPackageName) {
+            int userId, @NonNull String delegatePackageName, @NonNull String delegatorPackageName,
+            boolean connectionless) {
         mDelegatePackageName = delegatePackageName;
         mDelegatorPackageName = delegatorPackageName;
         mDelegatorFromDefaultHomePackage = false;
@@ -177,10 +182,13 @@
                         delegatorPackageName.equals(defaultHomeActivity.getPackageName());
             }
         }
-        if (mHandwritingBuffer == null) {
-            mHandwritingBuffer = new ArrayList<>(getHandwritingBufferSize());
-        } else {
-            mHandwritingBuffer.ensureCapacity(getHandwritingBufferSize());
+        mDelegationConnectionlessFlow = connectionless;
+        if (!connectionless) {
+            if (mHandwritingBuffer == null) {
+                mHandwritingBuffer = new ArrayList<>(getHandwritingBufferSize());
+            } else {
+                mHandwritingBuffer.ensureCapacity(getHandwritingBufferSize());
+            }
         }
         scheduleHandwritingDelegationTimeout();
     }
@@ -197,6 +205,10 @@
         return mDelegatorFromDefaultHomePackage;
     }
 
+    boolean isDelegationUsingConnectionlessFlow() {
+        return mDelegationConnectionlessFlow;
+    }
+
     private void scheduleHandwritingDelegationTimeout() {
         if (mDelegationIdleTimeoutHandler == null) {
             mDelegationIdleTimeoutHandler = new Handler(mLooper);
@@ -238,6 +250,10 @@
         mDelegatorPackageName = null;
         mDelegatePackageName = null;
         mDelegatorFromDefaultHomePackage = false;
+        if (mDelegationConnectionlessFlow) {
+            mDelegationConnectionlessFlow = false;
+            mDiscardDelegationTextRunnable.run();
+        }
     }
 
     /**
@@ -342,7 +358,9 @@
             }
         }
 
-        clearPendingHandwritingDelegation();
+        if (!mDelegationConnectionlessFlow) {
+            clearPendingHandwritingDelegation();
+        }
         mRecordingGesture = false;
     }
 
@@ -390,7 +408,8 @@
 
         // If handwriting delegation is ongoing, don't clear the buffer so that multiple strokes
         // can be buffered across windows.
-        if (TextUtils.isEmpty(mDelegatePackageName)
+        // (This isn't needed for the connectionless delegation flow.)
+        if ((TextUtils.isEmpty(mDelegatePackageName) || mDelegationConnectionlessFlow)
                 && (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL)) {
             mRecordingGesture = false;
             mHandwritingBuffer.clear();
diff --git a/services/core/java/com/android/server/inputmethod/IInputMethodInvoker.java b/services/core/java/com/android/server/inputmethod/IInputMethodInvoker.java
index b12a816..776184f 100644
--- a/services/core/java/com/android/server/inputmethod/IInputMethodInvoker.java
+++ b/services/core/java/com/android/server/inputmethod/IInputMethodInvoker.java
@@ -27,6 +27,7 @@
 import android.util.Slog;
 import android.view.InputChannel;
 import android.view.MotionEvent;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.ImeTracker;
 import android.view.inputmethod.InputBinding;
@@ -34,6 +35,7 @@
 import android.view.inputmethod.InputMethodSubtype;
 import android.window.ImeOnBackInvokedDispatcher;
 
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputMethod;
 import com.android.internal.inputmethod.IInputMethodPrivilegedOperations;
@@ -242,9 +244,12 @@
     }
 
     @AnyThread
-    void canStartStylusHandwriting(int requestId) {
+    void canStartStylusHandwriting(int requestId,
+            IConnectionlessHandwritingCallback connectionlessCallback,
+            CursorAnchorInfo cursorAnchorInfo, boolean isConnectionlessForDelegation) {
         try {
-            mTarget.canStartStylusHandwriting(requestId);
+            mTarget.canStartStylusHandwriting(requestId, connectionlessCallback, cursorAnchorInfo,
+                    isConnectionlessForDelegation);
         } catch (RemoteException e) {
             logRemoteException(e);
         }
@@ -262,6 +267,24 @@
     }
 
     @AnyThread
+    void commitHandwritingDelegationTextIfAvailable() {
+        try {
+            mTarget.commitHandwritingDelegationTextIfAvailable();
+        } catch (RemoteException e) {
+            logRemoteException(e);
+        }
+    }
+
+    @AnyThread
+    void discardHandwritingDelegationText() {
+        try {
+            mTarget.discardHandwritingDelegationText();
+        } catch (RemoteException e) {
+            logRemoteException(e);
+        }
+    }
+
+    @AnyThread
     void initInkWindow() {
         try {
             mTarget.initInkWindow();
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java b/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java
index c8c0482..a100fe0 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodBindingController.java
@@ -77,6 +77,7 @@
     @GuardedBy("ImfLock.class") private int mCurSeq;
     @GuardedBy("ImfLock.class") private boolean mVisibleBound;
     @GuardedBy("ImfLock.class") private boolean mSupportsStylusHw;
+    @GuardedBy("ImfLock.class") private boolean mSupportsConnectionlessStylusHw;
 
     @Nullable private CountDownLatch mLatchForTesting;
 
@@ -243,10 +244,17 @@
     /**
      * Returns {@code true} if current IME supports Stylus Handwriting.
      */
+    @GuardedBy("ImfLock.class")
     boolean supportsStylusHandwriting() {
         return mSupportsStylusHw;
     }
 
+    /** Returns whether the current IME supports connectionless stylus handwriting sessions. */
+    @GuardedBy("ImfLock.class")
+    boolean supportsConnectionlessStylusHandwriting() {
+        return mSupportsConnectionlessStylusHw;
+    }
+
     /**
      * Used to bring IME service up to visible adjustment while it is being shown.
      */
@@ -298,6 +306,15 @@
                     if (supportsStylusHwChanged) {
                         InputMethodManager.invalidateLocalStylusHandwritingAvailabilityCaches();
                     }
+                    boolean supportsConnectionlessStylusHwChanged =
+                            mSupportsConnectionlessStylusHw
+                                    != info.supportsConnectionlessStylusHandwriting();
+                    if (supportsConnectionlessStylusHwChanged) {
+                        mSupportsConnectionlessStylusHw =
+                                info.supportsConnectionlessStylusHandwriting();
+                        InputMethodManager
+                                .invalidateLocalConnectionlessStylusHandwritingAvailabilityCaches();
+                    }
                     mService.initializeImeLocked(mCurMethod, mCurToken);
                     mService.scheduleNotifyImeUidToAudioService(mCurMethodUid);
                     mService.reRequestCurrentClientSessionLocked();
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 96c0c8a..bc169ca 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -47,6 +47,8 @@
 import static android.view.Display.INVALID_DISPLAY;
 import static android.view.WindowManager.DISPLAY_IME_POLICY_HIDE;
 import static android.view.WindowManager.DISPLAY_IME_POLICY_LOCAL;
+import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_OTHER;
+import static android.view.inputmethod.ConnectionlessHandwritingCallback.CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED;
 
 import static com.android.server.inputmethod.ImeVisibilityStateComputer.ImeTargetWindowState;
 import static com.android.server.inputmethod.ImeVisibilityStateComputer.ImeVisibilityResult;
@@ -123,6 +125,7 @@
 import android.view.WindowManager.DisplayImePolicy;
 import android.view.WindowManager.LayoutParams;
 import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
+import android.view.inputmethod.CursorAnchorInfo;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.Flags;
 import android.view.inputmethod.ImeTracker;
@@ -145,6 +148,7 @@
 import com.android.internal.infra.AndroidFuture;
 import com.android.internal.inputmethod.DirectBootAwareness;
 import com.android.internal.inputmethod.IAccessibilityInputMethodSession;
+import com.android.internal.inputmethod.IConnectionlessHandwritingCallback;
 import com.android.internal.inputmethod.IImeTracker;
 import com.android.internal.inputmethod.IInlineSuggestionsRequestCallback;
 import com.android.internal.inputmethod.IInputContentUriToken;
@@ -204,6 +208,7 @@
 import java.util.WeakHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Consumer;
 import java.util.function.IntConsumer;
@@ -1685,8 +1690,9 @@
         IntConsumer toolTypeConsumer =
                 Flags.useHandwritingListenerForTooltype()
                         ? toolType -> onUpdateEditorToolType(toolType) : null;
+        Runnable discardDelegationTextRunnable = () -> discardHandwritingDelegationText();
         mHwController = new HandwritingModeController(mContext, thread.getLooper(),
-                new InkWindowInitializer(), toolTypeConsumer);
+                new InkWindowInitializer(), toolTypeConsumer, discardDelegationTextRunnable);
         registerDeviceListenerAndCheckStylusSupport();
     }
 
@@ -1716,6 +1722,15 @@
         }
     }
 
+    private void discardHandwritingDelegationText() {
+        synchronized (ImfLock.class) {
+            IInputMethodInvoker curMethod = getCurMethodLocked();
+            if (curMethod != null) {
+                curMethod.discardHandwritingDelegationText();
+            }
+        }
+    }
+
     @GuardedBy("ImfLock.class")
     private void resetDefaultImeLocked(Context context) {
         // Do not reset the default (current) IME when it is a 3rd-party IME
@@ -1980,7 +1995,8 @@
     }
 
     @Override
-    public boolean isStylusHandwritingAvailableAsUser(@UserIdInt int userId) {
+    public boolean isStylusHandwritingAvailableAsUser(
+            @UserIdInt int userId, boolean connectionless) {
         if (UserHandle.getCallingUserId() != userId) {
             mContext.enforceCallingOrSelfPermission(
                     Manifest.permission.INTERACT_ACROSS_USERS_FULL, null);
@@ -1993,14 +2009,17 @@
 
             // Check if selected IME of current user supports handwriting.
             if (userId == mSettings.getUserId()) {
-                return mBindingController.supportsStylusHandwriting();
+                return mBindingController.supportsStylusHandwriting()
+                        && (!connectionless
+                                || mBindingController.supportsConnectionlessStylusHandwriting());
             }
             //TODO(b/197848765): This can be optimized by caching multi-user methodMaps/methodList.
             //TODO(b/210039666): use cache.
             final InputMethodSettings settings = queryMethodMapForUser(userId);
             final InputMethodInfo imi = settings.getMethodMap().get(
                     settings.getSelectedInputMethod());
-            return imi != null && imi.supportsStylusHandwriting();
+            return imi != null && imi.supportsStylusHandwriting()
+                    && (!connectionless || imi.supportsConnectionlessStylusHandwriting());
         }
     }
 
@@ -2882,16 +2901,12 @@
     @GuardedBy("ImfLock.class")
     void clearClientSessionsLocked() {
         if (getCurMethodLocked() != null) {
-            // TODO(b/322816970): Replace this with lambda.
-            mClientController.forAllClients(new Consumer<ClientState>() {
-
-                @GuardedBy("ImfLock.class")
-                @Override
-                public void accept(ClientState c) {
-                    clearClientSessionLocked(c);
-                    clearClientSessionForAccessibilityLocked(c);
-                }
-            });
+            // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
+            @SuppressWarnings("GuardedBy") Consumer<ClientState> clearClientSession = c -> {
+                clearClientSessionLocked(c);
+                clearClientSessionForAccessibilityLocked(c);
+            };
+            mClientController.forAllClients(clearClientSession);
 
             finishSessionLocked(mEnabledSession);
             for (int i = 0; i < mEnabledAccessibilitySessions.size(); i++) {
@@ -3376,54 +3391,111 @@
         startStylusHandwriting(client, false /* usesDelegation */);
     }
 
-    private void startStylusHandwriting(IInputMethodClient client, boolean usesDelegation) {
+    @BinderThread
+    @Override
+    public void startConnectionlessStylusHandwriting(IInputMethodClient client, int userId,
+            @Nullable CursorAnchorInfo cursorAnchorInfo, @Nullable String delegatePackageName,
+            @Nullable String delegatorPackageName,
+            @NonNull IConnectionlessHandwritingCallback callback) throws RemoteException {
+        synchronized (ImfLock.class) {
+            if (!mBindingController.supportsConnectionlessStylusHandwriting()) {
+                Slog.w(TAG, "Connectionless stylus handwriting mode unsupported by IME.");
+                callback.onError(CONNECTIONLESS_HANDWRITING_ERROR_UNSUPPORTED);
+                return;
+            }
+        }
+
+        IConnectionlessHandwritingCallback immsCallback = callback;
+        boolean isForDelegation = delegatePackageName != null && delegatorPackageName != null;
+        if (isForDelegation) {
+            synchronized (ImfLock.class) {
+                if (!mClientController.verifyClientAndPackageMatch(client, delegatorPackageName)) {
+                    Slog.w(TAG, "startConnectionlessStylusHandwriting() fail");
+                    callback.onError(CONNECTIONLESS_HANDWRITING_ERROR_OTHER);
+                    throw new IllegalArgumentException("Delegator doesn't match UID");
+                }
+            }
+            immsCallback = new IConnectionlessHandwritingCallback.Stub() {
+                @Override
+                public void onResult(CharSequence text) throws RemoteException {
+                    synchronized (ImfLock.class) {
+                        mHwController.prepareStylusHandwritingDelegation(
+                                userId, delegatePackageName, delegatorPackageName,
+                                /* connectionless= */ true);
+                    }
+                    callback.onResult(text);
+                }
+
+                @Override
+                public void onError(int errorCode) throws RemoteException {
+                    callback.onError(errorCode);
+                }
+            };
+        }
+
+        if (!startStylusHandwriting(
+                client, false, immsCallback, cursorAnchorInfo, isForDelegation)) {
+            callback.onError(CONNECTIONLESS_HANDWRITING_ERROR_OTHER);
+        }
+    }
+
+    private void startStylusHandwriting(IInputMethodClient client, boolean acceptingDelegation) {
+        startStylusHandwriting(client, acceptingDelegation, null, null, false);
+    }
+
+    private boolean startStylusHandwriting(IInputMethodClient client, boolean acceptingDelegation,
+            IConnectionlessHandwritingCallback connectionlessCallback,
+            CursorAnchorInfo cursorAnchorInfo, boolean isConnectionlessForDelegation) {
         Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "IMMS.startStylusHandwriting");
         try {
             ImeTracing.getInstance().triggerManagerServiceDump(
                     "InputMethodManagerService#startStylusHandwriting");
             int uid = Binder.getCallingUid();
             synchronized (ImfLock.class) {
-                if (!usesDelegation) {
+                if (!acceptingDelegation) {
                     mHwController.clearPendingHandwritingDelegation();
                 }
                 if (!canInteractWithImeLocked(uid, client, "startStylusHandwriting",
                         null /* statsToken */)) {
-                    return;
+                    return false;
                 }
                 if (!hasSupportedStylusLocked()) {
                     Slog.w(TAG, "No supported Stylus hardware found on device. Ignoring"
                             + " startStylusHandwriting()");
-                    return;
+                    return false;
                 }
                 final long ident = Binder.clearCallingIdentity();
                 try {
                     if (!mBindingController.supportsStylusHandwriting()) {
                         Slog.w(TAG,
                                 "Stylus HW unsupported by IME. Ignoring startStylusHandwriting()");
-                        return;
+                        return false;
                     }
 
                     final OptionalInt requestId = mHwController.getCurrentRequestId();
                     if (!requestId.isPresent()) {
                         Slog.e(TAG, "Stylus handwriting was not initialized.");
-                        return;
+                        return false;
                     }
                     if (!mHwController.isStylusGestureOngoing()) {
                         Slog.e(TAG,
                                 "There is no ongoing stylus gesture to start stylus handwriting.");
-                        return;
+                        return false;
                     }
                     if (mHwController.hasOngoingStylusHandwritingSession()) {
                         // prevent duplicate calls to startStylusHandwriting().
                         Slog.e(TAG,
                                 "Stylus handwriting session is already ongoing."
                                         + " Ignoring startStylusHandwriting().");
-                        return;
+                        return false;
                     }
                     if (DEBUG) Slog.v(TAG, "Client requesting Stylus Handwriting to be started");
                     final IInputMethodInvoker curMethod = getCurMethodLocked();
                     if (curMethod != null) {
-                        curMethod.canStartStylusHandwriting(requestId.getAsInt());
+                        curMethod.canStartStylusHandwriting(requestId.getAsInt(),
+                                connectionlessCallback, cursorAnchorInfo,
+                                isConnectionlessForDelegation);
+                        return true;
                     }
                 } finally {
                     Binder.restoreCallingIdentity(ident);
@@ -3432,6 +3504,7 @@
         } finally {
             Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
         }
+        return false;
     }
 
     @Override
@@ -3471,8 +3544,18 @@
         if (!verifyDelegator(client, delegatePackageName, delegatorPackageName, flags)) {
             return false;
         }
-
-        startStylusHandwriting(client, true /* usesDelegation */);
+        synchronized (ImfLock.class) {
+            if (mHwController.isDelegationUsingConnectionlessFlow()) {
+                final IInputMethodInvoker curMethod = getCurMethodLocked();
+                if (curMethod == null) {
+                    return false;
+                }
+                curMethod.commitHandwritingDelegationTextIfAvailable();
+                mHwController.clearPendingHandwritingDelegation();
+            } else {
+                startStylusHandwriting(client, true /* acceptingDelegation */);
+            }
+        }
         return true;
     }
 
@@ -4566,15 +4649,7 @@
         super.startImeTrace_enforcePermission();
         ImeTracing.getInstance().startTrace(null /* printwriter */);
         synchronized (ImfLock.class) {
-            // TODO(b/322816970): Replace this with lambda.
-            mClientController.forAllClients(new Consumer<ClientState>() {
-
-                @GuardedBy("ImfLock.class")
-                @Override
-                public void accept(ClientState c) {
-                    c.mClient.setImeTraceEnabled(true /* enabled */);
-                }
-            });
+            mClientController.forAllClients(c -> c.mClient.setImeTraceEnabled(true /* enabled */));
         }
     }
 
@@ -4586,15 +4661,7 @@
 
         ImeTracing.getInstance().stopTrace(null /* printwriter */);
         synchronized (ImfLock.class) {
-            // TODO(b/322816970): Replace this with lambda.
-            mClientController.forAllClients(new Consumer<ClientState>() {
-
-                @GuardedBy("ImfLock.class")
-                @Override
-                public void accept(ClientState c) {
-                    c.mClient.setImeTraceEnabled(false /* enabled */);
-                }
-            });
+            mClientController.forAllClients(c -> c.mClient.setImeTraceEnabled(false /* enabled */));
         }
     }
 
@@ -4986,7 +5053,8 @@
                     int userId = msg.arg1;
                     String delegate = (String) ((Pair) msg.obj).first;
                     String delegator = (String) ((Pair) msg.obj).second;
-                    mHwController.prepareStylusHandwritingDelegation(userId, delegate, delegator);
+                    mHwController.prepareStylusHandwritingDelegation(
+                            userId, delegate, delegator, /* connectionless= */ false);
                 }
                 return true;
             case MSG_START_HANDWRITING:
@@ -5828,15 +5896,12 @@
                 // We only have sessions when we bound to an input method. Remove this session
                 // from all clients.
                 if (getCurMethodLocked() != null) {
-                    // TODO(b/322816970): Replace this with lambda.
-                    mClientController.forAllClients(new Consumer<ClientState>() {
+                    // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
+                    @SuppressWarnings("GuardedBy") Consumer<ClientState> clearClientSession =
+                            c -> clearClientSessionForAccessibilityLocked(c,
+                                    accessibilityConnectionId);
+                    mClientController.forAllClients(clearClientSession);
 
-                        @GuardedBy("ImfLock.class")
-                        @Override
-                        public void accept(ClientState c) {
-                            clearClientSessionForAccessibilityLocked(c, accessibilityConnectionId);
-                        }
-                    });
                     AccessibilitySessionState session = mEnabledAccessibilitySessions.get(
                             accessibilityConnectionId);
                     if (session != null) {
@@ -5988,7 +6053,23 @@
         @BinderThread
         private void dumpAsProtoNoCheck(FileDescriptor fd) {
             final ProtoOutputStream proto = new ProtoOutputStream(fd);
+            // Dump in the format of an ImeTracing trace with a single entry.
+            final long magicNumber =
+                    ((long) InputMethodManagerServiceTraceFileProto.MAGIC_NUMBER_H << 32)
+                            | InputMethodManagerServiceTraceFileProto.MAGIC_NUMBER_L;
+            final long timeOffsetNs = TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis())
+                    - SystemClock.elapsedRealtimeNanos();
+            proto.write(InputMethodManagerServiceTraceFileProto.MAGIC_NUMBER,
+                    magicNumber);
+            proto.write(InputMethodManagerServiceTraceFileProto.REAL_TO_ELAPSED_TIME_OFFSET_NANOS,
+                    timeOffsetNs);
+            final long token = proto.start(InputMethodManagerServiceTraceFileProto.ENTRY);
+            proto.write(InputMethodManagerServiceTraceProto.ELAPSED_REALTIME_NANOS,
+                    SystemClock.elapsedRealtimeNanos());
+            proto.write(InputMethodManagerServiceTraceProto.WHERE,
+                    "InputMethodManagerService.mPriorityDumper#dumpAsProtoNoCheck");
             dumpDebug(proto, InputMethodManagerServiceTraceProto.INPUT_METHOD_MANAGER_SERVICE);
+            proto.end(token);
             proto.flush();
         }
     };
@@ -6022,24 +6103,21 @@
             }
             // Dump ClientController#mClients
             p.println("  ClientStates:");
-            // TODO(b/322816970): Replace this with lambda.
-            mClientController.forAllClients(new Consumer<ClientState>() {
+            // TODO(b/324907325): Remove the suppress warnings once b/324907325 is fixed.
+            @SuppressWarnings("GuardedBy") Consumer<ClientState> clientControllerDump = c -> {
+                p.println("  " + c + ":");
+                p.println("    client=" + c.mClient);
+                p.println("    fallbackInputConnection="
+                        + c.mFallbackInputConnection);
+                p.println("    sessionRequested="
+                        + c.mSessionRequested);
+                p.println(
+                        "    sessionRequestedForAccessibility="
+                                + c.mSessionRequestedForAccessibility);
+                p.println("    curSession=" + c.mCurSession);
+            };
+            mClientController.forAllClients(clientControllerDump);
 
-                @GuardedBy("ImfLock.class")
-                @Override
-                public void accept(ClientState c) {
-                    p.println("  " + c + ":");
-                    p.println("    client=" + c.mClient);
-                    p.println("    fallbackInputConnection="
-                            + c.mFallbackInputConnection);
-                    p.println("    sessionRequested="
-                            + c.mSessionRequested);
-                    p.println(
-                            "    sessionRequestedForAccessibility="
-                                    + c.mSessionRequestedForAccessibility);
-                    p.println("    curSession=" + c.mCurSession);
-                }
-            });
             p.println("  mCurMethodId=" + getSelectedMethodIdLocked());
             client = mCurClient;
             p.println("  mCurClient=" + client + " mCurSeq=" + getSequenceNumberLocked());
diff --git a/services/core/java/com/android/server/location/GeocoderProxy.java b/services/core/java/com/android/server/location/GeocoderProxy.java
deleted file mode 100644
index ac42646..0000000
--- a/services/core/java/com/android/server/location/GeocoderProxy.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2010 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 com.android.server.location;
-
-import android.annotation.Nullable;
-import android.content.Context;
-import android.location.GeocoderParams;
-import android.location.IGeocodeListener;
-import android.location.IGeocodeProvider;
-import android.os.IBinder;
-import android.os.RemoteException;
-
-import com.android.server.servicewatcher.CurrentUserServiceSupplier;
-import com.android.server.servicewatcher.ServiceWatcher;
-
-import java.util.Collections;
-
-/**
- * Proxy for IGeocodeProvider implementations.
- *
- * @hide
- */
-public class GeocoderProxy {
-
-    private static final String SERVICE_ACTION = "com.android.location.service.GeocodeProvider";
-
-    /**
-     * Creates and registers this proxy. If no suitable service is available for the proxy, returns
-     * null.
-     */
-    @Nullable
-    public static GeocoderProxy createAndRegister(Context context) {
-        GeocoderProxy proxy = new GeocoderProxy(context);
-        if (proxy.register()) {
-            return proxy;
-        } else {
-            return null;
-        }
-    }
-
-    private final ServiceWatcher mServiceWatcher;
-
-    private GeocoderProxy(Context context) {
-        mServiceWatcher = ServiceWatcher.create(context, "GeocoderProxy",
-                CurrentUserServiceSupplier.createFromConfig(context, SERVICE_ACTION,
-                        com.android.internal.R.bool.config_enableGeocoderOverlay,
-                        com.android.internal.R.string.config_geocoderProviderPackageName),
-                null);
-    }
-
-    private boolean register() {
-        boolean resolves = mServiceWatcher.checkServiceResolves();
-        if (resolves) {
-            mServiceWatcher.register();
-        }
-        return resolves;
-    }
-
-    /**
-     * Geocodes stuff.
-     */
-    public void getFromLocation(double latitude, double longitude, int maxResults,
-            GeocoderParams params, IGeocodeListener listener) {
-        mServiceWatcher.runOnBinder(new ServiceWatcher.BinderOperation() {
-            @Override
-            public void run(IBinder binder) throws RemoteException {
-                IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
-                provider.getFromLocation(latitude, longitude, maxResults, params, listener);
-            }
-
-            @Override
-            public void onError(Throwable t) {
-                try {
-                    listener.onResults(t.toString(), Collections.emptyList());
-                } catch (RemoteException e) {
-                    // ignore
-                }
-            }
-        });
-    }
-
-    /**
-     * Geocodes stuff.
-     */
-    public void getFromLocationName(String locationName,
-            double lowerLeftLatitude, double lowerLeftLongitude,
-            double upperRightLatitude, double upperRightLongitude, int maxResults,
-            GeocoderParams params, IGeocodeListener listener) {
-        mServiceWatcher.runOnBinder(new ServiceWatcher.BinderOperation() {
-            @Override
-            public void run(IBinder binder) throws RemoteException {
-                IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
-                provider.getFromLocationName(locationName, lowerLeftLatitude,
-                        lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
-                        maxResults, params, listener);
-            }
-
-            @Override
-            public void onError(Throwable t) {
-                try {
-                    listener.onResults(t.toString(), Collections.emptyList());
-                } catch (RemoteException e) {
-                    // ignore
-                }
-            }
-        });
-    }
-}
diff --git a/services/core/java/com/android/server/location/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java
index 323cdc5..c5f3855 100644
--- a/services/core/java/com/android/server/location/LocationManagerService.java
+++ b/services/core/java/com/android/server/location/LocationManagerService.java
@@ -52,13 +52,11 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.location.Criteria;
-import android.location.GeocoderParams;
 import android.location.Geofence;
 import android.location.GnssAntennaInfo;
 import android.location.GnssCapabilities;
 import android.location.GnssMeasurementCorrections;
 import android.location.GnssMeasurementRequest;
-import android.location.IGeocodeListener;
 import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssNavigationMessageListener;
@@ -75,8 +73,11 @@
 import android.location.LocationProvider;
 import android.location.LocationRequest;
 import android.location.LocationTime;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.IGeocodeCallback;
 import android.location.provider.IProviderRequestListener;
 import android.location.provider.ProviderProperties;
+import android.location.provider.ReverseGeocodeRequest;
 import android.location.util.identity.CallerIdentity;
 import android.os.Binder;
 import android.os.Build;
@@ -141,6 +142,7 @@
 import com.android.server.location.provider.PassiveLocationProvider;
 import com.android.server.location.provider.PassiveLocationProviderManager;
 import com.android.server.location.provider.StationaryThrottlingLocationProvider;
+import com.android.server.location.provider.proxy.ProxyGeocodeProvider;
 import com.android.server.location.provider.proxy.ProxyLocationProvider;
 import com.android.server.location.settings.LocationSettings;
 import com.android.server.location.settings.LocationUserSettings;
@@ -253,7 +255,7 @@
 
     private final GeofenceManager mGeofenceManager;
     private volatile @Nullable GnssManagerService mGnssManagerService = null;
-    private GeocoderProxy mGeocodeProvider;
+    private ProxyGeocodeProvider mGeocodeProvider;
 
     private final Object mDeprecatedGnssBatchingLock = new Object();
     @GuardedBy("mDeprecatedGnssBatchingLock")
@@ -493,7 +495,7 @@
         }
 
         // bind to geocoder provider
-        mGeocodeProvider = GeocoderProxy.createAndRegister(mContext);
+        mGeocodeProvider = ProxyGeocodeProvider.createAndRegister(mContext);
         if (mGeocodeProvider == null) {
             Log.e(TAG, "no geocoder provider found");
         }
@@ -1363,23 +1365,22 @@
     }
 
     @Override
-    public boolean geocoderIsPresent() {
+    public boolean isGeocodeAvailable() {
         return mGeocodeProvider != null;
     }
 
     @Override
-    public void getFromLocation(double latitude, double longitude, int maxResults,
-            GeocoderParams params, IGeocodeListener listener) {
-        // validate identity
-        CallerIdentity identity = CallerIdentity.fromBinder(mContext, params.getClientPackage(),
-                params.getClientAttributionTag());
-        Preconditions.checkArgument(identity.getUid() == params.getClientUid());
+    public void reverseGeocode(ReverseGeocodeRequest request, IGeocodeCallback callback) {
+        CallerIdentity identity =
+                CallerIdentity.fromBinder(
+                        mContext, request.getCallingPackage(), request.getCallingAttributionTag());
+        Preconditions.checkArgument(identity.getUid() == request.getCallingUid());
 
         if (mGeocodeProvider != null) {
-            mGeocodeProvider.getFromLocation(latitude, longitude, maxResults, params, listener);
+            mGeocodeProvider.reverseGeocode(request, callback);
         } else {
             try {
-                listener.onResults(null, Collections.emptyList());
+                callback.onError(null);
             } catch (RemoteException e) {
                 // ignore
             }
@@ -1387,22 +1388,17 @@
     }
 
     @Override
-    public void getFromLocationName(String locationName,
-            double lowerLeftLatitude, double lowerLeftLongitude,
-            double upperRightLatitude, double upperRightLongitude, int maxResults,
-            GeocoderParams params, IGeocodeListener listener) {
-        // validate identity
-        CallerIdentity identity = CallerIdentity.fromBinder(mContext, params.getClientPackage(),
-                params.getClientAttributionTag());
-        Preconditions.checkArgument(identity.getUid() == params.getClientUid());
+    public void forwardGeocode(ForwardGeocodeRequest request, IGeocodeCallback callback) {
+        CallerIdentity identity =
+                CallerIdentity.fromBinder(
+                        mContext, request.getCallingPackage(), request.getCallingAttributionTag());
+        Preconditions.checkArgument(identity.getUid() == request.getCallingUid());
 
         if (mGeocodeProvider != null) {
-            mGeocodeProvider.getFromLocationName(locationName, lowerLeftLatitude,
-                    lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
-                    maxResults, params, listener);
+            mGeocodeProvider.forwardGeocode(request, callback);
         } else {
             try {
-                listener.onResults(null, Collections.emptyList());
+                callback.onError(null);
             } catch (RemoteException e) {
                 // ignore
             }
diff --git a/services/core/java/com/android/server/location/provider/proxy/ProxyGeocodeProvider.java b/services/core/java/com/android/server/location/provider/proxy/ProxyGeocodeProvider.java
new file mode 100644
index 0000000..ac945f1
--- /dev/null
+++ b/services/core/java/com/android/server/location/provider/proxy/ProxyGeocodeProvider.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2010 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 com.android.server.location.provider.proxy;
+
+import android.annotation.Nullable;
+import android.content.Context;
+import android.location.provider.ForwardGeocodeRequest;
+import android.location.provider.GeocodeProviderBase;
+import android.location.provider.IGeocodeCallback;
+import android.location.provider.IGeocodeProvider;
+import android.location.provider.ReverseGeocodeRequest;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.android.server.servicewatcher.CurrentUserServiceSupplier;
+import com.android.server.servicewatcher.ServiceWatcher;
+
+/** Proxy for IGeocodeProvider implementations. */
+public class ProxyGeocodeProvider {
+
+    /**
+     * Creates and registers this proxy. If no suitable service is available for the proxy, returns
+     * null.
+     */
+    @Nullable
+    public static ProxyGeocodeProvider createAndRegister(Context context) {
+        ProxyGeocodeProvider proxy = new ProxyGeocodeProvider(context);
+        if (proxy.register()) {
+            return proxy;
+        } else {
+            return null;
+        }
+    }
+
+    private final ServiceWatcher mServiceWatcher;
+
+    private ProxyGeocodeProvider(Context context) {
+        mServiceWatcher =
+                ServiceWatcher.create(
+                        context,
+                        "GeocoderProxy",
+                        CurrentUserServiceSupplier.createFromConfig(
+                                context,
+                                GeocodeProviderBase.ACTION_GEOCODE_PROVIDER,
+                                com.android.internal.R.bool.config_enableGeocoderOverlay,
+                                com.android.internal.R.string.config_geocoderProviderPackageName),
+                        null);
+    }
+
+    private boolean register() {
+        boolean resolves = mServiceWatcher.checkServiceResolves();
+        if (resolves) {
+            mServiceWatcher.register();
+        }
+        return resolves;
+    }
+
+    /** Reverse geocodes. */
+    public void reverseGeocode(ReverseGeocodeRequest request, IGeocodeCallback callback) {
+        mServiceWatcher.runOnBinder(
+                new ServiceWatcher.BinderOperation() {
+                    @Override
+                    public void run(IBinder binder) throws RemoteException {
+                        IGeocodeProvider.Stub.asInterface(binder).reverseGeocode(request, callback);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        try {
+                            callback.onError(t.toString());
+                        } catch (RemoteException e) {
+                            // ignore
+                        }
+                    }
+                });
+    }
+
+    /** Forward geocodes. */
+    public void forwardGeocode(ForwardGeocodeRequest request, IGeocodeCallback callback) {
+        mServiceWatcher.runOnBinder(
+                new ServiceWatcher.BinderOperation() {
+                    @Override
+                    public void run(IBinder binder) throws RemoteException {
+                        IGeocodeProvider.Stub.asInterface(binder).forwardGeocode(request, callback);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        try {
+                            callback.onError(t.toString());
+                        } catch (RemoteException e) {
+                            // ignore
+                        }
+                    }
+                });
+    }
+}
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index 7fb3e00..9a76ebd 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -18,6 +18,7 @@
 
 import static android.security.Flags.reportPrimaryAuthAttempts;
 import static android.Manifest.permission.ACCESS_KEYGUARD_SECURE_STORAGE;
+import static android.Manifest.permission.CONFIGURE_FACTORY_RESET_PROTECTION;
 import static android.Manifest.permission.MANAGE_BIOMETRIC;
 import static android.Manifest.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS;
 import static android.Manifest.permission.SET_INITIAL_LOCK;
@@ -27,6 +28,7 @@
 import static android.app.admin.DevicePolicyResources.Strings.Core.PROFILE_ENCRYPTED_MESSAGE;
 import static android.app.admin.DevicePolicyResources.Strings.Core.PROFILE_ENCRYPTED_TITLE;
 import static android.content.Context.KEYGUARD_SERVICE;
+import static android.content.Intent.ACTION_MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.os.UserHandle.USER_ALL;
 import static android.os.UserHandle.USER_SYSTEM;
@@ -1201,8 +1203,9 @@
 
         final boolean inSetupWizard = Settings.Secure.getIntForUser(cr,
                 Settings.Secure.USER_SETUP_COMPLETE, 0, mainUserId) == 0;
-        final boolean secureFrp = Settings.Global.getInt(cr,
-                Settings.Global.SECURE_FRP_MODE, 0) == 1;
+        final boolean secureFrp = android.security.Flags.frpEnforcement()
+                ? mStorage.isFactoryResetProtectionActive()
+                : (Settings.Global.getInt(cr, Settings.Global.SECURE_FRP_MODE, 0) == 1);
 
         if (inSetupWizard && secureFrp) {
             throw new SecurityException("Cannot change credential in SUW while factory reset"
@@ -2332,8 +2335,13 @@
 
         synchronized (mSpManager) {
             if (isSpecialUserId(userId)) {
-                return mSpManager.verifySpecialUserCredential(userId, getGateKeeperService(),
+                response = mSpManager.verifySpecialUserCredential(userId, getGateKeeperService(),
                         credential, progressCallback);
+                if (android.security.Flags.frpEnforcement() && response.isMatched()
+                        && userId == USER_FRP) {
+                    mStorage.deactivateFactoryResetProtectionWithoutSecret();
+                }
+                return response;
             }
 
             long protectorId = getCurrentLskfBasedProtectorId(userId);
@@ -3054,6 +3062,7 @@
         setCurrentLskfBasedProtectorId(newProtectorId, userId);
         LockPatternUtils.invalidateCredentialTypeCache();
         synchronizeUnifiedChallengeForProfiles(userId, profilePasswords);
+        sendMainUserCredentialChangedNotificationIfNeeded(userId);
 
         setUserPasswordMetrics(credential, userId);
         mUnifiedProfilePasswordCache.removePassword(userId);
@@ -3071,6 +3080,24 @@
         return newProtectorId;
     }
 
+    private void sendMainUserCredentialChangedNotificationIfNeeded(int userId) {
+        if (!android.security.Flags.frpEnforcement()) {
+            return;
+        }
+
+        if (userId != mInjector.getUserManagerInternal().getMainUserId()) {
+            return;
+        }
+
+        sendBroadcast(new Intent(ACTION_MAIN_USER_LOCKSCREEN_KNOWLEDGE_FACTOR_CHANGED),
+                UserHandle.of(userId), CONFIGURE_FACTORY_RESET_PROTECTION);
+    }
+
+    @VisibleForTesting
+    void sendBroadcast(Intent intent, UserHandle userHandle, String permission) {
+        mContext.sendBroadcastAsUser(intent, userHandle, permission, /* options */ null);
+    }
+
     private void removeBiometricsForUser(int userId) {
         removeAllFingerprintForUser(userId);
         removeAllFaceForUser(userId);
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
index 6d123cc..158d444 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsStorage.java
@@ -34,6 +34,7 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
+import android.service.persistentdata.PersistentDataBlockManager;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.AtomicFile;
@@ -587,6 +588,10 @@
         return mPersistentDataBlockManagerInternal;
     }
 
+    /**
+     * Writes main user credential handle to the persistent data block, to enable factory reset
+     * protection to be deactivated with the credential.
+     */
     public void writePersistentDataBlock(int persistentType, int userId, int qualityForUi,
             byte[] payload) {
         PersistentDataBlockManagerInternal persistentDataBlock = getPersistentDataBlockManager();
@@ -610,6 +615,31 @@
         }
     }
 
+    public void deactivateFactoryResetProtectionWithoutSecret() {
+        PersistentDataBlockManagerInternal persistentDataBlock = getPersistentDataBlockManager();
+        if (persistentDataBlock != null) {
+            persistentDataBlock.deactivateFactoryResetProtectionWithoutSecret();
+        } else {
+            Slog.wtf(TAG, "Failed to get PersistentDataBlockManagerInternal");
+        }
+    }
+
+    public boolean isFactoryResetProtectionActive() {
+        PersistentDataBlockManager persistentDataBlockManager =
+                mContext.getSystemService(PersistentDataBlockManager.class);
+        if (persistentDataBlockManager != null) {
+            return persistentDataBlockManager.isFactoryResetProtectionActive();
+        } else {
+            Slog.wtf(TAG, "Failed to get PersistentDataBlockManager");
+            // This should never happen, but in the event it does, let's not block the user.  This
+            // may be the wrong call, since if an attacker can find a way to prevent us from
+            // getting the PersistentDataBlockManager they can defeat FRP, but if they can block
+            // access to PersistentDataBlockManager they must have compromised the system and we've
+            // probably already lost this battle.
+            return false;
+        }
+    }
+
     /**
      * Provides a concrete data structure to represent the minimal information from
      * a user's LSKF-based SP protector that is needed to verify the user's LSKF,
diff --git a/services/core/java/com/android/server/locksettings/OWNERS b/services/core/java/com/android/server/locksettings/OWNERS
index 5d49863..48da270 100644
--- a/services/core/java/com/android/server/locksettings/OWNERS
+++ b/services/core/java/com/android/server/locksettings/OWNERS
@@ -1,4 +1,3 @@
 # Bug component: 1333694
 ebiggers@google.com
-jaggies@google.com
 rubinxu@google.com
diff --git a/services/core/java/com/android/server/media/MediaSession2Record.java b/services/core/java/com/android/server/media/MediaSession2Record.java
index 393e7ef..34bb219 100644
--- a/services/core/java/com/android/server/media/MediaSession2Record.java
+++ b/services/core/java/com/android/server/media/MediaSession2Record.java
@@ -55,8 +55,15 @@
     @GuardedBy("mLock")
     private boolean mIsClosed;
 
-    public MediaSession2Record(Session2Token sessionToken, MediaSessionService service,
-            Looper handlerLooper, int policies) {
+    private final int mPid;
+    private final ForegroundServiceDelegationOptions mForegroundServiceDelegationOptions;
+
+    public MediaSession2Record(
+            Session2Token sessionToken,
+            MediaSessionService service,
+            Looper handlerLooper,
+            int pid,
+            int policies) {
         // The lock is required to prevent `Controller2Callback` from using partially initialized
         // `MediaSession2Record.this`.
         synchronized (mLock) {
@@ -66,7 +73,27 @@
             mController = new MediaController2.Builder(service.getContext(), sessionToken)
                     .setControllerCallback(mHandlerExecutor, new Controller2Callback())
                     .build();
+            mPid = pid;
             mPolicies = policies;
+            mForegroundServiceDelegationOptions =
+                    new ForegroundServiceDelegationOptions.Builder()
+                            .setClientPid(mPid)
+                            .setClientUid(getUid())
+                            .setClientPackageName(getPackageName())
+                            .setClientAppThread(null)
+                            .setSticky(false)
+                            .setClientInstanceName(
+                                    "MediaSessionFgsDelegate_"
+                                            + getUid()
+                                            + "_"
+                                            + mPid
+                                            + "_"
+                                            + getPackageName())
+                            .setForegroundServiceTypes(0)
+                            .setDelegationService(
+                                    ForegroundServiceDelegationOptions
+                                            .DELEGATION_SERVICE_MEDIA_PLAYBACK)
+                            .build();
         }
     }
 
@@ -91,8 +118,7 @@
 
     @Override
     public ForegroundServiceDelegationOptions getForegroundServiceDelegationOptions() {
-        // TODO: Implement when MediaSession2 knows about its owner pid.
-        return null;
+        return mForegroundServiceDelegationOptions;
     }
 
     @Override
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index 7fabdf2..8cb5cef 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -171,12 +171,27 @@
     private final MediaCommunicationManager.SessionCallback mSession2TokenCallback =
             new MediaCommunicationManager.SessionCallback() {
                 @Override
+                // TODO (b/324266224): Deprecate this method once other overload is published.
                 public void onSession2TokenCreated(Session2Token token) {
+                    addSession(token, Process.INVALID_PID);
+                }
+
+                @Override
+                public void onSession2TokenCreated(Session2Token token, int pid) {
+                    addSession(token, pid);
+                }
+
+                private void addSession(Session2Token token, int pid) {
                     if (DEBUG) {
                         Log.d(TAG, "Session2 is created " + token);
                     }
-                    MediaSession2Record record = new MediaSession2Record(token,
-                            MediaSessionService.this, mRecordThread.getLooper(), 0);
+                    MediaSession2Record record =
+                            new MediaSession2Record(
+                                    token,
+                                    MediaSessionService.this,
+                                    mRecordThread.getLooper(),
+                                    pid,
+                                    /* policies= */ 0);
                     synchronized (mLock) {
                         FullUserRecord user = getFullUserRecordLocked(record.getUserId());
                         if (user != null) {
@@ -583,7 +598,8 @@
         }
         ForegroundServiceDelegationOptions foregroundServiceDelegationOptions =
                 record.getForegroundServiceDelegationOptions();
-        if (foregroundServiceDelegationOptions == null) {
+        if (foregroundServiceDelegationOptions == null
+                || foregroundServiceDelegationOptions.mClientPid == Process.INVALID_PID) {
             // This record doesn't support FGS delegation. In practice, this is MediaSession2.
             return;
         }
diff --git a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java
index 2cd8fe0..f60f55c 100644
--- a/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java
+++ b/services/core/java/com/android/server/media/metrics/MediaMetricsManagerService.java
@@ -47,6 +47,7 @@
 import java.security.SecureRandom;
 import java.util.Arrays;
 import java.util.List;
+import java.util.regex.Pattern;
 
 /**
  * System service manages media metrics.
@@ -79,6 +80,10 @@
     private static final String FAILED_TO_GET = "failed_to_get";
 
     private static final MediaItemInfo EMPTY_MEDIA_ITEM_INFO = new MediaItemInfo.Builder().build();
+    private static final Pattern PATTERN_KNOWN_EDITING_LIBRARY_NAMES =
+            Pattern.compile(
+                    "androidx\\.media3:media3-(transformer|muxer):"
+                            + "[\\d.]+(-(alpha|beta|rc)\\d\\d)?");
     private static final int DURATION_BUCKETS_BELOW_ONE_MINUTE = 8;
     private static final int DURATION_BUCKETS_COUNT = 13;
     private static final String AUDIO_MIME_TYPE_PREFIX = "audio/";
@@ -415,8 +420,11 @@
                             .setAtomId(798)
                             .writeString(sessionId)
                             .writeInt(event.getFinalState())
+                            .writeFloat(event.getFinalProgressPercent())
                             .writeInt(event.getErrorCode())
                             .writeLong(event.getTimeSinceCreatedMillis())
+                            .writeString(getFilteredLibraryName(event.getExporterName()))
+                            .writeString(getFilteredLibraryName(event.getMuxerName()))
                             .writeInt(getThroughputFps(event))
                             .writeInt(event.getInputMediaItemInfos().size())
                             .writeInt(inputMediaItemInfo.getSourceType())
@@ -629,6 +637,16 @@
         }
     }
 
+    private static String getFilteredLibraryName(String libraryName) {
+        if (TextUtils.isEmpty(libraryName)) {
+            return "";
+        }
+        if (!PATTERN_KNOWN_EDITING_LIBRARY_NAMES.matcher(libraryName).matches()) {
+            return "";
+        }
+        return libraryName;
+    }
+
     private static int getThroughputFps(EditingEndedEvent event) {
         MediaItemInfo outputMediaItemInfo = event.getOutputMediaItemInfo();
         if (outputMediaItemInfo == null) {
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index f9ffb1c..b5c51af 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -26,6 +26,8 @@
 import static android.Manifest.permission.OBSERVE_NETWORK_POLICY;
 import static android.Manifest.permission.READ_PHONE_STATE;
 import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK;
 import static android.app.ActivityManager.PROCESS_STATE_UNKNOWN;
 import static android.app.ActivityManager.isProcStateConsideredInteraction;
 import static android.app.ActivityManager.printCapabilitiesSummary;
@@ -85,8 +87,10 @@
 import static android.net.NetworkPolicyManager.ALLOWED_REASON_RESTRICTED_MODE_PERMISSIONS;
 import static android.net.NetworkPolicyManager.ALLOWED_REASON_SYSTEM;
 import static android.net.NetworkPolicyManager.ALLOWED_REASON_TOP;
+import static android.net.NetworkPolicyManager.BACKGROUND_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE;
 import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
+import static android.net.NetworkPolicyManager.FOREGROUND_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND;
 import static android.net.NetworkPolicyManager.POLICY_NONE;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
@@ -97,6 +101,7 @@
 import static android.net.NetworkPolicyManager.RULE_REJECT_RESTRICTED_MODE;
 import static android.net.NetworkPolicyManager.RULE_TEMPORARY_ALLOW_METERED;
 import static android.net.NetworkPolicyManager.SUBSCRIPTION_OVERRIDE_UNMETERED;
+import static android.net.NetworkPolicyManager.TOP_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.allowedReasonsToString;
 import static android.net.NetworkPolicyManager.blockedReasonsToString;
 import static android.net.NetworkPolicyManager.isProcStateAllowedNetworkWhileBackground;
@@ -469,7 +474,8 @@
      */
     private static final int MSG_PROCESS_BACKGROUND_TRANSITIONING_UIDS = 24;
 
-    private static final int UID_MSG_STATE_CHANGED = 100;
+    @VisibleForTesting
+    static final int UID_MSG_STATE_CHANGED = 100;
     private static final int UID_MSG_GONE = 101;
 
     private static final String PROP_SUB_PLAN_OWNER = "persist.sys.sub_plan_owner";
@@ -1075,8 +1081,6 @@
 
                 final int cutpoint = mBackgroundNetworkRestricted ? PROCESS_STATE_UNKNOWN
                         : NetworkPolicyManager.FOREGROUND_THRESHOLD_STATE;
-                // TODO (b/319728914): Filter out the unnecessary changes when using no cutpoint.
-
                 mActivityManagerInternal.registerNetworkPolicyUidObserver(mUidObserver, changes,
                         cutpoint, "android");
                 mNetworkManager.registerObserver(mAlertObserver);
@@ -1185,6 +1189,51 @@
     }
 
     final private IUidObserver mUidObserver = new UidObserver() {
+
+        /**
+         * Returns whether the uid state change information is relevant for the service. If the
+         * state information does not lead to any change in the network rules, it can safely be
+         * ignored.
+         */
+        @GuardedBy("mUidStateCallbackInfos")
+        private boolean isUidStateChangeRelevant(UidStateCallbackInfo previousInfo,
+                int newProcState, long newProcStateSeq, int newCapability) {
+            if (previousInfo.procStateSeq == -1) {
+                // No previous record. Always process the first state change callback.
+                return true;
+            }
+            if (newProcStateSeq <= previousInfo.procStateSeq) {
+                // Stale callback. Ignore.
+                return false;
+            }
+            final int previousProcState = previousInfo.procState;
+            if (mBackgroundNetworkRestricted && (previousProcState >= BACKGROUND_THRESHOLD_STATE)
+                    != (newProcState >= BACKGROUND_THRESHOLD_STATE)) {
+                // Proc-state change crossed BACKGROUND_THRESHOLD_STATE: Network rules for the
+                // BACKGROUND chain may change.
+                return true;
+            }
+            if ((previousProcState <= TOP_THRESHOLD_STATE)
+                    != (newProcState <= TOP_THRESHOLD_STATE)) {
+                // Proc-state change crossed TOP_THRESHOLD_STATE: Network rules for the
+                // LOW_POWER_STANDBY chain may change.
+                return true;
+            }
+            if ((previousProcState <= FOREGROUND_THRESHOLD_STATE)
+                    != (newProcState <= FOREGROUND_THRESHOLD_STATE)) {
+                // Proc-state change crossed FOREGROUND_THRESHOLD_STATE: Network rules for many
+                // different chains may change.
+                return true;
+            }
+            final int networkCapabilities = PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
+                    | PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK;
+            if ((previousInfo.capability & networkCapabilities)
+                    != (newCapability & networkCapabilities)) {
+                return true;
+            }
+            return false;
+        }
+
         @Override public void onUidStateChanged(int uid, int procState, long procStateSeq,
                 @ProcessCapability int capability) {
             synchronized (mUidStateCallbackInfos) {
@@ -1193,13 +1242,13 @@
                     callbackInfo = new UidStateCallbackInfo();
                     mUidStateCallbackInfos.put(uid, callbackInfo);
                 }
-                if (callbackInfo.procStateSeq == -1 || procStateSeq > callbackInfo.procStateSeq) {
+                if (isUidStateChangeRelevant(callbackInfo, procState, procStateSeq, capability)) {
                     callbackInfo.update(uid, procState, procStateSeq, capability);
-                }
-                if (!callbackInfo.isPending) {
-                    mUidEventHandler.obtainMessage(UID_MSG_STATE_CHANGED, callbackInfo)
-                            .sendToTarget();
-                    callbackInfo.isPending = true;
+                    if (!callbackInfo.isPending) {
+                        mUidEventHandler.obtainMessage(UID_MSG_STATE_CHANGED, callbackInfo)
+                                .sendToTarget();
+                        callbackInfo.isPending = true;
+                    }
                 }
             }
         }
diff --git a/services/core/java/com/android/server/notification/GroupHelper.java b/services/core/java/com/android/server/notification/GroupHelper.java
index e349fa3..babb6c2 100644
--- a/services/core/java/com/android/server/notification/GroupHelper.java
+++ b/services/core/java/com/android/server/notification/GroupHelper.java
@@ -22,6 +22,8 @@
 import static android.app.Notification.FLAG_LOCAL_ONLY;
 import static android.app.Notification.FLAG_NO_CLEAR;
 import static android.app.Notification.FLAG_ONGOING_EVENT;
+import static android.app.Notification.VISIBILITY_PRIVATE;
+import static android.app.Notification.VISIBILITY_PUBLIC;
 
 import android.annotation.NonNull;
 import android.app.Notification;
@@ -145,7 +147,8 @@
                     mUngroupedNotifications.getOrDefault(key, new ArrayMap<>());
 
             NotificationAttributes attr = new NotificationAttributes(sbn.getNotification().flags,
-                    sbn.getNotification().getSmallIcon(), sbn.getNotification().color);
+                    sbn.getNotification().getSmallIcon(), sbn.getNotification().color,
+                    sbn.getNotification().visibility);
             children.put(sbn.getKey(), attr);
             mUngroupedNotifications.put(key, children);
 
@@ -158,25 +161,29 @@
         if (notificationsToGroup.size() > 0) {
             if (autogroupSummaryExists) {
                 NotificationAttributes attr = new NotificationAttributes(flags,
-                        sbn.getNotification().getSmallIcon(), sbn.getNotification().color);
+                        sbn.getNotification().getSmallIcon(), sbn.getNotification().color,
+                        VISIBILITY_PRIVATE);
                 if (Flags.autogroupSummaryIconUpdate()) {
-                    attr = updateAutobundledSummaryIcon(sbn.getPackageName(), childrenAttr, attr);
+                    attr = updateAutobundledSummaryAttributes(sbn.getPackageName(), childrenAttr,
+                            attr);
                 }
 
                 mCallback.updateAutogroupSummary(sbn.getUserId(), sbn.getPackageName(), attr);
             } else {
                 Icon summaryIcon = sbn.getNotification().getSmallIcon();
                 int summaryIconColor = sbn.getNotification().color;
+                int summaryVisibility = VISIBILITY_PRIVATE;
                 if (Flags.autogroupSummaryIconUpdate()) {
-                    // Calculate the initial summary icon and icon color
-                    NotificationAttributes iconAttr = getAutobundledSummaryIconAndColor(
+                    // Calculate the initial summary icon, icon color and visibility
+                    NotificationAttributes iconAttr = getAutobundledSummaryAttributes(
                             sbn.getPackageName(), childrenAttr);
                     summaryIcon = iconAttr.icon;
                     summaryIconColor = iconAttr.iconColor;
+                    summaryVisibility = iconAttr.visibility;
                 }
 
                 NotificationAttributes attr = new NotificationAttributes(flags, summaryIcon,
-                        summaryIconColor);
+                        summaryIconColor, summaryVisibility);
                 mCallback.addAutoGroupSummary(sbn.getUserId(), sbn.getPackageName(), sbn.getKey(),
                         attr);
             }
@@ -238,18 +245,19 @@
             mCallback.removeAutoGroupSummary(userId, sbn.getPackageName());
         } else {
             NotificationAttributes attr = new NotificationAttributes(summaryFlags,
-                    sbn.getNotification().getSmallIcon(), sbn.getNotification().color);
-            boolean iconUpdated = false;
+                    sbn.getNotification().getSmallIcon(), sbn.getNotification().color,
+                    VISIBILITY_PRIVATE);
+            boolean attributesUpdated = false;
             if (Flags.autogroupSummaryIconUpdate()) {
-                NotificationAttributes newAttr = updateAutobundledSummaryIcon(sbn.getPackageName(),
-                        childrenAttrs, attr);
+                NotificationAttributes newAttr = updateAutobundledSummaryAttributes(
+                        sbn.getPackageName(), childrenAttrs, attr);
                 if (!newAttr.equals(attr)) {
-                    iconUpdated = true;
+                    attributesUpdated = true;
                     attr = newAttr;
                 }
             }
 
-            if (updateSummaryFlags || iconUpdated) {
+            if (updateSummaryFlags || attributesUpdated) {
                 mCallback.updateAutogroupSummary(userId, sbn.getPackageName(), attr);
             }
         }
@@ -268,12 +276,13 @@
         }
     }
 
-    NotificationAttributes getAutobundledSummaryIconAndColor(@NonNull String packageName,
+    NotificationAttributes getAutobundledSummaryAttributes(@NonNull String packageName,
             @NonNull List<NotificationAttributes> childrenAttr) {
         Icon newIcon = null;
         boolean childrenHaveSameIcon = true;
         int newColor = Notification.COLOR_INVALID;
         boolean childrenHaveSameColor = true;
+        int newVisibility = VISIBILITY_PRIVATE;
 
         // Both the icon drawable and the icon background color are updated according to this rule:
         // - if all child icons are identical => use the common icon
@@ -296,6 +305,10 @@
                     childrenHaveSameColor = false;
                 }
             }
+            // Check for visibility. If at least one child is public, then set to public
+            if (state.visibility == VISIBILITY_PUBLIC) {
+                newVisibility = VISIBILITY_PUBLIC;
+            }
         }
         if (!childrenHaveSameIcon) {
             newIcon = getMonochromeAppIcon(packageName);
@@ -304,13 +317,13 @@
             newColor = COLOR_DEFAULT;
         }
 
-        return new NotificationAttributes(0, newIcon, newColor);
+        return new NotificationAttributes(0, newIcon, newColor, newVisibility);
     }
 
-    NotificationAttributes updateAutobundledSummaryIcon(@NonNull String packageName,
+    NotificationAttributes updateAutobundledSummaryAttributes(@NonNull String packageName,
             @NonNull List<NotificationAttributes> childrenAttr,
             @NonNull NotificationAttributes oldAttr) {
-        NotificationAttributes newAttr = getAutobundledSummaryIconAndColor(packageName,
+        NotificationAttributes newAttr = getAutobundledSummaryAttributes(packageName,
                 childrenAttr);
         Icon newIcon = newAttr.icon;
         int newColor = newAttr.iconColor;
@@ -321,7 +334,7 @@
             newColor = oldAttr.iconColor;
         }
 
-        return new NotificationAttributes(oldAttr.flags, newIcon, newColor);
+        return new NotificationAttributes(oldAttr.flags, newIcon, newColor, newAttr.visibility);
     }
 
     /**
@@ -358,17 +371,20 @@
         public final int flags;
         public final int iconColor;
         public final Icon icon;
+        public final int visibility;
 
-        public NotificationAttributes(int flags, Icon icon, int iconColor) {
+        public NotificationAttributes(int flags, Icon icon, int iconColor, int visibility) {
             this.flags = flags;
             this.icon = icon;
             this.iconColor = iconColor;
+            this.visibility = visibility;
         }
 
         public NotificationAttributes(@NonNull NotificationAttributes attr) {
             this.flags = attr.flags;
             this.icon = attr.icon;
             this.iconColor = attr.iconColor;
+            this.visibility = attr.visibility;
         }
 
         @Override
@@ -379,12 +395,13 @@
             if (!(o instanceof NotificationAttributes that)) {
                 return false;
             }
-            return flags == that.flags && iconColor == that.iconColor && icon.sameAs(that.icon);
+            return flags == that.flags && iconColor == that.iconColor && icon.sameAs(that.icon)
+                    && visibility == that.visibility;
         }
 
         @Override
         public int hashCode() {
-            return Objects.hash(flags, iconColor, icon);
+            return Objects.hash(flags, iconColor, icon, visibility);
         }
     }
 
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 3507d2d..d751186 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -95,9 +95,11 @@
 import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL;
 import static android.os.PowerWhitelistManager.REASON_NOTIFICATION_SERVICE;
 import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED;
+import static android.os.UserHandle.USER_ALL;
 import static android.os.UserHandle.USER_NULL;
 import static android.os.UserHandle.USER_SYSTEM;
 import static android.service.notification.Flags.redactSensitiveNotificationsFromUntrustedListeners;
+import static android.service.notification.Flags.callstyleCallbackApi;
 import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ALERTING;
 import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_CONVERSATIONS;
 import static android.service.notification.NotificationListenerService.FLAG_FILTER_TYPE_ONGOING;
@@ -160,6 +162,7 @@
 import android.Manifest.permission;
 import android.annotation.DurationMillisLong;
 import android.annotation.ElapsedRealtimeLong;
+import android.annotation.EnforcePermission;
 import android.annotation.FlaggedApi;
 import android.annotation.MainThread;
 import android.annotation.NonNull;
@@ -176,6 +179,7 @@
 import android.app.AppOpsManager;
 import android.app.AutomaticZenRule;
 import android.app.IActivityManager;
+import android.app.ICallNotificationEventCallback;
 import android.app.INotificationManager;
 import android.app.ITransientNotification;
 import android.app.ITransientNotificationCallback;
@@ -255,6 +259,7 @@
 import android.os.PowerManager;
 import android.os.PowerManager.WakeLock;
 import android.os.Process;
+import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
@@ -729,6 +734,9 @@
     private NotificationUsageStats mUsageStats;
     private boolean mLockScreenAllowSecureNotifications = true;
     boolean mSystemExemptFromDismissal = false;
+    final ArrayMap<String, ArrayMap<Integer,
+            RemoteCallbackList<ICallNotificationEventCallback>>>
+            mCallNotificationEventCallbacks = new ArrayMap<>();
 
     private static final int MY_UID = Process.myUid();
     private static final int MY_PID = Process.myPid();
@@ -1030,15 +1038,17 @@
         }
         int oldFlags = summary.getSbn().getNotification().flags;
 
-        boolean iconUpdated =
+        boolean attributesUpdated =
                 !summaryAttr.icon.sameAs(summary.getSbn().getNotification().getSmallIcon())
-                || summaryAttr.iconColor != summary.getSbn().getNotification().color;
+                || summaryAttr.iconColor != summary.getSbn().getNotification().color
+                || summaryAttr.visibility != summary.getSbn().getNotification().visibility;
 
-        if (oldFlags != summaryAttr.flags || iconUpdated) {
+        if (oldFlags != summaryAttr.flags || attributesUpdated) {
             summary.getSbn().getNotification().flags =
                     summaryAttr.flags != GroupHelper.FLAG_INVALID ? summaryAttr.flags : oldFlags;
             summary.getSbn().getNotification().setSmallIcon(summaryAttr.icon);
             summary.getSbn().getNotification().color = summaryAttr.iconColor;
+            summary.getSbn().getNotification().visibility = summaryAttr.visibility;
             mHandler.post(new EnqueueNotificationRunnable(userId, summary, isAppForeground,
                     mPostNotificationTrackerFactory.newTracker(null)));
         }
@@ -2931,7 +2941,8 @@
             public void addAutoGroupSummary(int userId, String pkg, String triggeringKey,
                     NotificationAttributes summaryAttr) {
                 NotificationRecord r = createAutoGroupSummary(userId, pkg, triggeringKey,
-                        summaryAttr.flags, summaryAttr.icon, summaryAttr.iconColor);
+                        summaryAttr.flags, summaryAttr.icon, summaryAttr.iconColor,
+                        summaryAttr.visibility);
                 if (r != null) {
                     final boolean isAppForeground =
                             mActivityManager.getPackageImportance(pkg) == IMPORTANCE_FOREGROUND;
@@ -4888,6 +4899,94 @@
         }
 
         /**
+         * Register a listener to be notified when a call notification is posted or removed
+         * for a specific package and user.
+         * @param packageName Which package to monitor
+         * @param userHandle Which user to monitor
+         * @param listener Listener to register
+         */
+        @Override
+        @EnforcePermission(allOf = {
+                android.Manifest.permission.INTERACT_ACROSS_USERS,
+                android.Manifest.permission.ACCESS_NOTIFICATIONS})
+        public void registerCallNotificationEventListener(String packageName, UserHandle userHandle,
+                ICallNotificationEventCallback listener) {
+            registerCallNotificationEventListener_enforcePermission();
+
+            final int userId = userHandle.getIdentifier() != UserHandle.USER_CURRENT
+                    ? userHandle.getIdentifier() : mAmi.getCurrentUserId();
+
+            synchronized (mCallNotificationEventCallbacks) {
+                ArrayMap<Integer, RemoteCallbackList<ICallNotificationEventCallback>>
+                        callbacksForPackage =
+                        mCallNotificationEventCallbacks.getOrDefault(packageName, new ArrayMap<>());
+                RemoteCallbackList<ICallNotificationEventCallback> callbackList =
+                        callbacksForPackage.getOrDefault(userId, new RemoteCallbackList<>());
+
+                if (callbackList.register(listener)) {
+                    callbacksForPackage.put(userId, callbackList);
+                    mCallNotificationEventCallbacks.put(packageName, callbacksForPackage);
+                } else {
+                    Log.e(TAG,
+                            "registerCallNotificationEventListener failed to register listener: "
+                                + packageName + " " + userHandle + " " + listener);
+                    return;
+                }
+            }
+
+            synchronized (mNotificationLock) {
+                for (NotificationRecord r : mNotificationList) {
+                    if (r.getNotification().isStyle(Notification.CallStyle.class)
+                            && notificationMatchesUserId(r, userId, false)
+                            && r.getSbn().getPackageName().equals(packageName)) {
+                        try {
+                            listener.onCallNotificationPosted(packageName, r.getUser());
+                        } catch (RemoteException e) {
+                            throw new RuntimeException(e);
+                        }
+                    }
+                }
+            }
+        }
+
+        /**
+         * Unregister a listener that was previously
+         * registered with {@link #registerCallNotificationEventListener}
+         *
+         * @param packageName Which package to stop monitoring
+         * @param userHandle Which user to stop monitoring
+         * @param listener Listener to unregister
+         */
+        @Override
+        @EnforcePermission(allOf = {
+            android.Manifest.permission.INTERACT_ACROSS_USERS,
+            android.Manifest.permission.ACCESS_NOTIFICATIONS})
+        public void unregisterCallNotificationEventListener(String packageName,
+                    UserHandle userHandle, ICallNotificationEventCallback listener) {
+            unregisterCallNotificationEventListener_enforcePermission();
+            synchronized (mCallNotificationEventCallbacks) {
+                final int userId = userHandle.getIdentifier() != UserHandle.USER_CURRENT
+                        ? userHandle.getIdentifier() : mAmi.getCurrentUserId();
+
+                ArrayMap<Integer, RemoteCallbackList<ICallNotificationEventCallback>>
+                        callbacksForPackage = mCallNotificationEventCallbacks.get(packageName);
+                if (callbacksForPackage == null) {
+                    return;
+                }
+                RemoteCallbackList<ICallNotificationEventCallback> callbackList =
+                        callbacksForPackage.get(userId);
+                if (callbackList == null) {
+                    return;
+                }
+                if (!callbackList.unregister(listener)) {
+                    Log.e(TAG,
+                            "unregisterCallNotificationEventListener listener not found for: "
+                            + packageName + " " + userHandle + " " + listener);
+                }
+            }
+        }
+
+        /**
          * Register a listener binder directly with the notification manager.
          *
          * Only works with system callers. Apps should extend
@@ -6309,6 +6408,10 @@
             Objects.requireNonNull(user);
 
             verifyPrivilegedListener(token, user, false);
+
+            final NotificationChannel originalChannel = mPreferencesHelper.getNotificationChannel(
+                    pkg, getUidForPackageAndUser(pkg, user), channel.getId(), true);
+            verifyPrivilegedListenerUriPermission(Binder.getCallingUid(), channel, originalChannel);
             updateNotificationChannelInt(pkg, getUidForPackageAndUser(pkg, user), channel, true);
         }
 
@@ -6406,6 +6509,24 @@
             }
         }
 
+        private void verifyPrivilegedListenerUriPermission(int sourceUid,
+                @NonNull NotificationChannel updateChannel,
+                @Nullable NotificationChannel originalChannel) {
+            // Check that the NLS has the required permissions to access the channel
+            final Uri soundUri = updateChannel.getSound();
+            final Uri originalSoundUri =
+                    (originalChannel != null) ? originalChannel.getSound() : null;
+            if (soundUri != null && !Objects.equals(originalSoundUri, soundUri)) {
+                Binder.withCleanCallingIdentity(() -> {
+                    mUgmInternal.checkGrantUriPermission(sourceUid, null,
+                            ContentProvider.getUriWithoutUserId(soundUri),
+                            Intent.FLAG_GRANT_READ_URI_PERMISSION,
+                            ContentProvider.getUserIdFromUri(soundUri,
+                            UserHandle.getUserId(sourceUid)));
+                });
+            }
+        }
+
         private int getUidForPackageAndUser(String pkg, UserHandle user) throws RemoteException {
             int uid = INVALID_UID;
             final long identity = Binder.clearCallingIdentity();
@@ -6607,7 +6728,7 @@
 
     // Creates a 'fake' summary for a package that has exceeded the solo-notification limit.
     NotificationRecord createAutoGroupSummary(int userId, String pkg, String triggeringKey,
-            int flagsToSet, Icon summaryIcon, int summaryIconColor) {
+            int flagsToSet, Icon summaryIcon, int summaryIconColor, int summaryVisibilty) {
         NotificationRecord summaryRecord = null;
         boolean isPermissionFixed = mPermissionHelper.isPermissionFixed(pkg, userId);
         synchronized (mNotificationLock) {
@@ -6642,6 +6763,7 @@
                                 .setGroup(GroupHelper.AUTOGROUP_KEY)
                                 .setFlag(flagsToSet, true)
                                 .setColor(summaryIconColor)
+                                .setVisibility(summaryVisibilty)
                                 .build();
                 summaryNotification.extras.putAll(extras);
                 Intent appIntent = getContext().getPackageManager().getLaunchIntentForPackage(pkg);
@@ -8676,6 +8798,11 @@
                                 }
                             });
                         }
+
+                        if (callstyleCallbackApi()) {
+                            notifyCallNotificationEventListenerOnRemoved(r);
+                        }
+
                         // ATTENTION: in a future release we will bail out here
                         // so that we do not play sounds, show lights, etc. for invalid
                         // notifications
@@ -10033,6 +10160,9 @@
                         mGroupHelper.onNotificationRemoved(r.getSbn());
                     }
                 });
+                if (callstyleCallbackApi()) {
+                    notifyCallNotificationEventListenerOnRemoved(r);
+                }
             }
 
             if (Flags.refactorAttentionHelper()) {
@@ -11707,6 +11837,10 @@
                 mNotificationRecordLogger.logNotificationPosted(report);
             }
         });
+
+        if (callstyleCallbackApi()) {
+            notifyCallNotificationEventListenerOnPosted(r);
+        }
     }
 
     @FlaggedApi(FLAG_LIFETIME_EXTENSION_REFACTOR)
@@ -12763,6 +12897,91 @@
         }
     }
 
+    @GuardedBy("mNotificationLock")
+    private void broadcastToCallNotificationEventCallbacks(
+            final RemoteCallbackList<ICallNotificationEventCallback> callbackList,
+            final NotificationRecord r,
+            boolean isPosted) {
+        if (callbackList != null) {
+            int numCallbacks = callbackList.beginBroadcast();
+            try {
+                for (int i = 0; i < numCallbacks; i++) {
+                    if (isPosted) {
+                        callbackList.getBroadcastItem(i)
+                                .onCallNotificationPosted(r.getSbn().getPackageName(), r.getUser());
+                    } else {
+                        callbackList.getBroadcastItem(i)
+                                .onCallNotificationRemoved(r.getSbn().getPackageName(),
+                                    r.getUser());
+                    }
+                }
+            } catch (RemoteException e) {
+                throw new RuntimeException(e);
+            }
+            callbackList.finishBroadcast();
+        }
+    }
+
+    @GuardedBy("mNotificationLock")
+    void notifyCallNotificationEventListenerOnPosted(final NotificationRecord r) {
+        if (!r.getNotification().isStyle(Notification.CallStyle.class)) {
+            return;
+        }
+
+        synchronized (mCallNotificationEventCallbacks) {
+            ArrayMap<Integer, RemoteCallbackList<ICallNotificationEventCallback>>
+                    callbacksForPackage =
+                    mCallNotificationEventCallbacks.get(r.getSbn().getPackageName());
+            if (callbacksForPackage == null) {
+                return;
+            }
+
+            if (!r.getUser().equals(UserHandle.ALL)) {
+                broadcastToCallNotificationEventCallbacks(
+                        callbacksForPackage.get(r.getUser().getIdentifier()), r, true);
+                // Also notify the listeners registered for USER_ALL
+                broadcastToCallNotificationEventCallbacks(callbacksForPackage.get(USER_ALL), r,
+                        true);
+            } else {
+                // Notify listeners registered for any userId
+                for (RemoteCallbackList<ICallNotificationEventCallback> callbackList
+                        : callbacksForPackage.values()) {
+                    broadcastToCallNotificationEventCallbacks(callbackList, r, true);
+                }
+            }
+        }
+    }
+
+    @GuardedBy("mNotificationLock")
+    void notifyCallNotificationEventListenerOnRemoved(final NotificationRecord r) {
+        if (!r.getNotification().isStyle(Notification.CallStyle.class)) {
+            return;
+        }
+
+        synchronized (mCallNotificationEventCallbacks) {
+            ArrayMap<Integer, RemoteCallbackList<ICallNotificationEventCallback>>
+                    callbacksForPackage =
+                    mCallNotificationEventCallbacks.get(r.getSbn().getPackageName());
+            if (callbacksForPackage == null) {
+                return;
+            }
+
+            if (!r.getUser().equals(UserHandle.ALL)) {
+                broadcastToCallNotificationEventCallbacks(
+                        callbacksForPackage.get(r.getUser().getIdentifier()), r, false);
+                // Also notify the listeners registered for USER_ALL
+                broadcastToCallNotificationEventCallbacks(callbacksForPackage.get(USER_ALL), r,
+                        false);
+            } else {
+                // Notify listeners registered for any userId
+                for (RemoteCallbackList<ICallNotificationEventCallback> callbackList
+                        : callbacksForPackage.values()) {
+                    broadcastToCallNotificationEventCallbacks(callbackList, r, false);
+                }
+            }
+        }
+    }
+
     // TODO (b/194833441): remove when we've fully migrated to a permission
     class RoleObserver implements OnRoleHoldersChangedListener {
         // Role name : user id : list of approved packages
diff --git a/services/core/java/com/android/server/notification/ZenModeEventLogger.java b/services/core/java/com/android/server/notification/ZenModeEventLogger.java
index a90efe6..b9a267f 100644
--- a/services/core/java/com/android/server/notification/ZenModeEventLogger.java
+++ b/services/core/java/com/android/server/notification/ZenModeEventLogger.java
@@ -26,6 +26,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.app.Flags;
 import android.app.NotificationManager;
 import android.content.pm.PackageManager;
@@ -33,6 +34,7 @@
 import android.service.notification.DNDPolicyProto;
 import android.service.notification.ZenModeConfig;
 import android.service.notification.ZenModeConfig.ConfigChangeOrigin;
+import android.service.notification.ZenModeConfig.ZenRule;
 import android.service.notification.ZenModeDiff;
 import android.service.notification.ZenPolicy;
 import android.util.ArrayMap;
@@ -46,6 +48,9 @@
 import com.android.internal.util.FrameworkStatsLog;
 
 import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -58,6 +63,9 @@
     // Placeholder int for unknown zen mode, to distinguish from "off".
     static final int ZEN_MODE_UNKNOWN = -1;
 
+    // Special rule type for manual rule. Keep in sync with ActiveRuleType in dnd_enums.proto.
+    protected static final int ACTIVE_RULE_TYPE_MANUAL = 999;
+
     // Object for tracking config changes and policy changes associated with an overall zen
     // mode change.
     ZenModeEventLogger.ZenStateChanges mChangeState = new ZenModeEventLogger.ZenStateChanges();
@@ -192,7 +200,8 @@
                 /* bool user_action = 6 */ mChangeState.getIsUserAction(),
                 /* int32 package_uid = 7 */ mChangeState.getPackageUid(),
                 /* DNDPolicyProto current_policy = 8 */ mChangeState.getDNDPolicyProto(),
-                /* bool are_channels_bypassing = 9 */ mChangeState.getAreChannelsBypassing());
+                /* bool are_channels_bypassing = 9 */ mChangeState.getAreChannelsBypassing(),
+                /* ActiveRuleType active_rule_types = 10 */ mChangeState.getActiveRuleTypes());
     }
 
     /**
@@ -371,33 +380,43 @@
         }
 
         /**
+         * Get a list of the active rules in the provided config. This is a helper function for
+         * other methods that then use this information to get the number and type of active
+         * rules available.
+         */
+        @SuppressLint("WrongConstant")  // special case for log-only type on manual rule
+        @NonNull List<ZenRule> activeRulesList(ZenModeConfig config) {
+            ArrayList<ZenRule> rules = new ArrayList<>();
+            if (config == null) {
+                return rules;
+            }
+
+            if (config.manualRule != null) {
+                // If the manual rule is non-null, then it's active. We make a copy and set the rule
+                // type so that the correct value gets logged.
+                ZenRule rule = config.manualRule.copy();
+                rule.type = ACTIVE_RULE_TYPE_MANUAL;
+                rules.add(rule);
+            }
+
+            if (config.automaticRules != null) {
+                for (ZenModeConfig.ZenRule rule : config.automaticRules.values()) {
+                    if (rule != null && rule.isAutomaticActive()) {
+                        rules.add(rule);
+                    }
+                }
+            }
+            return rules;
+        }
+
+        /**
          * Get the number of active rules represented in a zen mode config. Because this is based
          * on a config, this does not take into account the zen mode at the time of the config,
          * which means callers need to take the zen mode into account for whether the rules are
          * actually active.
          */
         int numActiveRulesInConfig(ZenModeConfig config) {
-            // If the config is null, return early
-            if (config == null) {
-                return 0;
-            }
-
-            int rules = 0;
-            // Loop through the config and check:
-            //  - does a manual rule exist? (if it's non-null, it's active)
-            //  - how many automatic rules are active, as defined by isAutomaticActive()?
-            if (config.manualRule != null) {
-                rules++;
-            }
-
-            if (config.automaticRules != null) {
-                for (ZenModeConfig.ZenRule rule : config.automaticRules.values()) {
-                    if (rule != null && rule.isAutomaticActive()) {
-                        rules++;
-                    }
-                }
-            }
-            return rules;
+            return activeRulesList(config).size();
         }
 
         // Determine the number of (automatic & manual) rules active after the change takes place.
@@ -412,6 +431,34 @@
         }
 
         /**
+         * Return a list of the types of each of the active rules in the configuration.
+         * Only available when {@code MODES_API} is active; otherwise returns an empty list.
+         */
+        int[] getActiveRuleTypes() {
+            if (!Flags.modesApi() || mNewZenMode == ZEN_MODE_OFF) {
+                return new int[0];
+            }
+
+            ArrayList<Integer> activeTypes = new ArrayList<>();
+            List<ZenRule> activeRules = activeRulesList(mNewConfig);
+            if (activeRules.size() == 0) {
+                return new int[0];
+            }
+
+            for (ZenRule rule : activeRules) {
+                activeTypes.add(rule.type);
+            }
+
+            // Sort the list of active types to have a consistent order in the atom
+            Collections.sort(activeTypes);
+            int[] out = new int[activeTypes.size()];
+            for (int i = 0; i < activeTypes.size(); i++) {
+                out[i] = activeTypes.get(i);
+            }
+            return out;
+        }
+
+        /**
          * Return our best guess as to whether the changes observed are due to a user action.
          * Note that this (before {@code MODES_API}) won't be 100% accurate as we can't necessarily
          * distinguish between a system uid call indicating "user interacted with Settings" vs "a
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 1c20b2d..54de197 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.server.notification;
 
+import static android.app.AutomaticZenRule.TYPE_UNKNOWN;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_ACTIVATED;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DEACTIVATED;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DISABLED;
@@ -1264,7 +1265,7 @@
                 : new ZenDeviceEffects.Builder().build();
 
         if (isFromApp) {
-            // Don't allow apps to toggle hidden effects.
+            // Don't allow apps to toggle hidden (non-public-API) effects.
             newEffects = new ZenDeviceEffects.Builder(newEffects)
                     .setShouldDisableAutoBrightness(oldEffects.shouldDisableAutoBrightness())
                     .setShouldDisableTapToWake(oldEffects.shouldDisableTapToWake())
@@ -1272,6 +1273,7 @@
                     .setShouldDisableTouch(oldEffects.shouldDisableTouch())
                     .setShouldMinimizeRadioUsage(oldEffects.shouldMinimizeRadioUsage())
                     .setShouldMaximizeDoze(oldEffects.shouldMaximizeDoze())
+                    .setExtraEffects(oldEffects.getExtraEffects())
                     .build();
         }
 
@@ -1311,6 +1313,9 @@
             if (oldEffects.shouldMaximizeDoze() != newEffects.shouldMaximizeDoze()) {
                 userModifiedFields |= ZenDeviceEffects.FIELD_MAXIMIZE_DOZE;
             }
+            if (!Objects.equals(oldEffects.getExtraEffects(), newEffects.getExtraEffects())) {
+                userModifiedFields |= ZenDeviceEffects.FIELD_EXTRA_EFFECTS;
+            }
             zenRule.zenDeviceEffectsUserModifiedFields = userModifiedFields;
         }
     }
@@ -2166,7 +2171,8 @@
                         /* optional DNDPolicyProto policy = 7 */ config.toZenPolicy().toProto(),
                         /* optional int32 rule_modified_fields = 8 */ 0,
                         /* optional int32 policy_modified_fields = 9 */ 0,
-                        /* optional int32 device_effects_modified_fields = 10 */ 0));
+                        /* optional int32 device_effects_modified_fields = 10 */ 0,
+                        /* optional ActiveRuleType rule_type = 11 */ TYPE_UNKNOWN));
                 if (config.manualRule != null) {
                     ruleToProtoLocked(user, config.manualRule, true, events);
                 }
@@ -2192,8 +2198,10 @@
             pkg = rule.enabler;
         }
 
+        int ruleType = rule.type;
         if (isManualRule) {
             id = ZenModeConfig.MANUAL_RULE_ID;
+            ruleType = ZenModeEventLogger.ACTIVE_RULE_TYPE_MANUAL;
         }
 
         SysUiStatsEvent.Builder data;
@@ -2212,7 +2220,8 @@
                 /* optional int32 rule_modified_fields = 8 */ rule.userModifiedFields,
                 /* optional int32 policy_modified_fields = 9 */ rule.zenPolicyUserModifiedFields,
                 /* optional int32 device_effects_modified_fields = 10 */
-                rule.zenDeviceEffectsUserModifiedFields));
+                rule.zenDeviceEffectsUserModifiedFields,
+                /* optional ActiveRuleType rule_type = 11 */ ruleType));
     }
 
     private int getPackageUid(String pkg, int user) {
diff --git a/services/core/java/com/android/server/notification/flags.aconfig b/services/core/java/com/android/server/notification/flags.aconfig
index 722654a..53244f9 100644
--- a/services/core/java/com/android/server/notification/flags.aconfig
+++ b/services/core/java/com/android/server/notification/flags.aconfig
@@ -50,15 +50,6 @@
 }
 
 flag {
-  name: "sensitive_notification_app_protection"
-  namespace: "systemui"
-  description: "This flag controls the sensitive notification app protections while screen sharing"
-  bug: "312784351"
-  # Referenced in WM where WM starts before DeviceConfig
-  is_fixed_read_only: true
-}
-
-flag {
   name: "notification_reduce_messagequeue_usage"
   namespace: "systemui"
   description: "When this flag is on, NMS will no longer call removeMessage() and hasCallbacks() on Handler"
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index 25a39cc..86d05d9 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -257,7 +257,7 @@
     private boolean matchesActorSignature(@NonNull AndroidPackage targetPackage,
             @NonNull AndroidPackage overlayPackage, int userId) {
         String targetOverlayableName = overlayPackage.getOverlayTargetOverlayableName();
-        if (targetOverlayableName != null) {
+        if (targetOverlayableName != null && !mPackageManager.getNamedActors().isEmpty()) {
             try {
                 OverlayableInfo overlayableInfo = mPackageManager.getOverlayableForTarget(
                         targetPackage.getPackageName(), targetOverlayableName, userId);
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index b9464d9..8729522 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -362,7 +362,7 @@
                 defaultPackages.add(packageName);
             }
         }
-        return defaultPackages.toArray(new String[defaultPackages.size()]);
+        return defaultPackages.toArray(new String[0]);
     }
 
     private final class OverlayManagerPackageMonitor extends PackageMonitor {
@@ -1160,7 +1160,7 @@
         // state may lead to contradictions within OMS. Better then to lag
         // behind until all pending intents have been processed.
         private final ArrayMap<String, PackageStateUsers> mCache = new ArrayMap<>();
-        private final Set<Integer> mInitializedUsers = new ArraySet<>();
+        private final ArraySet<Integer> mInitializedUsers = new ArraySet<>();
 
         PackageManagerHelperImpl(Context context) {
             mContext = context;
@@ -1176,8 +1176,7 @@
          */
         @NonNull
         public ArrayMap<String, PackageState> initializeForUser(final int userId) {
-            if (!mInitializedUsers.contains(userId)) {
-                mInitializedUsers.add(userId);
+            if (mInitializedUsers.add(userId)) {
                 mPackageManagerInternal.forEachPackageState((packageState -> {
                     if (packageState.getPkg() != null
                             && packageState.getUserStateOrDefault(userId).isInstalled()) {
@@ -1545,8 +1544,7 @@
                 final OverlayPaths frameworkOverlays =
                         mImpl.getEnabledOverlayPaths("android", userId, false);
                 for (final String targetPackageName : targetPackageNames) {
-                    final OverlayPaths.Builder list = new OverlayPaths.Builder();
-                    list.addAll(frameworkOverlays);
+                    final var list = new OverlayPaths.Builder(frameworkOverlays);
                     if (!"android".equals(targetPackageName)) {
                         list.addAll(mImpl.getEnabledOverlayPaths(targetPackageName, userId, true));
                     }
@@ -1558,17 +1556,21 @@
             final HashSet<String> invalidPackages = new HashSet<>();
             pm.setEnabledOverlayPackages(userId, pendingChanges, updatedPackages, invalidPackages);
 
-            for (final String targetPackageName : targetPackageNames) {
-                if (DEBUG) {
-                    Slog.d(TAG, "-> Updating overlay: target=" + targetPackageName + " overlays=["
-                            + pendingChanges.get(targetPackageName)
-                            + "] userId=" + userId);
-                }
+            if (DEBUG || !invalidPackages.isEmpty()) {
+                for (final String targetPackageName : targetPackageNames) {
+                    if (DEBUG) {
+                        Slog.d(TAG,
+                                "-> Updating overlay: target=" + targetPackageName + " overlays=["
+                                        + pendingChanges.get(targetPackageName)
+                                        + "] userId=" + userId);
+                    }
 
-                if (invalidPackages.contains(targetPackageName)) {
-                    Slog.e(TAG, TextUtils.formatSimple(
-                            "Failed to change enabled overlays for %s user %d", targetPackageName,
-                            userId));
+                    if (invalidPackages.contains(targetPackageName)) {
+                        Slog.e(TAG, TextUtils.formatSimple(
+                                "Failed to change enabled overlays for %s user %d",
+                                targetPackageName,
+                                userId));
+                    }
                 }
             }
             return new ArrayList<>(updatedPackages);
diff --git a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
index 972c78d..c1b6ccc 100644
--- a/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
+++ b/services/core/java/com/android/server/om/OverlayManagerServiceImpl.java
@@ -772,24 +772,20 @@
 
     OverlayPaths getEnabledOverlayPaths(@NonNull final String targetPackageName,
             final int userId, boolean includeImmutableOverlays) {
-        final List<OverlayInfo> overlays = mSettings.getOverlaysForTarget(targetPackageName,
-                userId);
-        final OverlayPaths.Builder paths = new OverlayPaths.Builder();
-        final int n = overlays.size();
-        for (int i = 0; i < n; i++) {
-            final OverlayInfo oi = overlays.get(i);
+        final var paths = new OverlayPaths.Builder();
+        mSettings.forEachMatching(userId, null, targetPackageName, oi -> {
             if (!oi.isEnabled()) {
-                continue;
+                return;
             }
             if (!includeImmutableOverlays && !oi.isMutable) {
-                continue;
+                return;
             }
             if (oi.isFabricated()) {
                 paths.addNonApkPath(oi.baseCodePath);
             } else {
                 paths.addApkPath(oi.baseCodePath);
             }
-        }
+        });
         return paths.build();
     }
 
diff --git a/services/core/java/com/android/server/om/OverlayManagerSettings.java b/services/core/java/com/android/server/om/OverlayManagerSettings.java
index eae614a..b8b49f3e 100644
--- a/services/core/java/com/android/server/om/OverlayManagerSettings.java
+++ b/services/core/java/com/android/server/om/OverlayManagerSettings.java
@@ -47,6 +47,7 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Consumer;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
 
@@ -182,6 +183,23 @@
         return CollectionUtils.map(items, SettingsItem::getOverlayInfo);
     }
 
+    void forEachMatching(int userId, String overlayName, String targetPackageName,
+            @NonNull Consumer<OverlayInfo> consumer) {
+        for (int i = 0, n = mItems.size(); i < n; i++) {
+            final SettingsItem item = mItems.get(i);
+            if (item.getUserId() != userId) {
+                continue;
+            }
+            if (overlayName != null && !item.mOverlay.getPackageName().equals(overlayName)) {
+                continue;
+            }
+            if (targetPackageName != null && !item.mTargetPackageName.equals(targetPackageName)) {
+                continue;
+            }
+            consumer.accept(item.getOverlayInfo());
+        }
+    }
+
     ArrayMap<String, List<OverlayInfo>> getOverlaysForUser(final int userId) {
         final List<SettingsItem> items = selectWhereUser(userId);
 
diff --git a/services/core/java/com/android/server/ondeviceintelligence/OWNERS b/services/core/java/com/android/server/ondeviceintelligence/OWNERS
new file mode 100644
index 0000000..09774f7
--- /dev/null
+++ b/services/core/java/com/android/server/ondeviceintelligence/OWNERS
@@ -0,0 +1 @@
+file:/core/java/android/app/ondeviceintelligence/OWNERS
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java
index db5acc2..a1dac04 100644
--- a/services/core/java/com/android/server/pm/InstallPackageHelper.java
+++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java
@@ -4191,7 +4191,7 @@
                                 + "; old: " + pkgSetting.getPathString() + " @ "
                                 + pkgSetting.getVersionCode()
                                 + "; new: " + parsedPackage.getPath() + " @ "
-                                + parsedPackage.getPath());
+                                + parsedPackage.getLongVersionCode());
             }
         }
 
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index 984a629..f9d8112 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -38,6 +38,7 @@
 
 import static com.android.server.pm.PackageArchiver.isArchivingEnabled;
 
+import android.Manifest;
 import android.annotation.AppIdInt;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -52,6 +53,7 @@
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyCache;
 import android.app.admin.DevicePolicyManager;
+import android.app.role.RoleManager;
 import android.app.usage.UsageStatsManagerInternal;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
@@ -84,7 +86,9 @@
 import android.content.pm.ShortcutServiceInternal;
 import android.content.pm.ShortcutServiceInternal.ShortcutChangeListener;
 import android.content.pm.UserInfo;
+import android.content.pm.UserProperties;
 import android.graphics.Rect;
+import android.multiuser.Flags;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Bundle;
@@ -211,6 +215,7 @@
 
         private final Context mContext;
         private final UserManager mUm;
+        private final RoleManager mRoleManager;
         private final IPackageManager mIPM;
         private final UserManagerInternal mUserManagerInternal;
         private final UsageStatsManagerInternal mUsageStatsManagerInternal;
@@ -247,6 +252,7 @@
             mContext = context;
             mIPM = AppGlobals.getPackageManager();
             mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+            mRoleManager = mContext.getSystemService(RoleManager.class);
             mUserManagerInternal = Objects.requireNonNull(
                     LocalServices.getService(UserManagerInternal.class));
             mUsageStatsManagerInternal = Objects.requireNonNull(
@@ -451,7 +457,6 @@
 
         private boolean canAccessProfile(int callingUid, int callingUserId, int callingPid,
                 int targetUserId, String message) {
-
             if (targetUserId == callingUserId) return true;
             if (injectHasInteractAcrossUsersFullPermission(callingPid, callingUid)) {
                 return true;
@@ -465,6 +470,14 @@
                             + targetUserId + " from " + callingUserId + " not allowed");
                     return false;
                 }
+
+                if (areHiddenApisChecksEnabled()
+                        && mUm.getUserProperties(UserHandle.of(targetUserId))
+                                        .getProfileApiVisibility()
+                                == UserProperties.PROFILE_API_VISIBILITY_HIDDEN
+                        && !canAccessHiddenProfileInjected(callingUid, callingPid)) {
+                    return false;
+                }
             } finally {
                 injectRestoreCallingIdentity(ident);
             }
@@ -473,10 +486,43 @@
                     message, true);
         }
 
+        boolean areHiddenApisChecksEnabled() {
+            return android.os.Flags.allowPrivateProfile()
+                    && Flags.enableLauncherAppsHiddenProfileChecks()
+                    && Flags.enablePermissionToAccessHiddenProfiles();
+        }
+
         private void verifyCallingPackage(String callingPackage) {
             verifyCallingPackage(callingPackage, injectBinderCallingUid());
         }
 
+        boolean canAccessHiddenProfileInjected(int callingUid, int callingPid) {
+            AndroidPackage callingPackage = mPackageManagerInternal.getPackage(callingUid);
+            if (callingPackage == null) {
+                return false;
+            }
+
+            if (!mRoleManager
+                    .getRoleHoldersAsUser(
+                            RoleManager.ROLE_HOME, UserHandle.getUserHandleForUid(callingUid))
+                    .contains(callingPackage.getPackageName())) {
+                return false;
+            }
+
+            if (mContext.checkPermission(
+                            Manifest.permission.ACCESS_HIDDEN_PROFILES_FULL, callingPid, callingUid)
+                    == PackageManager.PERMISSION_GRANTED) {
+                return true;
+            }
+
+            // TODO(b/321988638): add option to disable with a flag
+            return mContext.checkPermission(
+                            android.Manifest.permission.ACCESS_HIDDEN_PROFILES,
+                            callingPid,
+                            callingUid)
+                    == PackageManager.PERMISSION_GRANTED;
+        }
+
         @VisibleForTesting // We override it in unit tests
         void verifyCallingPackage(String callingPackage, int callerUid) {
             int packageUid = -1;
@@ -1566,11 +1612,6 @@
 
         @Override
         public @Nullable LauncherUserInfo getLauncherUserInfo(@NonNull UserHandle user) {
-            // Only system launchers, which have access to recents should have access to this API.
-            // TODO(b/303803157): Add the new permission check if we decide to have one.
-            if (!mActivityTaskManagerInternal.isCallerRecents(Binder.getCallingUid())) {
-                throw new SecurityException("Caller is not the recents app");
-            }
             if (!canAccessProfile(user.getIdentifier(),
                     "Can't access LauncherUserInfo for another user")) {
                 return null;
@@ -1584,15 +1625,11 @@
         }
 
         @Override
+        @NonNull
         public List<String> getPreInstalledSystemPackages(UserHandle user) {
-            // Only system launchers, which have access to recents should have access to this API.
-            // TODO(b/303803157): Update access control for this API to default Launcher app.
-            if (!mActivityTaskManagerInternal.isCallerRecents(Binder.getCallingUid())) {
-                throw new SecurityException("Caller is not the recents app");
-            }
             if (!canAccessProfile(user.getIdentifier(),
                     "Can't access preinstalled packages for another user")) {
-                return null;
+                return new ArrayList<>();
             }
             final long identity = Binder.clearCallingIdentity();
             try {
@@ -1610,11 +1647,6 @@
         @Override
         public @Nullable IntentSender getAppMarketActivityIntent(@NonNull String callingPackage,
                 @Nullable String packageName, @NonNull UserHandle user) {
-            // Only system launchers, which have access to recents should have access to this API.
-            // TODO(b/303803157): Update access control for this API to default Launcher app.
-            if (!mActivityTaskManagerInternal.isCallerRecents(Binder.getCallingUid())) {
-                throw new SecurityException("Caller is not the recents app");
-            }
             if (!canAccessProfile(user.getIdentifier(),
                     "Can't access AppMarketActivity for another user")) {
                 return null;
diff --git a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
index 85d2df3..bbce26c 100644
--- a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
+++ b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
@@ -27,11 +27,14 @@
 import static com.android.server.pm.InstructionSets.getPreferredInstructionSet;
 import static com.android.server.pm.InstructionSets.getPrimaryInstructionSet;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.content.pm.Flags;
 import android.content.pm.PackageManager;
 import android.os.Build;
 import android.os.Environment;
 import android.os.FileUtils;
+import android.os.SystemProperties;
 import android.os.Trace;
 import android.text.TextUtils;
 import android.util.ArraySet;
@@ -50,9 +53,15 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Set;
 
 final class PackageAbiHelperImpl implements PackageAbiHelper {
 
+    @Nullable
+    private static String[] sNativelySupported32BitAbis = null;
+    @Nullable
+    private static String[] sNativelySupported64BitAbis = null;
+
     private static String calculateBundledApkRoot(final String codePathString) {
         final File codePath = new File(codePathString);
         final File codeRoot;
@@ -122,13 +131,20 @@
         }
     }
 
-    private static void maybeThrowExceptionForMultiArchCopy(String message, int copyRet) throws
-            PackageManagerException {
+    private static void maybeThrowExceptionForMultiArchCopy(String message, int copyRet,
+            boolean forceMatch) throws PackageManagerException {
         if (copyRet < 0) {
             if (copyRet != PackageManager.NO_NATIVE_LIBRARIES
                     && copyRet != PackageManager.INSTALL_FAILED_NO_MATCHING_ABIS) {
                 throw new PackageManagerException(copyRet, message);
             }
+
+            if (forceMatch && copyRet == PackageManager.INSTALL_FAILED_NO_MATCHING_ABIS) {
+                throw new PackageManagerException(
+                        PackageManager.INSTALL_FAILED_MULTI_ARCH_NOT_MATCH_ALL_NATIVE_ABIS,
+                        "The multiArch app's native libs don't support all the natively"
+                                + " supported ABIs of the device.");
+            }
         }
     }
 
@@ -296,7 +312,40 @@
         return new Abis(primaryCpuAbi, secondaryCpuAbi);
     }
 
+    @NonNull
+    private static String[] getNativelySupportedAbis(@NonNull String[] supportedAbis) {
+        Set<String> nativelySupportedAbis = new ArraySet<>();
+        for (int i = 0; i < supportedAbis.length; i++) {
+            final String currentAbi = supportedAbis[i];
+            // In presence of a native bridge this means the Abi is emulated.
+            final String currentIsa = VMRuntime.getInstructionSet(currentAbi);
+            if (TextUtils.isEmpty(SystemProperties.get("ro.dalvik.vm.isa." + currentIsa))) {
+                nativelySupportedAbis.add(currentAbi);
+            }
+        }
+        return nativelySupportedAbis.toArray(new String[0]);
+    }
+
+    private static String[] getNativelySupported32BitAbis() {
+        if (sNativelySupported32BitAbis != null) {
+            return sNativelySupported32BitAbis;
+        }
+
+        sNativelySupported32BitAbis = getNativelySupportedAbis(Build.SUPPORTED_32_BIT_ABIS);
+        return sNativelySupported32BitAbis;
+    }
+
+    private static String[] getNativelySupported64BitAbis() {
+        if (sNativelySupported64BitAbis != null) {
+            return sNativelySupported64BitAbis;
+        }
+
+        sNativelySupported64BitAbis = getNativelySupportedAbis(Build.SUPPORTED_64_BIT_ABIS);
+        return sNativelySupported64BitAbis;
+    }
+
     @Override
+    @SuppressWarnings("AndroidFrameworkCompatChange") // the check is before the apk is installed
     public Pair<Abis, NativeLibraryPaths> derivePackageAbi(AndroidPackage pkg, boolean isSystemApp,
             boolean isUpdatedSystemApp, String cpuAbiOverride, File appLib32InstallDir)
             throws PackageManagerException {
@@ -334,18 +383,33 @@
             primaryCpuAbi = null;
             secondaryCpuAbi = null;
             if (pkg.isMultiArch()) {
+                // Force the match for these cases
+                // 1. pkg.getTargetSdkVersion >= Build.VERSION_CODES.VANILLA_ICE_CREAM
+                // 2. cpuAbiOverride is null. If it is non-null, it is set via shell for testing
+                final boolean forceMatch = Flags.forceMultiArchNativeLibsMatch()
+                        && pkg.getTargetSdkVersion() >= Build.VERSION_CODES.VANILLA_ICE_CREAM
+                        && cpuAbiOverride == null;
+
+                String[] supported32BitAbis = forceMatch ? getNativelySupported32BitAbis()
+                        : Build.SUPPORTED_32_BIT_ABIS;
+                String[] supported64BitAbis = forceMatch ? getNativelySupported64BitAbis()
+                        : Build.SUPPORTED_64_BIT_ABIS;
+
+                final boolean systemSupports32BitAbi = supported32BitAbis.length > 0;
+                final boolean systemSupports64BitAbi = supported64BitAbis.length > 0;
+
                 int abi32 = PackageManager.NO_NATIVE_LIBRARIES;
                 int abi64 = PackageManager.NO_NATIVE_LIBRARIES;
-                if (Build.SUPPORTED_32_BIT_ABIS.length > 0) {
+                if (systemSupports32BitAbi) {
                     if (extractLibs) {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
                         abi32 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
-                                nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
+                                nativeLibraryRoot, supported32BitAbis,
                                 useIsaSpecificSubdirs, onIncremental);
                     } else {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
                         abi32 = NativeLibraryHelper.findSupportedAbi(
-                                handle, Build.SUPPORTED_32_BIT_ABIS);
+                                handle, supported32BitAbis);
                     }
                     Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                 }
@@ -357,24 +421,26 @@
                 }
 
                 maybeThrowExceptionForMultiArchCopy(
-                        "Error unpackaging 32 bit native libs for multiarch app.", abi32);
+                        "Error unpackaging 32 bit native libs for multiarch app.", abi32,
+                        forceMatch && systemSupports32BitAbi);
 
-                if (Build.SUPPORTED_64_BIT_ABIS.length > 0) {
+                if (systemSupports64BitAbi) {
                     if (extractLibs) {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
                         abi64 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
-                                nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
+                                nativeLibraryRoot, supported64BitAbis,
                                 useIsaSpecificSubdirs, onIncremental);
                     } else {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
                         abi64 = NativeLibraryHelper.findSupportedAbi(
-                                handle, Build.SUPPORTED_64_BIT_ABIS);
+                                handle, supported64BitAbis);
                     }
                     Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                 }
 
                 maybeThrowExceptionForMultiArchCopy(
-                        "Error unpackaging 64 bit native libs for multiarch app.", abi64);
+                        "Error unpackaging 64 bit native libs for multiarch app.", abi64,
+                        forceMatch && systemSupports64BitAbi);
 
                 if (abi64 >= 0) {
                     // Shared library native libs should be in the APK zip aligned
@@ -382,11 +448,11 @@
                         throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR,
                                 "Shared library native lib extraction not supported");
                     }
-                    primaryCpuAbi = Build.SUPPORTED_64_BIT_ABIS[abi64];
+                    primaryCpuAbi = supported64BitAbis[abi64];
                 }
 
                 if (abi32 >= 0) {
-                    final String abi = Build.SUPPORTED_32_BIT_ABIS[abi32];
+                    final String abi = supported32BitAbis[abi32];
                     if (abi64 >= 0) {
                         if (pkg.is32BitAbiPreferred()) {
                             secondaryCpuAbi = primaryCpuAbi;
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 5575f52..29242aa 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -5025,6 +5025,8 @@
         pw.println();
         if (pkg != null) {
             pw.print(prefix); pw.print("  versionName="); pw.println(pkg.getVersionName());
+            pw.print(prefix); pw.print("  hiddenApiEnforcementPolicy="); pw.println(
+                    ps.getHiddenApiEnforcementPolicy());
             pw.print(prefix); pw.print("  usesNonSdkApi="); pw.println(pkg.isNonSdkApiRequested());
             pw.print(prefix); pw.print("  splits="); dumpSplitNames(pw, pkg); pw.println();
             final int apkSigningVersion = pkg.getSigningDetails().getSignatureSchemeVersion();
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index d644235..449e9ab 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -240,7 +240,7 @@
 
     @Override
     protected boolean canRestoreAnyVersion() {
-        return false;
+        return true;
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 796edde..f222fe9 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -1466,7 +1466,7 @@
             if (userType != null && !userType.equals(profile.userType)) {
                 continue;
             }
-            if (excludeHidden && isProfileHidden(userId)) {
+            if (excludeHidden && isProfileHidden(profile.id)) {
                 continue;
             }
             result.add(profile.id);
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index c94c49d..c2f74a8 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -154,7 +154,8 @@
             UserManager.DISALLOW_ULTRA_WIDEBAND_RADIO,
             UserManager.DISALLOW_CONFIG_DEFAULT_APPS,
             UserManager.DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO,
-            UserManager.DISALLOW_SIM_GLOBALLY
+            UserManager.DISALLOW_SIM_GLOBALLY,
+            UserManager.DISALLOW_ASSIST_CONTENT
     });
 
     public static final Set<String> DEPRECATED_USER_RESTRICTIONS = Sets.newArraySet(
@@ -230,7 +231,9 @@
             UserManager.DISALLOW_RUN_IN_BACKGROUND,
             UserManager.DISALLOW_UNMUTE_MICROPHONE,
             UserManager.DISALLOW_UNMUTE_DEVICE,
-            UserManager.DISALLOW_CAMERA
+            UserManager.DISALLOW_CAMERA,
+            UserManager.DISALLOW_ASSIST_CONTENT,
+            UserManager.DISALLOW_CONFIG_DEFAULT_APPS
     );
 
     /**
@@ -286,7 +289,8 @@
                     UserManager.DISALLOW_SMS,
                     UserManager.DISALLOW_USB_FILE_TRANSFER,
                     UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,
-                    UserManager.DISALLOW_UNMUTE_MICROPHONE
+                    UserManager.DISALLOW_UNMUTE_MICROPHONE,
+                    UserManager.DISALLOW_CONFIG_DEFAULT_APPS
     );
 
     /**
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index f44fcf0..21e2bf2 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -42,6 +42,7 @@
 import android.app.AppOpsManager;
 import android.app.AppOpsManager.AttributionFlags;
 import android.app.IActivityManager;
+import android.companion.virtual.VirtualDeviceManager;
 import android.content.AttributionSource;
 import android.content.AttributionSourceState;
 import android.content.Context;
@@ -78,6 +79,7 @@
 import com.android.internal.util.function.QuadFunction;
 import com.android.internal.util.function.TriFunction;
 import com.android.server.LocalServices;
+import com.android.server.companion.virtual.VirtualDeviceManagerInternal;
 import com.android.server.pm.UserManagerService;
 import com.android.server.pm.permission.PermissionManagerServiceInternal.HotwordDetectionServiceProvider;
 import com.android.server.pm.pkg.AndroidPackage;
@@ -135,6 +137,9 @@
     @Nullable
     private HotwordDetectionServiceProvider mHotwordDetectionServiceProvider;
 
+    @Nullable
+    private VirtualDeviceManagerInternal mVirtualDeviceManagerInternal;
+
     PermissionManagerService(@NonNull Context context,
             @NonNull ArrayMap<String, FeatureInfo> availableFeatures) {
         // The package info cache is the cache for package and permission information.
@@ -146,6 +151,8 @@
         mContext = context;
         mPackageManagerInt = LocalServices.getService(PackageManagerInternal.class);
         mAppOpsManager = context.getSystemService(AppOpsManager.class);
+        mVirtualDeviceManagerInternal =
+                LocalServices.getService(VirtualDeviceManagerInternal.class);
 
         mAttributionSourceRegistry = new AttributionSourceRegistry(context);
 
@@ -246,16 +253,30 @@
             return PackageManager.PERMISSION_DENIED;
         }
 
+        String persistentDeviceId = getPersistentDeviceId(deviceId);
+
         final CheckPermissionDelegate checkPermissionDelegate;
         synchronized (mLock) {
             checkPermissionDelegate = mCheckPermissionDelegate;
         }
-
-        if (checkPermissionDelegate == null)  {
-            return mPermissionManagerServiceImpl.checkUidPermission(uid, permissionName, deviceId);
+        if (checkPermissionDelegate == null) {
+            return mPermissionManagerServiceImpl.checkUidPermission(uid, permissionName,
+                    persistentDeviceId);
         }
         return checkPermissionDelegate.checkUidPermission(uid, permissionName,
-                deviceId, mPermissionManagerServiceImpl::checkUidPermission);
+                persistentDeviceId, mPermissionManagerServiceImpl::checkUidPermission);
+    }
+
+    private String getPersistentDeviceId(int deviceId) {
+        if (deviceId == Context.DEVICE_ID_DEFAULT) {
+            return VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT;
+        }
+
+        if (mVirtualDeviceManagerInternal == null) {
+            mVirtualDeviceManagerInternal =
+                    LocalServices.getService(VirtualDeviceManagerInternal.class);
+        }
+        return mVirtualDeviceManagerInternal.getPersistentIdForDevice(deviceId);
     }
 
     @Override
@@ -608,15 +629,17 @@
     @Override
     public boolean shouldShowRequestPermissionRationale(String packageName, String permissionName,
             int deviceId, int userId) {
+        String persistentDeviceId = getPersistentDeviceId(deviceId);
         return mPermissionManagerServiceImpl.shouldShowRequestPermissionRationale(packageName,
-                permissionName, deviceId, userId);
+                permissionName, persistentDeviceId, userId);
     }
 
     @Override
     public boolean isPermissionRevokedByPolicy(String packageName, String permissionName,
             int deviceId, int userId) {
+        String persistentDeviceId = getPersistentDeviceId(deviceId);
         return mPermissionManagerServiceImpl.isPermissionRevokedByPolicy(packageName,
-                permissionName, deviceId, userId);
+                permissionName, persistentDeviceId, userId);
     }
 
     @Override
@@ -914,13 +937,13 @@
          *
          * @param uid the UID to be checked
          * @param permissionName the name of the permission to be checked
-         * @param deviceId The device ID
+         * @param persistentDeviceId The persistent device ID
          * @param superImpl the original implementation that can be delegated to
          * @return {@link android.content.pm.PackageManager#PERMISSION_GRANTED} if the package has
          * the permission, or {@link android.content.pm.PackageManager#PERMISSION_DENIED} otherwise
          */
-        int checkUidPermission(int uid, @NonNull String permissionName, int deviceId,
-                TriFunction<Integer, String, Integer, Integer> superImpl);
+        int checkUidPermission(int uid, @NonNull String permissionName, String persistentDeviceId,
+                TriFunction<Integer, String, String, Integer> superImpl);
 
         /**
          * @return list of delegated permissions
@@ -965,17 +988,18 @@
         }
 
         @Override
-        public int checkUidPermission(int uid, @NonNull String permissionName, int deviceId,
-                @NonNull TriFunction<Integer, String, Integer, Integer> superImpl) {
+        public int checkUidPermission(int uid, @NonNull String permissionName,
+                String persistentDeviceId,
+                @NonNull TriFunction<Integer, String, String, Integer> superImpl) {
             if (uid == mDelegatedUid && isDelegatedPermission(permissionName)) {
                 final long identity = Binder.clearCallingIdentity();
                 try {
-                    return superImpl.apply(Process.SHELL_UID, permissionName, deviceId);
+                    return superImpl.apply(Process.SHELL_UID, permissionName, persistentDeviceId);
                 } finally {
                     Binder.restoreCallingIdentity(identity);
                 }
             }
-            return superImpl.apply(uid, permissionName, deviceId);
+            return superImpl.apply(uid, permissionName, persistentDeviceId);
         }
 
         @Override
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
index c5b637d..70913c3 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java
@@ -682,7 +682,7 @@
     }
 
     @Override
-    public int getPermissionFlags(String packageName, String permName, String persistentDeviceId,
+    public int getPermissionFlags(String packageName, String permName, String deviceId,
             int userId) {
         final int callingUid = Binder.getCallingUid();
         return getPermissionFlagsInternal(packageName, permName, callingUid, userId);
@@ -726,8 +726,7 @@
 
     @Override
     public void updatePermissionFlags(String packageName, String permName, int flagMask,
-            int flagValues, boolean checkAdjustPolicyFlagPermission, String persistentDeviceId,
-            int userId) {
+            int flagValues, boolean checkAdjustPolicyFlagPermission, String deviceId, int userId) {
         final int callingUid = Binder.getCallingUid();
         boolean overridePolicy = false;
 
@@ -917,8 +916,7 @@
     }
 
     @Override
-    public int checkPermission(String pkgName, String permName, String persistentDeviceId,
-            int userId) {
+    public int checkPermission(String pkgName, String permName, String deviceId, int userId) {
         if (!mUserManagerInt.exists(userId)) {
             return PackageManager.PERMISSION_DENIED;
         }
@@ -985,11 +983,11 @@
     }
 
     private int checkUidPermission(int uid, String permName) {
-        return checkUidPermission(uid, permName, Context.DEVICE_ID_DEFAULT);
+        return checkUidPermission(uid, permName, VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT);
     }
 
     @Override
-    public int checkUidPermission(int uid, String permName, int deviceId) {
+    public int checkUidPermission(int uid, String permName, String deviceId) {
         final int userId = UserHandle.getUserId(uid);
         if (!mUserManagerInt.exists(userId)) {
             return PackageManager.PERMISSION_DENIED;
@@ -1001,7 +999,7 @@
 
     @Override
     public Map<String, PermissionManager.PermissionState> getAllPermissionStates(
-            @NonNull String packageName, @NonNull String persistentDeviceId, int userId) {
+            @NonNull String packageName, @NonNull String deviceId, int userId) {
         throw new UnsupportedOperationException(
                 "This method is supported in newer implementation only");
     }
@@ -1315,8 +1313,8 @@
     }
 
     @Override
-    public void grantRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId) {
+    public void grantRuntimePermission(String packageName, String permName, String deviceId,
+            int userId) {
         final int callingUid = Binder.getCallingUid();
         final boolean overridePolicy =
                 checkUidPermission(callingUid, ADJUST_RUNTIME_PERMISSIONS_POLICY)
@@ -1489,12 +1487,13 @@
     }
 
     @Override
-    public void revokeRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId, String reason) {
+    public void revokeRuntimePermission(String packageName, String permName, String deviceId,
+            int userId, String reason) {
         final int callingUid = Binder.getCallingUid();
         final boolean overridePolicy =
                 checkUidPermission(callingUid, ADJUST_RUNTIME_PERMISSIONS_POLICY,
-                        Context.DEVICE_ID_DEFAULT) == PackageManager.PERMISSION_GRANTED;
+                        VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT)
+                        == PackageManager.PERMISSION_GRANTED;
 
         revokeRuntimePermissionInternal(packageName, permName, overridePolicy, callingUid, userId,
                 reason, mDefaultPermissionCallback);
@@ -1880,7 +1879,7 @@
 
     @Override
     public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
-            int deviceId, @UserIdInt int userId) {
+            String deviceId, @UserIdInt int userId) {
         final int callingUid = Binder.getCallingUid();
         if (UserHandle.getCallingUserId() != userId) {
             mContext.enforceCallingPermission(
@@ -1943,7 +1942,7 @@
     }
 
     @Override
-    public boolean isPermissionRevokedByPolicy(String packageName, String permName, int deviceId,
+    public boolean isPermissionRevokedByPolicy(String packageName, String permName, String deviceId,
             int userId) {
         if (UserHandle.getCallingUserId() != userId) {
             mContext.enforceCallingPermission(
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
index 7c10425..47032ea 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceInterface.java
@@ -141,11 +141,11 @@
      *
      * @param packageName the package name for which to get the flags
      * @param permName the permission for which to get the flags
-     * @param persistentDeviceId The device for which to get the flags
+     * @param deviceId The device for which to get the flags
      * @param userId the user for which to get permission flags
      * @return the permission flags
      */
-    int getPermissionFlags(String packageName, String permName, String persistentDeviceId,
+    int getPermissionFlags(String packageName, String permName, String deviceId,
             @UserIdInt int userId);
 
     /**
@@ -156,11 +156,11 @@
      * @param permName The permission for which to update the flags
      * @param flagMask The flags which to replace
      * @param flagValues The flags with which to replace
-     * @param persistentDeviceId The device for which to update the permission flags
+     * @param deviceId The device for which to update the permission flags
      * @param userId The user for which to update the permission flags
      */
     void updatePermissionFlags(String packageName, String permName, int flagMask, int flagValues,
-            boolean checkAdjustPolicyFlagPermission, String persistentDeviceId,
+            boolean checkAdjustPolicyFlagPermission, String deviceId,
             @UserIdInt int userId);
 
     /**
@@ -295,12 +295,12 @@
      *
      * @param packageName the package to which to grant the permission
      * @param permName the permission name to grant
-     * @param persistentDeviceId the device for which to grant the permission
+     * @param deviceId the device for which to grant the permission
      * @param userId the user for which to grant the permission
      *
      * @see #revokeRuntimePermission(String, String, String, int, String)
      */
-    void grantRuntimePermission(String packageName, String permName, String persistentDeviceId,
+    void grantRuntimePermission(String packageName, String permName, String deviceId,
             @UserIdInt int userId);
 
     /**
@@ -316,13 +316,13 @@
      *
      * @param packageName the package from which to revoke the permission
      * @param permName the permission name to revoke
-     * @param persistentDeviceId the device for which to revoke the permission
+     * @param deviceId the device for which to revoke the permission
      * @param userId the user for which to revoke the permission
      * @param reason the reason for the revoke, or {@code null} for unspecified
      *
      * @see #grantRuntimePermission(String, String, String, int)
      */
-    void revokeRuntimePermission(String packageName, String permName, String persistentDeviceId,
+    void revokeRuntimePermission(String packageName, String permName, String deviceId,
             @UserIdInt int userId, String reason);
 
     /**
@@ -347,7 +347,7 @@
      * @return whether you can show permission rationale UI
      */
     boolean shouldShowRequestPermissionRationale(String packageName, String permName,
-            int deviceId, @UserIdInt int userId);
+            String deviceId, @UserIdInt int userId);
 
     /**
      * Checks whether a particular permission has been revoked for a package by policy. Typically,
@@ -361,8 +361,8 @@
      * @param userId the device for which you are checking the permission
      * @return whether the permission is restricted by policy
      */
-    boolean isPermissionRevokedByPolicy(String packageName, String permName, int deviceId,
-            @UserIdInt int userId);
+    boolean isPermissionRevokedByPolicy(String packageName, String permName,
+            String deviceId, @UserIdInt int userId);
 
     /**
      * Get set of permissions that have been split into more granular or dependent permissions.
@@ -389,11 +389,11 @@
      *
      * @param pkgName package name
      * @param permName permission name
-     * @param persistentDeviceId  persistent device ID
+     * @param deviceId  persistent device ID
      * @param userId user ID
      * @return permission result {@link PackageManager.PermissionResult}
      */
-    int checkPermission(String pkgName, String permName, String persistentDeviceId,
+    int checkPermission(String pkgName, String permName, String deviceId,
             @UserIdInt int userId);
 
     /**
@@ -401,23 +401,23 @@
      *
      * @param uid UID
      * @param permName permission name
-     * @param deviceId device ID
+     * @param deviceId persistent device ID
      * @return permission result {@link PackageManager.PermissionResult}
      */
-    int checkUidPermission(int uid, String permName, int deviceId);
+    int checkUidPermission(int uid, String permName, String deviceId);
 
     /**
      * Gets the permission states for requested package, persistent device and user.
      *
      * @param packageName name of the package you are checking against
-     * @param persistentDeviceId id of the persistent device you are checking against
+     * @param deviceId id of the persistent device you are checking against
      * @param userId id of the user for which to get permission flags
      * @return mapping of all permission states keyed by their permission names
      *
      * @hide
      */
     Map<String, PermissionState> getAllPermissionStates(@NonNull String packageName,
-            @NonNull String persistentDeviceId, @UserIdInt int userId);
+            @NonNull String deviceId, @UserIdInt int userId);
 
     /**
      * Get all the package names requesting app op permissions.
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
index 91a778d..c18f856 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceLoggingDecorator.java
@@ -121,24 +121,22 @@
     }
 
     @Override
-    public int getPermissionFlags(String packageName, String permName, String persistentDeviceId,
+    public int getPermissionFlags(String packageName, String permName, String deviceId,
             int userId) {
         Log.i(LOG_TAG, "getPermissionFlags(packageName = " + packageName + ", permName = "
-                + permName + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId
-                + ")");
-        return mService.getPermissionFlags(packageName, permName, persistentDeviceId, userId);
+                + permName + ", deviceId = " + deviceId + ", userId = " + userId + ")");
+        return mService.getPermissionFlags(packageName, permName, deviceId, userId);
     }
 
     @Override
     public void updatePermissionFlags(String packageName, String permName, int flagMask,
-            int flagValues, boolean checkAdjustPolicyFlagPermission, String persistentDeviceId,
-            int userId) {
+            int flagValues, boolean checkAdjustPolicyFlagPermission, String deviceId, int userId) {
         Log.i(LOG_TAG, "updatePermissionFlags(packageName = " + packageName + ", permName = "
                 + permName + ", flagMask = " + flagMask + ", flagValues = " + flagValues
                 + ", checkAdjustPolicyFlagPermission = " + checkAdjustPolicyFlagPermission
-                + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId + ")");
+                + ", deviceId = " + deviceId + ", userId = " + userId + ")");
         mService.updatePermissionFlags(packageName, permName, flagMask, flagValues,
-                checkAdjustPolicyFlagPermission, persistentDeviceId, userId);
+                checkAdjustPolicyFlagPermission, deviceId, userId);
     }
 
     @Override
@@ -186,21 +184,20 @@
     }
 
     @Override
-    public void grantRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId) {
+    public void grantRuntimePermission(String packageName, String permName, String deviceId,
+            int userId) {
         Log.i(LOG_TAG, "grantRuntimePermission(packageName = " + packageName + ", permName = "
-                + permName + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId
-                + ")");
-        mService.grantRuntimePermission(packageName, permName, persistentDeviceId, userId);
+                + permName + ", deviceId = " + deviceId + ", userId = " + userId + ")");
+        mService.grantRuntimePermission(packageName, permName, deviceId, userId);
     }
 
     @Override
-    public void revokeRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId, String reason) {
+    public void revokeRuntimePermission(String packageName, String permName, String deviceId,
+            int userId, String reason) {
         Log.i(LOG_TAG, "revokeRuntimePermission(packageName = " + packageName + ", permName = "
-                + permName + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId
-                + ", reason = " + reason + ")");
-        mService.revokeRuntimePermission(packageName, permName, persistentDeviceId, userId, reason);
+                + permName + ", deviceId = " + deviceId + ", userId = " + userId + ", reason = "
+                + reason + ")");
+        mService.revokeRuntimePermission(packageName, permName, deviceId, userId, reason);
     }
 
     @Override
@@ -212,16 +209,16 @@
 
     @Override
     public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
-            int deviceId, int userId) {
+            String deviceId, int userId) {
         Log.i(LOG_TAG, "shouldShowRequestPermissionRationale(packageName = " + packageName
-                + ", permName = " + permName + ", deviceId = " + deviceId
-                +  ", userId = " + userId + ")");
+                + ", permName = " + permName + ", deviceId = " + deviceId + ", userId = "
+                + userId + ")");
         return mService.shouldShowRequestPermissionRationale(packageName, permName, deviceId,
                 userId);
     }
 
     @Override
-    public boolean isPermissionRevokedByPolicy(String packageName, String permName, int deviceId,
+    public boolean isPermissionRevokedByPolicy(String packageName, String permName, String deviceId,
             int userId) {
         Log.i(LOG_TAG, "isPermissionRevokedByPolicy(packageName = " + packageName + ", permName = "
                 + permName + ", deviceId = " + deviceId + ", userId = " + userId + ")");
@@ -235,26 +232,27 @@
     }
 
     @Override
-    public int checkPermission(String pkgName, String permName, String persistentDeviceId,
+    public int checkPermission(String pkgName, String permName, String deviceId,
             int userId) {
         Log.i(LOG_TAG, "checkPermission(pkgName = " + pkgName + ", permName = " + permName
-                + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId + ")");
-        return mService.checkPermission(pkgName, permName, persistentDeviceId, userId);
+                + ", deviceId = " + deviceId + ", userId = " + userId + ")");
+        return mService.checkPermission(pkgName, permName, deviceId, userId);
     }
 
     @Override
-    public int checkUidPermission(int uid, String permName, int deviceId) {
-        Log.i(LOG_TAG, "checkUidPermission(uid = " + uid + ", permName = "
-                + permName + ", deviceId = " + deviceId + ")");
+    public int checkUidPermission(int uid, String permName, String deviceId) {
+        Log.i(LOG_TAG, "checkUidPermission(uid = " + uid + ", permName = " + permName
+                + ", deviceId = " + deviceId + ")");
         return mService.checkUidPermission(uid, permName, deviceId);
     }
 
     @Override
     public Map<String, PermissionState> getAllPermissionStates(@NonNull String packageName,
-            @NonNull String persistentDeviceId, int userId) {
-        Log.i(LOG_TAG, "getAllPermissionStates(packageName = " + packageName
-                + ", persistentDeviceId = " + persistentDeviceId + ", userId = " + userId + ")");
-        return mService.getAllPermissionStates(packageName, persistentDeviceId, userId);
+            @NonNull String deviceId, int userId) {
+        Log.i(LOG_TAG,
+                "getAllPermissionStates(packageName = " + packageName + ", deviceId = " + deviceId
+                        + ", userId = " + userId + ")");
+        return mService.getAllPermissionStates(packageName, deviceId, userId);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
index 0a4ff07..40139ba 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTestingShim.java
@@ -154,12 +154,10 @@
     }
 
     @Override
-    public int getPermissionFlags(String packageName, String permName, String persistentDeviceId,
+    public int getPermissionFlags(String packageName, String permName, String deviceId,
             @UserIdInt int userId) {
-        int oldVal = mOldImplementation.getPermissionFlags(packageName, permName,
-                persistentDeviceId, userId);
-        int newVal = mNewImplementation.getPermissionFlags(packageName, permName,
-                persistentDeviceId, userId);
+        int oldVal = mOldImplementation.getPermissionFlags(packageName, permName, deviceId, userId);
+        int newVal = mNewImplementation.getPermissionFlags(packageName, permName, deviceId, userId);
 
         if (!Objects.equals(oldVal, newVal)) {
             signalImplDifference("getPermissionFlags");
@@ -169,12 +167,12 @@
 
     @Override
     public void updatePermissionFlags(String packageName, String permName, int flagMask,
-            int flagValues, boolean checkAdjustPolicyFlagPermission, String persistentDeviceId,
+            int flagValues, boolean checkAdjustPolicyFlagPermission, String deviceId,
             @UserIdInt int userId) {
         mOldImplementation.updatePermissionFlags(packageName, permName, flagMask, flagValues,
-                checkAdjustPolicyFlagPermission, persistentDeviceId, userId);
+                checkAdjustPolicyFlagPermission, deviceId, userId);
         mNewImplementation.updatePermissionFlags(packageName, permName, flagMask, flagValues,
-                checkAdjustPolicyFlagPermission, persistentDeviceId, userId);
+                checkAdjustPolicyFlagPermission, deviceId, userId);
     }
 
     @Override
@@ -239,21 +237,17 @@
     }
 
     @Override
-    public void grantRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, @UserIdInt int userId) {
-        mOldImplementation.grantRuntimePermission(packageName, permName, persistentDeviceId,
-                userId);
-        mNewImplementation.grantRuntimePermission(packageName, permName, persistentDeviceId,
-                userId);
+    public void grantRuntimePermission(String packageName, String permName, String deviceId,
+            @UserIdInt int userId) {
+        mOldImplementation.grantRuntimePermission(packageName, permName, deviceId, userId);
+        mNewImplementation.grantRuntimePermission(packageName, permName, deviceId, userId);
     }
 
     @Override
-    public void revokeRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, @UserIdInt int userId, String reason) {
-        mOldImplementation.revokeRuntimePermission(packageName, permName, persistentDeviceId,
-                userId, reason);
-        mNewImplementation.revokeRuntimePermission(packageName, permName, persistentDeviceId,
-                userId, reason);
+    public void revokeRuntimePermission(String packageName, String permName, String deviceId,
+            @UserIdInt int userId, String reason) {
+        mOldImplementation.revokeRuntimePermission(packageName, permName, deviceId, userId, reason);
+        mNewImplementation.revokeRuntimePermission(packageName, permName, deviceId, userId, reason);
     }
 
     @Override
@@ -265,7 +259,7 @@
 
     @Override
     public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
-            int deviceId, @UserIdInt int userId) {
+            String deviceId, @UserIdInt int userId) {
         boolean oldVal = mOldImplementation.shouldShowRequestPermissionRationale(packageName,
                 permName, deviceId,  userId);
         boolean newVal = mNewImplementation.shouldShowRequestPermissionRationale(packageName,
@@ -278,7 +272,7 @@
     }
 
     @Override
-    public boolean isPermissionRevokedByPolicy(String packageName, String permName, int deviceId,
+    public boolean isPermissionRevokedByPolicy(String packageName, String permName, String deviceId,
             @UserIdInt int userId) {
         boolean oldVal = mOldImplementation.isPermissionRevokedByPolicy(packageName, permName,
                 deviceId, userId);
@@ -303,12 +297,9 @@
     }
 
     @Override
-    public int checkPermission(String pkgName, String permName, String persistentDeviceId,
-            int userId) {
-        int oldVal = mOldImplementation.checkPermission(pkgName, permName, persistentDeviceId,
-                userId);
-        int newVal = mNewImplementation.checkPermission(pkgName, permName, persistentDeviceId,
-                userId);
+    public int checkPermission(String pkgName, String permName, String deviceId, int userId) {
+        int oldVal = mOldImplementation.checkPermission(pkgName, permName, deviceId, userId);
+        int newVal = mNewImplementation.checkPermission(pkgName, permName, deviceId, userId);
 
         if (!Objects.equals(oldVal, newVal)) {
             signalImplDifference("checkPermission");
@@ -317,7 +308,7 @@
     }
 
     @Override
-    public int checkUidPermission(int uid, String permName, int deviceId) {
+    public int checkUidPermission(int uid, String permName, String deviceId) {
         int oldVal = mOldImplementation.checkUidPermission(uid, permName, deviceId);
         int newVal = mNewImplementation.checkUidPermission(uid, permName, deviceId);
 
@@ -329,8 +320,8 @@
 
     @Override
     public Map<String, PermissionState> getAllPermissionStates(@NonNull String packageName,
-            @NonNull String persistentDeviceId, int userId) {
-        return mNewImplementation.getAllPermissionStates(packageName, persistentDeviceId, userId);
+            @NonNull String deviceId, int userId) {
+        return mNewImplementation.getAllPermissionStates(packageName, deviceId, userId);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
index bc29e67..981d3d9 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceTracingDecorator.java
@@ -159,11 +159,11 @@
     }
 
     @Override
-    public int getPermissionFlags(String packageName, String permName, String persistentDeviceId,
+    public int getPermissionFlags(String packageName, String permName, String deviceId,
             int userId) {
         Trace.traceBegin(TRACE_TAG, "TaggedTracingPermissionManagerServiceImpl#getPermissionFlags");
         try {
-            return mService.getPermissionFlags(packageName, permName, persistentDeviceId, userId);
+            return mService.getPermissionFlags(packageName, permName, deviceId, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
@@ -171,13 +171,12 @@
 
     @Override
     public void updatePermissionFlags(String packageName, String permName, int flagMask,
-            int flagValues, boolean checkAdjustPolicyFlagPermission, String persistentDeviceId,
-            int userId) {
+            int flagValues, boolean checkAdjustPolicyFlagPermission, String deviceId, int userId) {
         Trace.traceBegin(TRACE_TAG,
                 "TaggedTracingPermissionManagerServiceImpl#updatePermissionFlags");
         try {
             mService.updatePermissionFlags(packageName, permName, flagMask, flagValues,
-                    checkAdjustPolicyFlagPermission, persistentDeviceId, userId);
+                    checkAdjustPolicyFlagPermission, deviceId, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
@@ -256,25 +255,24 @@
     }
 
     @Override
-    public void grantRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId) {
+    public void grantRuntimePermission(String packageName, String permName, String deviceId,
+            int userId) {
         Trace.traceBegin(TRACE_TAG,
                 "TaggedTracingPermissionManagerServiceImpl#grantRuntimePermission");
         try {
-            mService.grantRuntimePermission(packageName, permName, persistentDeviceId, userId);
+            mService.grantRuntimePermission(packageName, permName, deviceId, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public void revokeRuntimePermission(String packageName, String permName,
-            String persistentDeviceId, int userId, String reason) {
+    public void revokeRuntimePermission(String packageName, String permName, String deviceId,
+            int userId, String reason) {
         Trace.traceBegin(TRACE_TAG,
                 "TaggedTracingPermissionManagerServiceImpl#revokeRuntimePermission");
         try {
-            mService.revokeRuntimePermission(packageName, permName, persistentDeviceId, userId,
-                    reason);
+            mService.revokeRuntimePermission(packageName, permName, deviceId, userId, reason);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
@@ -293,19 +291,19 @@
 
     @Override
     public boolean shouldShowRequestPermissionRationale(String packageName, String permName,
-            int deviceId, int userId) {
+            String deviceId, int userId) {
         Trace.traceBegin(TRACE_TAG,
                 "TaggedTracingPermissionManagerServiceImpl#shouldShowRequestPermissionRationale");
         try {
-            return mService.shouldShowRequestPermissionRationale(
-                    packageName, permName, deviceId, userId);
+            return mService.shouldShowRequestPermissionRationale(packageName, permName, deviceId,
+                    userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public boolean isPermissionRevokedByPolicy(String packageName, String permName, int deviceId,
+    public boolean isPermissionRevokedByPolicy(String packageName, String permName, String deviceId,
             int userId) {
         Trace.traceBegin(TRACE_TAG,
                 "TaggedTracingPermissionManagerServiceImpl#isPermissionRevokedByPolicy");
@@ -328,18 +326,17 @@
     }
 
     @Override
-    public int checkPermission(String pkgName, String permName, String persistentDeviceId,
-            int userId) {
+    public int checkPermission(String pkgName, String permName, String deviceId, int userId) {
         Trace.traceBegin(TRACE_TAG, "TaggedTracingPermissionManagerServiceImpl#checkPermission");
         try {
-            return mService.checkPermission(pkgName, permName, persistentDeviceId, userId);
+            return mService.checkPermission(pkgName, permName, deviceId, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
     }
 
     @Override
-    public int checkUidPermission(int uid, String permName, int deviceId) {
+    public int checkUidPermission(int uid, String permName, String deviceId) {
         Trace.traceBegin(TRACE_TAG, "TaggedTracingPermissionManagerServiceImpl#checkUidPermission");
         try {
             return mService.checkUidPermission(uid, permName, deviceId);
@@ -350,11 +347,11 @@
 
     @Override
     public Map<String, PermissionState> getAllPermissionStates(@NonNull String packageName,
-            @NonNull String persistentDeviceId, int userId) {
+            @NonNull String deviceId, int userId) {
         Trace.traceBegin(TRACE_TAG, "TaggedTracingPermissionManagerServiceImpl"
                 + "#getAllPermissionStates");
         try {
-            return mService.getAllPermissionStates(packageName, persistentDeviceId, userId);
+            return mService.getAllPermissionStates(packageName, deviceId, userId);
         } finally {
             Trace.traceEnd(TRACE_TAG);
         }
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 25e4116..bc26018 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -4057,15 +4057,17 @@
             case KeyEvent.KEYCODE_SYSRQ:
                 if (down && repeatCount == 0) {
                     interceptScreenshotChord(SCREENSHOT_KEY_OTHER, 0 /*pressDelay*/);
+                    return true;
                 }
-                return true;
+                break;
             case KeyEvent.KEYCODE_ESCAPE:
                 if (down
                         && KeyEvent.metaStateHasNoModifiers(metaState)
                         && repeatCount == 0) {
                     mContext.closeSystemDialogs();
+                    return true;
                 }
-                return true;
+                break;
             case KeyEvent.KEYCODE_STEM_PRIMARY:
                 handleUnhandledSystemKey(event);
                 sendSystemKeyToStatusBarAsync(event);
diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
index 00036e4..af4da81 100644
--- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
+++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java
@@ -842,7 +842,7 @@
     private int mBatteryChargeUah;
     private int mBatteryHealth;
     private int mBatteryTemperature;
-    private int mBatteryVoltageMv = -1;
+    private int mBatteryVoltageMv;
 
     @NonNull
     private final BatteryStatsHistory mHistory;
diff --git a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
index d5bc912..b69ccb3 100644
--- a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
+++ b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-
 package com.android.server.security;
 
 import android.content.Context;
@@ -23,6 +22,7 @@
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Binder;
 import android.os.RemoteException;
+import android.os.ServiceSpecificException;
 import android.os.UserHandle;
 import android.security.keystore.IKeyAttestationApplicationIdProvider;
 import android.security.keystore.KeyAttestationApplicationId;
@@ -57,7 +57,10 @@
         try {
             String[] packageNames = mPackageManager.getPackagesForUid(uid);
             if (packageNames == null) {
-                throw new RemoteException("No packages for uid");
+                throw new ServiceSpecificException(
+                        IKeyAttestationApplicationIdProvider
+                                .ERROR_GET_ATTESTATION_APPLICATION_ID_FAILED,
+                        "No package for uid: " + uid);
             }
             int userId = UserHandle.getUserId(uid);
             keyAttestationPackageInfos = new KeyAttestationPackageInfo[packageNames.length];
diff --git a/services/core/java/com/android/server/selinux/OWNERS b/services/core/java/com/android/server/selinux/OWNERS
new file mode 100644
index 0000000..6ca4da2
--- /dev/null
+++ b/services/core/java/com/android/server/selinux/OWNERS
@@ -0,0 +1,3 @@
+# Bug component: 1117393
+
+sandrom@google.com
diff --git a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
index 59766ec..f8c678a 100644
--- a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
+++ b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyService.java
@@ -45,6 +45,11 @@
 import static android.hardware.SensorPrivacyManager.Sources.QS_TILE;
 import static android.hardware.SensorPrivacyManager.Sources.SETTINGS;
 import static android.hardware.SensorPrivacyManager.Sources.SHELL;
+import static android.hardware.SensorPrivacyManager.StateTypes.AUTOMOTIVE_DRIVER_ASSISTANCE_APPS;
+import static android.hardware.SensorPrivacyManager.StateTypes.AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS;
+import static android.hardware.SensorPrivacyManager.StateTypes.AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS;
+import static android.hardware.SensorPrivacyManager.StateTypes.DISABLED;
+import static android.hardware.SensorPrivacyManager.StateTypes.ENABLED;
 import static android.hardware.SensorPrivacyManager.TOGGLE_TYPE_HARDWARE;
 import static android.hardware.SensorPrivacyManager.TOGGLE_TYPE_SOFTWARE;
 import static android.os.UserHandle.USER_NULL;
@@ -52,6 +57,9 @@
 
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION;
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__ACTION_UNKNOWN;
+import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_APPS;
+import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS;
+import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS;
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__TOGGLE_OFF;
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__TOGGLE_ON;
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__SENSOR__CAMERA;
@@ -63,8 +71,11 @@
 import static com.android.internal.util.FrameworkStatsLog.PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__SOURCE_UNKNOWN;
 import static com.android.internal.util.FrameworkStatsLog.write;
 
+import android.Manifest;
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
@@ -87,6 +98,7 @@
 import android.content.res.Configuration;
 import android.database.ContentObserver;
 import android.graphics.drawable.Icon;
+import android.hardware.CameraPrivacyAllowlistEntry;
 import android.hardware.ISensorPrivacyListener;
 import android.hardware.ISensorPrivacyManager;
 import android.hardware.SensorPrivacyManager;
@@ -123,6 +135,7 @@
 
 import com.android.internal.R;
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.camera.flags.Flags;
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.DumpUtils;
@@ -131,6 +144,7 @@
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.FgThread;
 import com.android.server.LocalServices;
+import com.android.server.SystemConfig;
 import com.android.server.SystemService;
 import com.android.server.pm.UserManagerInternal;
 
@@ -139,6 +153,7 @@
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Objects;
 
@@ -154,7 +169,24 @@
             SensorPrivacyService.class.getName() + ".action.disable_sensor_privacy";
 
     public static final int REMINDER_DIALOG_DELAY_MILLIS = 500;
-
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS;
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS;
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_APPS =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_APPS;
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__TOGGLE_ON =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__TOGGLE_ON;
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__TOGGLE_OFF =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__TOGGLE_OFF;
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    private static final int ACTION__ACTION_UNKNOWN =
+            PRIVACY_SENSOR_TOGGLE_INTERACTION__ACTION__ACTION_UNKNOWN;
     private final Context mContext;
     private final SensorPrivacyServiceImpl mSensorPrivacyServiceImpl;
     private final UserManagerInternal mUserManagerInternal;
@@ -176,6 +208,9 @@
     private CallStateHelper mCallStateHelper;
     private KeyguardManager mKeyguardManager;
 
+    List<CameraPrivacyAllowlistEntry> mCameraPrivacyAllowlist =
+            new ArrayList<CameraPrivacyAllowlistEntry>();
+
     private int mCurrentUser = USER_NULL;
 
     public SensorPrivacyService(Context context) {
@@ -192,6 +227,15 @@
         mPackageManagerInternal = getLocalService(PackageManagerInternal.class);
         mNotificationManager = mContext.getSystemService(NotificationManager.class);
         mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl();
+        ArrayMap<String, Boolean> cameraPrivacyAllowlist =
+                SystemConfig.getInstance().getCameraPrivacyAllowlist();
+
+        for (Map.Entry<String, Boolean> entry : cameraPrivacyAllowlist.entrySet()) {
+            CameraPrivacyAllowlistEntry ent = new CameraPrivacyAllowlistEntry();
+            ent.packageName = entry.getKey();
+            ent.isMandatory =  entry.getValue();
+            mCameraPrivacyAllowlist.add(ent);
+        }
     }
 
     @Override
@@ -324,8 +368,15 @@
                     mHandler, mHandler::handleSensorPrivacyChanged);
             mSensorPrivacyStateController.setSensorPrivacyListener(
                     mHandler,
-                    (toggleType, userId, sensor, state) -> mHandler.handleSensorPrivacyChanged(
-                            userId, toggleType, sensor, state.isEnabled()));
+                    (toggleType, userId, sensor, state) -> {
+                        mHandler.handleSensorPrivacyChanged(
+                                userId, toggleType, sensor, state.isEnabled());
+                        if (Flags.cameraPrivacyAllowlist()) {
+                            mHandler.handleSensorPrivacyChanged(
+                                    userId, toggleType, sensor, state.getState());
+                        }
+                    });
+
         }
 
         // If sensor privacy is enabled for a sensor, but the device doesn't support sensor privacy
@@ -400,9 +451,15 @@
          * @param packageName The package name of the app using the sensor
          * @param sensor The sensor that is attempting to be used
          */
+        @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
         private void onSensorUseStarted(int uid, String packageName, int sensor) {
             UserHandle user = UserHandle.of(mCurrentUser);
-            if (!isCombinedToggleSensorPrivacyEnabled(sensor)) {
+
+            if (Flags.cameraPrivacyAllowlist() && (sensor == CAMERA) && isAutomotive(mContext)) {
+                if (!isCameraPrivacyEnabled(packageName)) {
+                    return;
+                }
+            } else if (!isCombinedToggleSensorPrivacyEnabled(sensor)) {
                 return;
             }
 
@@ -727,6 +784,12 @@
                     == Configuration.UI_MODE_TYPE_TELEVISION;
         }
 
+        private boolean isAutomotive(Context context) {
+            int uiMode = context.getResources().getConfiguration().uiMode;
+            return (uiMode & Configuration.UI_MODE_TYPE_MASK)
+                    == Configuration.UI_MODE_TYPE_CAR;
+        }
+
         /**
          * Sets the sensor privacy to the provided state and notifies all listeners of the new
          * state.
@@ -766,6 +829,225 @@
             setToggleSensorPrivacyUnchecked(TOGGLE_TYPE_SOFTWARE, userId, source, sensor, enable);
         }
 
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
+        public void setToggleSensorPrivacyState(int userId, int source, int sensor, int state) {
+            if (DEBUG) {
+                Log.d(TAG, "callingUid=" + Binder.getCallingUid()
+                        + " callingPid=" + Binder.getCallingPid()
+                        + " setToggleSensorPrivacyState("
+                        + "userId=" + userId
+                        + " source=" + source
+                        + " sensor=" + sensor
+                        + " state=" + state
+                        + ")");
+            }
+            enforceManageSensorPrivacyPermission();
+            if (userId == UserHandle.USER_CURRENT) {
+                userId = mCurrentUser;
+            }
+
+            if (!canChangeToggleSensorPrivacy(userId, sensor)) {
+                return;
+            }
+            if (!supportsSensorToggle(TOGGLE_TYPE_SOFTWARE, sensor)) {
+                // Do not enable sensor privacy if the device doesn't support it.
+                return;
+            }
+
+            setToggleSensorPrivacyStateUnchecked(TOGGLE_TYPE_SOFTWARE, userId, source, sensor,
+                    state);
+        }
+
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        private void setToggleSensorPrivacyStateUnchecked(int toggleType, int userId, int source,
+                int sensor, int state) {
+            if (DEBUG) {
+                Log.d(TAG, "callingUid=" + Binder.getCallingUid()
+                        + " callingPid=" + Binder.getCallingPid()
+                        + " setToggleSensorPrivacyStateUnchecked("
+                        + "userId=" + userId
+                        + " source=" + source
+                        + " sensor=" + sensor
+                        + " state=" + state
+                        + ")");
+            }
+            long[] lastChange = new long[1];
+            mSensorPrivacyStateController.atomic(() -> {
+                SensorState sensorState = mSensorPrivacyStateController
+                        .getState(toggleType, userId, sensor);
+                lastChange[0] = sensorState.getLastChange();
+                mSensorPrivacyStateController.setState(
+                        toggleType, userId, sensor, state, mHandler,
+                        changeSuccessful -> {
+                            if (changeSuccessful) {
+                                if (userId == mUserManagerInternal.getProfileParentId(userId)) {
+                                    mHandler.sendMessage(PooledLambda.obtainMessage(
+                                            SensorPrivacyServiceImpl::logSensorPrivacyStateToggle,
+                                            this,
+                                            source, sensor, state, lastChange[0], false));
+                                }
+                            }
+                        });
+            });
+        }
+
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        private void logSensorPrivacyStateToggle(int source, int sensor, int state,
+                long lastChange, boolean onShutDown) {
+            long logMins = Math.max(0, (getCurrentTimeMillis() - lastChange) / (1000 * 60));
+
+            int logAction = ACTION__ACTION_UNKNOWN;
+            if (!onShutDown) {
+                switch(state) {
+                    case ENABLED :
+                        logAction = ACTION__TOGGLE_OFF;
+                        break;
+                    case DISABLED :
+                        logAction = ACTION__TOGGLE_ON;
+                        break;
+                    case AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS :
+                        logAction = ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS;
+                        break;
+                    case AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS :
+                        logAction = ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS;
+                        break;
+                    case AUTOMOTIVE_DRIVER_ASSISTANCE_APPS :
+                        logAction = ACTION__AUTOMOTIVE_DRIVER_ASSISTANCE_APPS;
+                        break;
+                    default :
+                        logAction = ACTION__ACTION_UNKNOWN;
+                        break;
+                }
+            }
+
+            int logSensor = PRIVACY_SENSOR_TOGGLE_INTERACTION__SENSOR__SENSOR_UNKNOWN;
+            switch(sensor) {
+                case CAMERA:
+                    logSensor = PRIVACY_SENSOR_TOGGLE_INTERACTION__SENSOR__CAMERA;
+                    break;
+                case MICROPHONE:
+                    logSensor = PRIVACY_SENSOR_TOGGLE_INTERACTION__SENSOR__MICROPHONE;
+                    break;
+                default:
+                    logSensor = PRIVACY_SENSOR_TOGGLE_INTERACTION__SENSOR__SENSOR_UNKNOWN;
+                    break;
+            }
+
+            int logSource = PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__SOURCE_UNKNOWN;
+            switch(source) {
+                case QS_TILE :
+                    logSource = PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__QS_TILE;
+                    break;
+                case DIALOG :
+                    logSource = PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__DIALOG;
+                    break;
+                case SETTINGS:
+                    logSource = PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__SETTINGS;
+                    break;
+                default:
+                    logSource = PRIVACY_SENSOR_TOGGLE_INTERACTION__SOURCE__SOURCE_UNKNOWN;
+                    break;
+            }
+
+            if (DEBUG || DEBUG_LOGGING) {
+                Log.d(TAG, "Logging sensor toggle interaction:" + " logSensor=" + logSensor
+                        + " logAction=" + logAction + " logSource=" + logSource + " logMins="
+                        + logMins);
+            }
+            write(PRIVACY_SENSOR_TOGGLE_INTERACTION, logSensor, logAction, logSource, logMins);
+
+        }
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
+        public void setToggleSensorPrivacyStateForProfileGroup(int userId, int source, int sensor,
+                int  state) {
+            enforceManageSensorPrivacyPermission();
+            if (userId == UserHandle.USER_CURRENT) {
+                userId = mCurrentUser;
+            }
+            int parentId = mUserManagerInternal.getProfileParentId(userId);
+            forAllUsers(userId2 -> {
+                if (parentId == mUserManagerInternal.getProfileParentId(userId2)) {
+                    setToggleSensorPrivacyState(userId2, source, sensor, state);
+                }
+            });
+        }
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+        public List<CameraPrivacyAllowlistEntry> getCameraPrivacyAllowlist() {
+            enforceObserveSensorPrivacyPermission();
+            return mCameraPrivacyAllowlist;
+        }
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+        public boolean isCameraPrivacyEnabled(String packageName) {
+            if (DEBUG) {
+                Log.d(TAG, "callingUid=" + Binder.getCallingUid()
+                        + " callingPid=" + Binder.getCallingPid()
+                        + " isCameraPrivacyEnabled("
+                        + "packageName=" + packageName
+                        + ")");
+            }
+            enforceObserveSensorPrivacyPermission();
+
+            int state =  mSensorPrivacyStateController.getState(TOGGLE_TYPE_SOFTWARE, mCurrentUser,
+                    CAMERA).getState();
+            if (state == ENABLED) {
+                return true;
+            } else if (state == DISABLED) {
+                return false;
+            } else if (state == AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS) {
+                for (CameraPrivacyAllowlistEntry entry : mCameraPrivacyAllowlist) {
+                    if ((packageName.equals(entry.packageName)) && !entry.isMandatory) {
+                        return false;
+                    }
+                }
+                return true;
+            } else if (state == AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS) {
+                for (CameraPrivacyAllowlistEntry entry : mCameraPrivacyAllowlist) {
+                    if ((packageName.equals(entry.packageName)) && entry.isMandatory) {
+                        return false;
+                    }
+                }
+                return true;
+            } else if (state == AUTOMOTIVE_DRIVER_ASSISTANCE_APPS) {
+                for (CameraPrivacyAllowlistEntry entry : mCameraPrivacyAllowlist) {
+                    if (packageName.equals(entry.packageName)) {
+                        return false;
+                    }
+                }
+                return true;
+            }
+            return false;
+        }
+
+        @Override
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
+        public int getToggleSensorPrivacyState(int toggleType, int sensor) {
+            if (DEBUG) {
+                Log.d(TAG, "callingUid=" + Binder.getCallingUid()
+                        + " callingPid=" + Binder.getCallingPid()
+                        + " getToggleSensorPrivacyState("
+                        + "toggleType=" + toggleType
+                        + " sensor=" + sensor
+                        + ")");
+            }
+            enforceObserveSensorPrivacyPermission();
+
+            return mSensorPrivacyStateController.getState(toggleType, mCurrentUser, sensor)
+                    .getState();
+        }
+
         private void setToggleSensorPrivacyUnchecked(int toggleType, int userId, int source,
                 int sensor, boolean enable) {
             if (DEBUG) {
@@ -899,16 +1181,23 @@
          * Enforces the caller contains the necessary permission to change the state of sensor
          * privacy.
          */
+        @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
         private void enforceManageSensorPrivacyPermission() {
-            enforcePermission(android.Manifest.permission.MANAGE_SENSOR_PRIVACY,
-                    "Changing sensor privacy requires the following permission: "
-                            + MANAGE_SENSOR_PRIVACY);
+            if (mContext.checkCallingOrSelfPermission(
+                    android.Manifest.permission.MANAGE_SENSOR_PRIVACY) == PERMISSION_GRANTED) {
+                return;
+            }
+
+            String message = "Changing sensor privacy requires the following permission: "
+                    + MANAGE_SENSOR_PRIVACY;
+            throw new SecurityException(message);
         }
 
         /**
          * Enforces the caller contains the necessary permission to observe changes to the sate of
          * sensor privacy.
          */
+        @RequiresPermission(Manifest.permission.OBSERVE_SENSOR_PRIVACY)
         private void enforceObserveSensorPrivacyPermission() {
             String systemUIPackage = mContext.getString(R.string.config_systemUi);
             int systemUIAppId = UserHandle.getAppId(mPackageManagerInternal
@@ -917,15 +1206,13 @@
                 // b/221782106, possible race condition with role grant might bootloop device.
                 return;
             }
-            enforcePermission(android.Manifest.permission.OBSERVE_SENSOR_PRIVACY,
-                    "Observing sensor privacy changes requires the following permission: "
-                            + android.Manifest.permission.OBSERVE_SENSOR_PRIVACY);
-        }
-
-        private void enforcePermission(String permission, String message) {
-            if (mContext.checkCallingOrSelfPermission(permission) == PERMISSION_GRANTED) {
+            if (mContext.checkCallingOrSelfPermission(
+                    android.Manifest.permission.OBSERVE_SENSOR_PRIVACY) == PERMISSION_GRANTED) {
                 return;
             }
+
+            String message = "Observing sensor privacy changes requires the following permission: "
+                    + android.Manifest.permission.OBSERVE_SENSOR_PRIVACY;
             throw new SecurityException(message);
         }
 
@@ -1293,11 +1580,13 @@
         }
 
         @Override
+        @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
         public void onShellCommand(FileDescriptor in, FileDescriptor out,
                 FileDescriptor err, String[] args, ShellCallback callback,
                 ResultReceiver resultReceiver) {
             (new ShellCommand() {
                 @Override
+                @RequiresPermission(Manifest.permission.MANAGE_SENSOR_PRIVACY)
                 public int onCommand(String cmd) {
                     if (cmd == null) {
                         return handleDefaultCommands(cmd);
@@ -1327,6 +1616,45 @@
                             setToggleSensorPrivacy(userId, SHELL, sensor, false);
                         }
                         break;
+                        case "automotive_driver_assistance_apps" : {
+                            if (Flags.cameraPrivacyAllowlist()) {
+                                int sensor = sensorStrToId(getNextArgRequired());
+                                if ((!isAutomotive(mContext)) || (sensor != CAMERA)) {
+                                    pw.println("Command not valid for this sensor");
+                                    return -1;
+                                }
+
+                                setToggleSensorPrivacyState(userId, SHELL, sensor,
+                                        AUTOMOTIVE_DRIVER_ASSISTANCE_APPS);
+                            }
+                        }
+                        break;
+                        case "automotive_driver_assistance_helpful_apps" : {
+                            if (Flags.cameraPrivacyAllowlist()) {
+                                int sensor = sensorStrToId(getNextArgRequired());
+                                if ((!isAutomotive(mContext)) || (sensor != CAMERA)) {
+                                    pw.println("Command not valid for this sensor");
+                                    return -1;
+                                }
+
+                                setToggleSensorPrivacyState(userId, SHELL, sensor,
+                                        AUTOMOTIVE_DRIVER_ASSISTANCE_HELPFUL_APPS);
+                            }
+                        }
+                        break;
+                        case "automotive_driver_assistance_required_apps" : {
+                            if (Flags.cameraPrivacyAllowlist()) {
+                                int sensor = sensorStrToId(getNextArgRequired());
+                                if ((!isAutomotive(mContext)) || (sensor != CAMERA)) {
+                                    pw.println("Command not valid for this sensor");
+                                    return -1;
+                                }
+
+                                setToggleSensorPrivacyState(userId, SHELL, sensor,
+                                        AUTOMOTIVE_DRIVER_ASSISTANCE_REQUIRED_APPS);
+                            }
+                        }
+                        break;
                         default:
                             return handleDefaultCommands(cmd);
                     }
@@ -1349,6 +1677,24 @@
                     pw.println("  disable USER_ID SENSOR");
                     pw.println("    Disable privacy for a certain sensor.");
                     pw.println("");
+                    if (Flags.cameraPrivacyAllowlist()) {
+                        if (isAutomotive(mContext)) {
+                            pw.println("  automotive_driver_assistance_apps USER_ID SENSOR");
+                            pw.println("    Disable privacy for automotive apps which help you"
+                                    + " drive and apps which are required by OEM");
+                            pw.println("");
+                            pw.println("  automotive_driver_assistance_helpful_apps "
+                                    + "USER_ID SENSOR");
+                            pw.println("    Disable privacy for automotive apps which "
+                                    + "help you drive.");
+                            pw.println("");
+                            pw.println("  automotive_driver_assistance_required_apps "
+                                    + "USER_ID SENSOR");
+                            pw.println("    Disable privacy for automotive apps which are "
+                                    + "required by OEM.");
+                            pw.println("");
+                        }
+                    }
                 }
             }).exec(this, in, out, err, args, callback, resultReceiver);
         }
@@ -1457,6 +1803,38 @@
             mSensorPrivacyServiceImpl.showSensorStateChangedActivity(sensor, toggleType);
         }
 
+        @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+        public void handleSensorPrivacyChanged(int userId, int toggleType, int sensor,
+                int state) {
+            if (userId == mCurrentUser) {
+                mSensorPrivacyServiceImpl.setGlobalRestriction(sensor,
+                        mSensorPrivacyServiceImpl.isCombinedToggleSensorPrivacyEnabled(sensor));
+            }
+
+            if (userId != mCurrentUser) {
+                return;
+            }
+            synchronized (mListenerLock) {
+                try {
+                    final int count = mToggleSensorListeners.beginBroadcast();
+                    for (int i = 0; i < count; i++) {
+                        ISensorPrivacyListener listener = mToggleSensorListeners.getBroadcastItem(
+                                i);
+                        try {
+                            listener.onSensorPrivacyStateChanged(toggleType, sensor, state);
+                        } catch (RemoteException e) {
+                            Log.e(TAG, "Caught an exception notifying listener " + listener + ": ",
+                                    e);
+                        }
+                    }
+                } finally {
+                    mToggleSensorListeners.finishBroadcast();
+                }
+            }
+
+            mSensorPrivacyServiceImpl.showSensorStateChangedActivity(sensor, toggleType);
+        }
+
         public void removeSuppressPackageReminderToken(Pair<Integer, UserHandle> key,
                 IBinder token) {
             sendMessage(PooledLambda.obtainMessage(
diff --git a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateController.java b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateController.java
index 9694958..14b13e0 100644
--- a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateController.java
+++ b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateController.java
@@ -16,9 +16,11 @@
 
 package com.android.server.sensorprivacy;
 
+import android.annotation.FlaggedApi;
 import android.os.Handler;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.camera.flags.Flags;
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.internal.util.function.pooled.PooledLambda;
 
@@ -51,6 +53,14 @@
         }
     }
 
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    void setState(int toggleType, int userId, int sensor, int state, Handler callbackHandler,
+            SetStateResultCallback callback) {
+        synchronized (mLock) {
+            setStateLocked(toggleType, userId, sensor, state, callbackHandler, callback);
+        }
+    }
+
     void setSensorPrivacyListener(Handler handler,
             SensorPrivacyListener listener) {
         synchronized (mLock) {
@@ -128,6 +138,11 @@
             Handler callbackHandler, SetStateResultCallback callback);
 
     @GuardedBy("mLock")
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    abstract void setStateLocked(int toggleType, int userId, int sensor, int state,
+            Handler callbackHandler, SetStateResultCallback callback);
+
+    @GuardedBy("mLock")
     abstract void setSensorPrivacyListenerLocked(Handler handler,
             SensorPrivacyListener listener);
 
diff --git a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateControllerImpl.java b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateControllerImpl.java
index 3dcb4cf..4b491ce 100644
--- a/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateControllerImpl.java
+++ b/services/core/java/com/android/server/sensorprivacy/SensorPrivacyStateControllerImpl.java
@@ -16,8 +16,12 @@
 
 package com.android.server.sensorprivacy;
 
+import static android.hardware.SensorPrivacyManager.StateTypes.DISABLED;
+
+import android.annotation.FlaggedApi;
 import android.os.Handler;
 
+import com.android.internal.camera.flags.Flags;
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.internal.util.function.pooled.PooledLambda;
 
@@ -85,6 +89,33 @@
         sendSetStateCallback(callbackHandler, callback, false);
     }
 
+    @Override
+    @FlaggedApi(Flags.FLAG_CAMERA_PRIVACY_ALLOWLIST)
+    void setStateLocked(int toggleType, int userId, int sensor, int state,
+            Handler callbackHandler, SetStateResultCallback callback) {
+        // Changing the SensorState's mEnabled updates the timestamp of its last change.
+        // A nonexistent state -> unmuted should not set the timestamp.
+        SensorState lastState = mPersistedState.getState(toggleType, userId, sensor);
+        if (lastState == null) {
+            if (state == DISABLED) {
+                sendSetStateCallback(callbackHandler, callback, false);
+                return;
+            } else {
+                SensorState sensorState = new SensorState(state);
+                mPersistedState.setState(toggleType, userId, sensor, sensorState);
+                notifyStateChangeLocked(toggleType, userId, sensor, sensorState);
+                sendSetStateCallback(callbackHandler, callback, true);
+                return;
+            }
+        }
+        if (lastState.setState(state)) {
+            notifyStateChangeLocked(toggleType, userId, sensor, lastState);
+            sendSetStateCallback(callbackHandler, callback, true);
+            return;
+        }
+        sendSetStateCallback(callbackHandler, callback, false);
+    }
+
     private void notifyStateChangeLocked(int toggleType, int userId, int sensor,
             SensorState sensorState) {
         if (mListenerHandler != null && mListener != null) {
diff --git a/services/core/java/com/android/server/stats/pull/AggregatedMobileDataStatsPuller.java b/services/core/java/com/android/server/stats/pull/AggregatedMobileDataStatsPuller.java
index 0de73a5..b0dcf95 100644
--- a/services/core/java/com/android/server/stats/pull/AggregatedMobileDataStatsPuller.java
+++ b/services/core/java/com/android/server/stats/pull/AggregatedMobileDataStatsPuller.java
@@ -30,7 +30,9 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.selinux.RateLimiter;
 
+import java.time.Duration;
 import java.util.List;
 import java.util.Map;
 
@@ -131,19 +133,36 @@
 
     private final Handler mMobileDataStatsHandler;
 
+    private final RateLimiter mRateLimiter;
+
     AggregatedMobileDataStatsPuller(NetworkStatsManager networkStatsManager) {
+        if (DEBUG) {
+            if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
+                Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER,
+                        TAG + "-AggregatedMobileDataStatsPullerInit");
+            }
+        }
+
+        mRateLimiter = new RateLimiter(/* window= */ Duration.ofSeconds(1));
+
         mUidStats = new ArrayMap<>();
         mUidPreviousState = new SparseIntArray();
 
         mNetworkStatsManager = networkStatsManager;
 
-        if (mNetworkStatsManager != null) {
-            updateNetworkStats(mNetworkStatsManager);
-        }
-
         HandlerThread mMobileDataStatsHandlerThread = new HandlerThread("MobileDataStatsHandler");
         mMobileDataStatsHandlerThread.start();
         mMobileDataStatsHandler = new Handler(mMobileDataStatsHandlerThread.getLooper());
+
+        if (mNetworkStatsManager != null) {
+            mMobileDataStatsHandler.post(
+                    () -> {
+                        updateNetworkStats(mNetworkStatsManager);
+                    });
+        }
+        if (DEBUG) {
+            Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+        }
     }
 
     public void noteUidProcessState(int uid, int state, long unusedElapsedRealtime,
@@ -180,18 +199,20 @@
     }
 
     private void noteUidProcessStateImpl(int uid, int state) {
-        // noteUidProcessStateLocked can be called back to back several times while
-        // the updateNetworkStatsLocked loops over several stats for multiple uids
-        // and during the first call in a batch of proc state change event it can
-        // contain info for uid with unknown previous state yet which can happen due to a few
-        // reasons:
-        // - app was just started
-        // - app was started before the ActivityManagerService
-        // as result stats would be created with state == ActivityManager.PROCESS_STATE_UNKNOWN
-        if (mNetworkStatsManager != null) {
-            updateNetworkStats(mNetworkStatsManager);
-        } else {
-            Slog.w(TAG, "noteUidProcessStateLocked() can not get mNetworkStatsManager");
+        if (mRateLimiter.tryAcquire()) {
+            // noteUidProcessStateImpl can be called back to back several times while
+            // the updateNetworkStats loops over several stats for multiple uids
+            // and during the first call in a batch of proc state change event it can
+            // contain info for uid with unknown previous state yet which can happen due to a few
+            // reasons:
+            // - app was just started
+            // - app was started before the ActivityManagerService
+            // as result stats would be created with state == ActivityManager.PROCESS_STATE_UNKNOWN
+            if (mNetworkStatsManager != null) {
+                updateNetworkStats(mNetworkStatsManager);
+            } else {
+                Slog.w(TAG, "noteUidProcessStateLocked() can not get mNetworkStatsManager");
+            }
         }
         mUidPreviousState.put(uid, state);
     }
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 4955358..fd316ea 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -20,7 +20,9 @@
 import static android.Manifest.permission.INTERACT_ACROSS_USERS;
 import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
 import static android.app.StatusBarManager.DISABLE2_GLOBAL_ACTIONS;
+import static android.app.StatusBarManager.DISABLE2_MASK;
 import static android.app.StatusBarManager.DISABLE2_NOTIFICATION_SHADE;
+import static android.app.StatusBarManager.DISABLE_MASK;
 import static android.app.StatusBarManager.NAV_BAR_MODE_DEFAULT;
 import static android.app.StatusBarManager.NAV_BAR_MODE_KIDS;
 import static android.app.StatusBarManager.NavBarMode;
@@ -220,8 +222,9 @@
         int what1;
         int what2;
         IBinder token;
+        private String mReason;
 
-        public DisableRecord(int userId, IBinder token) {
+        DisableRecord(int userId, IBinder token) {
             this.userId = userId;
             this.token = token;
             try {
@@ -234,12 +237,12 @@
         @Override
         public void binderDied() {
             Slog.i(TAG, "binder died for pkg=" + pkg);
-            disableForUser(0, token, pkg, userId);
-            disable2ForUser(0, token, pkg, userId);
+            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+            disableForUser(info, token, pkg, userId, "Binder Died");
             token.unlinkToDeath(this, 0);
         }
 
-        public void setFlags(int what, int which, String pkg) {
+        public void setFlags(int what, int which, String pkg, String reason) {
             switch (which) {
                 case 1:
                     what1 = what;
@@ -253,6 +256,7 @@
                     break;
             }
             this.pkg = pkg;
+            this.mReason = reason;
         }
 
         public int getFlags(int which) {
@@ -271,8 +275,8 @@
 
         @Override
         public String toString() {
-            return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s",
-                    userId, what1, what2, pkg, token);
+            return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s reason=%s",
+                    userId, what1, what2, pkg, token, mReason);
         }
     }
 
@@ -1160,57 +1164,59 @@
         return mTracingEnabled;
     }
 
-    // TODO(b/117478341): make it aware of multi-display if needed.
+    /**
+     * @deprecated
+     * Disable some features in the status bar.
+     *
+     * This method is deprecated and callers should use
+     * {@link #disableForUser(StatusBarManager.DisableInfo, IBinder, String, int, String)}
+     *
+     * @hide
+     */
+    @Deprecated
     @Override
     public void disable(int what, IBinder token, String pkg) {
-        disableForUser(what, token, pkg, mCurrentUserId);
+        StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(what & DISABLE_MASK,
+                what & DISABLE2_MASK);
+        disableForUser(info, token, pkg, mCurrentUserId, null);
     }
 
-    // TODO(b/117478341): make it aware of multi-display if needed.
-    @Override
-    public void disableForUser(int what, IBinder token, String pkg, int userId) {
-        enforceStatusBar();
-
-        synchronized (mLock) {
-            disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 1);
-        }
-    }
-
-    // TODO(b/117478341): make it aware of multi-display if needed.
     /**
-     * Disable additional status bar features. Pass the bitwise-or of the DISABLE2_* flags.
-     * To re-enable everything, pass {@link #DISABLE2_NONE}.
+     * @deprecated
+     * Disable some features in the status bar.
      *
-     * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
+     * This method is deprecated and callers should use
+     * {@link #disableForUser(StatusBarManager.DisableInfo, IBinder, String, int, String)}
+     *
+     * @hide
      */
+    @Deprecated
     @Override
     public void disable2(int what, IBinder token, String pkg) {
-        disable2ForUser(what, token, pkg, mCurrentUserId);
+        StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(what & DISABLE_MASK,
+                what & DISABLE2_MASK);
+        disableForUser(info, token, pkg, mCurrentUserId, null);
     }
 
     // TODO(b/117478341): make it aware of multi-display if needed.
-    /**
-     * Disable additional status bar features for a given user. Pass the bitwise-or of the
-     * DISABLE2_* flags. To re-enable everything, pass {@link #DISABLE_NONE}.
-     *
-     * Warning: Only pass DISABLE2_* flags into this function, do not use DISABLE_* flags.
-     */
     @Override
-    public void disable2ForUser(int what, IBinder token, String pkg, int userId) {
+    public void disableForUser(StatusBarManager.DisableInfo disableInfo, IBinder token, String pkg,
+            int userId, String reason) {
         enforceStatusBar();
-
         synchronized (mLock) {
-            disableLocked(DEFAULT_DISPLAY, userId, what, token, pkg, 2);
+            Pair<Integer, Integer> flags = disableInfo.toFlags();
+            disableLocked(DEFAULT_DISPLAY, userId, flags.first, token, pkg, 1, reason);
+            disableLocked(DEFAULT_DISPLAY, userId, flags.second, token, pkg, 2, reason);
         }
     }
 
     private void disableLocked(int displayId, int userId, int what, IBinder token, String pkg,
-            int whichFlag) {
+            int whichFlag, String reason) {
         // It's important that the the callback and the call to mBar get done
         // in the same order when multiple threads are calling this function
         // so they are paired correctly.  The messages on the handler will be
         // handled in the order they were enqueued, but will be outside the lock.
-        manageDisableListLocked(userId, what, token, pkg, whichFlag);
+        manageDisableListLocked(userId, what, token, pkg, whichFlag, reason);
 
         // Ensure state for the current user is applied, even if passed a non-current user.
         final int net1 = gatherDisableActionsLocked(mCurrentUserId, 1);
@@ -1359,7 +1365,7 @@
         // also allows calls from window manager which is in this process.
         enforceStatusBarService();
 
-        final int unknownFlags = flags & ~StatusBarManager.DISABLE_MASK;
+        final int unknownFlags = flags & ~DISABLE_MASK;
         if (unknownFlags != 0) {
             Slog.e(TAG, "Unknown disable flags: 0x" + Integer.toHexString(unknownFlags),
                     new RuntimeException());
@@ -1368,7 +1374,8 @@
         if (SPEW) Slog.d(TAG, "setDisableFlags(0x" + Integer.toHexString(flags) + ")");
 
         synchronized (mLock) {
-            disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1);
+            disableLocked(displayId, mCurrentUserId, flags, mSysUiVisToken, cause, 1,
+                    "setDisableFlags");
         }
     }
 
@@ -2423,7 +2430,8 @@
     // ================================================================================
 
     // lock on mDisableRecords
-    void manageDisableListLocked(int userId, int what, IBinder token, String pkg, int which) {
+    void manageDisableListLocked(int userId, int what, IBinder token, String pkg, int which,
+            String reason) {
         if (SPEW) {
             Slog.d(TAG, "manageDisableList userId=" + userId
                     + " what=0x" + Integer.toHexString(what) + " pkg=" + pkg);
@@ -2445,7 +2453,7 @@
 
         // Update existing record
         if (record != null) {
-            record.setFlags(what, which, pkg);
+            record.setFlags(what, which, pkg, reason);
             if (record.isEmpty()) {
                 mDisableRecords.remove(i);
                 record.token.unlinkToDeath(record, 0);
@@ -2455,7 +2463,7 @@
 
         // Record doesn't exist, so we create a new one
         record = new DisableRecord(userId, token);
-        record.setFlags(what, which, pkg);
+        record.setFlags(what, which, pkg, reason);
         mDisableRecords.add(record);
     }
 
diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
index d6bf02f..adb55b4 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java
@@ -16,8 +16,6 @@
 
 import static android.app.StatusBarManager.DEFAULT_SETUP_DISABLE2_FLAGS;
 import static android.app.StatusBarManager.DEFAULT_SETUP_DISABLE_FLAGS;
-import static android.app.StatusBarManager.DISABLE2_NONE;
-import static android.app.StatusBarManager.DISABLE_NONE;
 
 import android.app.StatusBarManager.DisableInfo;
 import android.content.ComponentName;
@@ -27,7 +25,6 @@
 import android.os.RemoteException;
 import android.os.ShellCommand;
 import android.service.quicksettings.TileService;
-import android.util.Pair;
 
 import java.io.PrintWriter;
 
@@ -144,25 +141,17 @@
         String arg = getNextArgRequired();
         String pkg = mContext.getPackageName();
         boolean disable = Boolean.parseBoolean(arg);
-
-        if (disable) {
-            mInterface.disable(DEFAULT_SETUP_DISABLE_FLAGS, sToken, pkg);
-            mInterface.disable2(DEFAULT_SETUP_DISABLE2_FLAGS, sToken, pkg);
-        } else {
-            mInterface.disable(DISABLE_NONE, sToken, pkg);
-            mInterface.disable2(DISABLE2_NONE, sToken, pkg);
-        }
-
+        int userId = Binder.getCallingUserHandle().getIdentifier();
+        DisableInfo info = disable ? new DisableInfo(DEFAULT_SETUP_DISABLE_FLAGS,
+                DEFAULT_SETUP_DISABLE2_FLAGS) : new DisableInfo();
+        mInterface.disableForUser(info, sToken, pkg, userId, "runDisableForSetup");
         return 0;
     }
 
     private int runSendDisableFlag() {
         String pkg = mContext.getPackageName();
-        int disable1 = DISABLE_NONE;
-        int disable2 = DISABLE2_NONE;
-
+        int userId = Binder.getCallingUserHandle().getIdentifier();
         DisableInfo info = new DisableInfo();
-
         String arg = getNextArg();
         while (arg != null) {
             switch (arg) {
@@ -170,7 +159,7 @@
                     info.setSearchDisabled(true);
                     break;
                 case "home":
-                    info.setNagivationHomeDisabled(true);
+                    info.setNavigationHomeDisabled(true);
                     break;
                 case "recents":
                     info.setRecentsDisabled(true);
@@ -197,10 +186,7 @@
             arg = getNextArg();
         }
 
-        Pair<Integer, Integer> flagPair = info.toFlags();
-
-        mInterface.disable(flagPair.first, sToken, pkg);
-        mInterface.disable2(flagPair.second, sToken, pkg);
+        mInterface.disableForUser(info, sToken, pkg, userId, "Shell Commands");
 
         return 0;
     }
diff --git a/services/core/java/com/android/server/uri/UriGrantsManagerService.java b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
index d2f6701..4af8c61 100644
--- a/services/core/java/com/android/server/uri/UriGrantsManagerService.java
+++ b/services/core/java/com/android/server/uri/UriGrantsManagerService.java
@@ -65,6 +65,7 @@
 import android.content.pm.PathPermission;
 import android.content.pm.ProviderInfo;
 import android.net.Uri;
+import android.os.BadParcelableException;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
@@ -630,16 +631,24 @@
         if (intent == null) {
             return null;
         }
-        Uri data = intent.getData();
-        ClipData clip = intent.getClipData();
-        if (data == null && clip == null) {
-            return null;
-        }
+
         // Default userId for uris in the intent (if they don't specify it themselves)
         int contentUserHint = intent.getContentUserHint();
         if (contentUserHint == UserHandle.USER_CURRENT) {
             contentUserHint = UserHandle.getUserId(callingUid);
         }
+
+        if (android.security.Flags.contentUriPermissionApis()) {
+            enforceRequireContentUriPermissionFromCallerOnIntentExtraStream(intent, contentUserHint,
+                    mode, callingUid, requireContentUriPermissionFromCaller);
+        }
+
+        Uri data = intent.getData();
+        ClipData clip = intent.getClipData();
+        if (data == null && clip == null) {
+            return null;
+        }
+
         int targetUid;
         if (needed != null) {
             targetUid = needed.targetUid;
@@ -733,6 +742,37 @@
         }
     }
 
+    private void enforceRequireContentUriPermissionFromCallerOnIntentExtraStream(Intent intent,
+            int contentUserHint, int mode, int callingUid,
+            @RequiredContentUriPermission Integer requireContentUriPermissionFromCaller) {
+        try {
+            final Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM, Uri.class);
+            if (uri != null) {
+                final GrantUri grantUri = GrantUri.resolve(contentUserHint, uri, mode);
+                enforceRequireContentUriPermissionFromCaller(
+                        requireContentUriPermissionFromCaller, grantUri, callingUid);
+            }
+        } catch (BadParcelableException e) {
+            Slog.w(TAG, "Failed to unparcel an URI in EXTRA_STREAM, skipping"
+                    + " requireContentUriPermissionFromCaller: " + e);
+        }
+
+        try {
+            final ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM,
+                    Uri.class);
+            if (uris != null) {
+                for (int i = uris.size() - 1; i >= 0; i--) {
+                    final GrantUri grantUri = GrantUri.resolve(contentUserHint, uris.get(i), mode);
+                    enforceRequireContentUriPermissionFromCaller(
+                            requireContentUriPermissionFromCaller, grantUri, callingUid);
+                }
+            }
+        } catch (BadParcelableException e) {
+            Slog.w(TAG, "Failed to unparcel an ArrayList of URIs in EXTRA_STREAM, skipping"
+                    + " requireContentUriPermissionFromCaller: " + e);
+        }
+    }
+
     @GuardedBy("mLock")
     private void readGrantedUriPermissionsLocked() {
         if (DEBUG) Slog.v(TAG, "readGrantedUriPermissions()");
diff --git a/services/core/java/com/android/server/utils/EventLogger.java b/services/core/java/com/android/server/utils/EventLogger.java
index 4772bbf..2e1049b 100644
--- a/services/core/java/com/android/server/utils/EventLogger.java
+++ b/services/core/java/com/android/server/utils/EventLogger.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.util.Log;
+import android.util.Slog;
 
 import java.io.PrintWriter;
 import java.lang.annotation.Retention;
@@ -84,6 +85,17 @@
         enqueue(event.printLog(logType, tag));
     }
 
+    /**
+     * Add a string-based event to the system log, and print it to the log with a specific severity.
+     * @param msg the message to appear in the log
+     * @param logType the log severity (verbose/info/warning/error)
+     * @param tag the tag under which the log entry will appear
+     */
+    public synchronized void enqueueAndSlog(String msg, @Event.LogType int logType, String tag) {
+        final Event event = new StringEvent(msg);
+        enqueue(event.printSlog(logType, tag));
+    }
+
     /** Dumps events into the given {@link DumpSink}. */
     public synchronized void dump(DumpSink dumpSink) {
         dumpSink.sink(mTag, new ArrayList<>(mEvents));
@@ -138,7 +150,7 @@
         /**
          * Causes the string message for the event to appear in the logcat.
          * Here is an example of how to create a new event (a StringEvent), adding it to the logger
-         * (an instance of AudioEventLogger) while also making it show in the logcat:
+         * (an instance of EventLogger) while also making it show in the logcat:
          * <pre>
          *     myLogger.log(
          *         (new StringEvent("something for logcat and logger")).printLog(MyClass.TAG) );
@@ -167,9 +179,9 @@
 
         /**
          * Same as {@link #printLog(String)} with a log type
-         * @param type one of {@link #ALOGI}, {@link #ALOGE}, {@link #ALOGV}
-         * @param tag
-         * @return
+         * @param type one of {@link #ALOGI}, {@link #ALOGE}, {@link #ALOGV}, {@link #ALOGW}
+         * @param tag the tag the log entry will be printed under
+         * @return the event itself
          */
         public Event printLog(@LogType int type, String tag) {
             switch (type) {
@@ -191,6 +203,32 @@
         }
 
         /**
+         * Causes the string message for the event to appear in the system log.
+         * @param type one of {@link #ALOGI}, {@link #ALOGE}, {@link #ALOGV}, {@link #ALOGW}
+         * @param tag the tag the log entry will be printed under
+         * @return the event itself
+         * @see #printLog(int, String)
+         */
+        public Event printSlog(@LogType int type, String tag) {
+            switch (type) {
+                case ALOGI:
+                    Slog.i(tag, eventToString());
+                    break;
+                case ALOGE:
+                    Slog.e(tag, eventToString());
+                    break;
+                case ALOGW:
+                    Slog.w(tag, eventToString());
+                    break;
+                case ALOGV:
+                default:
+                    Slog.v(tag, eventToString());
+                    break;
+            }
+            return this;
+        }
+
+        /**
          * Convert event to String.
          * This method is only called when the logger history is about to the dumped,
          * so this method is where expensive String conversions should be made, not when the Event
diff --git a/services/core/java/com/android/server/vibrator/TEST_MAPPING b/services/core/java/com/android/server/vibrator/TEST_MAPPING
index 92b327d..c64941b 100644
--- a/services/core/java/com/android/server/vibrator/TEST_MAPPING
+++ b/services/core/java/com/android/server/vibrator/TEST_MAPPING
@@ -5,6 +5,9 @@
     },
     {
       "path": "cts/tests/vibrator"
+    },
+    {
+      "path": "frameworks/hardware/interfaces/vibrator/aidl"
     }
   ]
 }
diff --git a/services/core/java/com/android/server/wearable/RemoteWearableSensingService.java b/services/core/java/com/android/server/wearable/RemoteWearableSensingService.java
index 62a637e..3077fb8 100644
--- a/services/core/java/com/android/server/wearable/RemoteWearableSensingService.java
+++ b/services/core/java/com/android/server/wearable/RemoteWearableSensingService.java
@@ -257,6 +257,55 @@
                                         statusCallback));
     }
 
+    /**
+     * Request the wearable to start hotword recognition.
+     *
+     * @param wearableHotwordCallback The callback to send hotword audio data and format to.
+     * @param statusCallback The callback for service status.
+     */
+    public void startHotwordRecognition(
+            RemoteCallback wearableHotwordCallback, RemoteCallback statusCallback) {
+        if (DEBUG) {
+            Slog.i(TAG, "Starting to listen for hotword.");
+        }
+        var unused =
+                post(
+                        service ->
+                                service.startHotwordRecognition(
+                                        wearableHotwordCallback, statusCallback));
+    }
+
+    /**
+     * Request the wearable to stop hotword recognition.
+     *
+     * @param statusCallback The callback for service status.
+     */
+    public void stopHotwordRecognition(RemoteCallback statusCallback) {
+        if (DEBUG) {
+            Slog.i(TAG, "Stopping hotword recognition.");
+        }
+        var unused = post(service -> service.stopHotwordRecognition(statusCallback));
+    }
+
+    /**
+     * Signals to the {@link WearableSensingService} that hotword audio data is accepted by the
+     * {@link android.service.voice.HotwordDetectionService} as valid hotword.
+     */
+    public void onValidatedByHotwordDetectionService() {
+        if (DEBUG) {
+            Slog.i(TAG, "Requesting hotword audio data egress.");
+        }
+        var unused = post(service -> service.onValidatedByHotwordDetectionService());
+    }
+
+    /** Stops the active hotword audio stream from the wearable. */
+    public void stopActiveHotwordAudio() {
+        if (DEBUG) {
+            Slog.i(TAG, "Stopping hotword audio.");
+        }
+        var unused = post(service -> service.stopActiveHotwordAudio());
+    }
+
     private static class SecureWearableConnectionContext {
         final ParcelFileDescriptor mSecureWearableConnection;
         final RemoteCallback mStatusCallback;
diff --git a/services/core/java/com/android/server/wearable/WearableSensingManagerPerUserService.java b/services/core/java/com/android/server/wearable/WearableSensingManagerPerUserService.java
index 9ba4433..2b43203 100644
--- a/services/core/java/com/android/server/wearable/WearableSensingManagerPerUserService.java
+++ b/services/core/java/com/android/server/wearable/WearableSensingManagerPerUserService.java
@@ -16,6 +16,8 @@
 
 package com.android.server.wearable;
 
+import static android.service.wearable.WearableSensingService.HOTWORD_AUDIO_STREAM_BUNDLE_KEY;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -28,18 +30,23 @@
 import android.content.ComponentName;
 import android.content.pm.PackageManager;
 import android.content.pm.ServiceInfo;
+import android.os.Binder;
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.SharedMemory;
+import android.service.voice.HotwordAudioStream;
+import android.service.voice.VoiceInteractionManagerInternal;
+import android.service.voice.VoiceInteractionManagerInternal.WearableHotwordDetectionCallback;
 import android.system.OsConstants;
 import android.util.IndentingPrintWriter;
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.LocalServices;
 import com.android.server.infra.AbstractPerUserSystemService;
 
 import java.io.IOException;
@@ -58,6 +65,7 @@
     @VisibleForTesting
     RemoteWearableSensingService mRemoteService;
 
+    @Nullable private VoiceInteractionManagerInternal mVoiceInteractionManagerInternal;
     private ComponentName mComponentName;
     private final Object mSecureChannelLock = new Object();
 
@@ -99,6 +107,15 @@
         }
     }
 
+    @GuardedBy("mLock")
+    private boolean ensureVoiceInteractionManagerInternalInitiated() {
+        if (mVoiceInteractionManagerInternal == null) {
+            mVoiceInteractionManagerInternal =
+                    LocalServices.getService(VoiceInteractionManagerInternal.class);
+        }
+        return mVoiceInteractionManagerInternal != null;
+    }
+
     /**
      * get the currently bound component name.
      */
@@ -334,4 +351,109 @@
                     dataType, dataRequestObserverId, packageName, statusCallback);
         }
     }
+
+    /** Handles starting hotword listening. */
+    public void onStartHotwordRecognition(
+            ComponentName targetVisComponentName, RemoteCallback statusCallback) {
+        synchronized (mLock) {
+            if (!setUpServiceIfNeeded()) {
+                Slog.w(TAG, "Detection service is not available at this moment.");
+                notifyStatusCallback(
+                        statusCallback, WearableSensingManager.STATUS_SERVICE_UNAVAILABLE);
+                return;
+            }
+            if (!ensureVoiceInteractionManagerInternalInitiated()) {
+                Slog.w(TAG, "Voice interaction manager is not available at this moment.");
+                notifyStatusCallback(
+                        statusCallback, WearableSensingManager.STATUS_SERVICE_UNAVAILABLE);
+                return;
+            }
+            ensureRemoteServiceInitiated();
+            mRemoteService.startHotwordRecognition(
+                    createWearableHotwordCallback(targetVisComponentName), statusCallback);
+        }
+    }
+
+    /** Handles stopping hotword listening. */
+    public void onStopHotwordRecognition(RemoteCallback statusCallback) {
+        synchronized (mLock) {
+            if (!setUpServiceIfNeeded()) {
+                Slog.w(TAG, "Detection service is not available at this moment.");
+                notifyStatusCallback(
+                        statusCallback, WearableSensingManager.STATUS_SERVICE_UNAVAILABLE);
+                return;
+            }
+            ensureRemoteServiceInitiated();
+            mRemoteService.stopHotwordRecognition(statusCallback);
+        }
+    }
+
+    private void onValidatedByHotwordDetectionService() {
+        synchronized (mLock) {
+            if (!setUpServiceIfNeeded()) {
+                Slog.w(TAG, "Wearable sensing service is not available at this moment.");
+                return;
+            }
+            ensureRemoteServiceInitiated();
+            mRemoteService.onValidatedByHotwordDetectionService();
+        }
+    }
+
+    private void stopActiveHotwordAudio() {
+        synchronized (mLock) {
+            if (!setUpServiceIfNeeded()) {
+                Slog.w(TAG, "Wearable sensing service is not available at this moment.");
+                return;
+            }
+            ensureRemoteServiceInitiated();
+            mRemoteService.stopActiveHotwordAudio();
+        }
+    }
+
+    private RemoteCallback createWearableHotwordCallback(ComponentName targetVisComponentName) {
+        return new RemoteCallback(
+                result -> {
+                    HotwordAudioStream hotwordAudioStream =
+                            result.getParcelable(
+                                    HOTWORD_AUDIO_STREAM_BUNDLE_KEY, HotwordAudioStream.class);
+                    if (hotwordAudioStream == null) {
+                        Slog.w(TAG, "No hotword audio stream received, unable to process hotword.");
+                        return;
+                    }
+                    final long identity = Binder.clearCallingIdentity();
+                    try {
+                        mVoiceInteractionManagerInternal.startListeningFromWearable(
+                                hotwordAudioStream.getAudioStreamParcelFileDescriptor(),
+                                hotwordAudioStream.getAudioFormat(),
+                                hotwordAudioStream.getMetadata(),
+                                targetVisComponentName,
+                                getUserId(),
+                                createHotwordDetectionCallback());
+                    } finally {
+                        Binder.restoreCallingIdentity(identity);
+                    }
+                });
+    }
+
+    private WearableHotwordDetectionCallback createHotwordDetectionCallback() {
+        return new WearableHotwordDetectionCallback() {
+            @Override
+            public void onDetected() {
+                Slog.i(TAG, "hotwordDetectionCallback onDetected.");
+                onValidatedByHotwordDetectionService();
+            }
+
+            @Override
+            public void onRejected() {
+                Slog.i(TAG, "hotwordDetectionCallback onRejected.");
+                stopActiveHotwordAudio();
+            }
+
+            @Override
+            public void onError(String errorMessage) {
+                Slog.i(TAG, "hotwordDetectionCallback onError. ErrorMessage: " + errorMessage);
+                stopActiveHotwordAudio();
+            }
+        };
+    }
 }
diff --git a/services/core/java/com/android/server/wearable/WearableSensingManagerService.java b/services/core/java/com/android/server/wearable/WearableSensingManagerService.java
index 78952fa..00c3026 100644
--- a/services/core/java/com/android/server/wearable/WearableSensingManagerService.java
+++ b/services/core/java/com/android/server/wearable/WearableSensingManagerService.java
@@ -496,6 +496,42 @@
         }
 
         @Override
+        public void startHotwordRecognition(
+                ComponentName targetVisComponentName, RemoteCallback statusCallback) {
+            Slog.i(TAG, "WearableSensingManagerInternal startHotwordRecognition.");
+            Objects.requireNonNull(statusCallback);
+            mContext.enforceCallingOrSelfPermission(
+                    Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE, TAG);
+            if (!mIsServiceEnabled) {
+                Slog.w(TAG, "Service not available.");
+                WearableSensingManagerPerUserService.notifyStatusCallback(
+                        statusCallback, WearableSensingManager.STATUS_SERVICE_UNAVAILABLE);
+                return;
+            }
+            callPerUserServiceIfExist(
+                    service ->
+                            service.onStartHotwordRecognition(
+                                    targetVisComponentName, statusCallback),
+                    statusCallback);
+        }
+
+        @Override
+        public void stopHotwordRecognition(RemoteCallback statusCallback) {
+            Slog.i(TAG, "WearableSensingManagerInternal stopHotwordRecognition.");
+            Objects.requireNonNull(statusCallback);
+            mContext.enforceCallingOrSelfPermission(
+                    Manifest.permission.MANAGE_WEARABLE_SENSING_SERVICE, TAG);
+            if (!mIsServiceEnabled) {
+                Slog.w(TAG, "Service not available.");
+                WearableSensingManagerPerUserService.notifyStatusCallback(
+                        statusCallback, WearableSensingManager.STATUS_SERVICE_UNAVAILABLE);
+                return;
+            }
+            callPerUserServiceIfExist(
+                    service -> service.onStopHotwordRecognition(statusCallback), statusCallback);
+        }
+
+        @Override
         public void onShellCommand(FileDescriptor in, FileDescriptor out, FileDescriptor err,
                 String[] args, ShellCallback callback, ResultReceiver resultReceiver) {
             new WearableSensingShellCommand(WearableSensingManagerService.this).exec(
diff --git a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
index f4fb1a1..1bc635b 100644
--- a/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
+++ b/services/core/java/com/android/server/webkit/WebViewUpdateServiceImpl2.java
@@ -17,6 +17,7 @@
 
 import android.annotation.Nullable;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.Signature;
@@ -31,8 +32,12 @@
 import android.webkit.WebViewProviderInfo;
 import android.webkit.WebViewProviderResponse;
 
+import com.android.server.LocalServices;
+import com.android.server.PinnerService;
+
 import java.io.PrintWriter;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 /**
@@ -83,6 +88,8 @@
     private static final int VALIDITY_INCORRECT_SIGNATURE = 3;
     private static final int VALIDITY_NO_LIBRARY_FLAG = 4;
 
+    private static final String PIN_GROUP = "webview";
+
     private final SystemInterface mSystemInterface;
     private final Context mContext;
 
@@ -349,6 +356,39 @@
         return newPackage;
     }
 
+    private void pinWebviewIfRequired(ApplicationInfo appInfo) {
+        PinnerService pinnerService = LocalServices.getService(PinnerService.class);
+        if (pinnerService == null) {
+            // This happens in unit tests which do not have services.
+            return;
+        }
+        int webviewPinQuota = pinnerService.getWebviewPinQuota();
+        if (webviewPinQuota <= 0) {
+            return;
+        }
+
+        pinnerService.unpinGroup(PIN_GROUP);
+
+        ArrayList<String> apksToPin = new ArrayList<>();
+        boolean pinSharedFirst = appInfo.metaData.getBoolean("PIN_SHARED_LIBS_FIRST", true);
+        for (String sharedLib : appInfo.sharedLibraryFiles) {
+            apksToPin.add(sharedLib);
+        }
+        apksToPin.add(appInfo.sourceDir);
+        if (!pinSharedFirst) {
+            // We want to prioritize pinning of the native library that is most likely used by apps
+            // which in some build flavors live in the main apk and as a shared library for others.
+            Collections.reverse(apksToPin);
+        }
+        for (String apk : apksToPin) {
+            if (webviewPinQuota <= 0) {
+                break;
+            }
+            int bytesPinned = pinnerService.pinFile(apk, webviewPinQuota, appInfo, PIN_GROUP);
+            webviewPinQuota -= bytesPinned;
+        }
+    }
+
     /**
      * This is called when we change WebView provider, either when the current provider is
      * updated or a new provider is chosen / takes precedence.
@@ -357,6 +397,7 @@
         synchronized (mLock) {
             mAnyWebViewInstalled = true;
             if (mNumRelroCreationsStarted == mNumRelroCreationsFinished) {
+                pinWebviewIfRequired(newPackage.applicationInfo);
                 mCurrentWebViewPackage = newPackage;
 
                 // The relro creations might 'finish' (not start at all) before
diff --git a/services/core/java/com/android/server/wm/ActivityCallerState.java b/services/core/java/com/android/server/wm/ActivityCallerState.java
index 4416605..e797290 100644
--- a/services/core/java/com/android/server/wm/ActivityCallerState.java
+++ b/services/core/java/com/android/server/wm/ActivityCallerState.java
@@ -16,6 +16,8 @@
 
 package com.android.server.wm;
 
+import static android.os.Process.INVALID_UID;
+
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
 
@@ -51,6 +53,9 @@
     private static final String TAG = TAG_WITH_CLASS_NAME ? "ActivityCallerState" : TAG_ATM;
 
     // XML tags for CallerInfo
+    private static final String ATTR_CALLER_UID = "caller_uid";
+    private static final String ATTR_CALLER_PACKAGE = "caller_package";
+    private static final String ATTR_CALLER_IS_SHARE_ENABLED = "caller_is_share_enabled";
     private static final String TAG_READABLE_CONTENT_URI = "readable_content_uri";
     private static final String TAG_WRITABLE_CONTENT_URI = "writable_content_uri";
     private static final String TAG_INACCESSIBLE_CONTENT_URI = "inaccessible_content_uri";
@@ -71,12 +76,33 @@
         return mCallerTokenInfoMap.getOrDefault(callerToken, null);
     }
 
+    boolean hasCaller(IBinder callerToken) {
+        return getCallerInfoOrNull(callerToken) != null;
+    }
+
+    int getUid(IBinder callerToken) {
+        CallerInfo callerInfo = getCallerInfoOrNull(callerToken);
+        return callerInfo != null ? callerInfo.mUid : INVALID_UID;
+    }
+
+    String getPackage(IBinder callerToken) {
+        CallerInfo callerInfo = getCallerInfoOrNull(callerToken);
+        return callerInfo != null ? callerInfo.mPackageName : null;
+    }
+
+    boolean isShareIdentityEnabled(IBinder callerToken) {
+        CallerInfo callerInfo = getCallerInfoOrNull(callerToken);
+        return callerInfo != null ? callerInfo.mIsShareIdentityEnabled : false;
+    }
+
     void add(IBinder callerToken, CallerInfo callerInfo) {
         mCallerTokenInfoMap.put(callerToken, callerInfo);
     }
 
-    void computeCallerInfo(IBinder callerToken, Intent intent, int callerUid) {
-        final CallerInfo callerInfo = new CallerInfo();
+    void computeCallerInfo(IBinder callerToken, Intent intent, int callerUid,
+            String callerPackageName, boolean isCallerShareIdentityEnabled) {
+        final CallerInfo callerInfo = new CallerInfo(callerUid, callerPackageName,
+                isCallerShareIdentityEnabled);
         mCallerTokenInfoMap.put(callerToken, callerInfo);
 
         final ArraySet<Uri> contentUris = getContentUrisFromIntent(intent);
@@ -180,12 +206,26 @@
     }
 
     public static final class CallerInfo {
+        final int mUid;
+        final String mPackageName;
+        final boolean mIsShareIdentityEnabled;
         final ArraySet<GrantUri> mReadableContentUris = new ArraySet<>();
         final ArraySet<GrantUri> mWritableContentUris = new ArraySet<>();
         final ArraySet<GrantUri> mInaccessibleContentUris = new ArraySet<>();
 
+        CallerInfo(int uid, String packageName, boolean isShareIdentityEnabled) {
+            mUid = uid;
+            mPackageName = packageName;
+            mIsShareIdentityEnabled = isShareIdentityEnabled;
+        }
+
         public void saveToXml(TypedXmlSerializer out)
                 throws IOException, XmlPullParserException {
+            out.attributeInt(null, ATTR_CALLER_UID, mUid);
+            if (mPackageName != null) {
+                out.attribute(null, ATTR_CALLER_PACKAGE, mPackageName);
+            }
+            out.attributeBoolean(null, ATTR_CALLER_IS_SHARE_ENABLED, mIsShareIdentityEnabled);
             for (int i = mReadableContentUris.size() - 1; i >= 0; i--) {
                 saveGrantUriToXml(out, mReadableContentUris.valueAt(i), TAG_READABLE_CONTENT_URI);
             }
@@ -202,7 +242,12 @@
 
         public static CallerInfo restoreFromXml(TypedXmlPullParser in)
                 throws IOException, XmlPullParserException {
-            CallerInfo callerInfo = new CallerInfo();
+            int uid = in.getAttributeInt(null, ATTR_CALLER_UID, 0);
+            String packageName = in.getAttributeValue(null, ATTR_CALLER_PACKAGE);
+            boolean isShareIdentityEnabled = in.getAttributeBoolean(null,
+                    ATTR_CALLER_IS_SHARE_ENABLED, false);
+
+            CallerInfo callerInfo = new CallerInfo(uid, packageName, isShareIdentityEnabled);
             final int outerDepth = in.getDepth();
             int event;
             while (((event = in.next()) != END_DOCUMENT)
diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java
index 173e139..ed5df5f 100644
--- a/services/core/java/com/android/server/wm/ActivityClientController.java
+++ b/services/core/java/com/android/server/wm/ActivityClientController.java
@@ -695,30 +695,57 @@
 
     @Override
     public int getLaunchedFromUid(IBinder token) {
+        return getUid(token, /* callerToken */ null, /* isActivityCallerCall */ false);
+    }
+
+    @Override
+    public String getLaunchedFromPackage(IBinder token) {
+        return getPackage(token, /* callerToken */ null, /* isActivityCallerCall */ false);
+    }
+
+    @Override
+    public int getActivityCallerUid(IBinder activityToken, IBinder callerToken) {
+        return getUid(activityToken, callerToken, /* isActivityCallerCall */ true);
+    }
+
+    @Override
+    public String getActivityCallerPackage(IBinder activityToken, IBinder callerToken) {
+        return getPackage(activityToken, callerToken, /* isActivityCallerCall */ true);
+    }
+
+    private int getUid(IBinder activityToken, IBinder callerToken, boolean isActivityCallerCall) {
         final int uid = Binder.getCallingUid();
         final boolean isInternalCaller = isInternalCallerGetLaunchedFrom(uid);
         synchronized (mGlobalLock) {
-            final ActivityRecord r = ActivityRecord.forTokenLocked(token);
-            if (r != null && (isInternalCaller || canGetLaunchedFromLocked(uid, r))) {
-                return r.launchedFromUid;
+            final ActivityRecord r = ActivityRecord.forTokenLocked(activityToken);
+            if (r != null && (isInternalCaller || canGetLaunchedFromLocked(uid, r, callerToken,
+                    isActivityCallerCall)) && isValidCaller(r, callerToken, isActivityCallerCall)) {
+                return isActivityCallerCall ? r.getCallerUid(callerToken) : r.launchedFromUid;
             }
         }
         return INVALID_UID;
     }
 
-    @Override
-    public String getLaunchedFromPackage(IBinder token) {
+    private String getPackage(IBinder activityToken, IBinder callerToken,
+            boolean isActivityCallerCall) {
         final int uid = Binder.getCallingUid();
         final boolean isInternalCaller = isInternalCallerGetLaunchedFrom(uid);
         synchronized (mGlobalLock) {
-            final ActivityRecord r = ActivityRecord.forTokenLocked(token);
-            if (r != null && (isInternalCaller || canGetLaunchedFromLocked(uid, r))) {
-                return r.launchedFromPackage;
+            final ActivityRecord r = ActivityRecord.forTokenLocked(activityToken);
+            if (r != null && (isInternalCaller || canGetLaunchedFromLocked(uid, r, callerToken,
+                    isActivityCallerCall)) && isValidCaller(r, callerToken, isActivityCallerCall)) {
+                return isActivityCallerCall
+                        ? r.getCallerPackage(callerToken) : r.launchedFromPackage;
             }
         }
         return null;
     }
 
+    private boolean isValidCaller(ActivityRecord r, IBinder callerToken,
+            boolean isActivityCallerCall) {
+        return isActivityCallerCall ? r.hasCaller(callerToken) : callerToken == null;
+    }
+
     /**
      * @param uri This uri must NOT contain an embedded userId.
      * @param userId The userId in which the uri is to be resolved.
@@ -768,9 +795,13 @@
      * verifying whether the provided {@code ActivityRecord r} has opted in to sharing its
      * identity or if the uid of the activity matches that of the launching app.
      */
-    private static boolean canGetLaunchedFromLocked(int uid, ActivityRecord r) {
+    private static boolean canGetLaunchedFromLocked(int uid, ActivityRecord r,
+            IBinder callerToken, boolean isActivityCallerCall) {
         if (CompatChanges.isChangeEnabled(ACCESS_SHARED_IDENTITY, uid)) {
-            return r.mShareIdentity || r.launchedFromUid == uid;
+            boolean isShareIdentityEnabled = isActivityCallerCall
+                    ? r.isCallerShareIdentityEnabled(callerToken) : r.mShareIdentity;
+            int callerUid = isActivityCallerCall ? r.getCallerUid(callerToken) : r.launchedFromUid;
+            return isShareIdentityEnabled || callerUid == uid;
         }
         return false;
     }
@@ -1066,12 +1097,8 @@
     /**
      * Alert the client that the Picture-in-Picture state has changed.
      */
-    void onPictureInPictureStateChanged(@NonNull ActivityRecord r,
+    void onPictureInPictureUiStateChanged(@NonNull ActivityRecord r,
             PictureInPictureUiState pipState) {
-        if (!r.inPinnedWindowingMode()) {
-            throw new IllegalStateException("Activity is not in PIP mode");
-        }
-
         try {
             mService.getLifecycleManager().scheduleTransactionItem(r.app.getThread(),
                     PipStateTransactionItem.obtain(r.token, pipState));
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 09c329b..b3a8b78 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -2024,12 +2024,31 @@
         }
     }
 
-    void computeInitialCallerInfo() {
-        computeCallerInfo(initialCallerInfoAccessToken, intent, launchedFromUid);
+    boolean hasCaller(IBinder callerToken) {
+        return mCallerState.hasCaller(callerToken);
     }
 
-    void computeCallerInfo(IBinder callerToken, Intent intent, int callerUid) {
-        mCallerState.computeCallerInfo(callerToken, intent, callerUid);
+    int getCallerUid(IBinder callerToken) {
+        return mCallerState.getUid(callerToken);
+    }
+
+    String getCallerPackage(IBinder callerToken) {
+        return mCallerState.getPackage(callerToken);
+    }
+
+    boolean isCallerShareIdentityEnabled(IBinder callerToken) {
+        return mCallerState.isShareIdentityEnabled(callerToken);
+    }
+
+    void computeInitialCallerInfo() {
+        computeCallerInfo(initialCallerInfoAccessToken, intent, launchedFromUid,
+                launchedFromPackage, mShareIdentity);
+    }
+
+    void computeCallerInfo(IBinder callerToken, Intent intent, int callerUid,
+            String callerPackageName, boolean isCallerShareIdentityEnabled) {
+        mCallerState.computeCallerInfo(callerToken, intent, callerUid, callerPackageName,
+                isCallerShareIdentityEnabled);
     }
 
     boolean checkContentUriPermission(IBinder callerToken, GrantUri grantUri, int modeFlags) {
@@ -4960,11 +4979,16 @@
      * method will be called at the proper time.
      */
     final void deliverNewIntentLocked(int callingUid, Intent intent, NeededUriGrants intentGrants,
-            String referrer) {
+            String referrer, boolean isShareIdentityEnabled) {
+        IBinder callerToken = new Binder();
+        if (android.security.Flags.contentUriPermissionApis()) {
+            computeCallerInfo(callerToken, intent, callingUid, referrer, isShareIdentityEnabled);
+        }
         // The activity now gets access to the data associated with this Intent.
         mAtmService.mUgmInternal.grantUriPermissionUncheckedFromIntent(intentGrants,
                 getUriPermissionsLocked());
-        final ReferrerIntent rintent = new ReferrerIntent(intent, getFilteredReferrer(referrer));
+        final ReferrerIntent rintent = new ReferrerIntent(intent, getFilteredReferrer(referrer),
+                callerToken);
         boolean unsent = true;
         final boolean isTopActivityWhileSleeping = isTopRunningActivity() && isSleeping();
 
diff --git a/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java b/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
index db27f60..01d077a 100644
--- a/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
+++ b/services/core/java/com/android/server/wm/ActivitySecurityModelFeatureFlags.java
@@ -22,12 +22,10 @@
 
 import android.annotation.NonNull;
 import android.app.compat.CompatChanges;
-import android.content.pm.PackageManager;
 import android.provider.DeviceConfig;
 
 import com.android.internal.annotations.GuardedBy;
 
-import java.util.HashSet;
 import java.util.concurrent.Executor;
 
 /**
@@ -50,74 +48,49 @@
     private static final String KEY_ASM_RESTRICTIONS_ENABLED = KEY_ASM_PREFIX
             + "asm_restrictions_enabled";
     private static final String KEY_ASM_TOASTS_ENABLED = KEY_ASM_PREFIX + "asm_toasts_enabled";
-    private static final String KEY_ASM_EXEMPTED_PACKAGES = KEY_ASM_PREFIX
-            + "asm_exempted_packages";
+
     private static final int VALUE_DISABLE = 0;
     private static final int VALUE_ENABLE_FOR_V = 1;
     private static final int VALUE_ENABLE_FOR_ALL = 2;
 
     private static final int DEFAULT_VALUE = VALUE_DISABLE;
-    private static final String DEFAULT_EXCEPTION_LIST = "";
 
     private static int sAsmToastsEnabled;
     private static int sAsmRestrictionsEnabled;
-    private static final HashSet<String> sExcludedPackageNames = new HashSet<>();
-    private static PackageManager sPm;
 
     @GuardedBy("ActivityTaskManagerService.mGlobalLock")
-    static void initialize(@NonNull Executor executor, @NonNull PackageManager pm) {
+    static void initialize(@NonNull Executor executor) {
         updateFromDeviceConfig();
         DeviceConfig.addOnPropertiesChangedListener(NAMESPACE, executor,
                 properties -> updateFromDeviceConfig());
-        sPm = pm;
     }
 
     @GuardedBy("ActivityTaskManagerService.mGlobalLock")
     static boolean shouldShowToast(int uid) {
-        return flagEnabledForUid(sAsmToastsEnabled, uid);
+        return sAsmToastsEnabled == VALUE_ENABLE_FOR_ALL
+                || (sAsmToastsEnabled == VALUE_ENABLE_FOR_V
+                        && CompatChanges.isChangeEnabled(ASM_RESTRICTIONS, uid));
     }
 
     @GuardedBy("ActivityTaskManagerService.mGlobalLock")
     static boolean shouldRestrictActivitySwitch(int uid) {
-        return flagEnabledForUid(sAsmRestrictionsEnabled, uid);
-    }
-
-    private static boolean flagEnabledForUid(int flag, int uid) {
-        boolean flagEnabled = flag == VALUE_ENABLE_FOR_ALL
-                || (flag == VALUE_ENABLE_FOR_V
-                    && CompatChanges.isChangeEnabled(ASM_RESTRICTIONS, uid));
-
-        if (flagEnabled) {
-            String[] packageNames = sPm.getPackagesForUid(uid);
-            if (packageNames == null) {
-                return true;
-            }
-            for (int i = 0; i < packageNames.length; i++) {
-                if (sExcludedPackageNames.contains(packageNames[i])) {
-                    return false;
-                }
-            }
-            return true;
+        if (android.security.Flags.asmRestrictionsEnabled()) {
+            return CompatChanges.isChangeEnabled(ASM_RESTRICTIONS, uid)
+                    || asmRestrictionsEnabledForAll();
         }
 
         return false;
     }
 
+    @GuardedBy("ActivityTaskManagerService.mGlobalLock")
+    static boolean asmRestrictionsEnabledForAll() {
+        return sAsmRestrictionsEnabled == VALUE_ENABLE_FOR_ALL;
+    }
+
     private static void updateFromDeviceConfig() {
         sAsmToastsEnabled = DeviceConfig.getInt(NAMESPACE, KEY_ASM_TOASTS_ENABLED,
                 DEFAULT_VALUE);
         sAsmRestrictionsEnabled = DeviceConfig.getInt(NAMESPACE, KEY_ASM_RESTRICTIONS_ENABLED,
                 DEFAULT_VALUE);
-
-        String rawExceptionList = DeviceConfig.getString(NAMESPACE,
-                KEY_ASM_EXEMPTED_PACKAGES, DEFAULT_EXCEPTION_LIST);
-        sExcludedPackageNames.clear();
-        String[] packages = rawExceptionList.split(",");
-        for (String packageName : packages) {
-            String packageNameTrimmed = packageName.trim();
-            if (!packageNameTrimmed.isEmpty()) {
-                sExcludedPackageNames.add(packageNameTrimmed);
-            }
-        }
     }
 }
diff --git a/services/core/java/com/android/server/wm/ActivitySnapshotCache.java b/services/core/java/com/android/server/wm/ActivitySnapshotCache.java
index a54dd82..3609837 100644
--- a/services/core/java/com/android/server/wm/ActivitySnapshotCache.java
+++ b/services/core/java/com/android/server/wm/ActivitySnapshotCache.java
@@ -23,18 +23,20 @@
  */
 class ActivitySnapshotCache extends SnapshotCache<ActivityRecord> {
 
-    ActivitySnapshotCache(WindowManagerService service) {
-        super(service, "Activity");
+    ActivitySnapshotCache() {
+        super("Activity");
     }
 
     @Override
     void putSnapshot(ActivityRecord ar, TaskSnapshot snapshot) {
         final int hasCode = System.identityHashCode(ar);
-        final CacheEntry entry = mRunningCache.get(hasCode);
-        if (entry != null) {
-            mAppIdMap.remove(entry.topApp);
+        synchronized (mLock) {
+            final CacheEntry entry = mRunningCache.get(hasCode);
+            if (entry != null) {
+                mAppIdMap.remove(entry.topApp);
+            }
+            mAppIdMap.put(ar, hasCode);
+            mRunningCache.put(hasCode, new CacheEntry(snapshot, ar));
         }
-        mAppIdMap.put(ar, hasCode);
-        mRunningCache.put(hasCode, new CacheEntry(snapshot, ar));
     }
 }
diff --git a/services/core/java/com/android/server/wm/ActivitySnapshotController.java b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
index 1f013b9..f83003d 100644
--- a/services/core/java/com/android/server/wm/ActivitySnapshotController.java
+++ b/services/core/java/com/android/server/wm/ActivitySnapshotController.java
@@ -102,7 +102,7 @@
                 Environment::getDataSystemCeDirectory);
         mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider);
         mSnapshotLoader = new AppSnapshotLoader(mPersistInfoProvider);
-        initialize(new ActivitySnapshotCache(service));
+        initialize(new ActivitySnapshotCache());
 
         final boolean snapshotEnabled =
                 !service.mContext
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 07afa5f..65d01efc 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -2909,7 +2909,7 @@
 
         activity.logStartActivity(EventLogTags.WM_NEW_INTENT, activity.getTask());
         activity.deliverNewIntentLocked(mCallingUid, mStartActivity.intent, intentGrants,
-                mStartActivity.launchedFromPackage);
+                mStartActivity.launchedFromPackage, mStartActivity.mShareIdentity);
         mIntentDelivered = true;
     }
 
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 640c9dc..445295a 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -881,7 +881,7 @@
             mTaskSupervisor.onSystemReady();
             mActivityClientController.onSystemReady();
             // TODO(b/258792202) Cleanup once ASM is ready to launch
-            ActivitySecurityModelFeatureFlags.initialize(mContext.getMainExecutor(), pm);
+            ActivitySecurityModelFeatureFlags.initialize(mContext.getMainExecutor());
             mGrammaticalManagerInternal = LocalServices.getService(
                     GrammaticalInflectionManagerInternal.class);
         }
@@ -3522,10 +3522,15 @@
             if (displayContent == null) {
                 return false;
             }
-            hasRestrictedWindow = displayContent.forAllWindows(windowState -> {
-                return windowState.isOnScreen() && UserManager.isUserTypePrivateProfile(
-                        getUserManager().getProfileType(windowState.mShowUserId));
-            }, true /* traverseTopToBottom */);
+            final long callingIdentity = Binder.clearCallingIdentity();
+            try {
+                hasRestrictedWindow = displayContent.forAllWindows(windowState -> {
+                    return windowState.isOnScreen() && UserManager.isUserTypePrivateProfile(
+                            getUserManager().getProfileType(windowState.mShowUserId));
+                }, true /* traverseTopToBottom */);
+            } finally {
+                Binder.restoreCallingIdentity(callingIdentity);
+            }
         }
         return DevicePolicyCache.getInstance().isScreenCaptureAllowed(userId)
                 && !hasRestrictedWindow;
@@ -4148,13 +4153,20 @@
     }
 
     @Override
-    public void onPictureInPictureStateChanged(PictureInPictureUiState pipState) {
-        enforceTaskPermission("onPictureInPictureStateChanged");
-        final Task rootPinnedTask = mRootWindowContainer.getDefaultTaskDisplayArea()
-                .getRootPinnedTask();
-        if (rootPinnedTask != null && rootPinnedTask.getTopMostActivity() != null) {
-            mWindowManager.mAtmService.mActivityClientController.onPictureInPictureStateChanged(
-                    rootPinnedTask.getTopMostActivity(), pipState);
+    public void onPictureInPictureUiStateChanged(PictureInPictureUiState pipState) {
+        enforceTaskPermission("onPictureInPictureUiStateChanged");
+        // The PictureInPictureUiState is sent to current pip task if there is any
+        // -or- the top standard task (state like entering PiP does not require a pinned task).
+        final Task task;
+        if (mRootWindowContainer.getDefaultTaskDisplayArea().hasPinnedTask()) {
+            task = mRootWindowContainer.getDefaultTaskDisplayArea().getRootPinnedTask();
+        } else {
+            task = mRootWindowContainer.getDefaultTaskDisplayArea().getRootTask(
+                    t -> t.isActivityTypeStandard());
+        }
+        if (task != null && task.getTopMostActivity() != null) {
+            mWindowManager.mAtmService.mActivityClientController.onPictureInPictureUiStateChanged(
+                    task.getTopMostActivity(), pipState);
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
index 688a3b5..3bc5319 100644
--- a/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
+++ b/services/core/java/com/android/server/wm/BackgroundActivityStartController.java
@@ -56,6 +56,7 @@
 import android.compat.annotation.EnabledAfter;
 import android.content.ComponentName;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.os.Process;
 import android.os.SystemClock;
@@ -67,6 +68,7 @@
 import android.widget.Toast;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.Preconditions;
 import com.android.server.UiThread;
@@ -221,7 +223,7 @@
         return activity != null && packageName.equals(activity.getPackageName());
     }
 
-    private class BalState {
+    @VisibleForTesting class BalState {
 
         private final String mCallingPackage;
         private final int mCallingUid;
@@ -381,7 +383,7 @@
             if (uid == 0) {
                 return "root[debugOnly]";
             }
-            String name = mService.mContext.getPackageManager().getNameForUid(uid);
+            String name = mService.getPackageManagerInternalLocked().getNameForUid(uid);
             if (name == null) {
                 name = "uid=" + uid;
             }
@@ -528,6 +530,9 @@
         static final BalVerdict BLOCK = new BalVerdict(BAL_BLOCK, false, "Blocked");
         static final BalVerdict ALLOW_BY_DEFAULT =
                 new BalVerdict(BAL_ALLOW_DEFAULT, false, "Default");
+        // Careful using this - it will bypass all ASM checks.
+        static final BalVerdict ALLOW_PRIVILEGED =
+                new BalVerdict(BAL_ALLOW_ALLOWLISTED_UID, false, "PRIVILEGED");
         private final @BalCode int mCode;
         private final boolean mBackground;
         private final String mMessage;
@@ -912,8 +917,10 @@
 
         // Normal apps with visible app window will be allowed to start activity if app switching
         // is allowed, or apps like live wallpaper with non app visible window will be allowed.
+        // The home app can start apps even if app switches are usually disallowed.
         final boolean appSwitchAllowedOrFg = state.mAppSwitchState == APP_SWITCH_ALLOW
-                || state.mAppSwitchState == APP_SWITCH_FG_ONLY;
+                || state.mAppSwitchState == APP_SWITCH_FG_ONLY
+                || isHomeApp(state.mRealCallingUid, state.mRealCallingPackage);
         if (balImproveRealCallerVisibilityCheck()) {
             if (appSwitchAllowedOrFg && state.mRealCallingUidHasAnyVisibleWindow) {
                 return new BalVerdict(BAL_ALLOW_VISIBLE_WINDOW,
@@ -1195,7 +1202,7 @@
         }
     }
 
-    private void showToast(String toastText) {
+    @VisibleForTesting void showToast(String toastText) {
         UiThread.getHandler().post(() -> Toast.makeText(mService.mContext,
                 toastText, Toast.LENGTH_LONG).show());
     }
@@ -1231,7 +1238,8 @@
         boolean shouldBlockActivityStart = ActivitySecurityModelFeatureFlags
                 .shouldRestrictActivitySwitch(callingUid);
         int[] finishCount = new int[0];
-        if (shouldBlockActivityStart) {
+        if (shouldBlockActivityStart
+                && blockCrossUidActivitySwitchFromBelowForActivity(targetTaskTop)) {
             ActivityRecord activity = targetTask.getActivity(isLaunchingOrLaunched);
             if (activity == null) {
                 // mStartActivity is not in task, so clear everything
@@ -1316,7 +1324,7 @@
 
         boolean restrictActivitySwitch = ActivitySecurityModelFeatureFlags
                 .shouldRestrictActivitySwitch(callingUid)
-                && bas.mBlockActivityStartIfFlagEnabled;
+                        && bas.mBlockActivityStartIfFlagEnabled;
 
         PackageManager pm = mService.mContext.getPackageManager();
         String callingPackage = pm.getNameForUid(callingUid);
@@ -1370,19 +1378,19 @@
             int uid, @Nullable ActivityRecord sourceRecord) {
         // If the source is visible, consider it 'top'.
         if (sourceRecord != null && sourceRecord.isVisibleRequested()) {
-            return new BlockActivityStart(false, false);
+            return BlockActivityStart.ACTIVITY_START_ALLOWED;
         }
 
         // Always allow actual top activity to clear task
         ActivityRecord topActivity = task.getTopMostActivity();
         if (topActivity != null && topActivity.isUid(uid)) {
-            return new BlockActivityStart(false, false);
+            return BlockActivityStart.ACTIVITY_START_ALLOWED;
         }
 
         // If UID is visible in target task, allow launch
         if (task.forAllActivities((Predicate<ActivityRecord>)
                 ar -> ar.isUid(uid) && ar.isVisibleRequested())) {
-            return new BlockActivityStart(false, false);
+            return BlockActivityStart.ACTIVITY_START_ALLOWED;
         }
 
         // Consider the source activity, whether or not it is finishing. Do not consider any other
@@ -1449,12 +1457,11 @@
     private BlockActivityStart blockCrossUidActivitySwitchFromBelow(ActivityRecord ar,
             int sourceUid) {
         if (ar.isUid(sourceUid)) {
-            return new BlockActivityStart(false, false);
+            return BlockActivityStart.ACTIVITY_START_ALLOWED;
         }
 
-        // If mAllowCrossUidActivitySwitchFromBelow is set, honor it.
-        if (ar.mAllowCrossUidActivitySwitchFromBelow) {
-            return new BlockActivityStart(false, false);
+        if (!blockCrossUidActivitySwitchFromBelowForActivity(ar)) {
+            return BlockActivityStart.ACTIVITY_START_ALLOWED;
         }
 
         // At this point, we would block if the feature is launched and both apps were V+
@@ -1465,8 +1472,11 @@
                 ActivitySecurityModelFeatureFlags.shouldRestrictActivitySwitch(ar.getUid())
                         && ActivitySecurityModelFeatureFlags
                         .shouldRestrictActivitySwitch(sourceUid);
-        return new BackgroundActivityStartController
-                .BlockActivityStart(restrictActivitySwitch, true);
+        if (restrictActivitySwitch) {
+            return BlockActivityStart.BLOCK;
+        } else {
+            return BlockActivityStart.LOG_ONLY;
+        }
     }
 
     /**
@@ -1609,7 +1619,7 @@
         return finalVerdict;
     }
 
-    private static void writeBalAllowedLog(String activityName, int code, BalState state) {
+    @VisibleForTesting void writeBalAllowedLog(String activityName, int code, BalState state) {
         FrameworkStatsLog.write(FrameworkStatsLog.BAL_ALLOWED,
                 activityName,
                 code,
@@ -1672,14 +1682,52 @@
         }
     }
 
-    static class BlockActivityStart {
+    /**
+     * Activity level allowCrossUidActivitySwitchFromBelow defaults to false.
+     * Package level defaults to true.
+     * We block the launch if dev has explicitly set package level to false, and activity level has
+     * not opted out
+     */
+    private boolean blockCrossUidActivitySwitchFromBelowForActivity(@NonNull ActivityRecord ar) {
+        // We don't need to check package level if activity has opted out.
+        if (ar.mAllowCrossUidActivitySwitchFromBelow) {
+            return false;
+        }
+
+        if (ActivitySecurityModelFeatureFlags.asmRestrictionsEnabledForAll()) {
+            return true;
+        }
+
+        String packageName = ar.packageName;
+        if (packageName == null) {
+            return false;
+        }
+
+        PackageManager pm = mService.mContext.getPackageManager();
+        ApplicationInfo applicationInfo;
+
+        try {
+            applicationInfo = pm.getApplicationInfo(packageName, 0);
+        } catch (PackageManager.NameNotFoundException e) {
+            Slog.wtf(TAG, "Package name: " + packageName + " not found.");
+            return false;
+        }
+
+        return !applicationInfo.allowCrossUidActivitySwitchFromBelow;
+    }
+
+    private static class BlockActivityStart {
+        private static final BlockActivityStart ACTIVITY_START_ALLOWED =
+                new BlockActivityStart(false, false);
+        private static final BlockActivityStart LOG_ONLY = new BlockActivityStart(false, true);
+        private static final BlockActivityStart BLOCK = new BlockActivityStart(true, true);
         // We should block if feature flag is enabled
         private final boolean mBlockActivityStartIfFlagEnabled;
         // Used for logging/toasts. Would we block if target sdk was V and feature was
         // enabled?
         private final boolean mWouldBlockActivityStartIgnoringFlag;
 
-        BlockActivityStart(boolean shouldBlockActivityStart,
+        private BlockActivityStart(boolean shouldBlockActivityStart,
                 boolean wouldBlockActivityStartIgnoringFlags) {
             this.mBlockActivityStartIfFlagEnabled = shouldBlockActivityStart;
             this.mWouldBlockActivityStartIgnoringFlag = wouldBlockActivityStartIgnoringFlags;
diff --git a/services/core/java/com/android/server/wm/EmbeddedWindowController.java b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
index e6ef90b..68bff43 100644
--- a/services/core/java/com/android/server/wm/EmbeddedWindowController.java
+++ b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
@@ -17,6 +17,7 @@
 package com.android.server.wm;
 
 
+import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_EMBEDDED_WINDOWS;
 import static com.android.server.wm.IdentifierProto.HASH_CODE;
 import static com.android.server.wm.IdentifierProto.TITLE;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
@@ -34,6 +35,9 @@
 import android.view.InputChannel;
 import android.window.InputTransferToken;
 
+import com.android.internal.protolog.common.ProtoLog;
+import com.android.server.input.InputManagerService;
+
 /**
  * Keeps track of embedded windows.
  *
@@ -52,9 +56,13 @@
     private final Object mGlobalLock;
     private final ActivityTaskManagerService mAtmService;
 
-    EmbeddedWindowController(ActivityTaskManagerService atmService) {
+    private final InputManagerService mInputManagerService;
+
+    EmbeddedWindowController(ActivityTaskManagerService atmService,
+            InputManagerService inputManagerService) {
         mAtmService = atmService;
         mGlobalLock = atmService.getGlobalLock();
+        mInputManagerService = inputManagerService;
     }
 
     /**
@@ -135,6 +143,60 @@
         return mWindowsByWindowToken.get(windowToken);
     }
 
+    private boolean isValidTouchGestureParams(WindowState hostWindowState,
+            EmbeddedWindow embeddedWindow) {
+        if (embeddedWindow == null) {
+            ProtoLog.w(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "Attempt to transfer touch gesture with non-existent embedded window");
+            return false;
+        }
+        final WindowState wsAssociatedWithEmbedded = embeddedWindow.getWindowState();
+        if (wsAssociatedWithEmbedded == null) {
+            ProtoLog.w(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "Attempt to transfer touch gesture using embedded window with no associated "
+                            + "host");
+            return false;
+        }
+        if (wsAssociatedWithEmbedded.mClient.asBinder() != hostWindowState.mClient.asBinder()) {
+            ProtoLog.w(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "Attempt to transfer touch gesture with host window not associated with "
+                            + "embedded window");
+            return false;
+        }
+
+        if (embeddedWindow.getInputChannelToken() == null) {
+            ProtoLog.w(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "Attempt to transfer touch gesture using embedded window that has no input "
+                            + "channel");
+            return false;
+        }
+        if (hostWindowState.mInputChannelToken == null) {
+            ProtoLog.w(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "Attempt to transfer touch gesture using a host window with no input channel");
+            return false;
+        }
+        return true;
+    }
+
+    boolean transferToHost(InputTransferToken embeddedWindowToken,
+            WindowState transferToHostWindowState) {
+        EmbeddedWindow ew = getByInputTransferToken(embeddedWindowToken);
+        if (!isValidTouchGestureParams(transferToHostWindowState, ew)) {
+            return false;
+        }
+        return mInputManagerService.transferTouchFocus(ew.getInputChannelToken(),
+                transferToHostWindowState.mInputChannelToken);
+    }
+
+    boolean transferToEmbedded(WindowState hostWindowState, InputTransferToken transferToToken) {
+        final EmbeddedWindowController.EmbeddedWindow ew = getByInputTransferToken(transferToToken);
+        if (!isValidTouchGestureParams(hostWindowState, ew)) {
+            return false;
+        }
+        return mInputManagerService.transferTouchFocus(hostWindowState.mInputChannelToken,
+                ew.getInputChannelToken());
+    }
+
     static class EmbeddedWindow implements InputTarget {
         final IBinder mClient;
         @Nullable final WindowState mHostWindowState;
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index e8a4c1c..ea31e63 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -222,8 +222,8 @@
             @Nullable ImeTracker.Token statsToken) {
         boolean targetChanged = isTargetChangedWithinActivity(imeTarget);
         mImeRequester = imeTarget;
-        // There was still a stats token, so that request presumably failed.
-        ImeTracker.forLogging().onFailed(
+        // Cancel the pre-existing stats token, if any.
+        ImeTracker.forLogging().onCancelled(
                 mImeRequesterStatsToken, ImeTracker.PHASE_WM_SHOW_IME_RUNNER);
         mImeRequesterStatsToken = statsToken;
         if (targetChanged) {
@@ -300,8 +300,8 @@
         mImeRequester = null;
         mIsImeLayoutDrawn = false;
         mShowImeRunner = null;
-        ImeTracker.forLogging().onCancelled(
-                mImeRequesterStatsToken, ImeTracker.PHASE_WM_SHOW_IME_RUNNER);
+        ImeTracker.forLogging().onFailed(
+                mImeRequesterStatsToken, ImeTracker.PHASE_WM_ABORT_SHOW_IME_POST_LAYOUT);
         mImeRequesterStatsToken = null;
     }
 
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index 609ad1e..bf45804 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -612,10 +612,8 @@
     }
 
     void refreshSecureSurfaceState() {
-        forAllWindows((w) -> {
-            if (w.mHasSurface) {
-                w.setSecureLocked(w.isSecureLocked());
-            }
+        forAllWindows(w -> {
+            w.setSecureLocked(w.isSecureLocked());
         }, true /* traverseTopToBottom */);
     }
 
diff --git a/services/core/java/com/android/server/wm/SensitiveContentPackages.java b/services/core/java/com/android/server/wm/SensitiveContentPackages.java
index a7d6903b..5fe48d1 100644
--- a/services/core/java/com/android/server/wm/SensitiveContentPackages.java
+++ b/services/core/java/com/android/server/wm/SensitiveContentPackages.java
@@ -56,6 +56,17 @@
     }
 
     /**
+     * Clears apps added to collection of apps in which screen capture should be disabled.
+     *
+     * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked
+     *                     from capture.
+     * @return {@code true} if packages set is modified, {@code false} otherwise.
+     */
+    public boolean removeBlockScreenCaptureForApps(@NonNull ArraySet<PackageInfo> packageInfos) {
+        return mProtectedPackages.removeAll(packageInfos);
+    }
+
+    /**
      * Clears the set of package/uid pairs that should be blocked from screen capture
      *
      * @return {@code true} if packages set is modified, {@code false} otherwise.
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index 3c8c55e..975208f 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -970,40 +970,6 @@
     }
 
     @Override
-    public boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow) {
-        if (embeddedWindow == null) {
-            return false;
-        }
-
-        final long identity = Binder.clearCallingIdentity();
-        boolean didTransfer = false;
-        try {
-            didTransfer = mService.transferEmbeddedTouchFocusToHost(embeddedWindow);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
-        return didTransfer;
-    }
-
-    @Override
-    public boolean transferHostTouchGestureToEmbedded(IWindow hostWindow,
-            InputTransferToken inputTransferToken) {
-        if (hostWindow == null) {
-            return false;
-        }
-
-        final long identity = Binder.clearCallingIdentity();
-        boolean didTransfer;
-        try {
-            didTransfer = mService.transferHostTouchGestureToEmbedded(this, hostWindow,
-                    inputTransferToken);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
-        return didTransfer;
-    }
-
-    @Override
     public boolean moveFocusToAdjacentWindow(IWindow fromWindow, @FocusDirection int direction) {
         final long identity = Binder.clearCallingIdentity();
         try {
diff --git a/services/core/java/com/android/server/wm/SnapshotCache.java b/services/core/java/com/android/server/wm/SnapshotCache.java
index 401b260..8680436 100644
--- a/services/core/java/com/android/server/wm/SnapshotCache.java
+++ b/services/core/java/com/android/server/wm/SnapshotCache.java
@@ -19,6 +19,8 @@
 import android.util.ArrayMap;
 import android.window.TaskSnapshot;
 
+import com.android.internal.annotations.GuardedBy;
+
 import java.io.PrintWriter;
 
 /**
@@ -26,25 +28,31 @@
  * @param <TYPE> The basic type, either Task or ActivityRecord
  */
 abstract class SnapshotCache<TYPE extends WindowContainer> {
-    protected final WindowManagerService mService;
+    protected final Object mLock = new Object();
+
     protected final String mName;
+
+    @GuardedBy("mLock")
     protected final ArrayMap<ActivityRecord, Integer> mAppIdMap = new ArrayMap<>();
+
+    @GuardedBy("mLock")
     protected final ArrayMap<Integer, CacheEntry> mRunningCache = new ArrayMap<>();
 
-    SnapshotCache(WindowManagerService service, String name) {
-        mService = service;
+    SnapshotCache(String name) {
         mName = name;
     }
 
     abstract void putSnapshot(TYPE window, TaskSnapshot snapshot);
 
     void clearRunningCache() {
-        mRunningCache.clear();
+        synchronized (mLock) {
+            mRunningCache.clear();
+        }
     }
 
     @Nullable
     final TaskSnapshot getSnapshot(Integer id) {
-        synchronized (mService.mGlobalLock) {
+        synchronized (mLock) {
             // Try the running cache.
             final CacheEntry entry = mRunningCache.get(id);
             if (entry != null) {
@@ -56,17 +64,21 @@
 
     /** Called when an app token has been removed. */
     void onAppRemoved(ActivityRecord activity) {
-        final Integer id = mAppIdMap.get(activity);
-        if (id != null) {
-            removeRunningEntry(id);
+        synchronized (mLock) {
+            final Integer id = mAppIdMap.get(activity);
+            if (id != null) {
+                removeRunningEntry(id);
+            }
         }
     }
 
     /** Called when an app window token's process died. */
     void onAppDied(ActivityRecord activity) {
-        final Integer id = mAppIdMap.get(activity);
-        if (id != null) {
-            removeRunningEntry(id);
+        synchronized (mLock) {
+            final Integer id = mAppIdMap.get(activity);
+            if (id != null) {
+                removeRunningEntry(id);
+            }
         }
     }
 
@@ -75,10 +87,12 @@
     }
 
     void removeRunningEntry(Integer id) {
-        final CacheEntry entry = mRunningCache.get(id);
-        if (entry != null) {
-            mAppIdMap.remove(entry.topApp);
-            mRunningCache.remove(id);
+        synchronized (mLock) {
+            final CacheEntry entry = mRunningCache.get(id);
+            if (entry != null) {
+                mAppIdMap.remove(entry.topApp);
+                mRunningCache.remove(id);
+            }
         }
     }
 
@@ -86,11 +100,14 @@
         final String doublePrefix = prefix + "  ";
         final String triplePrefix = doublePrefix + "  ";
         pw.println(prefix + "SnapshotCache " + mName);
-        for (int i = mRunningCache.size() - 1; i >= 0; i--) {
-            final CacheEntry entry = mRunningCache.valueAt(i);
-            pw.println(doublePrefix + "Entry token=" + mRunningCache.keyAt(i));
-            pw.println(triplePrefix + "topApp=" + entry.topApp);
-            pw.println(triplePrefix + "snapshot=" + entry.snapshot);
+
+        synchronized (mLock) {
+            for (int i = mRunningCache.size() - 1; i >= 0; i--) {
+                final CacheEntry entry = mRunningCache.valueAt(i);
+                pw.println(doublePrefix + "Entry token=" + mRunningCache.keyAt(i));
+                pw.println(triplePrefix + "topApp=" + entry.topApp);
+                pw.println(triplePrefix + "snapshot=" + entry.snapshot);
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
index f4e9957..3917868 100644
--- a/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/TaskLaunchParamsModifier.java
@@ -303,15 +303,9 @@
         } else {
             if (DEBUG) appendLog("non-freeform-task-display-area");
         }
-        final boolean isUpdatingExistingTaskWindowingMode = task != null
-                && task.getRequestedOverrideWindowingMode() != WINDOWING_MODE_UNDEFINED
-                && launchMode != task.getRequestedOverrideWindowingMode();
-        if (DEBUG && isUpdatingExistingTaskWindowingMode) {
-            appendLog("updating-existing-task-windowing-mode");
-        }
         // If launch mode matches display windowing mode, let it inherit from display.
         outParams.mWindowingMode = launchMode == suggestedDisplayArea.getWindowingMode()
-                && !isUpdatingExistingTaskWindowingMode
+                && !shouldUpdateExistingTaskWindowingMode(task, launchMode)
                 ? WINDOWING_MODE_UNDEFINED : launchMode;
 
         if (phase == PHASE_WINDOWING_MODE) {
@@ -403,6 +397,13 @@
         return RESULT_CONTINUE;
     }
 
+    private boolean shouldUpdateExistingTaskWindowingMode(Task task, int launchMode) {
+        return task != null
+                && task.getRequestedOverrideWindowingMode() != WINDOWING_MODE_UNDEFINED
+                && task.getRequestedOverrideWindowingMode() != WINDOWING_MODE_PINNED
+                && launchMode != task.getRequestedOverrideWindowingMode();
+    }
+
     private TaskDisplayArea getPreferredLaunchTaskDisplayArea(@Nullable Task task,
             @Nullable ActivityOptions options, @Nullable ActivityRecord source,
             @Nullable LaunchParams currentParams, @Nullable ActivityRecord activityRecord,
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotCache.java b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
index 33486cc..b69ac1b 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotCache.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotCache.java
@@ -28,19 +28,21 @@
 
     private final AppSnapshotLoader mLoader;
 
-    TaskSnapshotCache(WindowManagerService service, AppSnapshotLoader loader) {
-        super(service, "Task");
+    TaskSnapshotCache(AppSnapshotLoader loader) {
+        super("Task");
         mLoader = loader;
     }
 
     void putSnapshot(Task task, TaskSnapshot snapshot) {
-        final CacheEntry entry = mRunningCache.get(task.mTaskId);
-        if (entry != null) {
-            mAppIdMap.remove(entry.topApp);
+        synchronized (mLock) {
+            final CacheEntry entry = mRunningCache.get(task.mTaskId);
+            if (entry != null) {
+                mAppIdMap.remove(entry.topApp);
+            }
+            final ActivityRecord top = task.getTopMostActivity();
+            mAppIdMap.put(top, task.mTaskId);
+            mRunningCache.put(task.mTaskId, new CacheEntry(snapshot, top));
         }
-        final ActivityRecord top = task.getTopMostActivity();
-        mAppIdMap.put(top, task.mTaskId);
-        mRunningCache.put(task.mTaskId, new CacheEntry(snapshot, top));
     }
 
     /**
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotController.java b/services/core/java/com/android/server/wm/TaskSnapshotController.java
index d8e18e4..8b622d2 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotController.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotController.java
@@ -68,7 +68,7 @@
                 Environment::getDataSystemCeDirectory);
         mPersister = new TaskSnapshotPersister(persistQueue, mPersistInfoProvider);
 
-        initialize(new TaskSnapshotCache(service, new AppSnapshotLoader(mPersistInfoProvider)));
+        initialize(new TaskSnapshotCache(new AppSnapshotLoader(mPersistInfoProvider)));
         final boolean snapshotEnabled =
                 !service.mContext
                         .getResources()
diff --git a/services/core/java/com/android/server/wm/TrustedPresentationListenerController.java b/services/core/java/com/android/server/wm/TrustedPresentationListenerController.java
index 817901f..fa2d9bf 100644
--- a/services/core/java/com/android/server/wm/TrustedPresentationListenerController.java
+++ b/services/core/java/com/android/server/wm/TrustedPresentationListenerController.java
@@ -322,15 +322,17 @@
             var listener = trustedPresentationInfo.mListener;
             boolean lastState = trustedPresentationInfo.mLastComputedTrustedPresentationState;
             boolean newState =
-                    (alpha >= trustedPresentationInfo.mThresholds.minAlpha) && (fractionRendered
-                            >= trustedPresentationInfo.mThresholds.minFractionRendered);
+                    (alpha >= trustedPresentationInfo.mThresholds.getMinAlpha())
+                            && (fractionRendered >= trustedPresentationInfo.mThresholds
+                                    .getMinFractionRendered());
             trustedPresentationInfo.mLastComputedTrustedPresentationState = newState;
 
             ProtoLog.v(WM_DEBUG_TPL,
                     "lastState=%s newState=%s alpha=%f minAlpha=%f fractionRendered=%f "
                             + "minFractionRendered=%f",
-                    lastState, newState, alpha, trustedPresentationInfo.mThresholds.minAlpha,
-                    fractionRendered, trustedPresentationInfo.mThresholds.minFractionRendered);
+                    lastState, newState, alpha, trustedPresentationInfo.mThresholds.getMinAlpha(),
+                    fractionRendered, trustedPresentationInfo.mThresholds
+                            .getMinFractionRendered());
 
             if (lastState && !newState) {
                 // We were in the trusted presentation state, but now we left it,
@@ -350,13 +352,15 @@
                 trustedPresentationInfo.mEnteredTrustedPresentationStateTime = currTimeMs;
                 mHandler.postDelayed(() -> {
                     computeTpl(mLastWindowHandles);
-                }, (long) (trustedPresentationInfo.mThresholds.stabilityRequirementMs * 1.5));
+                }, (long) (trustedPresentationInfo.mThresholds
+                            .getStabilityRequirementMillis() * 1.5));
             }
 
             // Has the timer elapsed, but we are still in the state? Emit a callback if needed
             if (!trustedPresentationInfo.mLastReportedTrustedPresentationState && newState && (
                     currTimeMs - trustedPresentationInfo.mEnteredTrustedPresentationStateTime
-                            > trustedPresentationInfo.mThresholds.stabilityRequirementMs)) {
+                            > trustedPresentationInfo.mThresholds
+                                        .getStabilityRequirementMillis())) {
                 trustedPresentationInfo.mLastReportedTrustedPresentationState = true;
                 addListenerUpdate(listenerUpdates, listener,
                         trustedPresentationInfo.mId, /*presentationState*/ true);
@@ -413,15 +417,6 @@
             mThresholds = thresholds;
             mId = id;
             mListener = listener;
-            checkValid(thresholds);
-        }
-
-        private void checkValid(TrustedPresentationThresholds thresholds) {
-            if (thresholds.minAlpha <= 0 || thresholds.minFractionRendered <= 0
-                    || thresholds.stabilityRequirementMs < 1) {
-                throw new IllegalArgumentException(
-                        "TrustedPresentationThresholds values are invalid");
-            }
         }
     }
 }
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 80894b2..61fde5e 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -465,7 +465,9 @@
             }
         }
         final InsetsSource source = new InsetsSource(id, provider.getType());
-        source.setFrame(provider.getArbitraryRectangle()).updateSideHint(getBounds());
+        source.setFrame(provider.getArbitraryRectangle())
+                .updateSideHint(getBounds())
+                .setBoundingRects(provider.getBoundingRects());
         mLocalInsetsSources.put(id, source);
         mDisplayContent.getInsetsStateController().updateAboveInsetsState(true);
     }
diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java
index ae4c3b9..669c61c 100644
--- a/services/core/java/com/android/server/wm/WindowManagerInternal.java
+++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java
@@ -1043,6 +1043,15 @@
     /**
      * Clears apps added to collection of apps in which screen capture should be disabled.
      *
+     * @param packageInfos set of {@link PackageInfo} whose windows should be unblocked
+     *                     from capture.
+     */
+    public abstract void removeBlockScreenCaptureForApps(
+            @NonNull ArraySet<PackageInfo> packageInfos);
+
+    /**
+     * Clears all apps added to collection of apps in which screen capture should be disabled.
+     *
      * <p> This clears and resets any existing set or added applications from
      * * {@link #addBlockScreenCaptureForApps(ArraySet)}
      */
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index de8d9f9..3d6bd4f 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -101,6 +101,7 @@
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_ANIM;
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_BOOT;
+import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_EMBEDDED_WINDOWS;
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS;
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT;
 import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_IME;
@@ -1344,7 +1345,7 @@
         LocalServices.addService(WindowManagerInternal.class, new LocalService());
         LocalServices.addService(
                 ImeTargetVisibilityPolicy.class, new ImeTargetVisibilityPolicyImpl());
-        mEmbeddedWindowController = new EmbeddedWindowController(mAtmService);
+        mEmbeddedWindowController = new EmbeddedWindowController(mAtmService, inputManager);
 
         mDisplayAreaPolicyProvider = DisplayAreaPolicy.Provider.fromResources(
                 mContext.getResources());
@@ -1511,6 +1512,11 @@
                 }
             }
 
+            if (type == TYPE_PRESENTATION || type == TYPE_PRIVATE_PRESENTATION) {
+                mDisplayManagerInternal.onPresentation(displayContent.getDisplay().getDisplayId(),
+                        /*isShown=*/ true);
+            }
+
             if (type == TYPE_PRIVATE_PRESENTATION && !displayContent.isPrivate()) {
                 ProtoLog.w(WM_ERROR,
                         "Attempted to add private presentation window to a non-private display.  "
@@ -8627,6 +8633,17 @@
         }
 
         @Override
+        public void removeBlockScreenCaptureForApps(ArraySet<PackageInfo> packageInfos) {
+            synchronized (mGlobalLock) {
+                boolean modified =
+                        mSensitiveContentPackages.removeBlockScreenCaptureForApps(packageInfos);
+                if (modified) {
+                    WindowManagerService.this.refreshScreenCaptureDisabled();
+                }
+            }
+        }
+
+        @Override
         public void clearBlockedApps() {
             synchronized (mGlobalLock) {
                 boolean modified = mSensitiveContentPackages.clearBlockedApps();
@@ -9039,73 +9056,37 @@
                 null /* region */, clientToken);
     }
 
-    boolean transferEmbeddedTouchFocusToHost(IWindow embeddedWindow) {
-        final IBinder windowBinder = embeddedWindow.asBinder();
-        final IBinder hostInputChannel, embeddedInputChannel;
-        synchronized (mGlobalLock) {
-            final EmbeddedWindowController.EmbeddedWindow ew =
-                mEmbeddedWindowController.getByWindowToken(windowBinder);
-            if (ew == null) {
-                Slog.w(TAG, "Attempt to transfer touch focus from non-existent embedded window");
-                return false;
-            }
-            final WindowState hostWindowState = ew.getWindowState();
-            if (hostWindowState == null) {
-                Slog.w(TAG, "Attempt to transfer touch focus from embedded window with no" +
-                    " associated host");
-                return false;
-            }
-            embeddedInputChannel = ew.getInputChannelToken();
-            if (embeddedInputChannel == null) {
-                Slog.w(TAG, "Attempt to transfer touch focus from embedded window with no input" +
-                    " channel");
-                return false;
-            }
-            hostInputChannel = hostWindowState.mInputChannelToken;
-            if (hostInputChannel == null) {
-                Slog.w(TAG, "Attempt to transfer touch focus to a host window with no" +
-                    " input channel");
-                return false;
-            }
-            return mInputManager.transferTouchFocus(embeddedInputChannel, hostInputChannel);
+    @Override
+    public boolean transferTouchGesture(InputTransferToken transferFromToken,
+            InputTransferToken transferToToken) {
+        if (transferFromToken == null || transferToToken == null) {
+            ProtoLog.e(WM_DEBUG_EMBEDDED_WINDOWS,
+                    "transferTouchGesture failed because args transferFromToken or "
+                            + "transferToToken is null");
+            return false;
         }
-    }
 
-    boolean transferHostTouchGestureToEmbedded(Session session, IWindow hostWindow,
-            InputTransferToken inputTransferToken) {
-        final IBinder hostInputChannel, embeddedInputChannel;
-        synchronized (mGlobalLock) {
-            final WindowState hostWindowState = windowForClientLocked(session, hostWindow, false);
-            if (hostWindowState == null) {
-                Slog.w(TAG, "Attempt to transfer touch gesture with invalid host window");
-                return false;
+        final long identity = Binder.clearCallingIdentity();
+        boolean didTransfer;
+        try {
+            synchronized (mGlobalLock) {
+                // If the transferToToken exists in the input to window map, it means the request
+                // is to transfer from embedded to host. Otherwise, the transferToToken
+                // represents an embedded window so transfer from host to embedded.
+                WindowState windowStateTo = mInputToWindowMap.get(transferToToken.mToken);
+                if (windowStateTo != null) {
+                    didTransfer = mEmbeddedWindowController.transferToHost(transferFromToken,
+                            windowStateTo);
+                } else {
+                    WindowState windowStateFrom = mInputToWindowMap.get(transferFromToken.mToken);
+                    didTransfer = mEmbeddedWindowController.transferToEmbedded(windowStateFrom,
+                            transferToToken);
+                }
             }
-
-            final EmbeddedWindowController.EmbeddedWindow ew =
-                    mEmbeddedWindowController.getByInputTransferToken(inputTransferToken);
-            if (ew == null || ew.mHostWindowState == null) {
-                Slog.w(TAG, "Attempt to transfer touch gesture to non-existent embedded window");
-                return false;
-            }
-            if (ew.mHostWindowState.mClient.asBinder() != hostWindow.asBinder()) {
-                Slog.w(TAG, "Attempt to transfer touch gesture to embedded window not associated"
-                        + " with host window");
-                return false;
-            }
-            embeddedInputChannel = ew.getInputChannelToken();
-            if (embeddedInputChannel == null) {
-                Slog.w(TAG, "Attempt to transfer touch focus from embedded window with no input"
-                        + " channel");
-                return false;
-            }
-            hostInputChannel = hostWindowState.mInputChannelToken;
-            if (hostInputChannel == null) {
-                Slog.w(TAG,
-                        "Attempt to transfer touch focus to a host window with no input channel");
-                return false;
-            }
-            return mInputManager.transferTouchFocus(hostInputChannel, embeddedInputChannel);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
         }
+        return didTransfer;
     }
 
     private void updateInputChannel(IBinder channelToken, int callingUid, int callingPid,
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 68dade0..6e993b3 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -1897,7 +1897,7 @@
             return true;
         }
 
-        if (com.android.server.notification.Flags.sensitiveNotificationAppProtection()) {
+        if (android.permission.flags.Flags.sensitiveNotificationAppProtection()) {
             if (mWmService.mSensitiveContentPackages
                     .shouldBlockScreenCaptureForApp(getOwningPackage(), getOwningUid())) {
                 return true;
@@ -2332,6 +2332,11 @@
             dc.mTapExcludedWindows.remove(this);
         }
 
+        if (type == TYPE_PRESENTATION || type == TYPE_PRIVATE_PRESENTATION) {
+            mWmService.mDisplayManagerInternal.onPresentation(dc.getDisplay().getDisplayId(),
+                    /*isShown=*/ false);
+        }
+
         // Remove this window from mTapExcludeProvidingWindows. If it was not registered, this will
         // not do anything.
         dc.mTapExcludeProvidingWindows.remove(this);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
index 14dc0eb..0ccf810c 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyEngine.java
@@ -102,6 +102,9 @@
             DevicePolicyIdentifiers.getIdentifierForUserRestriction(
                     UserManager.DISALLOW_CELLULAR_2G);
 
+    //TODO(b/295504706) : Speak to security team to decide what to set Policy_Size_Limit
+    private static final int DEFAULT_POLICY_SIZE_LIMIT = -1;
+
     private final Context mContext;
     private final UserManager mUserManager;
 
@@ -122,10 +125,10 @@
      * Map containing the current set of admins in each user with active policies.
      */
     private final SparseArray<Set<EnforcingAdmin>> mEnforcingAdmins;
+
     private final SparseArray<HashMap<EnforcingAdmin, Integer>> mAdminPolicySize;
 
-    //TODO(b/295504706) : Speak to security team to decide what to set Policy_Size_Limit
-    private static final int POLICY_SIZE_LIMIT = 99999;
+    private int mPolicySizeLimit = DEFAULT_POLICY_SIZE_LIMIT;
 
     private final DeviceAdminServiceController mDeviceAdminServiceController;
 
@@ -1385,7 +1388,6 @@
         }
     }
 
-
     /**
      * Removes all local and global policies set by that admin.
      */
@@ -1546,10 +1548,17 @@
         return false;
     }
 
+    @NonNull
+    private Set<EnforcingAdmin> getEnforcingAdminsOnUser(int userId) {
+        synchronized (mLock) {
+            return mEnforcingAdmins.contains(userId)
+                    ? mEnforcingAdmins.get(userId) : Collections.emptySet();
+        }
+    }
+
     /**
      * Calculate the size of a policy in bytes
      */
-
     private static <V> int sizeOf(PolicyValue<V> value) {
         try {
             Parcel parcel = Parcel.obtain();
@@ -1576,23 +1585,27 @@
      *
      * If the policy size limit is reached then send policy result to admin and return false.
      */
-
     private <V> boolean handleAdminPolicySizeLimit(PolicyState<V> policyState, EnforcingAdmin admin,
-            PolicyValue<V> value, PolicyDefinition policyDefinition, int userId) {
-        int currentSize = 0;
+            PolicyValue<V> value, PolicyDefinition<V> policyDefinition, int userId) {
+        int currentAdminPoliciesSize = 0;
+        int existingPolicySize = 0;
         if (mAdminPolicySize.contains(admin.getUserId())
                 && mAdminPolicySize.get(
                 admin.getUserId()).containsKey(admin)) {
-            currentSize = mAdminPolicySize.get(admin.getUserId()).get(admin);
+            currentAdminPoliciesSize = mAdminPolicySize.get(admin.getUserId()).get(admin);
         }
         if (policyState.getPoliciesSetByAdmins().containsKey(admin)) {
-            currentSize -= sizeOf(policyState.getPoliciesSetByAdmins().get(admin));
+            existingPolicySize = sizeOf(policyState.getPoliciesSetByAdmins().get(admin));
         }
         int policySize = sizeOf(value);
-        if (currentSize + policySize < POLICY_SIZE_LIMIT) {
-            increasePolicySizeForAdmin(admin, policySize);
+        // Policy size limit is disabled if mPolicySizeLimit is -1.
+        if (mPolicySizeLimit == -1
+                || currentAdminPoliciesSize + policySize - existingPolicySize < mPolicySizeLimit) {
+            increasePolicySizeForAdmin(
+                    admin, /* policySizeDiff = */ policySize - existingPolicySize);
             return true;
         } else {
+            Log.w(TAG, "Admin " + admin + "reached max allowed storage limit.");
             sendPolicyResultToAdmin(
                     admin,
                     policyDefinition,
@@ -1606,8 +1619,7 @@
      * Increase the int in mAdminPolicySize representing the size of the sum of all
      * active policies for that admin.
      */
-
-    private <V> void increasePolicySizeForAdmin(EnforcingAdmin admin, int policySize) {
+    private <V> void increasePolicySizeForAdmin(EnforcingAdmin admin, int policySizeDiff) {
         if (!mAdminPolicySize.contains(admin.getUserId())) {
             mAdminPolicySize.put(admin.getUserId(), new HashMap<>());
         }
@@ -1615,14 +1627,13 @@
             mAdminPolicySize.get(admin.getUserId()).put(admin, /* size= */ 0);
         }
         mAdminPolicySize.get(admin.getUserId()).put(admin,
-                mAdminPolicySize.get(admin.getUserId()).get(admin) + policySize);
+                mAdminPolicySize.get(admin.getUserId()).get(admin) + policySizeDiff);
     }
 
     /**
      * Decrease the int in mAdminPolicySize representing the size of the sum of all
      * active policies for that admin.
      */
-
     private <V> void decreasePolicySizeForAdmin(PolicyState<V> policyState, EnforcingAdmin admin) {
         if (policyState.getPoliciesSetByAdmins().containsKey(admin)) {
             mAdminPolicySize.get(admin.getUserId()).put(admin,
@@ -1637,12 +1648,24 @@
         }
     }
 
-    @NonNull
-    private Set<EnforcingAdmin> getEnforcingAdminsOnUser(int userId) {
-        synchronized (mLock) {
-            return mEnforcingAdmins.contains(userId)
-                    ? mEnforcingAdmins.get(userId) : Collections.emptySet();
+    /**
+     * Updates the max allowed size limit for policies per admin. Setting it to -1, disables
+     * the limitation.
+     */
+    void setMaxPolicyStorageLimit(int storageLimit) {
+        if (storageLimit < DEFAULT_POLICY_SIZE_LIMIT && storageLimit != -1) {
+            throw new IllegalArgumentException("Can't set a size limit less than the minimum "
+                    + "allowed size.");
         }
+        mPolicySizeLimit = storageLimit;
+    }
+
+    /**
+     * Returns the max allowed size limit for policies per admin. -1 means the limitation is
+     * disabled.
+     */
+    int getMaxPolicyStorageLimit() {
+        return mPolicySizeLimit;
     }
 
     public void dump(IndentingPrintWriter pw) {
@@ -1764,6 +1787,7 @@
         private static final String TAG_ENFORCING_ADMIN_AND_SIZE = "enforcing-admin-and-size";
         private static final String TAG_ENFORCING_ADMIN = "enforcing-admin";
         private static final String TAG_POLICY_SUM_SIZE = "policy-sum-size";
+        private static final String TAG_MAX_POLICY_SIZE_LIMIT = "max-policy-size-limit";
         private static final String ATTR_USER_ID = "user-id";
         private static final String ATTR_POLICY_SUM_SIZE = "size";
 
@@ -1808,6 +1832,7 @@
             writeGlobalPoliciesInner(serializer);
             writeEnforcingAdminsInner(serializer);
             writeEnforcingAdminSizeInner(serializer);
+            writeMaxPolicySizeInner(serializer);
         }
 
         private void writeLocalPoliciesInner(TypedXmlSerializer serializer) throws IOException {
@@ -1889,6 +1914,17 @@
             }
         }
 
+        private void writeMaxPolicySizeInner(TypedXmlSerializer serializer)
+                throws IOException {
+            if (!devicePolicySizeTrackingEnabled()) {
+                return;
+            }
+            serializer.startTag(/* namespace= */ null, TAG_MAX_POLICY_SIZE_LIMIT);
+            serializer.attributeInt(
+                    /* namespace= */ null, ATTR_POLICY_SUM_SIZE, mPolicySizeLimit);
+            serializer.endTag(/* namespace= */ null, TAG_MAX_POLICY_SIZE_LIMIT);
+        }
+
         void readFromFileLocked() {
             if (!mFile.exists()) {
                 Log.d(TAG, "" + mFile + " doesn't exist");
@@ -1929,6 +1965,9 @@
                     case TAG_ENFORCING_ADMIN_AND_SIZE:
                         readEnforcingAdminAndSizeInner(parser);
                         break;
+                    case TAG_MAX_POLICY_SIZE_LIMIT:
+                        readMaxPolicySizeInner(parser);
+                        break;
                     default:
                         Slogf.wtf(TAG, "Unknown tag " + tag);
                 }
@@ -2039,5 +2078,13 @@
             }
             mAdminPolicySize.get(admin.getUserId()).put(admin, size);
         }
+
+        private void readMaxPolicySizeInner(TypedXmlPullParser parser)
+                throws XmlPullParserException, IOException {
+            if (!devicePolicySizeTrackingEnabled()) {
+                return;
+            }
+            mPolicySizeLimit = parser.getAttributeInt(/* namespace= */ null, ATTR_POLICY_SUM_SIZE);
+        }
     }
 }
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index 85eac29..58e198e 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -28,10 +28,13 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_APPS_CONTROL;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_APP_RESTRICTIONS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_AUDIO_OUTPUT;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_AUDIT_LOGGING;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_AUTOFILL;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_BLUETOOTH;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_CALLS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_CAMERA;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_CAMERA_TOGGLE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_CERTIFICATES;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_CONTENT_PROTECTION;
@@ -48,7 +51,9 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_LOCK;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_LOCK_TASK;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MICROPHONE;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MOBILE_NETWORK;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MODIFY_USERS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_MTE;
@@ -59,6 +64,7 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_PRINTING;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_PROFILES;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_PROFILE_INTERACTION;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_RESET_PASSWORD;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_RESTRICT_PRIVATE_DNS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_RUNTIME_PERMISSIONS;
@@ -72,10 +78,12 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SUPPORT_MESSAGE;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_SYSTEM_UPDATES;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_THEFT_DETECTION;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_THREAD_NETWORK;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_TIME;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_USB_DATA_SIGNALLING;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_USB_FILE_TRANSFER;
+import static android.Manifest.permission.MANAGE_DEVICE_POLICY_ASSIST_CONTENT;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_VPN;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_WALLPAPER;
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_WIFI;
@@ -83,6 +91,7 @@
 import static android.Manifest.permission.MANAGE_DEVICE_POLICY_WIPE_DATA;
 import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS;
 import static android.Manifest.permission.MASTER_CLEAR;
+import static android.Manifest.permission.NOTIFY_PENDING_SYSTEM_UPDATE;
 import static android.Manifest.permission.QUERY_ADMIN_POLICY;
 import static android.Manifest.permission.REQUEST_PASSWORD_COMPLEXITY;
 import static android.Manifest.permission.SET_TIME;
@@ -99,6 +108,7 @@
 import static android.app.AppOpsManager.OPSTR_SYSTEM_EXEMPT_FROM_SUSPENSION;
 import static android.app.admin.DeviceAdminInfo.HEADLESS_DEVICE_OWNER_MODE_AFFILIATED;
 import static android.app.admin.DeviceAdminInfo.HEADLESS_DEVICE_OWNER_MODE_SINGLE_USER;
+import static android.app.admin.DeviceAdminInfo.HEADLESS_DEVICE_OWNER_MODE_UNSUPPORTED;
 import static android.app.admin.DeviceAdminInfo.USES_POLICY_FORCE_LOCK;
 import static android.app.admin.DeviceAdminInfo.USES_POLICY_WIPE_DATA;
 import static android.app.admin.DeviceAdminReceiver.ACTION_COMPLIANCE_ACKNOWLEDGEMENT_REQUIRED;
@@ -218,6 +228,10 @@
 import static android.app.admin.DevicePolicyResources.Strings.Core.WORK_PROFILE_TELEPHONY_PAUSED_BODY;
 import static android.app.admin.DevicePolicyResources.Strings.Core.WORK_PROFILE_TELEPHONY_PAUSED_TITLE;
 import static android.app.admin.DevicePolicyResources.Strings.Core.WORK_PROFILE_TELEPHONY_PAUSED_TURN_ON_BUTTON;
+import static android.app.admin.PolicySizeVerifier.MAX_LONG_SUPPORT_MESSAGE_LENGTH;
+import static android.app.admin.PolicySizeVerifier.MAX_ORG_NAME_LENGTH;
+import static android.app.admin.PolicySizeVerifier.MAX_PROFILE_NAME_LENGTH;
+import static android.app.admin.PolicySizeVerifier.MAX_SHORT_SUPPORT_MESSAGE_LENGTH;
 import static android.app.admin.ProvisioningException.ERROR_ADMIN_PACKAGE_INSTALLATION_FAILED;
 import static android.app.admin.ProvisioningException.ERROR_PRE_CONDITION_FAILED;
 import static android.app.admin.ProvisioningException.ERROR_PROFILE_CREATION_FAILED;
@@ -226,9 +240,13 @@
 import static android.app.admin.ProvisioningException.ERROR_SET_DEVICE_OWNER_FAILED;
 import static android.app.admin.ProvisioningException.ERROR_STARTING_PROFILE_FAILED;
 import static android.app.admin.flags.Flags.backupServiceSecurityLogEventEnabled;
+import static android.app.admin.flags.Flags.devicePolicySizeTrackingEnabled;
 import static android.app.admin.flags.Flags.dumpsysPolicyEngineMigrationEnabled;
 import static android.app.admin.flags.Flags.headlessDeviceOwnerSingleUserEnabled;
+import static android.app.admin.flags.Flags.permissionMigrationForZeroTrustImplEnabled;
 import static android.app.admin.flags.Flags.policyEngineMigrationV2Enabled;
+import static android.app.admin.flags.Flags.assistContentUserRestrictionEnabled;
+import static android.app.admin.flags.Flags.securityLogV2Enabled;
 import static android.content.Intent.ACTION_MANAGED_PROFILE_AVAILABLE;
 import static android.content.Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
@@ -315,6 +333,7 @@
 import android.app.admin.DeviceStateCache;
 import android.app.admin.FactoryResetProtectionPolicy;
 import android.app.admin.FullyManagedDeviceProvisioningParams;
+import android.app.admin.IAuditLogEventsCallback;
 import android.app.admin.IDevicePolicyManager;
 import android.app.admin.IntegerPolicyValue;
 import android.app.admin.IntentFilterPolicyKey;
@@ -329,6 +348,7 @@
 import android.app.admin.PasswordMetrics;
 import android.app.admin.PasswordPolicy;
 import android.app.admin.PolicyKey;
+import android.app.admin.PolicySizeVerifier;
 import android.app.admin.PolicyValue;
 import android.app.admin.PreferentialNetworkServiceConfig;
 import android.app.admin.SecurityLog;
@@ -446,6 +466,7 @@
 import android.security.keystore.ParcelableKeyGenParameterSpec;
 import android.stats.devicepolicy.DevicePolicyEnums;
 import android.telecom.TelecomManager;
+import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.telephony.data.ApnSetting;
@@ -533,7 +554,6 @@
 import java.security.cert.X509Certificate;
 import java.text.DateFormat;
 import java.time.LocalDate;
-import java.util.ArrayDeque;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -546,7 +566,6 @@
 import java.util.Locale;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Queue;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
@@ -584,16 +603,6 @@
 
     private static final int REQUEST_PROFILE_OFF_DEADLINE = 5572;
 
-    // Binary XML serializer doesn't support longer strings
-    private static final int MAX_POLICY_STRING_LENGTH = 65535;
-    // FrameworkParsingPackageUtils#MAX_FILE_NAME_SIZE, Android packages are used in dir names.
-    private static final int MAX_PACKAGE_NAME_LENGTH = 223;
-
-    private static final int MAX_PROFILE_NAME_LENGTH = 200;
-    private static final int MAX_LONG_SUPPORT_MESSAGE_LENGTH = 20000;
-    private static final int MAX_SHORT_SUPPORT_MESSAGE_LENGTH = 200;
-    private static final int MAX_ORG_NAME_LENGTH = 200;
-
     private static final long MS_PER_DAY = TimeUnit.DAYS.toMillis(1);
 
     private static final long EXPIRATION_GRACE_PERIOD_MS = 5 * MS_PER_DAY; // 5 days, in ms
@@ -2057,7 +2066,7 @@
         mLockPatternUtils = injector.newLockPatternUtils();
         mLockSettingsInternal = injector.getLockSettingsInternal();
         // TODO: why does SecurityLogMonitor need to be created even when mHasFeature == false?
-        mSecurityLogMonitor = new SecurityLogMonitor(this);
+        mSecurityLogMonitor = new SecurityLogMonitor(this, mHandler);
 
         mHasFeature = mInjector.hasFeature();
         mIsWatch = mInjector.getPackageManager()
@@ -2715,8 +2724,20 @@
     }
 
     private void maybeStartSecurityLogMonitorOnActivityManagerReady() {
-        synchronized (getLockObject()) {
-            if (mInjector.securityLogIsLoggingEnabled()) {
+        if (!mInjector.securityLogIsLoggingEnabled()) {
+            return;
+        }
+
+        if (securityLogV2Enabled()) {
+            boolean auditLoggingEnabled = Boolean.TRUE.equals(
+                    mDevicePolicyEngine.getResolvedPolicy(
+                            PolicyDefinition.AUDIT_LOGGING, UserHandle.USER_ALL));
+            boolean securityLoggingEnabled = Boolean.TRUE.equals(
+                    mDevicePolicyEngine.getResolvedPolicy(
+                            PolicyDefinition.SECURITY_LOGGING, UserHandle.USER_ALL));
+            setLoggingConfiguration(securityLoggingEnabled, auditLoggingEnabled);
+        } else {
+            synchronized (getLockObject()) {
                 mSecurityLogMonitor.start(getSecurityLoggingEnabledUser());
                 mInjector.runCryptoSelfTest();
                 maybePauseDeviceWideLoggingLocked();
@@ -3378,9 +3399,10 @@
                     applyProfileRestrictionsIfDeviceOwnerLocked();
 
                     // TODO: Is this the right place to trigger the migration?
-                    if (shouldMigrateToDevicePolicyEngine()) {
-                        migratePoliciesToDevicePolicyEngine();
+                    if (shouldMigrateV1ToDevicePolicyEngine()) {
+                        migrateV1PoliciesToDevicePolicyEngine();
                     }
+                    migratePoliciesToPolicyEngineLocked();
                 }
                 maybeStartSecurityLogMonitorOnActivityManagerReady();
                 break;
@@ -3394,6 +3416,48 @@
         }
     }
 
+    @GuardedBy("getLockObject()")
+    private void maybeMigrateSecurityLoggingPolicyLocked() {
+        if (!securityLogV2Enabled() || mOwners.isSecurityLoggingMigrated()) {
+            return;
+        }
+
+        try {
+            migrateSecurityLoggingPolicyInternalLocked();
+        } catch (Exception e) {
+            Slog.e(LOG_TAG, "Failed to properly migrate security logging to policy engine", e);
+        }
+
+        Slog.i(LOG_TAG, "Marking security logging policy migration complete");
+        mOwners.markSecurityLoggingMigrated();
+    }
+
+    @GuardedBy("getLockObject()")
+    private void migrateSecurityLoggingPolicyInternalLocked() {
+        Slog.i(LOG_TAG, "Migrating security logging policy to policy engine");
+        if (!mInjector.securityLogGetLoggingEnabledProperty()) {
+            Slog.i(LOG_TAG, "Security logs not enabled, exiting");
+            return;
+        }
+
+        // Security logging can be enabled either by DO or by COPE PO.
+        final ActiveAdmin admin = getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked();
+        if (admin == null) {
+            Slog.wtf(LOG_TAG, "Security logging is enabled, but no appropriate admin found");
+            return;
+        }
+
+        EnforcingAdmin enforcingAdmin =
+                EnforcingAdmin.createEnterpriseEnforcingAdmin(
+                        admin.info.getComponent(),
+                        admin.getUserHandle().getIdentifier(),
+                        admin);
+        mDevicePolicyEngine.setGlobalPolicy(
+                PolicyDefinition.SECURITY_LOGGING,
+                enforcingAdmin,
+                new BooleanPolicyValue(true));
+    }
+
     private void applyManagedSubscriptionsPolicyIfRequired() {
         int copeProfileUserId = getOrganizationOwnedProfileUserId();
         // This policy is relevant only for COPE devices.
@@ -9482,7 +9546,11 @@
 
     private int getHeadlessDeviceOwnerMode() {
         synchronized (getLockObject()) {
-            return getDeviceOwnerAdminLocked().info.getHeadlessDeviceOwnerMode();
+            ActiveAdmin deviceOwner = getDeviceOwnerAdminLocked();
+            if (deviceOwner == null) {
+                return HEADLESS_DEVICE_OWNER_MODE_UNSUPPORTED;
+            }
+            return deviceOwner.info.getHeadlessDeviceOwnerMode();
         }
     }
 
@@ -11533,11 +11601,11 @@
 
         Objects.requireNonNull(agent, "agent is null");
 
-        enforceMaxPackageNameLength(agent.getPackageName());
+        PolicySizeVerifier.enforceMaxPackageNameLength(agent.getPackageName());
         final String agentAsString = agent.flattenToString();
-        enforceMaxStringLength(agentAsString, "agent name");
+        PolicySizeVerifier.enforceMaxStringLength(agentAsString, "agent name");
         if (args != null) {
-            enforceMaxStringLength(args, "args");
+            PolicySizeVerifier.enforceMaxStringLength(args, "args");
         }
 
         int userHandle = mInjector.userHandleGetCallingUserId();
@@ -11829,7 +11897,7 @@
 
         if (packageList != null) {
             for (String pkg : packageList) {
-                enforceMaxPackageNameLength(pkg);
+                PolicySizeVerifier.enforceMaxPackageNameLength(pkg);
             }
 
             int userId = caller.getUserId();
@@ -12000,8 +12068,10 @@
         }
 
         if (packageList != null) {
-            for (String pkg : packageList) {
-                enforceMaxPackageNameLength(pkg);
+            if (!devicePolicySizeTrackingEnabled()) {
+                for (String pkg : packageList) {
+                    PolicySizeVerifier.enforceMaxPackageNameLength(pkg);
+                }
             }
 
             List<InputMethodInfo> enabledImes = mInjector.binderWithCleanCallingIdentity(() ->
@@ -12237,17 +12307,18 @@
         }
         final CallerIdentity caller = getCallerIdentity(admin);
 
+        // Only allow the system user to use this method
+        Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(),
+                "createAndManageUser was called from non-system user");
+        Preconditions.checkCallAuthorization(isDefaultDeviceOwner(caller));
+        checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_CREATE_AND_MANAGE_USER);
+
         if (headlessDeviceOwnerSingleUserEnabled()) {
             // Block this method if the device is in headless main user mode
             Preconditions.checkCallAuthorization(
                     getHeadlessDeviceOwnerMode() != HEADLESS_DEVICE_OWNER_MODE_SINGLE_USER,
                     "createAndManageUser was called while in headless single user mode");
         }
-        // Only allow the system user to use this method
-        Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(),
-                "createAndManageUser was called from non-system user");
-        Preconditions.checkCallAuthorization(isDefaultDeviceOwner(caller));
-        checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_CREATE_AND_MANAGE_USER);
 
         final boolean ephemeral = (flags & DevicePolicyManager.MAKE_USER_EPHEMERAL) != 0;
         final boolean demo = (flags & DevicePolicyManager.MAKE_USER_DEMO) != 0
@@ -13372,6 +13443,11 @@
                     UserManager.DISALLOW_THREAD_NETWORK,
                     new String[]{MANAGE_DEVICE_POLICY_THREAD_NETWORK});
         }
+        if (assistContentUserRestrictionEnabled()) {
+            USER_RESTRICTION_PERMISSIONS.put(
+                    UserManager.DISALLOW_ASSIST_CONTENT,
+                    new String[]{MANAGE_DEVICE_POLICY_ASSIST_CONTENT});
+        }
         USER_RESTRICTION_PERMISSIONS.put(
                 UserManager.DISALLOW_ULTRA_WIDEBAND_RADIO, new String[]{MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION});
         USER_RESTRICTION_PERMISSIONS.put(
@@ -13701,7 +13777,9 @@
             return;
         }
 
-        enforceMaxStringLength(accountType, "account type");
+        if (!devicePolicySizeTrackingEnabled()) {
+            PolicySizeVerifier.enforceMaxStringLength(accountType, "account type");
+        }
 
         CallerIdentity caller = getCallerIdentity(who, callerPackageName);
         synchronized (getLockObject()) {
@@ -14313,8 +14391,10 @@
     public void setLockTaskPackages(ComponentName who, String callerPackageName, String[] packages)
             throws SecurityException {
         Objects.requireNonNull(packages, "packages is null");
-        for (String pkg : packages) {
-            enforceMaxPackageNameLength(pkg);
+        if (!devicePolicySizeTrackingEnabled()) {
+            for (String pkg : packages) {
+                PolicySizeVerifier.enforceMaxPackageNameLength(pkg);
+            }
         }
 
         CallerIdentity caller = getCallerIdentity(who, callerPackageName);
@@ -15064,8 +15144,10 @@
             if (statusBarService != null) {
                 int flags1 = disabled ? STATUS_BAR_DISABLE_MASK : StatusBarManager.DISABLE_NONE;
                 int flags2 = disabled ? STATUS_BAR_DISABLE2_MASK : StatusBarManager.DISABLE2_NONE;
-                statusBarService.disableForUser(flags1, mToken, mContext.getPackageName(), userId);
-                statusBarService.disable2ForUser(flags2, mToken, mContext.getPackageName(), userId);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo(flags1,
+                        flags2);
+                statusBarService.disableForUser(info, mToken, mContext.getPackageName(), userId,
+                        "setStatusBarDisabledInternal");
                 return true;
             }
         } catch (RemoteException e) {
@@ -15714,6 +15796,26 @@
             return enforcingUsers;
         }
 
+        @Override
+        public void enforceSecurityLoggingPolicy(boolean enabled) {
+            if (!securityLogV2Enabled()) {
+                return;
+            }
+            Boolean auditLoggingEnabled = mDevicePolicyEngine.getResolvedPolicy(
+                    PolicyDefinition.AUDIT_LOGGING, UserHandle.USER_ALL);
+            enforceLoggingPolicy(enabled, Boolean.TRUE.equals(auditLoggingEnabled));
+        }
+
+        @Override
+        public void enforceAuditLoggingPolicy(boolean enabled) {
+            if (!securityLogV2Enabled()) {
+                return;
+            }
+            Boolean securityLoggingEnabled = mDevicePolicyEngine.getResolvedPolicy(
+                    PolicyDefinition.SECURITY_LOGGING, UserHandle.USER_ALL);
+            enforceLoggingPolicy(Boolean.TRUE.equals(securityLoggingEnabled), enabled);
+        }
+
         private List<EnforcingUser> getEnforcingUsers(Set<EnforcingAdmin> admins) {
             List<EnforcingUser> enforcingUsers = new ArrayList();
             ComponentName deviceOwner = mOwners.getDeviceOwnerComponent();
@@ -15731,6 +15833,26 @@
         }
     }
 
+    private void enforceLoggingPolicy(
+            boolean securityLoggingEnabled, boolean auditLoggingEnabled) {
+        Slogf.i(LOG_TAG, "Enforcing logging policy, security: %b audit: %b",
+                securityLoggingEnabled, auditLoggingEnabled);
+        SecurityLog.setLoggingEnabledProperty(securityLoggingEnabled || auditLoggingEnabled);
+        setLoggingConfiguration(securityLoggingEnabled, auditLoggingEnabled);
+    }
+
+    private void setLoggingConfiguration(
+            boolean securityLoggingEnabled, boolean auditLoggingEnabled) {
+        final int loggingEnabledUser = getSecurityLoggingEnabledUser();
+        mSecurityLogMonitor.setLoggingParams(
+                loggingEnabledUser, securityLoggingEnabled, auditLoggingEnabled);
+        if (securityLoggingEnabled || auditLoggingEnabled) {
+            synchronized (getLockObject()) {
+                maybePauseDeviceWideLoggingLocked();
+            }
+        }
+    }
+
     private Intent createShowAdminSupportIntent(int userId) {
         // This method is called with AMS lock held, so don't take DPMS lock
         final Intent intent = new Intent(Settings.ACTION_SHOW_ADMIN_SUPPORT_DETAILS);
@@ -16173,7 +16295,7 @@
     @Override
     public void notifyPendingSystemUpdate(@Nullable SystemUpdateInfo info) {
         Preconditions.checkCallAuthorization(
-                hasCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE),
+                hasCallingOrSelfPermission(NOTIFY_PENDING_SYSTEM_UPDATE),
                 "Only the system update service can broadcast update information");
 
         mInjector.binderWithCleanCallingIdentity(() -> {
@@ -16214,12 +16336,21 @@
             }
             // Send broadcasts to corresponding profile owners if any.
             for (final int userId : runningUserIds) {
+                final ComponentName profileOwnerPackage;
                 synchronized (getLockObject()) {
-                    final ComponentName profileOwnerPackage =
-                            mOwners.getProfileOwnerComponent(userId);
-                    if (profileOwnerPackage != null) {
-                        intent.setComponent(profileOwnerPackage);
-                        mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
+                    profileOwnerPackage = mOwners.getProfileOwnerComponent(userId);
+                }
+                if (profileOwnerPackage != null) {
+                    intent.setComponent(profileOwnerPackage);
+                    mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
+                }
+
+                if (permissionMigrationForZeroTrustImplEnabled()) {
+                    final UserHandle user = UserHandle.of(userId);
+                    final String roleHolderPackage = getRoleHolderPackageNameOnUser(
+                            RoleManager.ROLE_DEVICE_POLICY_MANAGEMENT, userId);
+                    if (roleHolderPackage != null) {
+                        broadcastExplicitIntentToPackage(intent, roleHolderPackage, user);
                     }
                 }
             }
@@ -16227,13 +16358,19 @@
     }
 
     @Override
-    public SystemUpdateInfo getPendingSystemUpdate(ComponentName admin) {
-        Objects.requireNonNull(admin, "ComponentName is null");
+    public SystemUpdateInfo getPendingSystemUpdate(ComponentName admin, String callerPackage) {
+        if (permissionMigrationForZeroTrustImplEnabled()) {
+            CallerIdentity caller = getCallerIdentity(admin, callerPackage);
+            enforcePermissions(new String[] {NOTIFY_PENDING_SYSTEM_UPDATE,
+                    MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES}, caller.getPackageName(),
+                    caller.getUserId());
+        } else {
+            Objects.requireNonNull(admin, "ComponentName is null");
 
-        final CallerIdentity caller = getCallerIdentity(admin);
-        Preconditions.checkCallAuthorization(
-                isDefaultDeviceOwner(caller) || isProfileOwner(caller));
-
+            final CallerIdentity caller = getCallerIdentity(admin);
+            Preconditions.checkCallAuthorization(
+                    isDefaultDeviceOwner(caller) || isProfileOwner(caller));
+        }
         return mOwners.getSystemUpdateInfo();
     }
 
@@ -16921,7 +17058,7 @@
         CallerIdentity caller;
         ActiveAdmin admin;
 
-        message = truncateIfLonger(message, MAX_SHORT_SUPPORT_MESSAGE_LENGTH);
+        message = PolicySizeVerifier.truncateIfLonger(message, MAX_SHORT_SUPPORT_MESSAGE_LENGTH);
 
         if (isPermissionCheckFlagEnabled()) {
             caller = getCallerIdentity(who, callerPackageName);
@@ -16984,7 +17121,7 @@
             return;
         }
 
-        message = truncateIfLonger(message, MAX_LONG_SUPPORT_MESSAGE_LENGTH);
+        message = PolicySizeVerifier.truncateIfLonger(message, MAX_LONG_SUPPORT_MESSAGE_LENGTH);
 
         Objects.requireNonNull(who, "ComponentName is null");
         final CallerIdentity caller = getCallerIdentity(who);
@@ -17150,7 +17287,7 @@
             Preconditions.checkCallAuthorization(isDeviceOwner(caller) || isProfileOwner(caller));
         }
 
-        text = truncateIfLonger(text, MAX_ORG_NAME_LENGTH);
+        text = PolicySizeVerifier.truncateIfLonger(text, MAX_ORG_NAME_LENGTH);
 
         synchronized (getLockObject()) {
             if (!isPermissionCheckFlagEnabled()) {
@@ -17436,7 +17573,7 @@
         }
         for (String id : ids) {
             Preconditions.checkArgument(!TextUtils.isEmpty(id), "ids must not have empty string");
-            enforceMaxStringLength(id, "affiliation id");
+            PolicySizeVerifier.enforceMaxStringLength(id, "affiliation id");
         }
 
         final Set<String> affiliationIds = new ArraySet<>(ids);
@@ -17579,19 +17716,32 @@
     }
 
     @Override
-    public void setSecurityLoggingEnabled(ComponentName admin, String packageName,
+    public void setSecurityLoggingEnabled(ComponentName who, String packageName,
             boolean enabled) {
         if (!mHasFeature) {
             return;
         }
-        final CallerIdentity caller = getCallerIdentity(admin, packageName);
+        final CallerIdentity caller = getCallerIdentity(who, packageName);
 
-        synchronized (getLockObject()) {
-            if (isPermissionCheckFlagEnabled()) {
-                enforcePermission(MANAGE_DEVICE_POLICY_SECURITY_LOGGING, caller.getPackageName(),
-                        UserHandle.USER_ALL);
+        if (securityLogV2Enabled()) {
+            EnforcingAdmin admin = enforcePermissionAndGetEnforcingAdmin(
+                    who,
+                    MANAGE_DEVICE_POLICY_SECURITY_LOGGING,
+                    caller.getPackageName(),
+                    caller.getUserId());
+            if (enabled) {
+                mDevicePolicyEngine.setGlobalPolicy(
+                        PolicyDefinition.SECURITY_LOGGING,
+                        admin,
+                        new BooleanPolicyValue(true));
             } else {
-                if (admin != null) {
+                mDevicePolicyEngine.removeGlobalPolicy(
+                        PolicyDefinition.SECURITY_LOGGING,
+                        admin);
+            }
+        } else {
+            synchronized (getLockObject()) {
+                if (who != null) {
                     Preconditions.checkCallAuthorization(
                             isProfileOwnerOfOrganizationOwnedDevice(caller)
                                     || isDefaultDeviceOwner(caller));
@@ -17600,17 +17750,17 @@
                     Preconditions.checkCallAuthorization(
                             isCallerDelegate(caller, DELEGATION_SECURITY_LOGGING));
                 }
-            }
 
-            if (enabled == mInjector.securityLogGetLoggingEnabledProperty()) {
-                return;
-            }
-            mInjector.securityLogSetLoggingEnabledProperty(enabled);
-            if (enabled) {
-                mSecurityLogMonitor.start(getSecurityLoggingEnabledUser());
-                maybePauseDeviceWideLoggingLocked();
-            } else {
-                mSecurityLogMonitor.stop();
+                if (enabled == mInjector.securityLogGetLoggingEnabledProperty()) {
+                    return;
+                }
+                mInjector.securityLogSetLoggingEnabledProperty(enabled);
+                if (enabled) {
+                    mSecurityLogMonitor.start(getSecurityLoggingEnabledUser());
+                    maybePauseDeviceWideLoggingLocked();
+                } else {
+                    mSecurityLogMonitor.stop();
+                }
             }
         }
         DevicePolicyEventLogger
@@ -17626,26 +17776,36 @@
             return false;
         }
 
-        synchronized (getLockObject()) {
-            if (!isSystemUid(getCallerIdentity())) {
-                final CallerIdentity caller = getCallerIdentity(admin, packageName);
-                if (isPermissionCheckFlagEnabled()) {
-                    enforcePermission(MANAGE_DEVICE_POLICY_SECURITY_LOGGING,
-                            caller.getPackageName(), UserHandle.USER_ALL);
-                } else {
-                    if (admin != null) {
-                        Preconditions.checkCallAuthorization(
-                                isProfileOwnerOfOrganizationOwnedDevice(caller)
-                                        || isDefaultDeviceOwner(caller));
-                    } else {
-                        // A delegate app passes a null admin component, which is expected
-                        Preconditions.checkCallAuthorization(
-                                isCallerDelegate(caller, DELEGATION_SECURITY_LOGGING));
-                    }
-                }
-            }
+        final CallerIdentity caller = getCallerIdentity(admin, packageName);
+        if (isSystemUid(caller)) {
+            // Settings uses this for privacy transparency.
+            // TODO: create a separate @hidden API for settings.
             return mInjector.securityLogGetLoggingEnabledProperty();
         }
+
+        if (securityLogV2Enabled()) {
+            final EnforcingAdmin enforcingAdmin = enforcePermissionAndGetEnforcingAdmin(
+                    admin,
+                    MANAGE_DEVICE_POLICY_SECURITY_LOGGING,
+                    caller.getPackageName(),
+                    caller.getUserId());
+            final Boolean policy = mDevicePolicyEngine.getGlobalPolicySetByAdmin(
+                    PolicyDefinition.SECURITY_LOGGING, enforcingAdmin);
+            return Boolean.TRUE.equals(policy);
+        } else {
+            synchronized (getLockObject()) {
+                if (admin != null) {
+                    Preconditions.checkCallAuthorization(
+                            isProfileOwnerOfOrganizationOwnedDevice(caller)
+                                    || isDefaultDeviceOwner(caller));
+                } else {
+                    // A delegate app passes a null admin component, which is expected
+                    Preconditions.checkCallAuthorization(
+                            isCallerDelegate(caller, DELEGATION_SECURITY_LOGGING));
+                }
+                return mInjector.securityLogGetLoggingEnabledProperty();
+            }
+        }
     }
 
     private void recordSecurityLogRetrievalTime() {
@@ -17720,17 +17880,32 @@
         }
 
         final CallerIdentity caller = getCallerIdentity(admin, packageName);
-        if (isPermissionCheckFlagEnabled()) {
-            Preconditions.checkCallAuthorization(isOrganizationOwnedDeviceWithManagedProfile()
-                    || areAllUsersAffiliatedWithDeviceLocked());
 
-            enforcePermission(MANAGE_DEVICE_POLICY_SECURITY_LOGGING, caller.getPackageName(),
-                    UserHandle.USER_ALL);
+        if (securityLogV2Enabled()) {
+            EnforcingAdmin enforcingAdmin = enforcePermissionAndGetEnforcingAdmin(
+                    admin,
+                    MANAGE_DEVICE_POLICY_SECURITY_LOGGING,
+                    caller.getPackageName(),
+                    caller.getUserId());
+
+            synchronized (getLockObject()) {
+                Preconditions.checkCallAuthorization(isOrganizationOwnedDeviceWithManagedProfile()
+                        || areAllUsersAffiliatedWithDeviceLocked());
+            }
+
+            Boolean policy = mDevicePolicyEngine.getGlobalPolicySetByAdmin(
+                    PolicyDefinition.SECURITY_LOGGING, enforcingAdmin);
+
+            if (!Boolean.TRUE.equals(policy)) {
+                Slogf.e(LOG_TAG, "%s hasn't enabled security logging but tries to retrieve logs",
+                        caller.getPackageName());
+                return null;
+            }
         } else {
             if (admin != null) {
                 Preconditions.checkCallAuthorization(
                         isProfileOwnerOfOrganizationOwnedDevice(caller)
-                        || isDefaultDeviceOwner(caller));
+                                || isDefaultDeviceOwner(caller));
             } else {
                 // A delegate app passes a null admin component, which is expected
                 Preconditions.checkCallAuthorization(
@@ -17738,10 +17913,10 @@
             }
             Preconditions.checkCallAuthorization(isOrganizationOwnedDeviceWithManagedProfile()
                     || areAllUsersAffiliatedWithDeviceLocked());
-        }
 
-        if (!mInjector.securityLogGetLoggingEnabledProperty()) {
-            return null;
+            if (!mInjector.securityLogGetLoggingEnabledProperty()) {
+                return null;
+            }
         }
 
         recordSecurityLogRetrievalTime();
@@ -17751,7 +17926,83 @@
                 .createEvent(DevicePolicyEnums.RETRIEVE_SECURITY_LOGS)
                 .setAdmin(caller.getPackageName())
                 .write();
-        return logs != null ? new ParceledListSlice<SecurityEvent>(logs) : null;
+        return logs != null ? new ParceledListSlice<>(logs) : null;
+    }
+
+    @Override
+    public void setAuditLogEnabled(String callingPackage, boolean enabled) {
+        if (!mHasFeature) {
+            return;
+        }
+        final CallerIdentity caller = getCallerIdentity(callingPackage);
+
+        if (!securityLogV2Enabled()) {
+            throw new UnsupportedOperationException("Audit log not enabled");
+        }
+
+        EnforcingAdmin admin = enforcePermissionAndGetEnforcingAdmin(
+                null /* admin */,
+                MANAGE_DEVICE_POLICY_AUDIT_LOGGING,
+                caller.getPackageName(),
+                caller.getUserId());
+        if (enabled) {
+            mDevicePolicyEngine.setGlobalPolicy(
+                    PolicyDefinition.AUDIT_LOGGING,
+                    admin,
+                    new BooleanPolicyValue(true));
+        } else {
+            mDevicePolicyEngine.removeGlobalPolicy(
+                    PolicyDefinition.AUDIT_LOGGING,
+                    admin);
+            mSecurityLogMonitor.setAuditLogEventsCallback(caller.getUid(), null /* callback */);
+        }
+    }
+
+    @Override
+    public boolean isAuditLogEnabled(String callingPackage) {
+        if (!mHasFeature) {
+            return false;
+        }
+
+        if (!securityLogV2Enabled()) {
+            throw new UnsupportedOperationException("Audit log not enabled");
+        }
+
+        final CallerIdentity caller = getCallerIdentity(callingPackage);
+        EnforcingAdmin admin = enforcePermissionAndGetEnforcingAdmin(
+                null /* admin */,
+                MANAGE_DEVICE_POLICY_AUDIT_LOGGING,
+                caller.getPackageName(),
+                caller.getUserId());
+
+        Boolean policy = mDevicePolicyEngine.getGlobalPolicySetByAdmin(
+                PolicyDefinition.AUDIT_LOGGING, admin);
+
+        return Boolean.TRUE.equals(policy);
+    }
+
+    @Override
+    public void setAuditLogEventsCallback(String callingPackage, IAuditLogEventsCallback callback) {
+        if (!mHasFeature) {
+            return;
+        }
+
+        final CallerIdentity caller = getCallerIdentity(callingPackage);
+        EnforcingAdmin admin = enforcePermissionAndGetEnforcingAdmin(
+                null /* admin */,
+                MANAGE_DEVICE_POLICY_AUDIT_LOGGING,
+                caller.getPackageName(),
+                caller.getUserId());
+
+        Boolean policy = mDevicePolicyEngine.getGlobalPolicySetByAdmin(
+                PolicyDefinition.AUDIT_LOGGING, admin);
+
+        if (!Boolean.TRUE.equals(policy)) {
+            throw new IllegalStateException(
+                    "Managing app has to enable audit log before setting events callback");
+        }
+
+        mSecurityLogMonitor.setAuditLogEventsCallback(caller.getUid(), callback);
     }
 
     @Override
@@ -18983,7 +19234,7 @@
         Preconditions.checkArgument(!admin.getPackageName().equals(target.getPackageName()),
                 "Provided administrator and target have the same package name.");
         if (bundle != null) {
-            enforceMaxStringLength(bundle, "bundle");
+            PolicySizeVerifier.enforceMaxStringLength(bundle, "bundle");
         }
 
         final CallerIdentity caller = getCallerIdentity(admin);
@@ -20699,14 +20950,18 @@
         }
 
         final CallerIdentity caller = getCallerIdentity(callerPackage);
-        Preconditions.checkCallAuthorization(
-                isDefaultDeviceOwner(caller) || isProfileOwner(caller)
-                        || isCallerDelegate(caller, DELEGATION_CERT_INSTALL));
 
+        if (permissionMigrationForZeroTrustImplEnabled()) {
+            enforcePermission(MANAGE_DEVICE_POLICY_CERTIFICATES, caller.getPackageName());
+        } else {
+            Preconditions.checkCallAuthorization(
+                    isDefaultDeviceOwner(caller) || isProfileOwner(caller)
+                            || isCallerDelegate(caller, DELEGATION_CERT_INSTALL));
+        }
         synchronized (getLockObject()) {
             final ActiveAdmin requiredAdmin = getDeviceOrProfileOwnerAdminLocked(
                     caller.getUserId());
-            final String esid = requiredAdmin.mEnrollmentSpecificId;
+            final String esid = requiredAdmin != null ? requiredAdmin.mEnrollmentSpecificId : null;
             return esid != null ? esid : "";
         }
     }
@@ -21844,6 +22099,20 @@
     }
 
     @Override
+    public boolean isTheftDetectionTriggered(String callerPackageName) {
+        final CallerIdentity caller = getCallerIdentity(callerPackageName);
+        if (!android.app.admin.flags.Flags.deviceTheftImplEnabled()) {
+            return false;
+        }
+        enforcePermission(MANAGE_DEVICE_POLICY_THEFT_DETECTION, caller.getPackageName(),
+                caller.getUserId());
+
+        //STOPSHIP: replace 1<<9 with
+        // LockPatternUtils.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST once ag/26042068 lands
+        return 0 != (mLockPatternUtils.getStrongAuthForUser(caller.getUserId()) & (1 << 9));
+    }
+
+    @Override
     public void setWifiSsidPolicy(String callerPackageName, WifiSsidPolicy policy) {
         CallerIdentity caller;
 
@@ -22284,14 +22553,6 @@
         });
     }
 
-    // Permission that will need to be created in V.
-    private static final String MANAGE_DEVICE_POLICY_BLOCK_UNINSTALL =
-            "manage_device_policy_block_uninstall";
-    private static final String MANAGE_DEVICE_POLICY_CAMERA_TOGGLE =
-            "manage_device_policy_camera_toggle";
-    private static final String MANAGE_DEVICE_POLICY_MICROPHONE_TOGGLE =
-            "manage_device_policy_microphone_toggle";
-
     // DPC types
     private static final int NOT_A_DPC = -1;
     private static final int DEFAULT_DEVICE_OWNER = 0;
@@ -22330,6 +22591,7 @@
             MANAGE_DEVICE_POLICY_CAMERA,
             MANAGE_DEVICE_POLICY_CERTIFICATES,
             MANAGE_DEVICE_POLICY_COMMON_CRITERIA_MODE,
+            MANAGE_DEVICE_POLICY_CONTENT_PROTECTION,
             MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES,
             MANAGE_DEVICE_POLICY_DEFAULT_SMS,
             MANAGE_DEVICE_POLICY_DISPLAY,
@@ -22343,6 +22605,7 @@
             MANAGE_DEVICE_POLICY_LOCK,
             MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS,
             MANAGE_DEVICE_POLICY_LOCK_TASK,
+            MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS,
             MANAGE_DEVICE_POLICY_MICROPHONE,
             MANAGE_DEVICE_POLICY_MOBILE_NETWORK,
             MANAGE_DEVICE_POLICY_MODIFY_USERS,
@@ -22375,7 +22638,8 @@
             MANAGE_DEVICE_POLICY_WINDOWS,
             MANAGE_DEVICE_POLICY_WIPE_DATA,
             SET_TIME,
-            SET_TIME_ZONE
+            SET_TIME_ZONE,
+            MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES
     );
     private static final List<String> FINANCED_DEVICE_OWNER_PERMISSIONS = List.of(
             MANAGE_DEVICE_POLICY_ACROSS_USERS,
@@ -22413,6 +22677,7 @@
                     MANAGE_DEVICE_POLICY_CALLS,
                     MANAGE_DEVICE_POLICY_CAMERA,
                     MANAGE_DEVICE_POLICY_CERTIFICATES,
+                    MANAGE_DEVICE_POLICY_CONTENT_PROTECTION,
                     MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES,
                     MANAGE_DEVICE_POLICY_DISPLAY,
                     MANAGE_DEVICE_POLICY_FACTORY_RESET,
@@ -22423,7 +22688,7 @@
                     MANAGE_DEVICE_POLICY_LOCATION,
                     MANAGE_DEVICE_POLICY_LOCK,
                     MANAGE_DEVICE_POLICY_LOCK_CREDENTIALS,
-                    MANAGE_DEVICE_POLICY_CERTIFICATES,
+                    MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS,
                     MANAGE_DEVICE_POLICY_NEARBY_COMMUNICATION,
                     MANAGE_DEVICE_POLICY_ORGANIZATION_IDENTITY,
                     MANAGE_DEVICE_POLICY_PACKAGE_STATE,
@@ -22438,7 +22703,8 @@
                     MANAGE_DEVICE_POLICY_SYSTEM_DIALOGS,
                     MANAGE_DEVICE_POLICY_TIME,
                     MANAGE_DEVICE_POLICY_VPN,
-                    MANAGE_DEVICE_POLICY_WIPE_DATA
+                    MANAGE_DEVICE_POLICY_WIPE_DATA,
+                    MANAGE_DEVICE_POLICY_QUERY_SYSTEM_UPDATES
             );
 
     /**
@@ -23228,38 +23494,6 @@
         }
     }
 
-    private EnforcingAdmin enforceCanCallContentProtectionLocked(
-            ComponentName who, String callerPackageName) {
-        CallerIdentity caller = getCallerIdentity(who, callerPackageName);
-        final int userId = caller.getUserId();
-
-        EnforcingAdmin enforcingAdmin = enforcePermissionAndGetEnforcingAdmin(
-                who,
-                MANAGE_DEVICE_POLICY_CONTENT_PROTECTION,
-                caller.getPackageName(),
-                userId
-        );
-        if ((isDeviceOwner(caller) || isProfileOwner(caller))
-                && !canDPCManagedUserUseLockTaskLocked(userId)) {
-            throw new SecurityException(
-                    "User " + userId + " is not allowed to use content protection");
-        }
-        return enforcingAdmin;
-    }
-
-    private void enforceCanQueryContentProtectionLocked(
-            ComponentName who, String callerPackageName) {
-        CallerIdentity caller = getCallerIdentity(who, callerPackageName);
-        final int userId = caller.getUserId();
-
-        enforceCanQuery(MANAGE_DEVICE_POLICY_CONTENT_PROTECTION, caller.getPackageName(), userId);
-        if ((isDeviceOwner(caller) || isProfileOwner(caller))
-                && !canDPCManagedUserUseLockTaskLocked(userId)) {
-            throw new SecurityException(
-                    "User " + userId + " is not allowed to use content protection");
-        }
-    }
-
     @Override
     public void setContentProtectionPolicy(
             ComponentName who, String callerPackageName, @ContentProtectionPolicy int policy)
@@ -23269,24 +23503,21 @@
         }
 
         CallerIdentity caller = getCallerIdentity(who, callerPackageName);
+        int userId = caller.getUserId();
         checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_SET_CONTENT_PROTECTION_POLICY);
-
-        EnforcingAdmin enforcingAdmin;
-        synchronized (getLockObject()) {
-            enforcingAdmin = enforceCanCallContentProtectionLocked(who, caller.getPackageName());
-        }
+        EnforcingAdmin enforcingAdmin =
+                enforcePermissionAndGetEnforcingAdmin(
+                        who, MANAGE_DEVICE_POLICY_CONTENT_PROTECTION, callerPackageName, userId);
 
         if (policy == CONTENT_PROTECTION_DISABLED) {
             mDevicePolicyEngine.removeLocalPolicy(
-                    PolicyDefinition.CONTENT_PROTECTION,
-                    enforcingAdmin,
-                    caller.getUserId());
+                    PolicyDefinition.CONTENT_PROTECTION, enforcingAdmin, userId);
         } else {
             mDevicePolicyEngine.setLocalPolicy(
                     PolicyDefinition.CONTENT_PROTECTION,
                     enforcingAdmin,
                     new IntegerPolicyValue(policy),
-                    caller.getUserId());
+                    userId);
         }
     }
 
@@ -23298,13 +23529,11 @@
         }
 
         CallerIdentity caller = getCallerIdentity(who, callerPackageName);
-        final int userHandle = caller.getUserId();
+        int userId = caller.getUserId();
+        enforceCanQuery(MANAGE_DEVICE_POLICY_CONTENT_PROTECTION, callerPackageName, userId);
 
-        synchronized (getLockObject()) {
-            enforceCanQueryContentProtectionLocked(who, caller.getPackageName());
-        }
-        Integer policy = mDevicePolicyEngine.getResolvedPolicy(
-                PolicyDefinition.CONTENT_PROTECTION, userHandle);
+        Integer policy =
+                mDevicePolicyEngine.getResolvedPolicy(PolicyDefinition.CONTENT_PROTECTION, userId);
         if (policy == null) {
             return CONTENT_PROTECTION_DISABLED;
         } else {
@@ -23504,10 +23733,10 @@
                 hasCallingOrSelfPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS));
         return mInjector.binderWithCleanCallingIdentity(() -> {
             boolean canForceMigration = forceMigration && !hasNonTestOnlyActiveAdmins();
-            if (!canForceMigration && !shouldMigrateToDevicePolicyEngine()) {
+            if (!canForceMigration && !shouldMigrateV1ToDevicePolicyEngine()) {
                 return false;
             }
-            return migratePoliciesToDevicePolicyEngine();
+            return migrateV1PoliciesToDevicePolicyEngine();
         });
     }
 
@@ -23530,14 +23759,15 @@
         });
     }
 
-    private boolean shouldMigrateToDevicePolicyEngine() {
+    private boolean shouldMigrateV1ToDevicePolicyEngine() {
         return mInjector.binderWithCleanCallingIdentity(() -> !mOwners.isMigratedToPolicyEngine());
     }
 
     /**
+     * Migrates the initial set of policies to use policy engine.
      * @return {@code true} if policies were migrated successfully, {@code false} otherwise.
      */
-    private boolean migratePoliciesToDevicePolicyEngine() {
+    private boolean migrateV1PoliciesToDevicePolicyEngine() {
         return mInjector.binderWithCleanCallingIdentity(() -> {
             try {
                 synchronized (getLockObject()) {
@@ -23564,6 +23794,14 @@
         });
     }
 
+    /**
+     * Migrates the rest of policies to use policy engine.
+     */
+    @GuardedBy("getLockObject()")
+    private void migratePoliciesToPolicyEngineLocked() {
+        maybeMigrateSecurityLoggingPolicyLocked();
+    }
+
     private void migrateAutoTimezonePolicy() {
         Slogf.i(LOG_TAG, "Skipping Migration of AUTO_TIMEZONE policy to device policy engine,"
                 + "as no way to identify if the value was set by the admin or the user.");
@@ -23898,53 +24136,6 @@
         });
     }
 
-    /**
-     * Truncates char sequence to maximum length, nulls are ignored.
-     */
-    private static CharSequence truncateIfLonger(CharSequence input, int maxLength) {
-        return input == null || input.length() <= maxLength
-                ? input
-                : input.subSequence(0, maxLength);
-    }
-
-    /**
-     * Throw if string argument is too long to be serialized.
-     */
-    private static void enforceMaxStringLength(String str, String argName) {
-        Preconditions.checkArgument(
-                str.length() <= MAX_POLICY_STRING_LENGTH, argName + " loo long");
-    }
-
-    private static void enforceMaxPackageNameLength(String pkg) {
-        Preconditions.checkArgument(
-                pkg.length() <= MAX_PACKAGE_NAME_LENGTH, "Package name too long");
-    }
-
-    /**
-     * Throw if persistable bundle contains any string that we can't serialize.
-     */
-    private static void enforceMaxStringLength(PersistableBundle bundle, String argName) {
-        // Persistable bundles can have other persistable bundles as values, traverse with a queue.
-        Queue<PersistableBundle> queue = new ArrayDeque<>();
-        queue.add(bundle);
-        while (!queue.isEmpty()) {
-            PersistableBundle current = queue.remove();
-            for (String key : current.keySet()) {
-                enforceMaxStringLength(key, "key in " + argName);
-                Object value = current.get(key);
-                if (value instanceof String) {
-                    enforceMaxStringLength((String) value, "string value in " + argName);
-                } else if (value instanceof String[]) {
-                    for (String str : (String[]) value) {
-                        enforceMaxStringLength(str, "string value in " + argName);
-                    }
-                } else if (value instanceof PersistableBundle) {
-                    queue.add((PersistableBundle) value);
-                }
-            }
-        }
-    }
-
     private ActiveAdmin getActiveAdminForCaller(@Nullable ComponentName who,
             CallerIdentity caller) {
         synchronized (getLockObject()) {
@@ -24012,4 +24203,57 @@
             Slogf.d(LOG_TAG, "Unable to get stacktrace");
         }
     }
+
+    @Override
+    public int[] getSubscriptionIds(String callerPackageName) {
+        final CallerIdentity caller = getCallerIdentity(callerPackageName);
+        enforceCanQuery(
+                MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS,
+                caller.getPackageName(),
+                caller.getUserId());
+        return getSubscriptionIdsInternal(callerPackageName).toArray();
+    }
+
+    private IntArray getSubscriptionIdsInternal(String callerPackageName) {
+        SubscriptionManager subscriptionManager =
+                mContext.getSystemService(SubscriptionManager.class);
+        return mInjector.binderWithCleanCallingIdentity(() -> {
+            IntArray adminOwnedSubscriptions = new IntArray();
+            List<SubscriptionInfo> subs = subscriptionManager.getAvailableSubscriptionInfoList();
+            int subCount = (subs != null) ? subs.size() : 0;
+            for (int i = 0; i < subCount; i++) {
+                SubscriptionInfo sub = subs.get(i);
+                if (sub.getGroupOwner()
+                        .equals(callerPackageName)) {
+                    adminOwnedSubscriptions.add(sub.getSubscriptionId());
+                }
+            }
+            return adminOwnedSubscriptions;
+        });
+
+    }
+
+    @Override
+    public void setMaxPolicyStorageLimit(String callerPackageName, int storageLimit) {
+        if (!devicePolicySizeTrackingEnabled()) {
+            return;
+        }
+        CallerIdentity caller = getCallerIdentity(callerPackageName);
+        enforcePermission(MANAGE_PROFILE_AND_DEVICE_OWNERS, caller.getPackageName(),
+                caller.getUserId());
+
+        mDevicePolicyEngine.setMaxPolicyStorageLimit(storageLimit);
+    }
+
+    @Override
+    public int getMaxPolicyStorageLimit(String callerPackageName) {
+        if (!devicePolicySizeTrackingEnabled()) {
+            return -1;
+        }
+        CallerIdentity caller = getCallerIdentity(callerPackageName);
+        enforcePermission(MANAGE_PROFILE_AND_DEVICE_OWNERS, caller.getPackageName(),
+                caller.getUserId());
+
+        return mDevicePolicyEngine.getMaxPolicyStorageLimit();
+    }
 }
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
index bb275e45..c5a9888 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/Owners.java
@@ -616,6 +616,19 @@
         }
     }
 
+    void markSecurityLoggingMigrated() {
+        synchronized (mData) {
+            mData.mSecurityLoggingMigrated = true;
+            mData.writeDeviceOwner();
+        }
+    }
+
+    boolean isSecurityLoggingMigrated() {
+        synchronized (mData) {
+            return mData.mSecurityLoggingMigrated;
+        }
+    }
+
     @GuardedBy("mData")
     void pushToAppOpsLocked() {
         if (!mSystemReady) {
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java b/services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java
index 37d4f95..d9fef10 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/OwnersData.java
@@ -16,6 +16,7 @@
 package com.android.server.devicepolicy;
 
 import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_DEFAULT;
+import static android.app.admin.flags.Flags.securityLogV2Enabled;
 
 import android.annotation.Nullable;
 import android.app.admin.SystemUpdateInfo;
@@ -86,6 +87,7 @@
     private static final String ATTR_DEVICE_OWNER_TYPE_VALUE = "value";
 
     private static final String ATTR_MIGRATED_TO_POLICY_ENGINE = "migratedToPolicyEngine";
+    private static final String ATTR_SECURITY_LOG_MIGRATED = "securityLogMigrated";
 
     // Internal state for the device owner package.
     OwnerInfo mDeviceOwner;
@@ -113,6 +115,7 @@
     private final PolicyPathProvider mPathProvider;
 
     boolean mMigratedToPolicyEngine = false;
+    boolean mSecurityLoggingMigrated = false;
 
     OwnersData(PolicyPathProvider pathProvider) {
         mPathProvider = pathProvider;
@@ -397,6 +400,9 @@
 
             out.startTag(null, TAG_POLICY_ENGINE_MIGRATION);
             out.attributeBoolean(null, ATTR_MIGRATED_TO_POLICY_ENGINE, mMigratedToPolicyEngine);
+            if (securityLogV2Enabled()) {
+                out.attributeBoolean(null, ATTR_SECURITY_LOG_MIGRATED, mSecurityLoggingMigrated);
+            }
             out.endTag(null, TAG_POLICY_ENGINE_MIGRATION);
 
         }
@@ -457,6 +463,8 @@
                 case TAG_POLICY_ENGINE_MIGRATION:
                     mMigratedToPolicyEngine = parser.getAttributeBoolean(
                             null, ATTR_MIGRATED_TO_POLICY_ENGINE, false);
+                    mSecurityLoggingMigrated = securityLogV2Enabled()
+                            && parser.getAttributeBoolean(null, ATTR_SECURITY_LOG_MIGRATED, false);
                     break;
                 default:
                     Slog.e(TAG, "Unexpected tag: " + tag);
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
index 5996e42..1247f9002 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyDefinition.java
@@ -134,6 +134,20 @@
                         permissionName));
     }
 
+    static PolicyDefinition<Boolean> SECURITY_LOGGING = new PolicyDefinition<>(
+            new NoArgsPolicyKey(DevicePolicyIdentifiers.SECURITY_LOGGING_POLICY),
+            TRUE_MORE_RESTRICTIVE,
+            POLICY_FLAG_GLOBAL_ONLY_POLICY,
+            PolicyEnforcerCallbacks::enforceSecurityLogging,
+            new BooleanPolicySerializer());
+
+    static PolicyDefinition<Boolean> AUDIT_LOGGING = new PolicyDefinition<>(
+            new NoArgsPolicyKey(DevicePolicyIdentifiers.AUDIT_LOGGING_POLICY),
+            TRUE_MORE_RESTRICTIVE,
+            POLICY_FLAG_GLOBAL_ONLY_POLICY,
+            PolicyEnforcerCallbacks::enforceAuditLogging,
+            new BooleanPolicySerializer());
+
     static PolicyDefinition<LockTaskPolicy> LOCK_TASK = new PolicyDefinition<>(
             new NoArgsPolicyKey(DevicePolicyIdentifiers.LOCK_TASK_POLICY),
             new TopPriority<>(List.of(
@@ -356,6 +370,10 @@
         POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.AUTO_TIMEZONE_POLICY, AUTO_TIMEZONE);
         POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.PERMISSION_GRANT_POLICY,
                 GENERIC_PERMISSION_GRANT);
+        POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.SECURITY_LOGGING_POLICY,
+                SECURITY_LOGGING);
+        POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.AUDIT_LOGGING_POLICY,
+                AUDIT_LOGGING);
         POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.LOCK_TASK_POLICY, LOCK_TASK);
         POLICY_DEFINITIONS.put(DevicePolicyIdentifiers.USER_CONTROL_DISABLED_PACKAGES_POLICY,
                 USER_CONTROLLED_DISABLED_PACKAGES);
@@ -487,6 +505,7 @@
         USER_RESTRICTION_FLAGS.put(
                 UserManager.DISALLOW_SIM_GLOBALLY,
                 POLICY_FLAG_GLOBAL_ONLY_POLICY);
+        USER_RESTRICTION_FLAGS.put(UserManager.DISALLOW_ASSIST_CONTENT, /* flags= */ 0);
 
         for (String key : USER_RESTRICTION_FLAGS.keySet()) {
             createAndAddUserRestrictionPolicyDefinition(key, USER_RESTRICTION_FLAGS.get(key));
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
index 506dbe8..54242ab 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/PolicyEnforcerCallbacks.java
@@ -21,6 +21,7 @@
 import android.app.AppGlobals;
 import android.app.admin.DevicePolicyCache;
 import android.app.admin.DevicePolicyManager;
+import android.app.admin.DevicePolicyManagerInternal;
 import android.app.admin.IntentFilterPolicyKey;
 import android.app.admin.LockTaskPolicy;
 import android.app.admin.PackagePermissionPolicyKey;
@@ -127,6 +128,22 @@
         }
     }
 
+    static boolean enforceSecurityLogging(
+            @Nullable Boolean value, @NonNull Context context, int userId,
+            @NonNull PolicyKey policyKey) {
+        final var dpmi = LocalServices.getService(DevicePolicyManagerInternal.class);
+        dpmi.enforceSecurityLoggingPolicy(Boolean.TRUE.equals(value));
+        return true;
+    }
+
+    static boolean enforceAuditLogging(
+            @Nullable Boolean value, @NonNull Context context, int userId,
+            @NonNull PolicyKey policyKey) {
+        final var dpmi = LocalServices.getService(DevicePolicyManagerInternal.class);
+        dpmi.enforceAuditLoggingPolicy(Boolean.TRUE.equals(value));
+        return true;
+    }
+
     static boolean setLockTask(
             @Nullable LockTaskPolicy policy, @NonNull Context context, int userId) {
         List<String> packages = Collections.emptyList();
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/SecurityLogMonitor.java b/services/devicepolicy/java/com/android/server/devicepolicy/SecurityLogMonitor.java
index 939a3dc..02f3918 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/SecurityLogMonitor.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/SecurityLogMonitor.java
@@ -16,22 +16,32 @@
 
 package com.android.server.devicepolicy;
 
+import static android.app.admin.flags.Flags.securityLogV2Enabled;
+
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.concurrent.TimeUnit.NANOSECONDS;
 
 import android.app.admin.DeviceAdminReceiver;
+import android.app.admin.IAuditLogEventsCallback;
 import android.app.admin.SecurityLog;
 import android.app.admin.SecurityLog.SecurityEvent;
+import android.os.Handler;
+import android.os.IBinder;
 import android.os.Process;
+import android.os.RemoteException;
 import android.os.SystemClock;
 import android.util.Log;
 import android.util.Slog;
+import android.util.SparseArray;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.utils.Slogf;
 
 import java.io.IOException;
+import java.util.ArrayDeque;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.Semaphore;
 import java.util.concurrent.TimeUnit;
@@ -53,15 +63,11 @@
 
     private int mEnabledUser;
 
-    SecurityLogMonitor(DevicePolicyManagerService service) {
-        this(service, 0 /* id */);
-    }
-
-    @VisibleForTesting
-    SecurityLogMonitor(DevicePolicyManagerService service, long id) {
+    SecurityLogMonitor(DevicePolicyManagerService service, Handler handler) {
         mService = service;
-        mId = id;
+        mId = 0;
         mLastForceNanos = System.nanoTime();
+        mHandler = handler;
     }
 
     private static final boolean DEBUG = false;  // STOPSHIP if true.
@@ -101,6 +107,10 @@
     /** Minimum time between forced fetch attempts. */
     private static final long FORCE_FETCH_THROTTLE_NS = TimeUnit.SECONDS.toNanos(10);
 
+    /**
+     * Monitor thread is not null iff SecurityLogMonitor is running, i.e. started and not stopped.
+     * Pausing doesn't change it.
+     */
     @GuardedBy("mLock")
     private Thread mMonitorThread = null;
     @GuardedBy("mLock")
@@ -114,6 +124,9 @@
     @GuardedBy("mLock")
     private boolean mCriticalLevelLogged = false;
 
+    private boolean mLegacyLogEnabled;
+    private boolean mAuditLogEnabled;
+
     /**
      * Last events fetched from log to check for overlap between batches. We can leave it empty if
      * we are sure there will be no overlap anymore, e.g. when we get empty batch.
@@ -139,6 +152,40 @@
     private long mLastForceNanos = 0;
 
     /**
+     * Handler shared with DPMS.
+     */
+    private final Handler mHandler;
+
+    /**
+     * Oldest events get purged from audit log buffer if total number exceeds this value.
+     */
+    private static final int MAX_AUDIT_LOG_EVENTS = 10000;
+    /**
+     * Events older than this get purged from audit log buffer.
+     */
+    private static final long MAX_AUDIT_LOG_EVENT_AGE_NS = TimeUnit.HOURS.toNanos(8);
+
+    /**
+     * Audit log callbacks keyed by UID. The code should maintain the following invariant: all
+     * callbacks in this map have received (or are scheduled to receive) all events in
+     * mAuditLogEventsBuffer. To ensure this, before a callback is put into this map, it must be
+     * scheduled to receive all the events in the buffer, and conversely, before a new chunk of
+     * events is added to the buffer, it must be scheduled to be sent to all callbacks already in
+     * this list. All scheduling should happen on mHandler, so that they aren't reordered, and
+     * while holding the lock. This ensures that no callback misses an event or receives a duplicate
+     * or out of order events.
+     */
+    @GuardedBy("mLock")
+    private final SparseArray<IAuditLogEventsCallback> mAuditLogCallbacks = new SparseArray<>();
+
+    /**
+     * Audit log event buffer. It is shrunk automatically whenever either there are too many events
+     * or the oldest one is too old.
+     */
+    @GuardedBy("mLock")
+    private final ArrayDeque<SecurityEvent> mAuditLogEventBuffer = new ArrayDeque<>();
+
+    /**
      * Start security logging.
      *
      * @param enabledUser which user logging is enabled on, or USER_ALL to enable logging for all
@@ -147,19 +194,13 @@
     void start(int enabledUser) {
         Slog.i(TAG, "Starting security logging for user " + enabledUser);
         mEnabledUser = enabledUser;
-        SecurityLog.writeEvent(SecurityLog.TAG_LOGGING_STARTED);
         mLock.lock();
         try {
             if (mMonitorThread == null) {
-                mPendingLogs = new ArrayList<>();
-                mCriticalLevelLogged = false;
-                mId = 0;
-                mAllowedToRetrieve = false;
-                mNextAllowedRetrievalTimeMillis = -1;
-                mPaused = false;
-
-                mMonitorThread = new Thread(this);
-                mMonitorThread.start();
+                resetLegacyBufferLocked();
+                startMonitorThreadLocked();
+            } else {
+                Slog.i(TAG, "Security log monitor thread is already running");
             }
         } finally {
             mLock.unlock();
@@ -168,29 +209,82 @@
 
     void stop() {
         Slog.i(TAG, "Stopping security logging.");
-        SecurityLog.writeEvent(SecurityLog.TAG_LOGGING_STOPPED);
         mLock.lock();
         try {
             if (mMonitorThread != null) {
-                mMonitorThread.interrupt();
-                try {
-                    mMonitorThread.join(TimeUnit.SECONDS.toMillis(5));
-                } catch (InterruptedException e) {
-                    Log.e(TAG, "Interrupted while waiting for thread to stop", e);
-                }
-                // Reset state and clear buffer
-                mPendingLogs = new ArrayList<>();
-                mId = 0;
-                mAllowedToRetrieve = false;
-                mNextAllowedRetrievalTimeMillis = -1;
-                mPaused = false;
-                mMonitorThread = null;
+                stopMonitorThreadLocked();
+                resetLegacyBufferLocked();
             }
         } finally {
             mLock.unlock();
         }
     }
 
+    void setLoggingParams(int enabledUser, boolean legacyLogEnabled, boolean auditLogEnabled) {
+        Slogf.i(TAG, "Setting logging params, user = %d -> %d, legacy: %b -> %b, audit %b -> %b",
+                mEnabledUser, enabledUser, mLegacyLogEnabled, legacyLogEnabled, mAuditLogEnabled,
+                auditLogEnabled);
+        mLock.lock();
+        try {
+            mEnabledUser = enabledUser;
+            if (mMonitorThread == null && (legacyLogEnabled || auditLogEnabled)) {
+                startMonitorThreadLocked();
+            } else if (mMonitorThread != null && !legacyLogEnabled && !auditLogEnabled) {
+                stopMonitorThreadLocked();
+            }
+
+            if (mLegacyLogEnabled != legacyLogEnabled) {
+                resetLegacyBufferLocked();
+                mLegacyLogEnabled = legacyLogEnabled;
+            }
+
+            if (mAuditLogEnabled != auditLogEnabled) {
+                resetAuditBufferLocked();
+                mAuditLogEnabled = auditLogEnabled;
+            }
+        } finally {
+            mLock.unlock();
+        }
+
+    }
+
+    @GuardedBy("mLock")
+    private void startMonitorThreadLocked() {
+        mId = 0;
+        mPaused = false;
+        mMonitorThread = new Thread(this);
+        mMonitorThread.start();
+        SecurityLog.writeEvent(SecurityLog.TAG_LOGGING_STARTED);
+        Slog.i(TAG, "Security log monitor thread started");
+    }
+
+    @GuardedBy("mLock")
+    private void stopMonitorThreadLocked() {
+        mMonitorThread.interrupt();
+        try {
+            mMonitorThread.join(TimeUnit.SECONDS.toMillis(5));
+        } catch (InterruptedException e) {
+            Log.e(TAG, "Interrupted while waiting for thread to stop", e);
+        }
+        mMonitorThread = null;
+        SecurityLog.writeEvent(SecurityLog.TAG_LOGGING_STOPPED);
+    }
+
+    @GuardedBy("mLock")
+    private void resetLegacyBufferLocked() {
+        mPendingLogs = new ArrayList<>();
+        mCriticalLevelLogged = false;
+        mAllowedToRetrieve = false;
+        mNextAllowedRetrievalTimeMillis = -1;
+        Slog.i(TAG, "Legacy buffer reset.");
+    }
+
+    @GuardedBy("mLock")
+    private void resetAuditBufferLocked() {
+        mAuditLogEventBuffer.clear();
+        mAuditLogCallbacks.clear();
+    }
+
     /**
      * If logs are being collected, keep collecting them but stop notifying the device owner that
      * new logs are available (since they cannot be retrieved).
@@ -330,8 +424,7 @@
      */
     @GuardedBy("mLock")
     private void mergeBatchLocked(final ArrayList<SecurityEvent> newLogs) {
-        // Reserve capacity so that copying doesn't occur.
-        mPendingLogs.ensureCapacity(mPendingLogs.size() + newLogs.size());
+        List<SecurityEvent> dedupedLogs = new ArrayList<>();
         // Run through the first events of the batch to check if there is an overlap with previous
         // batch and if so, skip overlapping events. Events are sorted by timestamp, so we can
         // compare it in linear time by advancing two pointers, one for each batch.
@@ -350,8 +443,7 @@
             if (lastNanos > currentNanos) {
                 // New event older than the last we've seen so far, must be due to reordering.
                 if (DEBUG) Slog.d(TAG, "New event in the overlap: " + currentNanos);
-                assignLogId(curEvent);
-                mPendingLogs.add(curEvent);
+                dedupedLogs.add(curEvent);
                 curPos++;
             } else if (lastNanos < currentNanos) {
                 if (DEBUG) Slog.d(TAG, "Event disappeared from the overlap: " + lastNanos);
@@ -363,8 +455,7 @@
                     if (DEBUG) Slog.d(TAG, "Skipped dup event with timestamp: " + lastNanos);
                 } else {
                     // Wow, what a coincidence, or probably the clock is too coarse.
-                    assignLogId(curEvent);
-                    mPendingLogs.add(curEvent);
+                    dedupedLogs.add(curEvent);
                     if (DEBUG) Slog.d(TAG, "Event timestamp collision: " + lastNanos);
                 }
                 lastPos++;
@@ -372,12 +463,23 @@
             }
         }
         // Assign an id to the new logs, after the overlap with mLastEvents.
-        List<SecurityEvent> idLogs = newLogs.subList(curPos, newLogs.size());
-        for (SecurityEvent event : idLogs) {
+        dedupedLogs.addAll(newLogs.subList(curPos, newLogs.size()));
+        for (SecurityEvent event : dedupedLogs) {
             assignLogId(event);
         }
+
+        if (!securityLogV2Enabled() || mLegacyLogEnabled) {
+            addToLegacyBuffer(dedupedLogs);
+        }
+
+        if (securityLogV2Enabled() && mAuditLogEnabled) {
+            addAuditLogEvents(dedupedLogs);
+        }
+    }
+
+    private void addToLegacyBuffer(List<SecurityEvent> dedupedLogs) {
         // Save the rest of the new batch.
-        mPendingLogs.addAll(idLogs);
+        mPendingLogs.addAll(dedupedLogs);
 
         checkCriticalLevel();
 
@@ -445,7 +547,10 @@
 
                 saveLastEvents(newLogs);
                 newLogs.clear();
-                notifyDeviceOwnerOrProfileOwnerIfNeeded(force);
+
+                if (!securityLogV2Enabled() || mLegacyLogEnabled) {
+                    notifyDeviceOwnerOrProfileOwnerIfNeeded(force);
+                }
             } catch (IOException e) {
                 Log.e(TAG, "Failed to read security log", e);
             } catch (InterruptedException e) {
@@ -524,4 +629,121 @@
             return 0;
         }
     }
+
+    public void setAuditLogEventsCallback(int uid, IAuditLogEventsCallback callback) {
+        mLock.lock();
+        try {
+            if (callback == null) {
+                mAuditLogCallbacks.remove(uid);
+                Slogf.i(TAG, "Cleared audit log callback for UID %d", uid);
+                return;
+            }
+            // Create a copy while holding the lock, so that that new events are not added
+            // resulting in duplicates.
+            final List<SecurityEvent> events = new ArrayList<>(mAuditLogEventBuffer);
+            scheduleSendAuditLogs(uid, callback, events);
+            mAuditLogCallbacks.append(uid, callback);
+        } finally {
+            mLock.unlock();
+        }
+        Slogf.i(TAG, "Set audit log callback for UID %d", uid);
+    }
+
+    private void addAuditLogEvents(List<SecurityEvent> events) {
+        mLock.lock();
+        try {
+            if (mPaused) {
+                // TODO: maybe we need to stash the logs in some temp buffer wile paused so that
+                // they can be accessed after affiliation is fixed.
+                return;
+            }
+            if (!events.isEmpty()) {
+                for (int i = 0; i < mAuditLogCallbacks.size(); i++) {
+                    final int uid = mAuditLogCallbacks.keyAt(i);
+                    scheduleSendAuditLogs(uid, mAuditLogCallbacks.valueAt(i), events);
+                }
+            }
+            if (DEBUG) {
+                Slogf.d(TAG, "Adding audit %d events to % already present in the buffer",
+                        events.size(), mAuditLogEventBuffer.size());
+            }
+            mAuditLogEventBuffer.addAll(events);
+            trimAuditLogBufferLocked();
+            if (DEBUG) {
+                Slogf.d(TAG, "Audit event buffer size after trimming: %d",
+                        mAuditLogEventBuffer.size());
+            }
+        } finally {
+            mLock.unlock();
+        }
+    }
+
+    @GuardedBy("mLock")
+    private void trimAuditLogBufferLocked() {
+        long nowNanos = TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis());
+
+        final Iterator<SecurityEvent> iterator = mAuditLogEventBuffer.iterator();
+        while (iterator.hasNext()) {
+            final SecurityEvent event = iterator.next();
+            if (mAuditLogEventBuffer.size() <= MAX_AUDIT_LOG_EVENTS
+                    && nowNanos - event.getTimeNanos() <= MAX_AUDIT_LOG_EVENT_AGE_NS) {
+                break;
+            }
+
+            iterator.remove();
+        }
+    }
+
+    private void scheduleSendAuditLogs(
+            int uid, IAuditLogEventsCallback callback, List<SecurityEvent> events) {
+        if (DEBUG) {
+            Slogf.d(TAG, "Scheduling to send %d audit log events to UID %d", events.size(), uid);
+        }
+        mHandler.post(() -> sendAuditLogs(uid, callback, events));
+    }
+
+    private void sendAuditLogs(
+            int uid, IAuditLogEventsCallback callback, List<SecurityEvent> events) {
+        try {
+            final int size = events.size();
+            if (DEBUG) {
+                Slogf.d(TAG, "Sending %d audit log events to UID %d", size, uid);
+            }
+            callback.onNewAuditLogEvents(events);
+            if (DEBUG) {
+                Slogf.d(TAG, "Sent %d audit log events to UID %d", size, uid);
+            }
+        } catch (RemoteException e) {
+            Slogf.e(TAG, e, "Failed to invoke audit log callback for UID %d", uid);
+            removeAuditLogEventsCallbackIfDead(uid, callback);
+        }
+    }
+
+    private void removeAuditLogEventsCallbackIfDead(int uid, IAuditLogEventsCallback callback) {
+        final IBinder binder = callback.asBinder();
+        if (binder.isBinderAlive()) {
+            Slog.i(TAG, "Callback binder is still alive, not removing.");
+            return;
+        }
+
+        mLock.lock();
+        try {
+            int index = mAuditLogCallbacks.indexOfKey(uid);
+            if (index < 0) {
+                Slogf.i(TAG, "Callback not registered for UID %d, nothing to remove", uid);
+                return;
+            }
+
+            final IBinder storedBinder = mAuditLogCallbacks.valueAt(index).asBinder();
+            if (!storedBinder.equals(binder)) {
+                Slogf.i(TAG, "Callback is already replaced for UID %d, not removing", uid);
+                return;
+            }
+
+            Slogf.i(TAG, "Removing callback for UID %d", uid);
+            mAuditLogCallbacks.removeAt(index);
+        } finally {
+            mLock.unlock();
+        }
+    }
 }
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index c55d709..ee758db 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -48,7 +48,6 @@
 import android.content.res.Configuration;
 import android.content.res.Resources.Theme;
 import android.credentials.CredentialManager;
-import android.credentials.flags.Flags;
 import android.database.sqlite.SQLiteCompatibilityWalFlags;
 import android.database.sqlite.SQLiteGlobal;
 import android.graphics.GraphicsStatsService;
@@ -108,6 +107,7 @@
 import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.widget.ILockSettings;
 import com.android.internal.widget.LockSettingsInternal;
+import com.android.server.adaptiveauth.AdaptiveAuthService;
 import com.android.server.am.ActivityManagerService;
 import com.android.server.appbinding.AppBindingService;
 import com.android.server.appop.AppOpMigrationHelper;
@@ -464,6 +464,11 @@
     private static final String DEVICE_LOCK_APEX_PATH =
             "/apex/com.android.devicelock/javalib/service-devicelock.jar";
 
+    private static final String PROFILING_SERVICE_LIFECYCLE_CLASS =
+            "android.os.profiling.ProfilingService$Lifecycle";
+    private static final String PROFILING_SERVICE_JAR_PATH =
+            "/apex/com.android.profiling/javalib/service-profiling.jar";
+
     private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector";
 
     private static final String PERSISTENT_DATA_BLOCK_PROP = "ro.frp.pst";
@@ -2611,6 +2616,12 @@
             mSystemServiceManager.startService(AuthService.class);
             t.traceEnd();
 
+            if (android.adaptiveauth.Flags.enableAdaptiveAuth()) {
+                t.traceBegin("StartAdaptiveAuthService");
+                mSystemServiceManager.startService(AdaptiveAuthService.class);
+                t.traceEnd();
+            }
+
             if (!isWatch) {
                 // We don't run this on watches as there are no plans to use the data logged
                 // on watch devices.
@@ -2774,6 +2785,14 @@
         mSystemServiceManager.startService(ON_DEVICE_PERSONALIZATION_SYSTEM_SERVICE_CLASS);
         t.traceEnd();
 
+        // Profiling
+        if (android.server.Flags.telemetryApisService()) {
+            t.traceBegin("StartProfilingCompanion");
+            mSystemServiceManager.startServiceFromJar(PROFILING_SERVICE_LIFECYCLE_CLASS,
+                    PROFILING_SERVICE_JAR_PATH);
+            t.traceEnd();
+        }
+
         if (safeMode) {
             mActivityManagerService.enterSafeMode();
         }
@@ -3002,7 +3021,8 @@
             t.traceEnd();
         }
 
-        if (com.android.server.notification.Flags.sensitiveNotificationAppProtection()) {
+        if (android.permission.flags.Flags.sensitiveNotificationAppProtection()
+                || android.view.flags.Flags.sensitiveContentAppProtection()) {
             t.traceBegin("StartSensitiveContentProtectionManager");
             mSystemServiceManager.startService(SensitiveContentProtectionManagerService.class);
             t.traceEnd();
diff --git a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
index 5588276..cb3ee73 100644
--- a/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt
@@ -46,6 +46,7 @@
 import com.android.server.pm.parsing.PackageInfoUtils
 import com.android.server.pm.pkg.AndroidPackage
 import com.android.server.pm.pkg.PackageState
+import libcore.util.EmptyArray
 
 class AppIdPermissionPolicy : SchemePolicy() {
     private val persistence = AppIdPermissionPersistence()
@@ -73,40 +74,42 @@
     }
 
     override fun MutateStateScope.onInitialized() {
-        newState.externalState.configPermissions.forEach { (permissionName, permissionEntry) ->
-            val oldPermission = newState.systemState.permissions[permissionName]
-            val newPermission =
-                if (oldPermission != null) {
-                    if (permissionEntry.gids != null) {
-                        oldPermission.copy(
-                            gids = permissionEntry.gids,
-                            areGidsPerUser = permissionEntry.perUser
-                        )
-                    } else {
-                        return@forEach
-                    }
-                } else {
-                    @Suppress("DEPRECATION")
-                    val permissionInfo =
-                        PermissionInfo().apply {
-                            name = permissionName
-                            packageName = PLATFORM_PACKAGE_NAME
-                            protectionLevel = PermissionInfo.PROTECTION_SIGNATURE
+        if (!Flags.newPermissionGidEnabled()) {
+            newState.externalState.configPermissions.forEach { (permissionName, permissionEntry) ->
+                val oldPermission = newState.systemState.permissions[permissionName]
+                val newPermission =
+                    if (oldPermission != null) {
+                        if (permissionEntry.gids != null) {
+                            oldPermission.copy(
+                                gids = permissionEntry.gids,
+                                areGidsPerUser = permissionEntry.perUser
+                            )
+                        } else {
+                            return@forEach
                         }
-                    if (permissionEntry.gids != null) {
-                        Permission(
-                            permissionInfo,
-                            false,
-                            Permission.TYPE_CONFIG,
-                            0,
-                            permissionEntry.gids,
-                            permissionEntry.perUser
-                        )
                     } else {
-                        Permission(permissionInfo, false, Permission.TYPE_CONFIG, 0)
+                        @Suppress("DEPRECATION")
+                        val permissionInfo =
+                            PermissionInfo().apply {
+                                name = permissionName
+                                packageName = PLATFORM_PACKAGE_NAME
+                                protectionLevel = PermissionInfo.PROTECTION_SIGNATURE
+                            }
+                        if (permissionEntry.gids != null) {
+                            Permission(
+                                permissionInfo,
+                                false,
+                                Permission.TYPE_CONFIG,
+                                0,
+                                permissionEntry.gids,
+                                permissionEntry.perUser
+                            )
+                        } else {
+                            Permission(permissionInfo, false, Permission.TYPE_CONFIG, 0)
+                        }
                     }
-                }
-            newState.mutateSystemState().mutatePermissions()[permissionName] = newPermission
+                newState.mutateSystemState().mutatePermissions()[permissionName] = newPermission
+            }
         }
     }
 
@@ -459,7 +462,7 @@
                 )
                 return@forEachIndexed
             }
-            val newPermission =
+            var newPermission =
                 if (oldPermission != null && newPackageName != oldPermission.packageName) {
                     val oldPackageName = oldPermission.packageName
                     // Only allow system apps to redefine non-system permissions.
@@ -582,6 +585,24 @@
                         )
                     }
                 }
+            if (Flags.newPermissionGidEnabled()) {
+                var gids = EmptyArray.INT
+                var areGidsPerUser = false
+                if (!parsedPermission.isTree && packageState.isSystem) {
+                    newState.externalState.configPermissions[permissionName]?.let {
+                        gids = it.gids
+                        areGidsPerUser = it.perUser
+                    }
+                }
+                newPermission = Permission(
+                    newPermissionInfo,
+                    true,
+                    Permission.TYPE_MANIFEST,
+                    packageState.appId,
+                    gids,
+                    areGidsPerUser
+                )
+            }
 
             if (parsedPermission.isTree) {
                 newState.mutateSystemState().mutatePermissionTrees()[permissionName] = newPermission
diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
index 2f5c109..0704c8f 100644
--- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
+++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt
@@ -466,7 +466,7 @@
         return size
     }
 
-    override fun checkUidPermission(uid: Int, permissionName: String, deviceId: Int): Int {
+    override fun checkUidPermission(uid: Int, permissionName: String, deviceId: String): Int {
         val userId = UserHandle.getUserId(uid)
         if (!userManagerInternal.exists(userId)) {
             return PackageManager.PERMISSION_DENIED
@@ -489,15 +489,9 @@
                 return PackageManager.PERMISSION_DENIED
             }
 
-            val persistentDeviceId = getPersistentDeviceId(deviceId)
-            if (persistentDeviceId == null) {
-                Slog.e(LOG_TAG, "Cannot find persistent device id for $deviceId.")
-                return PackageManager.PERMISSION_DENIED
-            }
-
             val isPermissionGranted =
                 service.getState {
-                    isPermissionGranted(packageState, userId, permissionName, persistentDeviceId)
+                    isPermissionGranted(packageState, userId, permissionName, deviceId)
                 }
             return if (isPermissionGranted) {
                 PackageManager.PERMISSION_GRANTED
@@ -531,7 +525,7 @@
     override fun checkPermission(
         packageName: String,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int
     ): Int {
         if (!userManagerInternal.exists(userId)) {
@@ -545,9 +539,7 @@
                 ?: return PackageManager.PERMISSION_DENIED
 
         val isPermissionGranted =
-            service.getState {
-                isPermissionGranted(packageState, userId, permissionName, persistentDeviceId)
-            }
+            service.getState { isPermissionGranted(packageState, userId, permissionName, deviceId) }
         return if (isPermissionGranted) {
             PackageManager.PERMISSION_GRANTED
         } else {
@@ -565,21 +557,13 @@
         packageState: PackageState,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String
+        deviceId: String
     ): Boolean {
         val appId = packageState.appId
         // Note that instant apps can't have shared UIDs, so we only need to check the current
         // package state.
         val isInstantApp = packageState.getUserStateOrDefault(userId).isInstantApp
-        if (
-            isSinglePermissionGranted(
-                appId,
-                userId,
-                isInstantApp,
-                permissionName,
-                persistentDeviceId
-            )
-        ) {
+        if (isSinglePermissionGranted(appId, userId, isInstantApp, permissionName, deviceId)) {
             return true
         }
 
@@ -591,7 +575,7 @@
                     userId,
                     isInstantApp,
                     fullerPermissionName,
-                    persistentDeviceId
+                    deviceId
                 )
         ) {
             return true
@@ -606,9 +590,9 @@
         userId: Int,
         isInstantApp: Boolean,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
     ): Boolean {
-        val flags = getPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId)
+        val flags = getPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId)
         if (!PermissionFlags.isPermissionGranted(flags)) {
             return false
         }
@@ -689,22 +673,16 @@
     override fun grantRuntimePermission(
         packageName: String,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int
     ) {
-        setRuntimePermissionGranted(
-            packageName,
-            userId,
-            permissionName,
-            persistentDeviceId,
-            isGranted = true
-        )
+        setRuntimePermissionGranted(packageName, userId, permissionName, deviceId, isGranted = true)
     }
 
     override fun revokeRuntimePermission(
         packageName: String,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int,
         reason: String?
     ) {
@@ -712,7 +690,7 @@
             packageName,
             userId,
             permissionName,
-            persistentDeviceId,
+            deviceId,
             isGranted = false,
             revokeReason = reason
         )
@@ -740,7 +718,7 @@
         packageName: String,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         isGranted: Boolean,
         skipKillUid: Boolean = false,
         revokeReason: String? = null
@@ -765,7 +743,7 @@
                     (if (isGranted) "" else "skipKillUid = $skipKillUid, reason = $revokeReason") +
                     ", userId = $userId," +
                     " callingUid = $callingUidName ($callingUid))," +
-                    " persistentDeviceId = $persistentDeviceId",
+                    " deviceId = $deviceId",
                 RuntimeException()
             )
         }
@@ -835,7 +813,7 @@
                 packageState,
                 userId,
                 permissionName,
-                persistentDeviceId,
+                deviceId,
                 isGranted,
                 canManageRolePermission,
                 overridePolicyFixed,
@@ -923,7 +901,7 @@
         packageState: PackageState,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         isGranted: Boolean,
         canManageRolePermission: Boolean,
         overridePolicyFixed: Boolean,
@@ -982,8 +960,7 @@
         }
 
         val appId = packageState.appId
-        val oldFlags =
-            getPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId)
+        val oldFlags = getPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId)
 
         if (permissionName !in androidPackage.requestedPermissions && oldFlags == 0) {
             if (reportError) {
@@ -1055,7 +1032,7 @@
             return
         }
 
-        setPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId, newFlags)
+        setPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId, newFlags)
 
         if (permission.isRuntime) {
             val action =
@@ -1089,7 +1066,7 @@
     override fun getPermissionFlags(
         packageName: String,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int,
     ): Int {
         if (!userManagerInternal.exists(userId)) {
@@ -1125,12 +1102,7 @@
             }
 
             val flags =
-                getPermissionFlagsWithPolicy(
-                    packageState.appId,
-                    userId,
-                    permissionName,
-                    persistentDeviceId
-                )
+                getPermissionFlagsWithPolicy(packageState.appId, userId, permissionName, deviceId)
 
             return PermissionFlags.toApiFlags(flags)
         }
@@ -1138,7 +1110,7 @@
 
     override fun getAllPermissionStates(
         packageName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int
     ): Map<String, PermissionState> {
         if (!userManagerInternal.exists(userId)) {
@@ -1165,14 +1137,15 @@
 
         val permissionFlagsMap =
             service.getState {
-                if (persistentDeviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT) {
+                if (deviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT) {
                     with(policy) { getAllPermissionFlags(packageState.appId, userId) }
                 } else {
                     with(devicePolicy) {
-                        getAllPermissionFlags(packageState.appId, persistentDeviceId, userId)
+                        getAllPermissionFlags(packageState.appId, deviceId, userId)
                     }
                 }
-            } ?: return emptyMap()
+            }
+                ?: return emptyMap()
 
         val permissionStates = ArrayMap<String, PermissionState>()
         permissionFlagsMap.forEachIndexed { _, permissionName, flags ->
@@ -1186,7 +1159,7 @@
     override fun isPermissionRevokedByPolicy(
         packageName: String,
         permissionName: String,
-        deviceId: Int,
+        deviceId: String,
         userId: Int
     ): Boolean {
         if (!userManagerInternal.exists(userId)) {
@@ -1207,24 +1180,13 @@
             }
                 ?: return false
 
-        val persistentDeviceId = getPersistentDeviceId(deviceId)
-        if (persistentDeviceId == null) {
-            Slog.w(LOG_TAG, "Cannot find persistent device Id for $deviceId")
-            return false
-        }
-
         service.getState {
-            if (isPermissionGranted(packageState, userId, permissionName, persistentDeviceId)) {
+            if (isPermissionGranted(packageState, userId, permissionName, deviceId)) {
                 return false
             }
 
             val flags =
-                getPermissionFlagsWithPolicy(
-                    packageState.appId,
-                    userId,
-                    permissionName,
-                    persistentDeviceId
-                )
+                getPermissionFlagsWithPolicy(packageState.appId, userId, permissionName, deviceId)
 
             return flags.hasBits(PermissionFlags.POLICY_FIXED)
         }
@@ -1248,7 +1210,7 @@
     override fun shouldShowRequestPermissionRationale(
         packageName: String,
         permissionName: String,
-        deviceId: Int,
+        deviceId: String,
         userId: Int,
     ): Boolean {
         if (!userManagerInternal.exists(userId)) {
@@ -1274,19 +1236,13 @@
             return false
         }
 
-        val persistentDeviceId = getPersistentDeviceId(deviceId)
-        if (persistentDeviceId == null) {
-            Slog.w(LOG_TAG, "Cannot find persistent device Id for $deviceId")
-            return false
-        }
-
         val flags: Int
         service.getState {
-            if (isPermissionGranted(packageState, userId, permissionName, persistentDeviceId)) {
+            if (isPermissionGranted(packageState, userId, permissionName, deviceId)) {
                 return false
             }
 
-            flags = getPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId)
+            flags = getPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId)
         }
         if (flags.hasAnyBit(UNREQUESTABLE_MASK)) {
             return false
@@ -1325,7 +1281,7 @@
         flagMask: Int,
         flagValues: Int,
         enforceAdjustPolicyPermission: Boolean,
-        persistentDeviceId: String,
+        deviceId: String,
         userId: Int
     ) {
         val callingUid = Binder.getCallingUid()
@@ -1351,7 +1307,7 @@
                 "updatePermissionFlags(packageName = $packageName," +
                     " permissionName = $permissionName, flagMask = $flagMaskString," +
                     " flagValues = $flagValuesString, userId = $userId," +
-                    " persistentDeviceId = $persistentDeviceId," +
+                    " deviceId = $deviceId," +
                     " callingUid = $callingUidName ($callingUid))",
                 RuntimeException()
             )
@@ -1441,7 +1397,7 @@
                 appId,
                 userId,
                 permissionName,
-                persistentDeviceId,
+                deviceId,
                 flagMask,
                 flagValues,
                 canUpdateSystemFlags,
@@ -1527,7 +1483,7 @@
         appId: Int,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         flagMask: Int,
         flagValues: Int,
         canUpdateSystemFlags: Boolean,
@@ -1561,8 +1517,7 @@
             return
         }
 
-        val oldFlags =
-            getPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId)
+        val oldFlags = getPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId)
         if (!isPermissionRequested && oldFlags == 0) {
             Slog.w(
                 LOG_TAG,
@@ -1573,7 +1528,7 @@
         }
 
         val newFlags = PermissionFlags.updateFlags(permission, oldFlags, flagMask, flagValues)
-        setPermissionFlagsWithPolicy(appId, userId, permissionName, persistentDeviceId, newFlags)
+        setPermissionFlagsWithPolicy(appId, userId, permissionName, deviceId, newFlags)
     }
 
     override fun getAllowlistedRestrictedPermissions(
@@ -1648,11 +1603,11 @@
         appId: Int,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
     ): Int {
         return if (
             !Flags.deviceAwarePermissionApisEnabled() ||
-                persistentDeviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
+                deviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
         ) {
             with(policy) { getPermissionFlags(appId, userId, permissionName) }
         } else {
@@ -1664,9 +1619,7 @@
                 )
                 return with(policy) { getPermissionFlags(appId, userId, permissionName) }
             }
-            with(devicePolicy) {
-                getPermissionFlags(appId, persistentDeviceId, userId, permissionName)
-            }
+            with(devicePolicy) { getPermissionFlags(appId, deviceId, userId, permissionName) }
         }
     }
 
@@ -1674,12 +1627,12 @@
         appId: Int,
         userId: Int,
         permissionName: String,
-        persistentDeviceId: String,
+        deviceId: String,
         flags: Int
     ): Boolean {
         return if (
             !Flags.deviceAwarePermissionApisEnabled() ||
-                persistentDeviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
+                deviceId == VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
         ) {
             with(policy) { setPermissionFlags(appId, userId, permissionName, flags) }
         } else {
@@ -1693,23 +1646,11 @@
             }
 
             with(devicePolicy) {
-                setPermissionFlags(appId, persistentDeviceId, userId, permissionName, flags)
+                setPermissionFlags(appId, deviceId, userId, permissionName, flags)
             }
         }
     }
 
-    private fun getPersistentDeviceId(deviceId: Int): String? {
-        if (deviceId == Context.DEVICE_ID_DEFAULT) {
-            return VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
-        }
-
-        if (virtualDeviceManagerInternal == null) {
-            virtualDeviceManagerInternal =
-                LocalServices.getService(VirtualDeviceManagerInternal::class.java)
-        }
-        return virtualDeviceManagerInternal?.getPersistentIdForDevice(deviceId)
-    }
-
     /**
      * This method does not enforce checks on the caller, should only be called after required
      * checks.
@@ -2270,9 +2211,9 @@
 
                     userState.appIdDevicePermissionFlags[appId]?.forEachIndexed {
                         _,
-                        persistentDeviceId,
+                        deviceId,
                         devicePermissionFlags ->
-                        println("Permissions (Device $persistentDeviceId):")
+                        println("Permissions (Device $deviceId):")
                         withIndent {
                             devicePermissionFlags.forEachIndexed { _, permissionName, flags ->
                                 val isGranted = PermissionFlags.isPermissionGranted(flags)
@@ -2415,9 +2356,8 @@
                 with(devicePolicy) { trimDevicePermissionStates(persistentDeviceIds) }
             }
         }
-        virtualDeviceManagerInternal?.registerPersistentDeviceIdRemovedListener { persistentDeviceId
-            ->
-            service.mutateState { with(devicePolicy) { onDeviceIdRemoved(persistentDeviceId) } }
+        virtualDeviceManagerInternal?.registerPersistentDeviceIdRemovedListener { deviceId ->
+            service.mutateState { with(devicePolicy) { onDeviceIdRemoved(deviceId) } }
         }
 
         permissionControllerManager =
@@ -2764,7 +2704,7 @@
         override fun onDevicePermissionFlagsChanged(
             appId: Int,
             userId: Int,
-            persistentDeviceId: String,
+            deviceId: String,
             permissionName: String,
             oldFlags: Int,
             newFlags: Int
@@ -2787,8 +2727,7 @@
                         permissionName in NOTIFICATIONS_PERMISSIONS &&
                             runtimePermissionRevokedUids.get(uid, true)
                 }
-                runtimePermissionChangedUidDevices.getOrPut(uid) { mutableSetOf() } +=
-                    persistentDeviceId
+                runtimePermissionChangedUidDevices.getOrPut(uid) { mutableSetOf() } += deviceId
             }
 
             if (permission.hasGids && !wasPermissionGranted && isPermissionGranted) {
@@ -2803,8 +2742,8 @@
             }
 
             runtimePermissionChangedUidDevices.forEachIndexed { _, uid, persistentDeviceIds ->
-                persistentDeviceIds.forEach { persistentDeviceId ->
-                    onPermissionsChangeListeners.onPermissionsChanged(uid, persistentDeviceId)
+                persistentDeviceIds.forEach { deviceId ->
+                    onPermissionsChangeListeners.onPermissionsChanged(uid, deviceId)
                 }
             }
             runtimePermissionChangedUidDevices.clear()
@@ -2844,8 +2783,11 @@
 
         private fun isAppBackupAndRestoreRunning(uid: Int): Boolean {
             if (
-                checkUidPermission(uid, Manifest.permission.BACKUP, Context.DEVICE_ID_DEFAULT) !=
-                    PackageManager.PERMISSION_GRANTED
+                checkUidPermission(
+                    uid,
+                    Manifest.permission.BACKUP,
+                    VirtualDeviceManager.PERSISTENT_DEVICE_ID_DEFAULT
+                ) != PackageManager.PERMISSION_GRANTED
             ) {
                 return false
             }
@@ -2879,16 +2821,16 @@
             when (msg.what) {
                 MSG_ON_PERMISSIONS_CHANGED -> {
                     val uid = msg.arg1
-                    val persistentDeviceId = msg.obj as String
-                    handleOnPermissionsChanged(uid, persistentDeviceId)
+                    val deviceId = msg.obj as String
+                    handleOnPermissionsChanged(uid, deviceId)
                 }
             }
         }
 
-        private fun handleOnPermissionsChanged(uid: Int, persistentDeviceId: String) {
+        private fun handleOnPermissionsChanged(uid: Int, deviceId: String) {
             listeners.broadcast { listener ->
                 try {
-                    listener.onPermissionsChanged(uid, persistentDeviceId)
+                    listener.onPermissionsChanged(uid, deviceId)
                 } catch (e: RemoteException) {
                     Slog.e(LOG_TAG, "Error when calling OnPermissionsChangeListener", e)
                 }
@@ -2903,9 +2845,9 @@
             listeners.unregister(listener)
         }
 
-        fun onPermissionsChanged(uid: Int, persistentDeviceId: String) {
+        fun onPermissionsChanged(uid: Int, deviceId: String) {
             if (listeners.registeredCallbackCount > 0) {
-                obtainMessage(MSG_ON_PERMISSIONS_CHANGED, uid, 0, persistentDeviceId).sendToTarget()
+                obtainMessage(MSG_ON_PERMISSIONS_CHANGED, uid, 0, deviceId).sendToTarget()
             }
         }
 
@@ -2958,7 +2900,7 @@
         /** These permissions are supported for virtual devices. */
         // TODO: b/298661870 - Use new API to get the list of device aware permissions.
         val DEVICE_AWARE_PERMISSIONS =
-            if (Flags.deviceAwarePermissionApisEnabled()) {
+            if (Flags.deviceAwarePermissionsEnabled()) {
                 setOf(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO)
             } else {
                 emptySet<String>()
diff --git a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
index cfe701f..d4b57f1 100644
--- a/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
+++ b/services/tests/PackageManagerServiceTests/unit/src/com/android/server/pm/test/parsing/parcelling/AndroidPackageTest.kt
@@ -273,7 +273,8 @@
         AndroidPackage::hasRequestForegroundServiceExemption,
         AndroidPackage::hasRequestRawExternalStorageAccess,
         AndroidPackage::isUpdatableSystem,
-        AndroidPackage::getEmergencyInstaller
+        AndroidPackage::getEmergencyInstaller,
+        AndroidPackage::isAllowCrossUidActivitySwitchFromBelow,
     )
 
     override fun extraParams() = listOf(
diff --git a/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayPolicyTest.java b/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayPolicyTest.java
index fea431c..1529a08 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayPolicyTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayPolicyTest.java
@@ -25,6 +25,7 @@
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
@@ -97,6 +98,8 @@
     private LogicalDisplay mMockedLogicalDisplay;
     @Mock
     private DisplayNotificationManager mMockedDisplayNotificationManager;
+    @Mock
+    private ExternalDisplayStatsService mMockedExternalDisplayStatsService;
     @Captor
     private ArgumentCaptor<IThermalEventListener> mThermalEventListenerCaptor;
     @Captor
@@ -126,6 +129,8 @@
         when(mMockedInjector.getDisplayNotificationManager()).thenReturn(
                 mMockedDisplayNotificationManager);
         when(mMockedInjector.getHandler()).thenReturn(mHandler);
+        when(mMockedInjector.getExternalDisplayStatsService())
+                .thenReturn(mMockedExternalDisplayStatsService);
         mExternalDisplayPolicy = new ExternalDisplayPolicy(mMockedInjector);
 
         // Initialize mocked logical display
@@ -178,12 +183,47 @@
         assertDisplaySetEnabled(/*enabled=*/ false);
         // Expected only 1 invocation, upon critical temperature.
         verify(mMockedDisplayNotificationManager).onHighTemperatureExternalDisplayNotAllowed();
+        verify(mMockedExternalDisplayStatsService).onDisplayDisabled(eq(EXTERNAL_DISPLAY_ID));
     }
 
     @Test
-    public void testSetEnabledExternalDisplay(@TestParameter final boolean enable) {
-        mExternalDisplayPolicy.setExternalDisplayEnabledLocked(mMockedLogicalDisplay, enable);
-        assertDisplaySetEnabled(enable);
+    public void testSetEnabledExternalDisplay() {
+        mExternalDisplayPolicy.setExternalDisplayEnabledLocked(mMockedLogicalDisplay,
+                /*enabled=*/ true);
+        assertDisplaySetEnabled(/*enabled=*/ true);
+    }
+
+    @Test
+    public void testHandleDisplayAdded() {
+        mExternalDisplayPolicy.handleLogicalDisplayAddedLocked(mMockedLogicalDisplay);
+        verify(mMockedExternalDisplayStatsService).onDisplayAdded(eq(EXTERNAL_DISPLAY_ID));
+    }
+
+    @Test
+    public void testHandleDisplayDisconnected() {
+        mExternalDisplayPolicy.handleLogicalDisplayDisconnectedLocked(mMockedLogicalDisplay);
+        verify(mMockedExternalDisplayStatsService).onDisplayDisconnected(eq(EXTERNAL_DISPLAY_ID));
+    }
+
+    @Test
+    public void testOnPresentationStarted() {
+        mExternalDisplayPolicy.onPresentation(EXTERNAL_DISPLAY_ID, /*isShown=*/ true);
+        verify(mMockedExternalDisplayStatsService).onPresentationWindowAdded(
+                eq(EXTERNAL_DISPLAY_ID));
+    }
+
+    @Test
+    public void testOnPresentationEnded() {
+        mExternalDisplayPolicy.onPresentation(EXTERNAL_DISPLAY_ID, /*isShown=*/ false);
+        verify(mMockedExternalDisplayStatsService).onPresentationWindowRemoved(
+                eq(EXTERNAL_DISPLAY_ID));
+    }
+
+    @Test
+    public void testSetDisabledExternalDisplay() {
+        mExternalDisplayPolicy.setExternalDisplayEnabledLocked(mMockedLogicalDisplay,
+                /*enabled=*/ false);
+        assertDisplaySetEnabled(/*enabled=*/ false);
     }
 
     @Test
@@ -191,6 +231,7 @@
         when(mMockedLogicalDisplay.isEnabledLocked()).thenReturn(false);
         mExternalDisplayPolicy.handleExternalDisplayConnectedLocked(mMockedLogicalDisplay);
         assertAskedToEnableDisplay();
+        verify(mMockedExternalDisplayStatsService).onDisplayConnected(eq(mMockedLogicalDisplay));
     }
 
     @Test
diff --git a/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayStatsServiceTest.java b/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayStatsServiceTest.java
new file mode 100644
index 0000000..98ba9ae
--- /dev/null
+++ b/services/tests/displayservicetests/src/com/android/server/display/ExternalDisplayStatsServiceTest.java
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2024 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 com.android.server.display;
+
+import static android.media.AudioDeviceInfo.TYPE_BUILTIN_SPEAKER;
+import static android.media.AudioDeviceInfo.TYPE_HDMI;
+import static android.view.Display.TYPE_EXTERNAL;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.clearInvocations;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.annotation.Nullable;
+import android.content.BroadcastReceiver;
+import android.media.AudioDeviceInfo;
+import android.media.AudioManager.AudioPlaybackCallback;
+import android.media.AudioPlaybackConfiguration;
+import android.view.DisplayInfo;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.testutils.TestHandler;
+
+import com.google.testing.junit.testparameterinjector.TestParameter;
+import com.google.testing.junit.testparameterinjector.TestParameterInjector;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+
+/**
+ * Tests for {@link ExternalDisplayStatsService}
+ * Run: atest ExternalDisplayStatsServiceTest
+ */
+@SmallTest
+@RunWith(TestParameterInjector.class)
+public class ExternalDisplayStatsServiceTest {
+    private static final int EXTERNAL_DISPLAY_ID = 2;
+
+    private TestHandler mHandler;
+    private ExternalDisplayStatsService mExternalDisplayStatsService;
+    private List<AudioPlaybackConfiguration> mAudioPlaybackConfigsPhoneActive;
+    private List<AudioPlaybackConfiguration> mAudioPlaybackConfigsHdmiActive;
+    @Nullable
+    private AudioPlaybackCallback mAudioPlaybackCallback;
+    @Nullable
+    private BroadcastReceiver mInteractivityReceiver;
+
+    @Mock
+    private ExternalDisplayStatsService.Injector mMockedInjector;
+    @Mock
+    private LogicalDisplay mMockedLogicalDisplay;
+    @Mock
+    private DisplayInfo mMockedDisplayInfo;
+
+    /** Setup tests. */
+    @Before
+    public void setup() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mHandler = new TestHandler(/*callback=*/ null);
+        when(mMockedInjector.getHandler()).thenReturn(mHandler);
+        when(mMockedInjector.isExtendedDisplayEnabled()).thenReturn(false);
+        when(mMockedLogicalDisplay.getDisplayInfoLocked()).thenReturn(mMockedDisplayInfo);
+        when(mMockedLogicalDisplay.getDisplayIdLocked()).thenReturn(EXTERNAL_DISPLAY_ID);
+        when(mMockedInjector.isInteractive(eq(EXTERNAL_DISPLAY_ID))).thenReturn(true);
+        mMockedDisplayInfo.type = TYPE_EXTERNAL;
+        doAnswer(invocation -> {
+            mAudioPlaybackCallback = invocation.getArgument(0);
+            return null; // void method, so return null
+        }).when(mMockedInjector).registerAudioPlaybackCallback(any());
+        doAnswer(invocation -> {
+            mInteractivityReceiver = invocation.getArgument(0);
+            return null; // void method, so return null
+        }).when(mMockedInjector).registerInteractivityReceiver(any(), any());
+        mAudioPlaybackConfigsPhoneActive = createAudioConfigs(/*isPhoneActive=*/ true);
+        mAudioPlaybackConfigsHdmiActive = createAudioConfigs(/*isPhoneActive=*/ false);
+        mExternalDisplayStatsService = new ExternalDisplayStatsService(mMockedInjector);
+    }
+
+    @Test
+    public void testOnHotplugConnectionError() {
+        mExternalDisplayStatsService.onHotplugConnectionError();
+        verify(mMockedInjector).writeLog(
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_HOTPLUG_CONNECTION,
+                /*numberOfDisplays=*/ 0,
+                /*isExternalDisplayUsedForAudio=*/ false);
+    }
+
+    @Test
+    public void testOnDisplayPortLinkTrainingFailure() {
+        mExternalDisplayStatsService.onDisplayPortLinkTrainingFailure();
+        verify(mMockedInjector).writeLog(
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog
+                        .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_DISPLAYPORT_LINK_FAILED,
+                /*numberOfDisplays=*/ 0,
+                /*isExternalDisplayUsedForAudio=*/ false);
+    }
+
+    @Test
+    public void testOnCableNotCapableDisplayPort() {
+        mExternalDisplayStatsService.onCableNotCapableDisplayPort();
+        verify(mMockedInjector).writeLog(
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog
+                        .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__ERROR_CABLE_NOT_CAPABLE_DISPLAYPORT,
+                /*numberOfDisplays=*/ 0,
+                /*isExternalDisplayUsedForAudio=*/ false);
+    }
+
+    @Test
+    public void testDisplayConnected() {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        verify(mMockedInjector).registerInteractivityReceiver(any(), any());
+        verify(mMockedInjector).registerAudioPlaybackCallback(any());
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__CONNECTED,
+                /*numberOfDisplays=*/ 1,
+                /*isExternalDisplayUsedForAudio=*/ false);
+    }
+
+    @Test
+    public void testDisplayInteractivityChanges(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        assertThat(mInteractivityReceiver).isNotNull();
+
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        // Default is 'interactive', so no log should be written.
+        mInteractivityReceiver.onReceive(null, null);
+        assertThat(mExternalDisplayStatsService.isInteractiveExternalDisplays()).isTrue();
+        verify(mMockedInjector, never()).writeLog(anyInt(), anyInt(), anyInt(), anyBoolean());
+
+        // Change to non-interactive should produce log
+        when(mMockedInjector.isInteractive(eq(EXTERNAL_DISPLAY_ID))).thenReturn(false);
+        mInteractivityReceiver.onReceive(null, null);
+        assertThat(mExternalDisplayStatsService.isInteractiveExternalDisplays()).isFalse();
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__KEYGUARD,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        // Change back to interactive should produce log
+        when(mMockedInjector.isInteractive(eq(EXTERNAL_DISPLAY_ID))).thenReturn(true);
+        mInteractivityReceiver.onReceive(null, null);
+        assertThat(mExternalDisplayStatsService.isInteractiveExternalDisplays()).isTrue();
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__CONNECTED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testAudioPlaybackChanges() {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        assertThat(mAudioPlaybackCallback).isNotNull();
+
+        mAudioPlaybackCallback.onPlaybackConfigChanged(mAudioPlaybackConfigsPhoneActive);
+        mHandler.flush();
+        assertThat(mExternalDisplayStatsService.isExternalDisplayUsedForAudio()).isFalse();
+
+        mAudioPlaybackCallback.onPlaybackConfigChanged(mAudioPlaybackConfigsHdmiActive);
+        mHandler.flush();
+        assertThat(mExternalDisplayStatsService.isExternalDisplayUsedForAudio()).isTrue();
+    }
+    @Test
+    public void testOnDisplayAddedMirroring(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onDisplayAdded(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__MIRRORING,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testOnDisplayAddedExtended(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        when(mMockedInjector.isExtendedDisplayEnabled()).thenReturn(true);
+        mExternalDisplayStatsService.onDisplayAdded(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__EXTENDED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testOnDisplayDisabled(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        mExternalDisplayStatsService.onDisplayAdded(EXTERNAL_DISPLAY_ID);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onDisplayDisabled(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__DISABLED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testOnDisplayDisconnected(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onDisplayDisconnected(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED__STATE__DISCONNECTED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+        mHandler.flush();
+        assertThat(mAudioPlaybackCallback).isNotNull();
+        assertThat(mInteractivityReceiver).isNotNull();
+        verify(mMockedInjector).unregisterAudioPlaybackCallback(eq(mAudioPlaybackCallback));
+        verify(mMockedInjector).unregisterInteractivityReceiver(eq(mInteractivityReceiver));
+    }
+
+    @Test
+    public void testOnPresentationWindowAddedWhileMirroring(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        mExternalDisplayStatsService.onDisplayAdded(EXTERNAL_DISPLAY_ID);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onPresentationWindowAdded(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog
+                        .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_WHILE_MIRRORING,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testOnPresentationWindowAddedWhileExtended(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        when(mMockedInjector.isExtendedDisplayEnabled()).thenReturn(true);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onPresentationWindowAdded(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog
+                        .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_WHILE_EXTENDED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    @Test
+    public void testOnPresentationWindowRemoved(
+            @TestParameter final boolean isExternalDisplayUsedForAudio) {
+        mExternalDisplayStatsService.onDisplayConnected(mMockedLogicalDisplay);
+        mHandler.flush();
+        initAudioPlayback(isExternalDisplayUsedForAudio);
+        clearInvocations(mMockedInjector);
+
+        mExternalDisplayStatsService.onPresentationWindowRemoved(EXTERNAL_DISPLAY_ID);
+        verify(mMockedInjector).writeLog(FrameworkStatsLog.EXTERNAL_DISPLAY_STATE_CHANGED,
+                FrameworkStatsLog
+                        .EXTERNAL_DISPLAY_STATE_CHANGED__STATE__PRESENTATION_ENDED,
+                /*numberOfDisplays=*/ 1,
+                isExternalDisplayUsedForAudio);
+    }
+
+    private void initAudioPlayback(boolean isExternalDisplayUsedForAudio) {
+        assertThat(mAudioPlaybackCallback).isNotNull();
+        mAudioPlaybackCallback.onPlaybackConfigChanged(
+                isExternalDisplayUsedForAudio ? mAudioPlaybackConfigsHdmiActive
+                        : mAudioPlaybackConfigsPhoneActive);
+        mHandler.flush();
+    }
+
+    private List<AudioPlaybackConfiguration> createAudioConfigs(boolean isPhoneActive) {
+        var mockedConfigHdmi = mock(AudioPlaybackConfiguration.class);
+        var mockedInfoHdmi = mock(AudioDeviceInfo.class);
+        when(mockedInfoHdmi.isSink()).thenReturn(true);
+        when(mockedInfoHdmi.getType()).thenReturn(TYPE_HDMI);
+        when(mockedConfigHdmi.getAudioDeviceInfo()).thenReturn(mockedInfoHdmi);
+        when(mockedConfigHdmi.isActive()).thenReturn(!isPhoneActive);
+
+        var mockedInfoPhone = mock(AudioDeviceInfo.class);
+        var mockedConfigPhone = mock(AudioPlaybackConfiguration.class);
+        when(mockedInfoPhone.isSink()).thenReturn(true);
+        when(mockedInfoPhone.getType()).thenReturn(TYPE_BUILTIN_SPEAKER);
+        when(mockedConfigPhone.getAudioDeviceInfo()).thenReturn(mockedInfoPhone);
+        when(mockedConfigPhone.isActive()).thenReturn(isPhoneActive);
+        return List.of(mockedConfigHdmi, mockedConfigPhone);
+    }
+}
diff --git a/services/tests/displayservicetests/src/com/android/server/display/notifications/DisplayNotificationManagerTest.java b/services/tests/displayservicetests/src/com/android/server/display/notifications/DisplayNotificationManagerTest.java
index 4efd15c..d6c8ceb 100644
--- a/services/tests/displayservicetests/src/com/android/server/display/notifications/DisplayNotificationManagerTest.java
+++ b/services/tests/displayservicetests/src/com/android/server/display/notifications/DisplayNotificationManagerTest.java
@@ -34,6 +34,7 @@
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.filters.SmallTest;
 
+import com.android.server.display.ExternalDisplayStatsService;
 import com.android.server.display.feature.DisplayManagerFlags;
 import com.android.server.display.notifications.DisplayNotificationManager.Injector;
 
@@ -60,6 +61,8 @@
     @Mock
     private NotificationManager mMockedNotificationManager;
     @Mock
+    private ExternalDisplayStatsService mMockedExternalDisplayStatsService;
+    @Mock
     private DisplayManagerFlags mMockedFlags;
     @Captor
     private ArgumentCaptor<String> mNotifyTagCaptor;
@@ -88,6 +91,7 @@
                 /*isErrorHandlingEnabled=*/ true);
         dnm.onHotplugConnectionError();
         assertExpectedNotification();
+        verify(mMockedExternalDisplayStatsService).onHotplugConnectionError();
     }
 
     @Test
@@ -96,6 +100,7 @@
                 /*isErrorHandlingEnabled=*/ true);
         dnm.onDisplayPortLinkTrainingFailure();
         assertExpectedNotification();
+        verify(mMockedExternalDisplayStatsService).onDisplayPortLinkTrainingFailure();
     }
 
     @Test
@@ -104,6 +109,7 @@
                 /*isErrorHandlingEnabled=*/ true);
         dnm.onCableNotCapableDisplayPort();
         assertExpectedNotification();
+        verify(mMockedExternalDisplayStatsService).onCableNotCapableDisplayPort();
     }
 
     @Test
@@ -124,11 +130,40 @@
         verify(mMockedNotificationManager, never()).notify(anyString(), anyInt(), any());
     }
 
+    @Test
+    public void testNoErrorLogging() {
+        var dnm = createDisplayNotificationManager(/*isNotificationManagerAvailable=*/ true,
+                /*isErrorHandlingEnabled=*/ false);
+        // None of these methods should trigger logging now.
+        dnm.onHotplugConnectionError();
+        dnm.onDisplayPortLinkTrainingFailure();
+        dnm.onCableNotCapableDisplayPort();
+        verify(mMockedExternalDisplayStatsService, never()).onHotplugConnectionError();
+        verify(mMockedExternalDisplayStatsService, never()).onCableNotCapableDisplayPort();
+        verify(mMockedExternalDisplayStatsService, never()).onDisplayPortLinkTrainingFailure();
+    }
+
+
+    @Test
+    public void testErrorLogging() {
+        var dnm = createDisplayNotificationManager(/*isNotificationManagerAvailable=*/ true,
+                /*isErrorHandlingEnabled=*/ true);
+        // these methods should trigger logging now.
+        dnm.onHotplugConnectionError();
+        verify(mMockedExternalDisplayStatsService).onHotplugConnectionError();
+        dnm.onDisplayPortLinkTrainingFailure();
+        verify(mMockedExternalDisplayStatsService).onDisplayPortLinkTrainingFailure();
+        dnm.onCableNotCapableDisplayPort();
+        verify(mMockedExternalDisplayStatsService).onCableNotCapableDisplayPort();
+    }
+
     private DisplayNotificationManager createDisplayNotificationManager(
             final boolean isNotificationManagerAvailable,
             final boolean isErrorHandlingEnabled) {
         when(mMockedFlags.isConnectedDisplayErrorHandlingEnabled()).thenReturn(
                 isErrorHandlingEnabled);
+        when(mMockedInjector.getExternalDisplayStatsService()).thenReturn(
+                mMockedExternalDisplayStatsService);
         when(mMockedInjector.getNotificationManager()).thenReturn(
                 (isNotificationManagerAvailable) ? mMockedNotificationManager : null);
         // Usb errors detector is tested in ConnectedDisplayUsbErrorsDetectorTest
diff --git a/services/tests/mockingservicestests/src/com/android/server/OWNERS b/services/tests/mockingservicestests/src/com/android/server/OWNERS
index c0f0ce0..b363f54 100644
--- a/services/tests/mockingservicestests/src/com/android/server/OWNERS
+++ b/services/tests/mockingservicestests/src/com/android/server/OWNERS
@@ -1,3 +1,4 @@
 per-file *Alarm* = file:/apex/jobscheduler/OWNERS
 per-file *AppStateTracker* = file:/apex/jobscheduler/OWNERS
 per-file *DeviceIdleController* = file:/apex/jobscheduler/OWNERS
+per-file SensitiveContentProtectionManagerServiceTest.java = file:/core/java/android/permission/OWNERS
diff --git a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceTest.java
index 9e98105..c298d51 100644
--- a/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/SensitiveContentProtectionManagerServiceTest.java
@@ -18,6 +18,8 @@
 
 import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
 
+import static android.permission.flags.Flags.FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION;
+
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doCallRealMethod;
@@ -31,6 +33,9 @@
 
 import android.media.projection.MediaProjectionInfo;
 import android.media.projection.MediaProjectionManager;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
 import android.provider.Settings;
 import android.service.notification.NotificationListenerService.Ranking;
 import android.service.notification.NotificationListenerService.RankingMap;
@@ -61,6 +66,7 @@
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
 @RunWithLooper
+@RequiresFlagsEnabled(FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION)
 public class SensitiveContentProtectionManagerServiceTest {
     private static final String NOTIFICATION_KEY_1 = "com.android.server.notification.TEST_KEY_1";
     private static final String NOTIFICATION_KEY_2 = "com.android.server.notification.TEST_KEY_2";
@@ -74,6 +80,9 @@
     private static final ArraySet<PackageInfo> EMPTY_SET = new ArraySet<>();
 
     @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+    @Rule
     public final TestableContext mContext =
             new TestableContext(getInstrumentation().getTargetContext(), null);
 
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
index d876dae..47928bc 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java
@@ -72,6 +72,8 @@
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.AdditionalAnswers.answer;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.any;
 import static org.mockito.Mockito.anyBoolean;
 import static org.mockito.Mockito.anyInt;
@@ -157,9 +159,11 @@
     private static final int MOCKAPP2_UID_OTHER = MOCKAPP2_UID + UserHandle.PER_USER_RANGE;
     private static final int MOCKAPP_ISOLATED_UID = Process.FIRST_ISOLATED_UID + 321;
     private static final String MOCKAPP_ISOLATED_PROCESSNAME = "isolated test #1";
+    private static final int MOCKAPP_SDK_SANDBOX_UID = Process.FIRST_SDK_SANDBOX_UID + 654;
+    private static final String MOCKAPP_SDK_SANDBOX_PROCESSNAME = "sandbox test #1";
 
     private static int sFirstCachedAdj = ProcessList.CACHED_APP_MIN_ADJ
-                                          + ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
+            + ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
     private static Context sContext;
     private static PackageManagerInternal sPackageManagerInternal;
     private static ActivityManagerService sService;
@@ -271,7 +275,6 @@
 
     /**
      * Replace the process LRU with the given processes.
-     * @param apps
      */
     @SuppressWarnings("GuardedBy")
     private void setProcessesToLru(ProcessRecord... apps) {
@@ -660,7 +663,7 @@
             app.mState.setLastTopTime(nowUptime);
             // Simulate the system starting and binding to a service in the app.
             ServiceRecord s = bindService(app, system,
-                    null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
+                    null, null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
             s.lastTopAlmostPerceptibleBindRequestUptimeMs = nowUptime;
             s.getConnections().clear();
             app.mServices.updateHasTopStartedAlmostPerceptibleServices();
@@ -682,7 +685,7 @@
             app.mState.setLastTopTime(nowUptime);
             // Simulate the system starting and binding to a service in the app.
             ServiceRecord s = bindService(app, system,
-                    null, Context.BIND_ALMOST_PERCEPTIBLE + 2, mock(IBinder.class));
+                    null, null, Context.BIND_ALMOST_PERCEPTIBLE + 2, mock(IBinder.class));
             s.lastTopAlmostPerceptibleBindRequestUptimeMs =
                     nowUptime - 2 * sService.mConstants.mServiceBindAlmostPerceptibleTimeoutMs;
             app.mServices.updateHasTopStartedAlmostPerceptibleServices();
@@ -704,7 +707,7 @@
             app.mState.setLastTopTime(nowUptime);
             // Simulate the system starting and binding to a service in the app.
             ServiceRecord s = bindService(app, system,
-                    null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
+                    null, null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
             s.lastTopAlmostPerceptibleBindRequestUptimeMs =
                     nowUptime - 2 * sService.mConstants.mServiceBindAlmostPerceptibleTimeoutMs;
             s.getConnections().clear();
@@ -729,7 +732,7 @@
         system.mState.setHasTopUi(true);
         // Simulate the system starting and binding to a service in the app.
         ServiceRecord s = bindService(app, system,
-                null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
+                null, null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(system, app);
 
@@ -901,7 +904,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, true));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        ServiceRecord s = bindService(app, client, null, Context.BIND_WAIVE_PRIORITY,
+        ServiceRecord s = bindService(app, client, null, null, Context.BIND_WAIVE_PRIORITY,
                 mock(IBinder.class));
         s.startRequested = true;
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -921,7 +924,7 @@
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         client.mServices.setTreatLikeActivity(true);
-        bindService(app, client, null, Context.BIND_WAIVE_PRIORITY
+        bindService(app, client, null, null, Context.BIND_WAIVE_PRIORITY
                 | Context.BIND_TREAT_LIKE_ACTIVITY, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -937,7 +940,7 @@
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         IBinder binder = mock(IBinder.class);
-        ServiceRecord s = bindService(app, client, null, Context.BIND_WAIVE_PRIORITY
+        ServiceRecord s = bindService(app, client, null, null, Context.BIND_WAIVE_PRIORITY
                 | Context.BIND_ADJUST_WITH_ACTIVITY | Context.BIND_IMPORTANT, binder);
         ConnectionRecord cr = s.getConnections().get(binder).get(0);
         setFieldValue(ConnectionRecord.class, cr, "activity",
@@ -955,7 +958,7 @@
     public void testUpdateOomAdj_DoOne_Service_Self() {
         ProcessRecord app = spy(makeDefaultProcessRecord(MOCKAPP_PID, MOCKAPP_UID,
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
-        bindService(app, app, null, 0, mock(IBinder.class));
+        bindService(app, app, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app);
 
@@ -970,7 +973,7 @@
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         client.mServices.setTreatLikeActivity(true);
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
 
@@ -988,7 +991,8 @@
         doReturn(true).when(wpc).hasActivities();
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_ALLOW_OOM_MANAGEMENT, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_ALLOW_OOM_MANAGEMENT,
+                mock(IBinder.class));
         doReturn(PROCESS_STATE_TOP).when(sService.mAtmInternal).getTopProcessState();
         doReturn(client).when(sService).getTopApp();
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -1005,7 +1009,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
         client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
         client.mState.setHasTopUi(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -1023,7 +1027,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_IMPORTANT, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_IMPORTANT, mock(IBinder.class));
         client.mServices.startExecutingService(mock(ServiceRecord.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1039,7 +1043,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         doReturn(PROCESS_STATE_TOP).when(sService.mAtmInternal).getTopProcessState();
         doReturn(client).when(sService).getTopApp();
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -1056,7 +1060,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
         client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1074,7 +1078,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_NOT_FOREGROUND, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_NOT_FOREGROUND, mock(IBinder.class));
         client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1090,7 +1094,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         client.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1109,7 +1113,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
 
         // In order to trick OomAdjuster to think it has a short-service, we need this logic.
         ServiceRecord s = ServiceRecord.newEmptyInstanceForTest(sService);
@@ -1172,8 +1176,8 @@
         ProcessRecord app1 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
 
-        bindService(app1, pers, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
-        bindService(app2, app1, null, 0, mock(IBinder.class));
+        bindService(app1, pers, null, null, Context.BIND_FOREGROUND_SERVICE, mock(IBinder.class));
+        bindService(app2, app1, null, null, 0, mock(IBinder.class));
 
         updateOomAdj(pers, app1, app2);
 
@@ -1192,7 +1196,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
         BackupRecord backupTarget = new BackupRecord(null, 0, 0, 0);
         backupTarget.app = client;
         doReturn(backupTarget).when(sService.mBackupTargets).get(anyInt());
@@ -1218,7 +1222,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_NOT_PERCEPTIBLE, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_NOT_PERCEPTIBLE, mock(IBinder.class));
         client.mState.setRunningRemoteAnimation(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1233,7 +1237,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_NOT_VISIBLE, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_NOT_VISIBLE, mock(IBinder.class));
         client.mState.setRunningRemoteAnimation(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1248,7 +1252,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         client.mState.setHasOverlayUi(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1264,7 +1268,7 @@
                     MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
             ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                     MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-            bindService(app, client, null,
+            bindService(app, client, null, null,
                     Context.BIND_ALMOST_PERCEPTIBLE | Context.BIND_NOT_FOREGROUND,
                     mock(IBinder.class));
             client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
@@ -1283,7 +1287,7 @@
                     MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
             WindowProcessController wpc = client.getWindowProcessController();
             doReturn(true).when(wpc).isHeavyWeightProcess();
-            bindService(app, client, null,
+            bindService(app, client, null, null,
                     Context.BIND_ALMOST_PERCEPTIBLE | Context.BIND_NOT_FOREGROUND,
                     mock(IBinder.class));
             client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
@@ -1301,7 +1305,7 @@
                     MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
             ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                     MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-            bindService(app, client, null,
+            bindService(app, client, null, null,
                     Context.BIND_ALMOST_PERCEPTIBLE,
                     mock(IBinder.class));
             client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
@@ -1320,7 +1324,7 @@
                     MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
             WindowProcessController wpc = client.getWindowProcessController();
             doReturn(true).when(wpc).isHeavyWeightProcess();
-            bindService(app, client, null,
+            bindService(app, client, null, null,
                     Context.BIND_ALMOST_PERCEPTIBLE,
                     mock(IBinder.class));
             client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
@@ -1341,7 +1345,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         client.mState.setRunningRemoteAnimation(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1356,7 +1360,8 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_IMPORTANT_BACKGROUND, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_IMPORTANT_BACKGROUND,
+                mock(IBinder.class));
         client.mState.setHasOverlayUi(true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, app);
@@ -1496,10 +1501,10 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
         doReturn(PROCESS_STATE_TOP).when(sService.mAtmInternal).getTopProcessState();
         doReturn(client2).when(sService).getTopApp();
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -1517,10 +1522,10 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app, client2, null, 0, mock(IBinder.class));
+        bindService(app, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, client2, app);
@@ -1537,10 +1542,10 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, client2, app);
@@ -1557,12 +1562,12 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
 
         // Note: We add processes to LRU but still call updateOomAdjLocked() with a specific
         // processes.
@@ -1599,11 +1604,11 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
-        bindService(client, app, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
+        bindService(client, app, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client2, client, null, 0, mock(IBinder.class));
+        bindService(client2, client, null, null, 0, mock(IBinder.class));
         client.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2);
@@ -1626,11 +1631,11 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
-        bindService(client2, client, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
+        bindService(client2, client, null, null, 0, mock(IBinder.class));
         client.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2);
@@ -1653,18 +1658,18 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
-        bindService(client2, client, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
+        bindService(client2, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
-        bindService(client3, client, null, 0, mock(IBinder.class));
+        bindService(client3, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client4 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
-        bindService(client3, client4, null, 0, mock(IBinder.class));
-        bindService(client4, client3, null, 0, mock(IBinder.class));
+        bindService(client3, client4, null, null, 0, mock(IBinder.class));
+        bindService(client4, client3, null, null, 0, mock(IBinder.class));
         client.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3, client4);
@@ -1693,16 +1698,16 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         client3.mState.setForcingToImportant(new Object());
-        bindService(app, client3, null, 0, mock(IBinder.class));
+        bindService(app, client3, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3);
 
@@ -1718,17 +1723,17 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = client2.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         client3.mState.setForcingToImportant(new Object());
-        bindService(app, client3, null, 0, mock(IBinder.class));
+        bindService(app, client3, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3);
 
@@ -1743,11 +1748,11 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = client2.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
@@ -1755,7 +1760,7 @@
         ProcessRecord client4 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
         client4.mState.setForcingToImportant(new Object());
-        bindService(app, client4, null, 0, mock(IBinder.class));
+        bindService(app, client4, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3, client4);
 
@@ -1770,21 +1775,21 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, 0, mock(IBinder.class));
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client, client2, null, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = client2.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         client3.mState.setForcingToImportant(new Object());
-        bindService(app, client3, null, 0, mock(IBinder.class));
+        bindService(app, client3, null, null, 0, mock(IBinder.class));
         ProcessRecord client4 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
         client4.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app, client4, null, 0, mock(IBinder.class));
+        bindService(app, client4, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3, client4);
 
@@ -1802,15 +1807,15 @@
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         WindowProcessController wpc = client.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app, client2, null, 0, mock(IBinder.class));
+        bindService(app, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         client3.mState.setForcingToImportant(new Object());
-        bindService(app, client3, null, 0, mock(IBinder.class));
+        bindService(app, client3, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(client, client2, client3, app);
 
@@ -1826,7 +1831,7 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
         bindProvider(client, client2, null, null, false);
@@ -1846,12 +1851,12 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, 0, mock(IBinder.class));
+        bindService(app, client, null, null, 0, mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
         bindProvider(client, client2, null, null, false);
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(client2, app, null, 0, mock(IBinder.class));
+        bindService(client2, app, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2);
 
@@ -1912,9 +1917,9 @@
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
         final ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
-        bindService(app1, client1, null, Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
+        bindService(app1, client1, null, null, Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
                 mock(IBinder.class));
-        bindService(app2, client2, null, Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
+        bindService(app2, client2, null, null, Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
                 mock(IBinder.class));
         client1.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
         client2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
@@ -1929,8 +1934,10 @@
         assertBfsl(app1);
         assertBfsl(app2);
 
-        bindService(app1, client1, null, Context.BIND_SCHEDULE_LIKE_TOP_APP, mock(IBinder.class));
-        bindService(app2, client2, null, Context.BIND_SCHEDULE_LIKE_TOP_APP, mock(IBinder.class));
+        bindService(app1, client1, null, null, Context.BIND_SCHEDULE_LIKE_TOP_APP,
+                mock(IBinder.class));
+        bindService(app2, client2, null, null, Context.BIND_SCHEDULE_LIKE_TOP_APP,
+                mock(IBinder.class));
         updateOomAdj(client1, client2, app1, app2);
 
         assertProcStates(app1, PROCESS_STATE_BOUND_FOREGROUND_SERVICE, VISIBLE_APP_ADJ,
@@ -1946,8 +1953,8 @@
                 SCHED_GROUP_DEFAULT);
         assertBfsl(app2);
 
-        bindService(client2, app1, null, 0, mock(IBinder.class));
-        bindService(app1, client2, null, 0, mock(IBinder.class));
+        bindService(client2, app1, null, null, 0, mock(IBinder.class));
+        bindService(app1, client2, null, null, 0, mock(IBinder.class));
         client2.mServices.setHasForegroundServices(false, 0, /* hasNoneType=*/false);
         updateOomAdj(app1, client1, client2);
         assertProcStates(app1, PROCESS_STATE_IMPORTANT_FOREGROUND, VISIBLE_APP_ADJ,
@@ -1968,9 +1975,9 @@
         client1.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
         client2.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
 
-        final ServiceRecord s1 = bindService(app1, client1, null,
+        final ServiceRecord s1 = bindService(app1, client1, null, null,
                 Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE, mock(IBinder.class));
-        final ServiceRecord s2 = bindService(app2, client2, null,
+        final ServiceRecord s2 = bindService(app2, client2, null, null,
                 Context.BIND_IMPORTANT, mock(IBinder.class));
 
         updateOomAdj(client1, client2, app1, app2);
@@ -1980,7 +1987,7 @@
         assertProcStates(app2, PROCESS_STATE_PERSISTENT, PERSISTENT_SERVICE_ADJ,
                 SCHED_GROUP_DEFAULT);
 
-        bindService(app2, client1, s2, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
+        bindService(app2, client1, null, s2, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
                 mock(IBinder.class));
         updateOomAdj(app2);
         assertProcStates(app2, PROCESS_STATE_PERSISTENT, PERSISTENT_SERVICE_ADJ,
@@ -1995,9 +2002,9 @@
         client1.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         client2.mState.setHasOverlayUi(true);
 
-        bindService(app1, client1, s1, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
+        bindService(app1, client1, null, s1, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
                 mock(IBinder.class));
-        bindService(app2, client2, s2, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
+        bindService(app2, client2, null, s2, Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE,
                 mock(IBinder.class));
 
         updateOomAdj(client1, client2, app1, app2);
@@ -2030,7 +2037,7 @@
         app1.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
 
-        bindService(app1, client1, null, Context.BIND_NOT_PERCEPTIBLE, mock(IBinder.class));
+        bindService(app1, client1, null, null, Context.BIND_NOT_PERCEPTIBLE, mock(IBinder.class));
 
         updateOomAdj(client1, app1);
 
@@ -2051,7 +2058,8 @@
         app1.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
 
-        bindService(app1, client1, null, Context.BIND_ALMOST_PERCEPTIBLE, mock(IBinder.class));
+        bindService(app1, client1, null, null, Context.BIND_ALMOST_PERCEPTIBLE,
+                mock(IBinder.class));
 
         updateOomAdj(client1, app1);
 
@@ -2121,19 +2129,19 @@
 
         final ComponentName cn1 = ComponentName.unflattenFromString(
                 MOCKAPP_PACKAGENAME + "/.TestService");
-        final ServiceRecord s1 = bindService(app1, client1, null, 0, mock(IBinder.class));
+        final ServiceRecord s1 = bindService(app1, client1, null, null, 0, mock(IBinder.class));
         setFieldValue(ServiceRecord.class, s1, "name", cn1);
         s1.startRequested = true;
 
         final ComponentName cn2 = ComponentName.unflattenFromString(
                 MOCKAPP2_PACKAGENAME + "/.TestService");
-        final ServiceRecord s2 = bindService(app2, client2, null, 0, mock(IBinder.class));
+        final ServiceRecord s2 = bindService(app2, client2, null, null, 0, mock(IBinder.class));
         setFieldValue(ServiceRecord.class, s2, "name", cn2);
         s2.startRequested = true;
 
         final ComponentName cn3 = ComponentName.unflattenFromString(
                 MOCKAPP5_PACKAGENAME + "/.TestService");
-        final ServiceRecord s3 = bindService(app3, client1, null, 0, mock(IBinder.class));
+        final ServiceRecord s3 = bindService(app3, client1, null, null, 0, mock(IBinder.class));
         setFieldValue(ServiceRecord.class, s3, "name", cn3);
         s3.startRequested = true;
 
@@ -2177,7 +2185,7 @@
             clientUidRecord.setIdle(true);
             doReturn(ActivityManager.APP_START_MODE_DELAYED).when(sService)
                     .getAppStartModeLOSP(anyInt(), any(String.class), anyInt(),
-                    anyInt(), anyBoolean(), anyBoolean(), anyBoolean());
+                            anyInt(), anyBoolean(), anyBoolean(), anyBoolean());
             doNothing().when(sService.mServices)
                     .scheduleServiceTimeoutLocked(any(ProcessRecord.class));
             updateOomAdj(client1, client2, app1, app2, app3);
@@ -2188,7 +2196,7 @@
         } finally {
             doCallRealMethod().when(sService)
                     .getAppStartModeLOSP(anyInt(), any(String.class), anyInt(),
-                    anyInt(), anyBoolean(), anyBoolean(), anyBoolean());
+                            anyInt(), anyBoolean(), anyBoolean(), anyBoolean());
             sService.mServices.mServiceMap.clear();
             sService.mOomAdjuster.mActiveUids.clear();
         }
@@ -2223,7 +2231,7 @@
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         app2.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app, app2, null, 0, mock(IBinder.class));
+        bindService(app, app2, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, app2);
 
@@ -2242,12 +2250,12 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, app2, null, 0, mock(IBinder.class));
+        bindService(app, app2, null, null, 0, mock(IBinder.class));
         ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app2, app3, null, 0, mock(IBinder.class));
+        bindService(app2, app3, null, null, 0, mock(IBinder.class));
         app3.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app3, app, null, 0, mock(IBinder.class));
+        bindService(app3, app, null, null, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, app2, app3);
 
@@ -2278,21 +2286,21 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        ServiceRecord s = bindService(app, app2, null, 0, mock(IBinder.class));
+        ServiceRecord s = bindService(app, app2, null, null, 0, mock(IBinder.class));
         ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app2, app3, null, 0, mock(IBinder.class));
-        bindService(app3, app, null, 0, mock(IBinder.class));
+        bindService(app2, app3, null, null, 0, mock(IBinder.class));
+        bindService(app3, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = app3.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord app4 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         app4.mState.setHasOverlayUi(true);
-        bindService(app, app4, s, 0, mock(IBinder.class));
+        bindService(app, app4, null, s, 0, mock(IBinder.class));
         ProcessRecord app5 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
         app5.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app, app5, s, 0, mock(IBinder.class));
+        bindService(app, app5, null, s, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, app2, app3, app4, app5);
 
@@ -2320,21 +2328,21 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        ServiceRecord s = bindService(app, app2, null, 0, mock(IBinder.class));
+        ServiceRecord s = bindService(app, app2, null, null, 0, mock(IBinder.class));
         ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app2, app3, null, 0, mock(IBinder.class));
-        bindService(app3, app, null, 0, mock(IBinder.class));
+        bindService(app2, app3, null, null, 0, mock(IBinder.class));
+        bindService(app3, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = app3.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord app4 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         app4.mState.setHasOverlayUi(true);
-        bindService(app, app4, s, 0, mock(IBinder.class));
+        bindService(app, app4, null, s, 0, mock(IBinder.class));
         ProcessRecord app5 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
         app5.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app, app5, s, 0, mock(IBinder.class));
+        bindService(app, app5, null, s, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app5, app4, app3, app2, app);
 
@@ -2362,21 +2370,21 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        ServiceRecord s = bindService(app, app2, null, 0, mock(IBinder.class));
+        ServiceRecord s = bindService(app, app2, null, null, 0, mock(IBinder.class));
         ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(app2, app3, null, 0, mock(IBinder.class));
-        bindService(app3, app, null, 0, mock(IBinder.class));
+        bindService(app2, app3, null, null, 0, mock(IBinder.class));
+        bindService(app3, app, null, null, 0, mock(IBinder.class));
         WindowProcessController wpc = app3.getWindowProcessController();
         doReturn(true).when(wpc).isHomeProcess();
         ProcessRecord app4 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         app4.mState.setHasOverlayUi(true);
-        bindService(app, app4, s, 0, mock(IBinder.class));
+        bindService(app, app4, null, s, 0, mock(IBinder.class));
         ProcessRecord app5 = spy(makeDefaultProcessRecord(MOCKAPP5_PID, MOCKAPP5_UID,
                 MOCKAPP5_PROCESSNAME, MOCKAPP5_PACKAGENAME, false));
         app5.mServices.setHasForegroundServices(true, 0, /* hasNoneType=*/true);
-        bindService(app, app5, s, 0, mock(IBinder.class));
+        bindService(app, app5, null, s, 0, mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app3, app4, app2, app, app5);
 
@@ -2404,15 +2412,19 @@
                 MOCKAPP_PROCESSNAME, MOCKAPP_PACKAGENAME, false));
         ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
-        bindService(app, client, null, Context.BIND_INCLUDE_CAPABILITIES, mock(IBinder.class));
+        bindService(app, client, null, null, Context.BIND_INCLUDE_CAPABILITIES,
+                mock(IBinder.class));
         ProcessRecord client2 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
-        bindService(client, client2, null, Context.BIND_INCLUDE_CAPABILITIES, mock(IBinder.class));
-        bindService(client2, app, null, Context.BIND_INCLUDE_CAPABILITIES, mock(IBinder.class));
+        bindService(client, client2, null, null, Context.BIND_INCLUDE_CAPABILITIES,
+                mock(IBinder.class));
+        bindService(client2, app, null, null, Context.BIND_INCLUDE_CAPABILITIES,
+                mock(IBinder.class));
         ProcessRecord client3 = spy(makeDefaultProcessRecord(MOCKAPP4_PID, MOCKAPP4_UID,
                 MOCKAPP4_PROCESSNAME, MOCKAPP4_PACKAGENAME, false));
         client3.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
-        bindService(app, client3, null, Context.BIND_INCLUDE_CAPABILITIES, mock(IBinder.class));
+        bindService(app, client3, null, null, Context.BIND_INCLUDE_CAPABILITIES,
+                mock(IBinder.class));
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
         updateOomAdj(app, client, client2, client3);
 
@@ -2472,10 +2484,10 @@
         ProcessRecord app2 = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
                 MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
         long now = SystemClock.uptimeMillis();
-        ServiceRecord s = bindService(app, app2, null, 0, mock(IBinder.class));
+        ServiceRecord s = bindService(app, app2, null, null, 0, mock(IBinder.class));
         s.startRequested = true;
         s.lastActivity = now;
-        s = bindService(app2, app, null, 0, mock(IBinder.class));
+        s = bindService(app2, app, null, null, 0, mock(IBinder.class));
         s.startRequested = true;
         s.lastActivity = now;
         ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
@@ -2507,11 +2519,11 @@
         final int userOwner = 0;
         final int userOther = 1;
         final int cachedAdj1 = sService.mConstants.USE_TIERED_CACHED_ADJ
-                               ? CACHED_APP_MIN_ADJ + 10
-                               : CACHED_APP_MIN_ADJ + ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
+                ? CACHED_APP_MIN_ADJ + 10
+                : CACHED_APP_MIN_ADJ + ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
         final int cachedAdj2 = sService.mConstants.USE_TIERED_CACHED_ADJ
-                               ? CACHED_APP_MIN_ADJ + 10
-                               : cachedAdj1 + ProcessList.CACHED_APP_IMPORTANCE_LEVELS * 2;
+                ? CACHED_APP_MIN_ADJ + 10
+                : cachedAdj1 + ProcessList.CACHED_APP_IMPORTANCE_LEVELS * 2;
         doReturn(userOwner).when(sService.mUserController).getCurrentUserId();
 
         final ArrayList<ProcessRecord> lru = sService.mProcessList.getLruProcessesLOSP();
@@ -2626,7 +2638,7 @@
 
         // Simulate binding to a service in the same process using BIND_ABOVE_CLIENT and
         // verify that its OOM adjustment level is unaffected.
-        bindService(app, app, null, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
+        bindService(app, app, null, null, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
         app.mServices.updateHasAboveClientLocked();
         assertFalse(app.mServices.hasAboveClient());
 
@@ -2644,12 +2656,12 @@
         final ProcessRecord app3 = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
                 MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, false));
         long now = SystemClock.uptimeMillis();
-        ServiceRecord s = bindService(app, app2, null, 0, mock(IBinder.class));
+        ServiceRecord s = bindService(app, app2, null, null, 0, mock(IBinder.class));
         s.startRequested = true;
         s.lastActivity = now;
-        s = bindService(app2, app3, null, 0, mock(IBinder.class));
+        s = bindService(app2, app3, null, null, 0, mock(IBinder.class));
         s.lastActivity = now;
-        s = bindService(app3, app2, null, 0, mock(IBinder.class));
+        s = bindService(app3, app2, null, null, 0, mock(IBinder.class));
         s.lastActivity = now;
 
         sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
@@ -2678,7 +2690,7 @@
         // Start binding to a service that isn't running yet.
         ServiceRecord sr = makeServiceRecord(app);
         sr.app = null;
-        bindService(null, app, sr, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
+        bindService(null, app, null, sr, Context.BIND_ABOVE_CLIENT, mock(IBinder.class));
 
         // Since sr.app is null, this service cannot be in the same process as the
         // client so we expect the BIND_ABOVE_CLIENT adjustment to take effect.
@@ -2772,91 +2784,37 @@
                 ApplicationExitInfo.SUBREASON_ISOLATED_NOT_NEEDED, true);
     }
 
-    private ProcessRecord makeDefaultProcessRecord(int pid, int uid, String processName,
-            String packageName, boolean hasShownUi) {
-        long now = SystemClock.uptimeMillis();
-        return makeProcessRecord(sService, pid, uid, processName,
-                packageName, 12345, Build.VERSION_CODES.CUR_DEVELOPMENT,
-                now, now, now, 12345, UNKNOWN_ADJ, UNKNOWN_ADJ,
-                UNKNOWN_ADJ, CACHED_APP_MAX_ADJ,
-                SCHED_GROUP_DEFAULT, SCHED_GROUP_DEFAULT,
-                PROCESS_STATE_NONEXISTENT, PROCESS_STATE_NONEXISTENT,
-                PROCESS_STATE_NONEXISTENT, PROCESS_STATE_NONEXISTENT,
-                0, 0, false, false, false, ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE,
-                false, false, false, hasShownUi, false, false, false, false, false, false, null,
-                0, Long.MIN_VALUE, Long.MIN_VALUE, true, 0, null, false);
+    @SuppressWarnings("GuardedBy")
+    @Test
+    public void testUpdateOomAdj_DoAll_SdkSandbox_attributedClient() {
+        ProcessRecord client = spy(makeDefaultProcessRecord(MOCKAPP2_PID, MOCKAPP2_UID,
+                MOCKAPP2_PROCESSNAME, MOCKAPP2_PACKAGENAME, false));
+        ProcessRecord attributedClient = spy(makeDefaultProcessRecord(MOCKAPP3_PID, MOCKAPP3_UID,
+                MOCKAPP3_PROCESSNAME, MOCKAPP3_PACKAGENAME, true));
+        ProcessRecord sandboxService = spy(new ProcessRecordBuilder(MOCKAPP_PID,
+                MOCKAPP_SDK_SANDBOX_UID, MOCKAPP_SDK_SANDBOX_PROCESSNAME, MOCKAPP_PACKAGENAME)
+                .setSdkSandboxClientAppPackage(MOCKAPP3_PACKAGENAME)
+                .build());
+
+        setProcessesToLru(sandboxService, client, attributedClient);
+
+        client.mState.setMaxAdj(PERSISTENT_PROC_ADJ);
+        attributedClient.mServices.setHasForegroundServices(true, 0, true);
+        bindService(sandboxService, client, attributedClient, null, 0, mock(IBinder.class));
+        sService.mWakefulness.set(PowerManagerInternal.WAKEFULNESS_AWAKE);
+        updateOomAdj();
+        assertProcStates(client, PROCESS_STATE_PERSISTENT, PERSISTENT_PROC_ADJ,
+                SCHED_GROUP_DEFAULT);
+        assertProcStates(attributedClient, PROCESS_STATE_FOREGROUND_SERVICE, PERCEPTIBLE_APP_ADJ,
+                SCHED_GROUP_DEFAULT);
+        assertProcStates(sandboxService, PROCESS_STATE_FOREGROUND_SERVICE, PERCEPTIBLE_APP_ADJ,
+                SCHED_GROUP_DEFAULT);
     }
 
-    private ProcessRecord makeProcessRecord(ActivityManagerService service, int pid, int uid,
-            String processName, String packageName, long versionCode, int targetSdkVersion,
-            long lastActivityTime, long lastPssTime, long nextPssTime, long lastPss, int maxAdj,
-            int setRawAdj, int curAdj, int setAdj, int curSchedGroup, int setSchedGroup,
-            int curProcState, int repProcState, int curRawProcState, int setProcState,
-            int connectionGroup, int connectionImportance, boolean serviceb,
-            boolean hasClientActivities, boolean hasForegroundServices, int fgServiceTypes,
-            boolean hasForegroundActivities, boolean repForegroundActivities, boolean systemNoUi,
-            boolean hasShownUi, boolean hasTopUi, boolean hasOverlayUi,
-            boolean runningRemoteAnimation, boolean hasAboveClient, boolean treatLikeActivity,
-            boolean killedByAm, Object forcingToImportant, int numOfCurReceivers,
-            long lastProviderTime, long lastTopTime, boolean cached, int numOfExecutingServices,
-            String isolatedEntryPoint, boolean execServicesFg) {
-        ApplicationInfo ai = spy(new ApplicationInfo());
-        ai.uid = uid;
-        ai.packageName = packageName;
-        ai.longVersionCode = versionCode;
-        ai.targetSdkVersion = targetSdkVersion;
-        ProcessRecord app = new ProcessRecord(service, ai, processName, uid);
-        final ProcessStateRecord state = app.mState;
-        final ProcessServiceRecord services = app.mServices;
-        final ProcessReceiverRecord receivers = app.mReceivers;
-        final ProcessProfileRecord profile = app.mProfile;
-        final ProcessProviderRecord providers = app.mProviders;
-        app.makeActive(mock(IApplicationThread.class), sService.mProcessStats);
-        app.setLastActivityTime(lastActivityTime);
-        app.setKilledByAm(killedByAm);
-        app.setIsolatedEntryPoint(isolatedEntryPoint);
-        setFieldValue(ProcessRecord.class, app, "mWindowProcessController",
-                mock(WindowProcessController.class));
-        profile.setLastPssTime(lastPssTime);
-        profile.setNextPssTime(nextPssTime);
-        profile.setLastPss(lastPss);
-        state.setMaxAdj(maxAdj);
-        state.setSetRawAdj(setRawAdj);
-        state.setCurAdj(curAdj);
-        state.setSetAdj(setAdj);
-        state.setCurrentSchedulingGroup(curSchedGroup);
-        state.setSetSchedGroup(setSchedGroup);
-        state.setCurProcState(curProcState);
-        state.setReportedProcState(repProcState);
-        state.setCurRawProcState(curRawProcState);
-        state.setSetProcState(setProcState);
-        state.setServiceB(serviceb);
-        state.setRepForegroundActivities(repForegroundActivities);
-        state.setHasForegroundActivities(hasForegroundActivities);
-        state.setSystemNoUi(systemNoUi);
-        state.setHasShownUi(hasShownUi);
-        state.setHasTopUi(hasTopUi);
-        state.setRunningRemoteAnimation(runningRemoteAnimation);
-        state.setHasOverlayUi(hasOverlayUi);
-        state.setCached(cached);
-        state.setLastTopTime(lastTopTime);
-        state.setForcingToImportant(forcingToImportant);
-        services.setConnectionGroup(connectionGroup);
-        services.setConnectionImportance(connectionImportance);
-        services.setHasClientActivities(hasClientActivities);
-        services.setHasForegroundServices(hasForegroundServices, fgServiceTypes,
-                /* hasNoneType=*/false);
-        services.setHasAboveClient(hasAboveClient);
-        services.setTreatLikeActivity(treatLikeActivity);
-        services.setExecServicesFg(execServicesFg);
-        for (int i = 0; i < numOfExecutingServices; i++) {
-            services.startExecutingService(mock(ServiceRecord.class));
-        }
-        for (int i = 0; i < numOfCurReceivers; i++) {
-            receivers.addCurReceiver(mock(BroadcastRecord.class));
-        }
-        providers.setLastProviderTime(lastProviderTime);
-        return app;
+    private ProcessRecord makeDefaultProcessRecord(int pid, int uid, String processName,
+            String packageName, boolean hasShownUi) {
+        return new ProcessRecordBuilder(pid, uid, processName, packageName).setHasShownUi(
+                hasShownUi).build();
     }
 
     private ServiceRecord makeServiceRecord(ProcessRecord app) {
@@ -2870,6 +2828,7 @@
         record.appInfo = app.info;
         setFieldValue(ServiceRecord.class, record, "bindings", new ArrayMap<>());
         setFieldValue(ServiceRecord.class, record, "pendingStarts", new ArrayList<>());
+        setFieldValue(ServiceRecord.class, record, "isSdkSandbox", app.isSdkSandbox);
         return record;
     }
 
@@ -2892,11 +2851,11 @@
     }
 
     private ServiceRecord bindService(ProcessRecord service, ProcessRecord client,
-            ServiceRecord record, long bindFlags, IBinder binder) {
+            ProcessRecord attributedClient, ServiceRecord record, long bindFlags, IBinder binder) {
         if (record == null) {
             record = makeServiceRecord(service);
         }
-        AppBindRecord binding = new AppBindRecord(record, null, client, null);
+        AppBindRecord binding = new AppBindRecord(record, null, client, attributedClient);
         ConnectionRecord cr = spy(new ConnectionRecord(binding,
                 mock(ActivityServiceConnectionsHolder.class),
                 mock(IServiceConnection.class), bindFlags,
@@ -2961,4 +2920,140 @@
             assertBfsl(app);
         }
     }
+
+    private static class ProcessRecordBuilder {
+        @SuppressWarnings("UnusedVariable")
+        int mPid;
+        int mUid;
+        String mProcessName;
+        String mPackageName;
+        long mVersionCode = 12345;
+        int mTargetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT;
+        long mLastActivityTime;
+        long mLastPssTime;
+        long mNextPssTime;
+        long mLastPss = 12345;
+        int mMaxAdj = UNKNOWN_ADJ;
+        int mSetRawAdj = UNKNOWN_ADJ;
+        int mCurAdj = UNKNOWN_ADJ;
+        int mSetAdj = CACHED_APP_MAX_ADJ;
+        int mCurSchedGroup = SCHED_GROUP_DEFAULT;
+        int mSetSchedGroup = SCHED_GROUP_DEFAULT;
+        int mCurProcState = PROCESS_STATE_NONEXISTENT;
+        int mRepProcState = PROCESS_STATE_NONEXISTENT;
+        int mCurRawProcState = PROCESS_STATE_NONEXISTENT;
+        int mSetProcState = PROCESS_STATE_NONEXISTENT;
+        int mConnectionGroup = 0;
+        int mConnectionImportance = 0;
+        boolean mServiceb = false;
+        boolean mHasClientActivities = false;
+        boolean mHasForegroundServices = false;
+        int mFgServiceTypes = ServiceInfo.FOREGROUND_SERVICE_TYPE_NONE;
+        boolean mHasForegroundActivities = false;
+        boolean mRepForegroundActivities = false;
+        boolean mSystemNoUi = false;
+        boolean mHasShownUi = false;
+        boolean mHasTopUi = false;
+        boolean mHasOverlayUi = false;
+        boolean mRunningRemoteAnimation = false;
+        boolean mHasAboveClient = false;
+        boolean mTreatLikeActivity = false;
+        boolean mKilledByAm = false;
+        Object mForcingToImportant;
+        int mNumOfCurReceivers = 0;
+        long mLastProviderTime = Long.MIN_VALUE;
+        long mLastTopTime = Long.MIN_VALUE;
+        boolean mCached = true;
+        int mNumOfExecutingServices = 0;
+        String mIsolatedEntryPoint = null;
+        boolean mExecServicesFg = false;
+        String mSdkSandboxClientAppPackage = null;
+
+        ProcessRecordBuilder(int pid, int uid, String processName, String packageName) {
+            mPid = pid;
+            mUid = uid;
+            mProcessName = processName;
+            mPackageName = packageName;
+
+            long now = SystemClock.uptimeMillis();
+            mLastActivityTime = now;
+            mLastPssTime = now;
+            mNextPssTime = now;
+        }
+
+        ProcessRecordBuilder setHasShownUi(boolean hasShownUi) {
+            mHasShownUi = hasShownUi;
+            return this;
+        }
+
+        ProcessRecordBuilder setSdkSandboxClientAppPackage(String sdkSandboxClientAppPackage) {
+            mSdkSandboxClientAppPackage = sdkSandboxClientAppPackage;
+            return this;
+        }
+
+        @SuppressWarnings("GuardedBy")
+        public ProcessRecord build() {
+            ApplicationInfo ai = spy(new ApplicationInfo());
+            ai.uid = mUid;
+            ai.packageName = mPackageName;
+            ai.longVersionCode = mVersionCode;
+            ai.targetSdkVersion = mTargetSdkVersion;
+            doCallRealMethod().when(sService).getPackageManagerInternal();
+            doReturn(null).when(sPackageManagerInternal).getApplicationInfo(
+                    eq(mSdkSandboxClientAppPackage), anyLong(), anyInt(), anyInt());
+            ProcessRecord app = new ProcessRecord(sService, ai, mProcessName, mUid,
+                    mSdkSandboxClientAppPackage, -1, null);
+            final ProcessStateRecord state = app.mState;
+            final ProcessServiceRecord services = app.mServices;
+            final ProcessReceiverRecord receivers = app.mReceivers;
+            final ProcessProfileRecord profile = app.mProfile;
+            final ProcessProviderRecord providers = app.mProviders;
+            app.makeActive(mock(IApplicationThread.class), sService.mProcessStats);
+            app.setLastActivityTime(mLastActivityTime);
+            app.setKilledByAm(mKilledByAm);
+            app.setIsolatedEntryPoint(mIsolatedEntryPoint);
+            setFieldValue(ProcessRecord.class, app, "mWindowProcessController",
+                    mock(WindowProcessController.class));
+            profile.setLastPssTime(mLastPssTime);
+            profile.setNextPssTime(mNextPssTime);
+            profile.setLastPss(mLastPss);
+            state.setMaxAdj(mMaxAdj);
+            state.setSetRawAdj(mSetRawAdj);
+            state.setCurAdj(mCurAdj);
+            state.setSetAdj(mSetAdj);
+            state.setCurrentSchedulingGroup(mCurSchedGroup);
+            state.setSetSchedGroup(mSetSchedGroup);
+            state.setCurProcState(mCurProcState);
+            state.setReportedProcState(mRepProcState);
+            state.setCurRawProcState(mCurRawProcState);
+            state.setSetProcState(mSetProcState);
+            state.setServiceB(mServiceb);
+            state.setRepForegroundActivities(mRepForegroundActivities);
+            state.setHasForegroundActivities(mHasForegroundActivities);
+            state.setSystemNoUi(mSystemNoUi);
+            state.setHasShownUi(mHasShownUi);
+            state.setHasTopUi(mHasTopUi);
+            state.setRunningRemoteAnimation(mRunningRemoteAnimation);
+            state.setHasOverlayUi(mHasOverlayUi);
+            state.setCached(mCached);
+            state.setLastTopTime(mLastTopTime);
+            state.setForcingToImportant(mForcingToImportant);
+            services.setConnectionGroup(mConnectionGroup);
+            services.setConnectionImportance(mConnectionImportance);
+            services.setHasClientActivities(mHasClientActivities);
+            services.setHasForegroundServices(mHasForegroundServices, mFgServiceTypes,
+                    /* hasNoneType=*/false);
+            services.setHasAboveClient(mHasAboveClient);
+            services.setTreatLikeActivity(mTreatLikeActivity);
+            services.setExecServicesFg(mExecServicesFg);
+            for (int i = 0; i < mNumOfExecutingServices; i++) {
+                services.startExecutingService(mock(ServiceRecord.class));
+            }
+            for (int i = 0; i < mNumOfCurReceivers; i++) {
+                receivers.addCurReceiver(mock(BroadcastRecord.class));
+            }
+            providers.setLastProviderTime(mLastProviderTime);
+            return app;
+        }
+    }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
index 656bc71..7bbcd50 100644
--- a/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/pm/UserManagerServiceTest.java
@@ -722,6 +722,17 @@
         Mockito.verify(mKeyguardManager, never()).addKeyguardLockedStateListener(any(), any());
     }
 
+    @Test
+    public void testGetProfileIdsExcludingHidden() {
+        mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_HIDING_PROFILES);
+        UserInfo privateProfileUser =
+                mUms.createProfileForUserEvenWhenDisallowedWithThrow("TestPrivateProfile",
+                        USER_TYPE_PROFILE_PRIVATE, 0, 0, null);
+        for (int id : mUms.getProfileIdsExcludingHidden(0, true)) {
+            assertThat(id).isNotEqualTo(privateProfileUser.id);
+        }
+    }
+
     /**
      * Returns true if the user's XML file has Default restrictions
      * @param userId Id of the user.
diff --git a/services/tests/mockingservicestests/src/com/android/server/selinux/OWNERS b/services/tests/mockingservicestests/src/com/android/server/selinux/OWNERS
new file mode 100644
index 0000000..49a0934
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/selinux/OWNERS
@@ -0,0 +1 @@
+include /services/core/java/com/android/server/selinux/OWNERS
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
index 395b3aa..d36b553 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsHistoryIteratorTest.java
@@ -95,24 +95,24 @@
         assertThat(item = iterator.next()).isNotNull();
         assertHistoryItem(item,
                 BatteryStats.HistoryItem.CMD_UPDATE, BatteryStats.HistoryItem.EVENT_NONE,
-                null, 0, 3_600_000, 90, 1_000_000);
+                null, 0, -1, 3_600_000, 90, 1_000_000);
 
         assertThat(item = iterator.next()).isNotNull();
         assertHistoryItem(item,
                 BatteryStats.HistoryItem.CMD_UPDATE, BatteryStats.HistoryItem.EVENT_NONE,
-                null, 0, 2_400_000, 80, 2_000_000);
+                null, 0, 3700, 2_400_000, 80, 2_000_000);
 
         assertThat(item = iterator.next()).isNotNull();
         assertHistoryItem(item,
                 BatteryStats.HistoryItem.CMD_UPDATE,
                 BatteryStats.HistoryItem.EVENT_ALARM | BatteryStats.HistoryItem.EVENT_FLAG_START,
-                "foo", APP_UID, 2_400_000, 80, 3_000_000);
+                "foo", APP_UID, 3700, 2_400_000, 80, 3_000_000);
 
         assertThat(item = iterator.next()).isNotNull();
         assertHistoryItem(item,
                 BatteryStats.HistoryItem.CMD_UPDATE,
                 BatteryStats.HistoryItem.EVENT_ALARM | BatteryStats.HistoryItem.EVENT_FLAG_FINISH,
-                "foo", APP_UID, 2_400_000, 80, 3_001_000);
+                "foo", APP_UID, 3700, 2_400_000, 80, 3_001_000);
 
         assertThat(iterator.hasNext()).isFalse();
         assertThat(iterator.next()).isNull();
@@ -140,7 +140,7 @@
         mMockClock.currentTime = 3000;
 
         mBatteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING,
-                100, /* plugType */ 0, 90, 72, 3700, 3_600_000, 4_000_000, 0, 1_000_000,
+                100, /* plugType */ 0, 90, 72, -1, 3_600_000, 4_000_000, 0, 1_000_000,
                 1_000_000, 1_000_000);
         mBatteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING,
                 100, /* plugType */ 0, 80, 72, 3700, 2_400_000, 4_000_000, 0, 2_000_000,
@@ -303,7 +303,7 @@
     }
 
     private void assertHistoryItem(BatteryStats.HistoryItem item, int command, int eventCode,
-            String tag, int uid, int batteryChargeUah, int batteryLevel,
+            String tag, int uid, int voltageMv, int batteryChargeUah, int batteryLevel,
             long elapsedTimeMs) {
         assertThat(item.cmd).isEqualTo(command);
         assertThat(item.eventCode).isEqualTo(eventCode);
@@ -313,6 +313,7 @@
             assertThat(item.eventTag.string).isEqualTo(tag);
             assertThat(item.eventTag.uid).isEqualTo(uid);
         }
+        assertThat((int) item.batteryVoltage).isEqualTo(voltageMv);
         assertThat(item.batteryChargeUah).isEqualTo(batteryChargeUah);
         assertThat(item.batteryLevel).isEqualTo(batteryLevel);
 
diff --git a/services/tests/servicestests/src/com/android/server/adaptiveauth/AdaptiveAuthServiceTest.java b/services/tests/servicestests/src/com/android/server/adaptiveauth/AdaptiveAuthServiceTest.java
new file mode 100644
index 0000000..08a6529
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/adaptiveauth/AdaptiveAuthServiceTest.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2024 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 com.android.server.adaptiveauth;
+
+import static android.adaptiveauth.Flags.FLAG_ENABLE_ADAPTIVE_AUTH;
+import static android.adaptiveauth.Flags.FLAG_REPORT_BIOMETRIC_AUTH_ATTEMPTS;
+import static android.security.Flags.FLAG_REPORT_PRIMARY_AUTH_ATTEMPTS;
+
+import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST;
+import static com.android.server.adaptiveauth.AdaptiveAuthService.MAX_ALLOWED_FAILED_AUTH_ATTEMPTS;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.hardware.biometrics.AuthenticationStateListener;
+import android.hardware.biometrics.BiometricManager;
+import android.os.RemoteException;
+import android.platform.test.flag.junit.SetFlagsRule;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.internal.widget.LockSettingsInternal;
+import com.android.internal.widget.LockSettingsStateListener;
+import com.android.server.LocalServices;
+import com.android.server.pm.UserManagerInternal;
+import com.android.server.wm.WindowManagerInternal;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * atest FrameworksServicesTests:AdaptiveAuthServiceTest
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AdaptiveAuthServiceTest {
+    @Rule
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+
+    private static final int PRIMARY_USER_ID = 0;
+    private static final int MANAGED_PROFILE_USER_ID = 12;
+    private static final int DEFAULT_COUNT_FAILED_AUTH_ATTEMPTS = 0;
+    private static final int REASON_UNKNOWN = 0; // BiometricRequestConstants.RequestReason
+
+    private Context mContext;
+    private AdaptiveAuthService mAdaptiveAuthService;
+
+    @Mock
+    LockPatternUtils mLockPatternUtils;
+    @Mock
+    private LockSettingsInternal mLockSettings;
+    @Mock
+    private BiometricManager mBiometricManager;
+    @Mock
+    private KeyguardManager mKeyguardManager;
+    @Mock
+    private WindowManagerInternal mWindowManager;
+    @Mock
+    private UserManagerInternal mUserManager;
+
+    @Captor
+    ArgumentCaptor<LockSettingsStateListener> mLockSettingsStateListenerCaptor;
+    @Captor
+    ArgumentCaptor<AuthenticationStateListener> mAuthenticationStateListenerCaptor;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mSetFlagsRule.enableFlags(FLAG_ENABLE_ADAPTIVE_AUTH);
+        mSetFlagsRule.enableFlags(FLAG_REPORT_PRIMARY_AUTH_ATTEMPTS);
+        mSetFlagsRule.enableFlags(FLAG_REPORT_BIOMETRIC_AUTH_ATTEMPTS);
+
+        mContext = spy(ApplicationProvider.getApplicationContext());
+        when(mContext.getSystemService(BiometricManager.class)).thenReturn(mBiometricManager);
+        when(mContext.getSystemService(KeyguardManager.class)).thenReturn(mKeyguardManager);
+
+        LocalServices.removeServiceForTest(LockSettingsInternal.class);
+        LocalServices.addService(LockSettingsInternal.class, mLockSettings);
+        LocalServices.removeServiceForTest(WindowManagerInternal.class);
+        LocalServices.addService(WindowManagerInternal.class, mWindowManager);
+        LocalServices.removeServiceForTest(UserManagerInternal.class);
+        LocalServices.addService(UserManagerInternal.class, mUserManager);
+
+        mAdaptiveAuthService = new AdaptiveAuthService(mContext, mLockPatternUtils);
+        mAdaptiveAuthService.init();
+
+        verify(mLockSettings).registerLockSettingsStateListener(
+                mLockSettingsStateListenerCaptor.capture());
+        verify(mBiometricManager).registerAuthenticationStateListener(
+                mAuthenticationStateListenerCaptor.capture());
+
+        // Set PRIMARY_USER_ID as the parent of MANAGED_PROFILE_USER_ID
+        when(mUserManager.getProfileParentId(eq(MANAGED_PROFILE_USER_ID)))
+                .thenReturn(PRIMARY_USER_ID);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        LocalServices.removeServiceForTest(LockSettingsInternal.class);
+        LocalServices.removeServiceForTest(WindowManagerInternal.class);
+        LocalServices.removeServiceForTest(UserManagerInternal.class);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthSucceeded()
+            throws RemoteException {
+        mLockSettingsStateListenerCaptor.getValue().onAuthenticationSucceeded(PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(DEFAULT_COUNT_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthFailed_once()
+            throws RemoteException {
+        mLockSettingsStateListenerCaptor.getValue().onAuthenticationFailed(PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(1 /* expectedCntFailedAttempts */, PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthFailed_multiple_deviceCurrentlyLocked()
+            throws RemoteException {
+        // Device is currently locked and Keyguard is showing
+        when(mKeyguardManager.isDeviceLocked(PRIMARY_USER_ID)).thenReturn(true);
+        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
+
+        for (int i = 0; i < MAX_ALLOWED_FAILED_AUTH_ATTEMPTS; i++) {
+            mLockSettingsStateListenerCaptor.getValue().onAuthenticationFailed(PRIMARY_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(MAX_ALLOWED_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthFailed_multiple_deviceCurrentlyNotLocked()
+            throws RemoteException {
+        // Device is currently not locked and Keyguard is not showing
+        when(mKeyguardManager.isDeviceLocked(PRIMARY_USER_ID)).thenReturn(false);
+        when(mKeyguardManager.isKeyguardLocked()).thenReturn(false);
+
+        for (int i = 0; i < MAX_ALLOWED_FAILED_AUTH_ATTEMPTS; i++) {
+            mLockSettingsStateListenerCaptor.getValue().onAuthenticationFailed(PRIMARY_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyLockDevice(PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_biometricAuthSucceeded()
+            throws RemoteException {
+        mAuthenticationStateListenerCaptor.getValue()
+                .onAuthenticationSucceeded(REASON_UNKNOWN, PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(DEFAULT_COUNT_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_biometricAuthFailed_once()
+            throws RemoteException {
+        mAuthenticationStateListenerCaptor.getValue()
+                .onAuthenticationFailed(REASON_UNKNOWN, PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(1 /* expectedCntFailedAttempts */, PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_biometricAuthFailed_multiple_deviceCurrentlyLocked()
+            throws RemoteException {
+        // Device is currently locked and Keyguard is showing
+        when(mKeyguardManager.isDeviceLocked(PRIMARY_USER_ID)).thenReturn(true);
+        when(mKeyguardManager.isKeyguardLocked()).thenReturn(true);
+
+        for (int i = 0; i < MAX_ALLOWED_FAILED_AUTH_ATTEMPTS; i++) {
+            mAuthenticationStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(REASON_UNKNOWN, PRIMARY_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(MAX_ALLOWED_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_biometricAuthFailed_multiple_deviceCurrentlyNotLocked()
+            throws RemoteException {
+        // Device is currently not locked and Keyguard is not showing
+        when(mKeyguardManager.isDeviceLocked(PRIMARY_USER_ID)).thenReturn(false);
+        when(mKeyguardManager.isKeyguardLocked()).thenReturn(false);
+
+        for (int i = 0; i < MAX_ALLOWED_FAILED_AUTH_ATTEMPTS; i++) {
+            mAuthenticationStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(REASON_UNKNOWN, PRIMARY_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyLockDevice(PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_biometricAuthFailedThenPrimaryAuthSucceeded()
+            throws RemoteException {
+        // Three failed biometric auth attempts
+        for (int i = 0; i < 3; i++) {
+            mAuthenticationStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(REASON_UNKNOWN, PRIMARY_USER_ID);
+        }
+        // One successful primary auth attempt
+        mLockSettingsStateListenerCaptor.getValue().onAuthenticationSucceeded(PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(DEFAULT_COUNT_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthFailedThenBiometricAuthSucceeded()
+            throws RemoteException {
+        // Three failed primary auth attempts
+        for (int i = 0; i < 3; i++) {
+            mLockSettingsStateListenerCaptor.getValue().onAuthenticationFailed(PRIMARY_USER_ID);
+        }
+        // One successful biometric auth attempt
+        mAuthenticationStateListenerCaptor.getValue()
+                .onAuthenticationSucceeded(REASON_UNKNOWN, PRIMARY_USER_ID);
+        waitForAuthCompletion();
+
+        verifyNotLockDevice(DEFAULT_COUNT_FAILED_AUTH_ATTEMPTS /* expectedCntFailedAttempts */,
+                PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthAndBiometricAuthFailed_primaryUser()
+            throws RemoteException {
+        // Three failed primary auth attempts
+        for (int i = 0; i < 3; i++) {
+            mLockSettingsStateListenerCaptor.getValue().onAuthenticationFailed(PRIMARY_USER_ID);
+        }
+        // Two failed biometric auth attempts
+        for (int i = 0; i < 2; i++) {
+            mAuthenticationStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(REASON_UNKNOWN, PRIMARY_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyLockDevice(PRIMARY_USER_ID);
+    }
+
+    @Test
+    public void testReportAuthAttempt_primaryAuthAndBiometricAuthFailed_profileOfPrimaryUser()
+            throws RemoteException {
+        // Three failed primary auth attempts
+        for (int i = 0; i < 3; i++) {
+            mLockSettingsStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(MANAGED_PROFILE_USER_ID);
+        }
+        // Two failed biometric auth attempts
+        for (int i = 0; i < 2; i++) {
+            mAuthenticationStateListenerCaptor.getValue()
+                    .onAuthenticationFailed(REASON_UNKNOWN, MANAGED_PROFILE_USER_ID);
+        }
+        waitForAuthCompletion();
+
+        verifyLockDevice(MANAGED_PROFILE_USER_ID);
+    }
+
+    private void verifyNotLockDevice(int expectedCntFailedAttempts, int userId) {
+        assertEquals(expectedCntFailedAttempts,
+                mAdaptiveAuthService.mFailedAttemptsForUser.get(userId));
+        verify(mWindowManager, never()).lockNow();
+    }
+
+    private void verifyLockDevice(int userId) {
+        assertEquals(MAX_ALLOWED_FAILED_AUTH_ATTEMPTS,
+                mAdaptiveAuthService.mFailedAttemptsForUser.get(userId));
+        verify(mLockPatternUtils).requireStrongAuth(
+                eq(SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST), eq(userId));
+        // If userId is MANAGED_PROFILE_USER_ID, the StrongAuthFlag of its parent (PRIMARY_USER_ID)
+        // should also be verified
+        if (userId == MANAGED_PROFILE_USER_ID) {
+            verify(mLockPatternUtils).requireStrongAuth(
+                    eq(SOME_AUTH_REQUIRED_AFTER_ADAPTIVE_AUTH_REQUEST), eq(PRIMARY_USER_ID));
+        }
+        verify(mWindowManager).lockNow();
+    }
+
+    /**
+     * Wait for all auth events to complete before verification
+     */
+    private static void waitForAuthCompletion() {
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/adaptiveauth/OWNERS b/services/tests/servicestests/src/com/android/server/adaptiveauth/OWNERS
new file mode 100644
index 0000000..0218a78
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/adaptiveauth/OWNERS
@@ -0,0 +1 @@
+include /services/core/java/com/android/server/adaptiveauth/OWNERS
\ No newline at end of file
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index 6986cab..e59b5ea 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -270,6 +270,9 @@
     }
 
     protected void setSecureFrpMode(boolean secure) {
+        if (android.security.Flags.frpEnforcement()) {
+            mStorage.setTestFactoryResetProtectionState(secure);
+        }
         Settings.Secure.putIntForUser(mContext.getContentResolver(),
                 Settings.Secure.SECURE_FRP_MODE, secure ? 1 : 0, UserHandle.USER_SYSTEM);
     }
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
index ee076c6..296d2cb 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
@@ -21,12 +21,14 @@
 import android.app.IActivityManager;
 import android.app.admin.DeviceStateCache;
 import android.content.Context;
+import android.content.Intent;
 import android.content.pm.UserInfo;
 import android.hardware.authsecret.IAuthSecret;
 import android.os.Handler;
 import android.os.Parcel;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.os.storage.IStorageManager;
 import android.security.KeyStore;
 import android.security.keystore.KeyPermanentlyInvalidatedException;
@@ -41,6 +43,9 @@
 import java.io.FileNotFoundException;
 
 public class LockSettingsServiceTestable extends LockSettingsService {
+    private Intent mSavedFrpNotificationIntent = null;
+    private UserHandle mSavedFrpNotificationUserHandle = null;
+    private String mSavedFrpNotificationPermission = null;
 
     public static class MockInjector extends LockSettingsService.Injector {
 
@@ -218,4 +223,29 @@
             mAuthSecret = null;
         }
     }
+
+    @Override
+    void sendBroadcast(Intent intent, UserHandle userHandle, String permission) {
+        mSavedFrpNotificationIntent = intent;
+        mSavedFrpNotificationUserHandle = userHandle;
+        mSavedFrpNotificationPermission = permission;
+    }
+
+    String getSavedFrpNotificationPermission() {
+        return mSavedFrpNotificationPermission;
+    }
+
+    UserHandle getSavedFrpNotificationUserHandle() {
+        return mSavedFrpNotificationUserHandle;
+    }
+
+    Intent getSavedFrpNotificationIntent() {
+        return mSavedFrpNotificationIntent;
+    }
+
+    void clearRecordedFrpNotificationData() {
+        mSavedFrpNotificationIntent = null;
+        mSavedFrpNotificationPermission = null;
+        mSavedFrpNotificationUserHandle = null;
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
index 7053597..4b22652 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTests.java
@@ -16,6 +16,7 @@
 
 package com.android.server.locksettings;
 
+import static android.Manifest.permission.CONFIGURE_FACTORY_RESET_PROTECTION;
 import static android.security.Flags.FLAG_REPORT_PRIMARY_AUTH_ATTEMPTS;
 
 import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
@@ -39,7 +40,9 @@
 import static org.mockito.Mockito.when;
 
 import android.app.PropertyInvalidatedCache;
+import android.content.Intent;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.platform.test.annotations.Presubmit;
 import android.platform.test.flag.junit.SetFlagsRule;
 import android.service.gatekeeper.GateKeeperResponse;
@@ -239,6 +242,12 @@
     }
 
     @Test
+    public void testSetLockCredential_forPrimaryUser_sendsFrpNotification() throws Exception {
+        setCredential(PRIMARY_USER_ID, newPassword("password"));
+        checkRecordedFrpNotificationIntent();
+    }
+
+    @Test
     public void testSetLockCredential_forPrimaryUser_sendsCredentials() throws Exception {
         setCredential(PRIMARY_USER_ID, newPassword("password"));
         verify(mRecoverableKeyStoreManager)
@@ -323,6 +332,15 @@
     }
 
     @Test
+    public void testClearLockCredential_sendsFrpNotification() throws Exception {
+        setCredential(PRIMARY_USER_ID, newPassword("password"));
+        checkRecordedFrpNotificationIntent();
+        mService.clearRecordedFrpNotificationData();
+        clearCredential(PRIMARY_USER_ID, newPassword("password"));
+        checkRecordedFrpNotificationIntent();
+    }
+
+    @Test
     public void testSetLockCredential_forUnifiedToSeparateChallengeProfile_sendsNewCredentials()
             throws Exception {
         final LockscreenCredential parentPassword = newPassword("parentPassword");
@@ -519,6 +537,23 @@
         mService.setString(null, "value", 0);
     }
 
+    private void checkRecordedFrpNotificationIntent() {
+        if (android.security.Flags.frpEnforcement()) {
+            Intent savedNotificationIntent = mService.getSavedFrpNotificationIntent();
+            assertNotNull(savedNotificationIntent);
+            UserHandle userHandle = mService.getSavedFrpNotificationUserHandle();
+            assertEquals(userHandle,
+                    UserHandle.of(mInjector.getUserManagerInternal().getMainUserId()));
+
+            String permission = mService.getSavedFrpNotificationPermission();
+            assertEquals(CONFIGURE_FACTORY_RESET_PROTECTION, permission);
+        } else {
+            assertNull(mService.getSavedFrpNotificationIntent());
+            assertNull(mService.getSavedFrpNotificationUserHandle());
+            assertNull(mService.getSavedFrpNotificationPermission());
+        }
+    }
+
     private void checkPasswordHistoryLength(int userId, int expectedLen) {
         String history = mService.getString(LockPatternUtils.PASSWORD_HISTORY_KEY, "", userId);
         String[] hashes = TextUtils.split(history, LockPatternUtils.PASSWORD_HISTORY_DELIMITER);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTestable.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTestable.java
index fa3c7a4c..c01d0f6 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTestable.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTestable.java
@@ -35,6 +35,7 @@
     public final File mStorageDir;
     public PersistentDataBlockManagerInternal mPersistentDataBlockManager;
     private byte[] mPersistentData;
+    private boolean mIsFactoryResetProtectionActive = false;
 
     public LockSettingsStorageTestable(Context context, File storageDir) {
         super(context);
@@ -63,6 +64,10 @@
         }).when(mPersistentDataBlockManager).getFrpCredentialHandle();
     }
 
+    void setTestFactoryResetProtectionState(boolean active) {
+        mIsFactoryResetProtectionActive = active;
+    }
+
     @Override
     File getChildProfileLockFile(int userId) {
         return remapToStorageDir(super.getChildProfileLockFile(userId));
@@ -101,4 +106,9 @@
         mappedPath.getParentFile().mkdirs();
         return mappedPath;
     }
+
+    @Override
+    public boolean isFactoryResetProtectionActive() {
+        return mIsFactoryResetProtectionActive;
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
index 4451cae..5f2abc3 100644
--- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java
@@ -18,6 +18,7 @@
 
 import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS;
 import static android.Manifest.permission.NETWORK_STACK;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_ALL;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_NONE;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK;
 import static android.app.ActivityManager.PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK;
@@ -58,9 +59,11 @@
 import static android.net.NetworkPolicyManager.ALLOWED_REASON_TOP;
 import static android.net.NetworkPolicyManager.BACKGROUND_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
+import static android.net.NetworkPolicyManager.FOREGROUND_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND;
 import static android.net.NetworkPolicyManager.POLICY_NONE;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
+import static android.net.NetworkPolicyManager.TOP_THRESHOLD_STATE;
 import static android.net.NetworkPolicyManager.allowedReasonsToString;
 import static android.net.NetworkPolicyManager.blockedReasonsToString;
 import static android.net.NetworkPolicyManager.uidPoliciesToString;
@@ -88,6 +91,7 @@
 import static com.android.server.net.NetworkPolicyManagerService.TYPE_LIMIT_SNOOZED;
 import static com.android.server.net.NetworkPolicyManagerService.TYPE_RAPID;
 import static com.android.server.net.NetworkPolicyManagerService.TYPE_WARNING;
+import static com.android.server.net.NetworkPolicyManagerService.UID_MSG_STATE_CHANGED;
 import static com.android.server.net.NetworkPolicyManagerService.UidBlockedState.getEffectiveBlockedReasons;
 import static com.android.server.net.NetworkPolicyManagerService.normalizeTemplate;
 
@@ -196,8 +200,6 @@
 import com.android.server.pm.pkg.AndroidPackage;
 import com.android.server.usage.AppStandbyInternal;
 
-import com.google.common.util.concurrent.AbstractFuture;
-
 import libcore.io.Streams;
 
 import org.junit.After;
@@ -241,10 +243,8 @@
 import java.util.Set;
 import java.util.TimeZone;
 import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -2247,6 +2247,123 @@
     }
 
     @Test
+    @RequiresFlagsEnabled(Flags.FLAG_NETWORK_BLOCKED_FOR_TOP_SLEEPING_AND_ABOVE)
+    public void testUidObserverFiltersProcStateChanges() throws Exception {
+        int testProcStateSeq = 0;
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // First callback for uid.
+            callOnUidStatechanged(UID_A, BACKGROUND_THRESHOLD_STATE + 1, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Doesn't cross the background threshold.
+            callOnUidStatechanged(UID_A, BACKGROUND_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Crosses the background threshold.
+            callOnUidStatechanged(UID_A, BACKGROUND_THRESHOLD_STATE - 1, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Doesn't cross the foreground threshold.
+            callOnUidStatechanged(UID_A, FOREGROUND_THRESHOLD_STATE + 1, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Crosses the foreground threshold.
+            callOnUidStatechanged(UID_A, FOREGROUND_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Doesn't cross the top threshold.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE + 1, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Crosses the top threshold.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Doesn't cross any other threshold.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE - 1, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_NETWORK_BLOCKED_FOR_TOP_SLEEPING_AND_ABOVE)
+    public void testUidObserverFiltersStaleChanges() throws Exception {
+        final int testProcStateSeq = 51;
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // First callback for uid.
+            callOnUidStatechanged(UID_B, BACKGROUND_THRESHOLD_STATE + 100, testProcStateSeq,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // Stale callback because the procStateSeq is smaller.
+            callOnUidStatechanged(UID_B, BACKGROUND_THRESHOLD_STATE - 100, testProcStateSeq - 10,
+                    PROCESS_CAPABILITY_NONE);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_NETWORK_BLOCKED_FOR_TOP_SLEEPING_AND_ABOVE)
+    public void testUidObserverFiltersCapabilityChanges() throws Exception {
+        int testProcStateSeq = 0;
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // First callback for uid.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_NONE);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // The same process-state with one network capability added.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // The same process-state with another network capability added.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_POWER_RESTRICTED_NETWORK
+                            | PROCESS_CAPABILITY_USER_RESTRICTED_NETWORK);
+            assertTrue(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+        try (SyncBarrier b = new SyncBarrier(mService.mUidEventHandler)) {
+            // The same process-state with all capabilities, but no change in network capabilities.
+            callOnUidStatechanged(UID_A, TOP_THRESHOLD_STATE, testProcStateSeq++,
+                    PROCESS_CAPABILITY_ALL);
+            assertFalse(mService.mUidEventHandler.hasMessages(UID_MSG_STATE_CHANGED));
+        }
+        waitForUidEventHandlerIdle();
+    }
+
+    @Test
     public void testLowPowerStandbyAllowlist() throws Exception {
         // Chain background is also enabled but these procstates are important enough to be exempt.
         callAndWaitOnUidStateChanged(UID_A, PROCESS_STATE_TOP, 0);
@@ -2559,17 +2676,6 @@
         verify(mStatsManager).setDefaultGlobalAlert(anyLong());
     }
 
-    private static class TestAbstractFuture<T> extends AbstractFuture<T> {
-        @Override
-        public T get() throws InterruptedException, ExecutionException {
-            try {
-                return get(5, TimeUnit.SECONDS);
-            } catch (TimeoutException e) {
-                throw new RuntimeException(e);
-            }
-        }
-    }
-
     private static void assertTimeEquals(long expected, long actual) {
         if (expected != actual) {
             fail("expected " + formatTime(expected) + " but was actually " + formatTime(actual));
diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
index d50affb..a0f2395 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -18,7 +18,6 @@
 import static android.content.pm.ShortcutInfo.DISABLED_REASON_BACKUP_NOT_SUPPORTED;
 import static android.content.pm.ShortcutInfo.DISABLED_REASON_NOT_DISABLED;
 import static android.content.pm.ShortcutInfo.DISABLED_REASON_SIGNATURE_MISMATCH;
-import static android.content.pm.ShortcutInfo.DISABLED_REASON_VERSION_LOWER;
 
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.anyOrNull;
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.anyStringOrNull;
@@ -78,7 +77,6 @@
 import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.LauncherApps;
-import android.content.pm.LauncherApps.PinItemRequest;
 import android.content.pm.LauncherApps.ShortcutQuery;
 import android.content.pm.PackageInfo;
 import android.content.pm.ShortcutInfo;
@@ -4844,7 +4842,7 @@
         doReturn(expected != DISABLED_REASON_SIGNATURE_MISMATCH).when(
                 mMockPackageManagerInternal).isDataRestoreSafe(any(byte[].class), anyString());
 
-        assertEquals(expected, spi.canRestoreTo(mService, pi, anyVersionOk));
+        assertEquals(expected, spi.canRestoreTo(mService, pi, true));
     }
 
     public void testCanRestoreTo() {
@@ -4872,7 +4870,6 @@
         checkCanRestoreTo(DISABLED_REASON_SIGNATURE_MISMATCH, spi1, false, 10, true, "x");
         checkCanRestoreTo(DISABLED_REASON_SIGNATURE_MISMATCH, spi1, false, 10, true, "x", "y");
         checkCanRestoreTo(DISABLED_REASON_SIGNATURE_MISMATCH, spi1, false, 10, true, "x");
-        checkCanRestoreTo(DISABLED_REASON_VERSION_LOWER, spi1, false, 9, true, "sig1");
 
         // Any version okay.
         checkCanRestoreTo(DISABLED_REASON_NOT_DISABLED, spi1, true, 9, true, "sig1");
@@ -5983,14 +5980,6 @@
         });
     }
 
-    public void testBackupAndRestore_publisherLowerVersion() {
-        prepareForBackupTest();
-
-        addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 0); // Lower version
-
-        checkBackupAndRestore_publisherNotRestored(ShortcutInfo.DISABLED_REASON_VERSION_LOWER);
-    }
-
     public void testBackupAndRestore_publisherWrongSignature() {
         prepareForBackupTest();
 
@@ -6626,252 +6615,6 @@
         });
     }
 
-
-    /**
-     * Restored to a lower version with no manifest shortcuts. All shortcuts are now invisible,
-     * and all calls from the publisher should ignore them.
-     */
-    public void testBackupAndRestore_disabledShortcutsAreIgnored() {
-        // Publish two manifest shortcuts.
-        addManifestShortcutResource(
-                new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
-                R.xml.shortcut_5_altalt);
-        updatePackageVersion(CALLING_PACKAGE_1, 1);
-        mService.mPackageMonitor.onReceive(mServiceContext,
-                genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
-
-        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertTrue(mManager.setDynamicShortcuts(list(
-                    makeShortcutWithShortLabel("s1", "original-title"),
-                    makeShortcut("s2"), makeShortcut("s3"))));
-        });
-
-        // Pin from launcher 1.
-        runWithCaller(LAUNCHER_1, USER_0, () -> {
-            mLauncherApps.pinShortcuts(CALLING_PACKAGE_1,
-                    list("ms1", "ms2", "ms3", "ms4", "s1", "s2"), HANDLE_USER_0);
-        });
-
-        doReturn(true).when(mMockPackageManagerInternal).isDataRestoreSafe(
-                any(byte[].class), anyString());
-
-        backupAndRestore();
-
-        // Lower the version and remove the manifest shortcuts.
-        addManifestShortcutResource(
-                new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
-                R.xml.shortcut_0);
-        addPackage(CALLING_PACKAGE_1, CALLING_UID_1, 0); // Lower version
-
-        // When re-installing the app, the manifest shortcut should be re-published.
-        mService.mPackageMonitor.onReceive(mServiceContext,
-                genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
-        mService.mPackageMonitor.onReceive(mServiceContext,
-                genPackageAddIntent(LAUNCHER_1, USER_0));
-
-        // No shortcuts should be visible to the publisher.
-        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-            assertWith(getCallerVisibleShortcuts())
-                    .isEmpty();
-        });
-
-        final Runnable checkAllDisabledForLauncher = () -> {
-            runWithCaller(LAUNCHER_1, USER_0, () -> {
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .areAllPinned()
-                        .haveIds("ms1", "ms2", "ms3", "ms4", "s1", "s2")
-                        .areAllDisabled()
-                        .areAllWithDisabledReason(ShortcutInfo.DISABLED_REASON_VERSION_LOWER)
-
-                        .forShortcutWithId("s1", si -> {
-                            assertEquals("original-title", si.getShortLabel());
-                        })
-                        .forShortcutWithId("ms1", si -> {
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title1 + "/en"
-                                    , si.getShortLabel());
-                        })
-                        .forShortcutWithId("ms2", si -> {
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title2 + "/en"
-                                    , si.getShortLabel());
-                        })
-                        .forShortcutWithId("ms3", si -> {
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title1 + "/en"
-                                    , si.getShortLabel());
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title2 + "/en"
-                                    , si.getLongLabel());
-                        })
-                        .forShortcutWithId("ms4", si -> {
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title2 + "/en"
-                                    , si.getShortLabel());
-                            assertEquals("string-com.android.test.1-user:0-res:"
-                                            + R.string.shortcut_title2 + "/en"
-                                    , si.getLongLabel());
-                        });
-            });
-        };
-
-        checkAllDisabledForLauncher.run();
-
-        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
-
-            makeCallerForeground(); // CALLING_PACKAGE_1 is now in the foreground.
-
-            // All changing API calls should be ignored.
-
-            getManager().enableShortcuts(list("ms1", "ms2", "ms3", "ms4", "s1", "s2"));
-            checkAllDisabledForLauncher.run();
-
-            getManager().enableShortcuts(list("ms1", "ms2", "ms3", "ms4", "s1", "s2"));
-            checkAllDisabledForLauncher.run();
-
-            getManager().enableShortcuts(list("ms1", "ms2", "ms3", "ms4", "s1", "s2"));
-            checkAllDisabledForLauncher.run();
-
-            getManager().removeAllDynamicShortcuts();
-            getManager().removeDynamicShortcuts(list("ms1", "ms2", "ms3", "ms4", "s1", "s2"));
-            checkAllDisabledForLauncher.run();
-
-            getManager().updateShortcuts(list(makeShortcutWithShortLabel("s1", "new-title")));
-            checkAllDisabledForLauncher.run();
-
-
-            // Add a shortcut -- even though ms1 was immutable, it will succeed.
-            assertTrue(getManager().addDynamicShortcuts(list(
-                    makeShortcutWithShortLabel("ms1", "original-title"))));
-
-            runWithCaller(LAUNCHER_1, USER_0, () -> {
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .haveIds("ms1", "ms2", "ms3", "ms4", "s1", "s2")
-
-                        .selectByIds("ms1")
-                        .areAllEnabled()
-                        .areAllDynamic()
-                        .areAllPinned()
-                        .forAllShortcuts(si -> {
-                            assertEquals("original-title", si.getShortLabel());
-                        })
-
-                        // The rest still exist and disabled.
-                        .revertToOriginalList()
-                        .selectByIds("ms2", "ms3", "ms4", "s1", "s2")
-                        .areAllDisabled()
-                        .areAllPinned()
-                ;
-            });
-
-            assertTrue(getManager().setDynamicShortcuts(list(
-                    makeShortcutWithShortLabel("ms2", "new-title-2"))));
-
-            runWithCaller(LAUNCHER_1, USER_0, () -> {
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .haveIds("ms1", "ms2", "ms3", "ms4", "s1", "s2")
-
-                        .selectByIds("ms1")
-                        .areAllEnabled()
-                        .areAllNotDynamic() // ms1 was not in the list, so no longer dynamic.
-                        .areAllPinned()
-                        .areAllMutable()
-                        .forAllShortcuts(si -> {
-                            assertEquals("original-title", si.getShortLabel());
-                        })
-
-                        .revertToOriginalList()
-                        .selectByIds("ms2")
-                        .areAllEnabled()
-                        .areAllDynamic()
-                        .areAllPinned()
-                        .areAllMutable()
-                        .forAllShortcuts(si -> {
-                            assertEquals("new-title-2", si.getShortLabel());
-                        })
-
-                        // The rest still exist and disabled.
-                        .revertToOriginalList()
-                        .selectByIds("ms3", "ms4", "s1", "s2")
-                        .areAllDisabled()
-                        .areAllPinned()
-                ;
-            });
-
-            // Prepare for requestPinShortcut().
-            setDefaultLauncher(USER_0, LAUNCHER_1);
-            mPinConfirmActivityFetcher = (packageName, userId) ->
-                    new ComponentName(packageName, PIN_CONFIRM_ACTIVITY_CLASS);
-
-            mManager.requestPinShortcut(
-                    makeShortcutWithShortLabel("ms3", "new-title-3"),
-                    /*PendingIntent=*/ null);
-
-            // Note this was pinned, so it'll be accepted right away.
-            runWithCaller(LAUNCHER_1, USER_0, () -> {
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .selectByIds("ms3")
-                        .areAllEnabled()
-                        .areAllNotDynamic()
-                        .areAllPinned()
-                        .areAllMutable()
-                        .forAllShortcuts(si -> {
-                            assertEquals("new-title-3", si.getShortLabel());
-                            // The new one replaces the old manifest shortcut, so the long label
-                            // should be gone now.
-                            assertNull(si.getLongLabel());
-                        });
-            });
-
-            // Now, change the launcher to launcher2, and request pin again.
-            setDefaultLauncher(USER_0, LAUNCHER_2);
-
-            reset(mServiceContext);
-
-            assertTrue(mManager.isRequestPinShortcutSupported());
-            mManager.requestPinShortcut(
-                    makeShortcutWithShortLabel("ms4", "new-title-4"),
-                    /*PendingIntent=*/ null);
-
-            // Initially there should be no pinned shortcuts for L2.
-            runWithCaller(LAUNCHER_2, USER_0, () -> {
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .selectPinned()
-                        .isEmpty();
-
-                final ArgumentCaptor<Intent> intent = ArgumentCaptor.forClass(Intent.class);
-
-                verify(mServiceContext).startActivityAsUser(intent.capture(), eq(HANDLE_USER_0));
-
-                assertEquals(LauncherApps.ACTION_CONFIRM_PIN_SHORTCUT,
-                        intent.getValue().getAction());
-                assertEquals(LAUNCHER_2, intent.getValue().getComponent().getPackageName());
-
-                // Check the request object.
-                final PinItemRequest request = mLauncherApps.getPinItemRequest(intent.getValue());
-
-                assertNotNull(request);
-                assertEquals(PinItemRequest.REQUEST_TYPE_SHORTCUT, request.getRequestType());
-
-                assertWith(request.getShortcutInfo())
-                        .haveIds("ms4")
-                        .areAllOrphan()
-                        .forAllShortcuts(si -> {
-                            assertEquals("new-title-4", si.getShortLabel());
-                            // The new one replaces the old manifest shortcut, so the long label
-                            // should be gone now.
-                            assertNull(si.getLongLabel());
-                        });
-                assertTrue(request.accept());
-
-                assertWith(getShortcutAsLauncher(USER_0))
-                        .selectPinned()
-                        .haveIds("ms4")
-                        .areAllEnabled();
-            });
-        });
-    }
-
     /**
      * Test for restoring the pre-P backup format.
      */
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index df2069e..7f7cc35 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -1729,6 +1729,21 @@
         mUserManager.removeUser(userInfo.id);
     }
 
+    @Test
+    @RequiresFlagsEnabled(android.multiuser.Flags.FLAG_ENABLE_HIDING_PROFILES)
+    public void testGetProfileIdsExcludingHidden() throws Exception {
+        int mainUserId = mUserManager.getMainUser().getIdentifier();
+        final UserInfo profile = createProfileForUser("Profile",
+                UserManager.USER_TYPE_PROFILE_PRIVATE, mainUserId);
+
+        final int[] allProfiles = mUserManager.getProfileIds(mainUserId, /* enabledOnly */ false);
+        final int[] profilesExcludingHidden = mUserManager.getProfileIdsExcludingHidden(
+                mainUserId, /* enabledOnly */ false);
+
+        assertThat(allProfiles).asList().contains(profile.id);
+        assertThat(profilesExcludingHidden).asList().doesNotContain(profile.id);
+    }
+
     private String generateLongString() {
         String partialString = "Test Name Test Name Test Name Test Name Test Name Test Name Test "
                 + "Name Test Name Test Name Test Name "; //String of length 100
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
index 5eb76e3..f077914 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/GroupHelperTest.java
@@ -22,6 +22,9 @@
 import static android.app.Notification.FLAG_FOREGROUND_SERVICE;
 import static android.app.Notification.FLAG_NO_CLEAR;
 import static android.app.Notification.FLAG_ONGOING_EVENT;
+import static android.app.Notification.VISIBILITY_PRIVATE;
+import static android.app.Notification.VISIBILITY_PUBLIC;
+import static android.app.Notification.VISIBILITY_SECRET;
 import static android.platform.test.flag.junit.SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT;
 
 import static com.android.server.notification.GroupHelper.BASE_FLAGS;
@@ -81,6 +84,8 @@
     @Rule
     public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(DEVICE_DEFAULT);
 
+    private final int DEFAULT_VISIBILITY = VISIBILITY_PRIVATE;
+
     private @Mock GroupHelper.Callback mCallback;
     private @Mock PackageManager mPackageManager;
 
@@ -127,7 +132,7 @@
     }
 
     private NotificationAttributes getNotificationAttributes(int flags) {
-        return new NotificationAttributes(flags, mSmallIcon, COLOR_DEFAULT);
+        return new NotificationAttributes(flags, mSmallIcon, COLOR_DEFAULT, DEFAULT_VISIBILITY);
     }
 
     @Test
@@ -704,7 +709,8 @@
         final Icon icon = mock(Icon.class);
         when(icon.sameAs(icon)).thenReturn(true);
         final int iconColor = Color.BLUE;
-        final NotificationAttributes attr = new NotificationAttributes(BASE_FLAGS, icon, iconColor);
+        final NotificationAttributes attr = new NotificationAttributes(BASE_FLAGS, icon, iconColor,
+                DEFAULT_VISIBILITY);
 
         // Add notifications with same icon and color
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
@@ -744,7 +750,7 @@
         doReturn(monochromeIcon).when(groupHelper).getMonochromeAppIcon(eq(pkg));
 
         final NotificationAttributes initialAttr = new NotificationAttributes(BASE_FLAGS,
-                initialIcon, initialIconColor);
+                initialIcon, initialIconColor, DEFAULT_VISIBILITY);
 
         // Add notifications with same icon and color
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
@@ -769,7 +775,42 @@
 
         // Summary should be updated to the default color and the icon to the monochrome icon
         NotificationAttributes newAttr = new NotificationAttributes(BASE_FLAGS, monochromeIcon,
-                COLOR_DEFAULT);
+                COLOR_DEFAULT, DEFAULT_VISIBILITY);
+        verify(mCallback, times(1)).updateAutogroupSummary(anyInt(), anyString(), eq(newAttr));
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_AUTOGROUP_SUMMARY_ICON_UPDATE)
+    public void testAddSummary_diffVisibility() {
+        final String pkg = "package";
+        final Icon icon = mock(Icon.class);
+        when(icon.sameAs(icon)).thenReturn(true);
+        final int iconColor = Color.BLUE;
+        final NotificationAttributes attr = new NotificationAttributes(BASE_FLAGS, icon, iconColor,
+                VISIBILITY_PRIVATE);
+
+        // Add notifications with same icon and color and default visibility (private)
+        for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
+            StatusBarNotification sbn = getSbn(pkg, i, String.valueOf(i), UserHandle.SYSTEM, null,
+                    icon, iconColor);
+            mGroupHelper.onNotificationPosted(sbn, false);
+        }
+        // Check that the summary has private visibility
+        verify(mCallback, times(1)).addAutoGroupSummary(
+                anyInt(), eq(pkg), anyString(), eq(attr));
+        verify(mCallback, times(AUTOGROUP_AT_COUNT)).addAutoGroup(anyString());
+        verify(mCallback, never()).removeAutoGroup(anyString());
+        verify(mCallback, never()).removeAutoGroupSummary(anyInt(), anyString());
+
+        // After auto-grouping, add new notification with public visibility
+        StatusBarNotification sbn = getSbn(pkg, AUTOGROUP_AT_COUNT,
+                String.valueOf(AUTOGROUP_AT_COUNT), UserHandle.SYSTEM, null, icon, iconColor);
+        sbn.getNotification().visibility = VISIBILITY_PUBLIC;
+        mGroupHelper.onNotificationPosted(sbn, true);
+
+        // Check that the summary visibility was updated
+        NotificationAttributes newAttr = new NotificationAttributes(BASE_FLAGS, icon, iconColor,
+                VISIBILITY_PUBLIC);
         verify(mCallback, times(1)).updateAutogroupSummary(anyInt(), anyString(), eq(newAttr));
     }
 
@@ -781,7 +822,7 @@
         when(initialIcon.sameAs(initialIcon)).thenReturn(true);
         final int initialIconColor = Color.BLUE;
         final NotificationAttributes initialAttr = new NotificationAttributes(
-                GroupHelper.FLAG_INVALID, initialIcon, initialIconColor);
+                GroupHelper.FLAG_INVALID, initialIcon, initialIconColor, DEFAULT_VISIBILITY);
 
         // Add AUTOGROUP_AT_COUNT-1 notifications with same icon and color
         ArrayList<StatusBarNotification> notifications = new ArrayList<>();
@@ -817,11 +858,12 @@
         // Create notifications with the same icon
         List<NotificationAttributes> childrenAttr = new ArrayList<>();
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
-            childrenAttr.add(new NotificationAttributes(0, icon, COLOR_DEFAULT));
+            childrenAttr.add(new NotificationAttributes(0, icon, COLOR_DEFAULT,
+                    DEFAULT_VISIBILITY));
         }
 
         //Check that the generated summary icon is the same as the child notifications'
-        Icon summaryIcon = mGroupHelper.getAutobundledSummaryIconAndColor(pkg, childrenAttr).icon;
+        Icon summaryIcon = mGroupHelper.getAutobundledSummaryAttributes(pkg, childrenAttr).icon;
         assertThat(summaryIcon).isEqualTo(icon);
     }
 
@@ -837,11 +879,12 @@
         // Create notifications with different icons
         List<NotificationAttributes> childrenAttr = new ArrayList<>();
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
-            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), COLOR_DEFAULT));
+            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), COLOR_DEFAULT,
+                    DEFAULT_VISIBILITY));
         }
 
         // Check that the generated summary icon is the monochrome icon
-        Icon summaryIcon = groupHelper.getAutobundledSummaryIconAndColor(pkg, childrenAttr).icon;
+        Icon summaryIcon = groupHelper.getAutobundledSummaryAttributes(pkg, childrenAttr).icon;
         assertThat(summaryIcon).isEqualTo(monochromeIcon);
     }
 
@@ -853,11 +896,12 @@
         // Create notifications with the same icon color
         List<NotificationAttributes> childrenAttr = new ArrayList<>();
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
-            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), iconColor));
+            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), iconColor,
+                    DEFAULT_VISIBILITY));
         }
 
         // Check that the generated summary icon color is the same as the child notifications'
-        int summaryIconColor = mGroupHelper.getAutobundledSummaryIconAndColor(pkg,
+        int summaryIconColor = mGroupHelper.getAutobundledSummaryAttributes(pkg,
                 childrenAttr).iconColor;
         assertThat(summaryIconColor).isEqualTo(iconColor);
     }
@@ -869,17 +913,62 @@
         // Create notifications with different icon colors
         List<NotificationAttributes> childrenAttr = new ArrayList<>();
         for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
-            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), i));
+            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), i,
+                    DEFAULT_VISIBILITY));
         }
 
         // Check that the generated summary icon color is the default color
-        int summaryIconColor = mGroupHelper.getAutobundledSummaryIconAndColor(pkg,
+        int summaryIconColor = mGroupHelper.getAutobundledSummaryAttributes(pkg,
                 childrenAttr).iconColor;
         assertThat(summaryIconColor).isEqualTo(Notification.COLOR_DEFAULT);
     }
 
     @Test
     @EnableFlags(Flags.FLAG_AUTOGROUP_SUMMARY_ICON_UPDATE)
+    public void testAutobundledSummaryVisibility_hasPublicChildren() {
+        final String pkg = "package";
+        final int iconColor = Color.BLUE;
+        // Create notifications with private and public visibility
+        List<NotificationAttributes> childrenAttr = new ArrayList<>();
+        childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), iconColor,
+                VISIBILITY_PUBLIC));
+        for (int i = 0; i < AUTOGROUP_AT_COUNT - 1; i++) {
+            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), iconColor,
+                    VISIBILITY_PRIVATE));
+        }
+
+        // Check that the generated summary visibility is public
+        int summaryVisibility = mGroupHelper.getAutobundledSummaryAttributes(pkg,
+                childrenAttr).visibility;
+        assertThat(summaryVisibility).isEqualTo(VISIBILITY_PUBLIC);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_AUTOGROUP_SUMMARY_ICON_UPDATE)
+    public void testAutobundledSummaryVisibility_noPublicChildren() {
+        final String pkg = "package";
+        final int iconColor = Color.BLUE;
+        int visibility = VISIBILITY_PRIVATE;
+        // Create notifications with either private or secret visibility
+        List<NotificationAttributes> childrenAttr = new ArrayList<>();
+        for (int i = 0; i < AUTOGROUP_AT_COUNT; i++) {
+            if (i % 2 == 0) {
+                visibility = VISIBILITY_PRIVATE;
+            } else {
+                visibility = VISIBILITY_SECRET;
+            }
+            childrenAttr.add(new NotificationAttributes(0, mock(Icon.class), iconColor,
+                    visibility));
+        }
+
+        // Check that the generated summary visibility is private
+        int summaryVisibility = mGroupHelper.getAutobundledSummaryAttributes(pkg,
+                childrenAttr).visibility;
+        assertThat(summaryVisibility).isEqualTo(VISIBILITY_PRIVATE);
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_AUTOGROUP_SUMMARY_ICON_UPDATE)
     public void testMonochromeAppIcon_adaptiveIconExists() throws Exception {
         final String pkg = "testPackage";
         final int monochromeIconResId = 1234;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
index 046e057..94d24a9 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -37,6 +37,7 @@
 import static android.app.Notification.FLAG_ONGOING_EVENT;
 import static android.app.Notification.FLAG_ONLY_ALERT_ONCE;
 import static android.app.Notification.FLAG_USER_INITIATED_JOB;
+import static android.app.Notification.VISIBILITY_PRIVATE;
 import static android.app.NotificationChannel.USER_LOCKED_ALLOW_BUBBLE;
 import static android.app.NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED;
 import static android.app.NotificationManager.BUBBLE_PREFERENCE_ALL;
@@ -163,6 +164,7 @@
 import android.app.AppOpsManager;
 import android.app.AutomaticZenRule;
 import android.app.IActivityManager;
+import android.app.ICallNotificationEventCallback;
 import android.app.INotificationManager;
 import android.app.ITransientNotification;
 import android.app.IUriGrantsManager;
@@ -303,7 +305,6 @@
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.ClassRule;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestRule;
@@ -2338,7 +2339,7 @@
 
         mService.updateAutobundledSummaryLocked(0, "pkg",
                 new NotificationAttributes(GroupHelper.BASE_FLAGS | FLAG_ONGOING_EVENT,
-                    mock(Icon.class), 0), false);
+                    mock(Icon.class), 0, VISIBILITY_PRIVATE), false);
         waitForIdle();
 
         assertTrue(summary.getSbn().isOngoing());
@@ -2357,7 +2358,7 @@
 
         mService.updateAutobundledSummaryLocked(0, "pkg",
                 new NotificationAttributes(GroupHelper.BASE_FLAGS,
-                    mock(Icon.class), 0), false);
+                    mock(Icon.class), 0, VISIBILITY_PRIVATE), false);
         waitForIdle();
 
         assertFalse(summary.getSbn().isOngoing());
@@ -3479,7 +3480,8 @@
         when(mPermissionHelper.isPermissionFixed(PKG, temp.getUserId())).thenReturn(true);
 
         NotificationRecord r = mService.createAutoGroupSummary(temp.getUserId(),
-                temp.getSbn().getPackageName(), temp.getKey(), 0, mock(Icon.class), 0);
+                temp.getSbn().getPackageName(), temp.getKey(), 0, mock(Icon.class), 0,
+                VISIBILITY_PRIVATE);
 
         assertThat(r.isImportanceFixed()).isTrue();
     }
@@ -4003,6 +4005,69 @@
     }
 
     @Test
+    public void testUpdateNotificationChannelFromPrivilegedListener_noSoundUriPermission()
+            throws Exception {
+        mService.setPreferencesHelper(mPreferencesHelper);
+        when(mCompanionMgr.getAssociations(PKG, mUserId))
+                .thenReturn(singletonList(mock(AssociationInfo.class)));
+        when(mPreferencesHelper.getNotificationChannel(eq(PKG), anyInt(),
+                eq(mTestNotificationChannel.getId()), anyBoolean()))
+                .thenReturn(mTestNotificationChannel);
+
+        final Uri soundUri = Uri.parse("content://media/test/sound/uri");
+        final NotificationChannel updatedNotificationChannel = new NotificationChannel(
+                TEST_CHANNEL_ID, TEST_CHANNEL_ID, IMPORTANCE_DEFAULT);
+        updatedNotificationChannel.setSound(soundUri,
+                updatedNotificationChannel.getAudioAttributes());
+
+        doThrow(new SecurityException("no access")).when(mUgmInternal)
+                .checkGrantUriPermission(eq(Process.myUid()), any(), eq(soundUri),
+                anyInt(), eq(Process.myUserHandle().getIdentifier()));
+
+        assertThrows(SecurityException.class,
+                () -> mBinderService.updateNotificationChannelFromPrivilegedListener(null, PKG,
+                Process.myUserHandle(), updatedNotificationChannel));
+
+        verify(mPreferencesHelper, never()).updateNotificationChannel(
+                anyString(), anyInt(), any(), anyBoolean(),  anyInt(), anyBoolean());
+
+        verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG),
+                eq(Process.myUserHandle()), eq(mTestNotificationChannel),
+                eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED));
+    }
+
+    @Test
+    public void testUpdateNotificationChannelFromPrivilegedListener_noSoundUriPermission_sameSound()
+            throws Exception {
+        mService.setPreferencesHelper(mPreferencesHelper);
+        when(mCompanionMgr.getAssociations(PKG, mUserId))
+                .thenReturn(singletonList(mock(AssociationInfo.class)));
+        when(mPreferencesHelper.getNotificationChannel(eq(PKG), anyInt(),
+                eq(mTestNotificationChannel.getId()), anyBoolean()))
+                .thenReturn(mTestNotificationChannel);
+
+        final Uri soundUri = Settings.System.DEFAULT_NOTIFICATION_URI;
+        final NotificationChannel updatedNotificationChannel = new NotificationChannel(
+                TEST_CHANNEL_ID, TEST_CHANNEL_ID, IMPORTANCE_DEFAULT);
+        updatedNotificationChannel.setSound(soundUri,
+                updatedNotificationChannel.getAudioAttributes());
+
+        doThrow(new SecurityException("no access")).when(mUgmInternal)
+                .checkGrantUriPermission(eq(Process.myUid()), any(), eq(soundUri),
+                    anyInt(), eq(Process.myUserHandle().getIdentifier()));
+
+        mBinderService.updateNotificationChannelFromPrivilegedListener(
+                null, PKG, Process.myUserHandle(), updatedNotificationChannel);
+
+        verify(mPreferencesHelper, times(1)).updateNotificationChannel(
+                anyString(), anyInt(), any(), anyBoolean(),  anyInt(), anyBoolean());
+
+        verify(mListeners, never()).notifyNotificationChannelChanged(eq(PKG),
+                eq(Process.myUserHandle()), eq(mTestNotificationChannel),
+                eq(NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED));
+    }
+
+    @Test
     public void testGetNotificationChannelFromPrivilegedListener_cdm_success() throws Exception {
         mService.setPreferencesHelper(mPreferencesHelper);
         when(mCompanionMgr.getAssociations(PKG, mUserId))
@@ -12152,9 +12217,10 @@
         // grouphelper is a mock here, so make the calls it would make
 
         // add summary
-        mService.addNotification(mService.createAutoGroupSummary(nr1.getUserId(),
-                nr1.getSbn().getPackageName(), nr1.getKey(),
-                GroupHelper.BASE_FLAGS | FLAG_ONGOING_EVENT, mock(Icon.class), 0));
+        mService.addNotification(
+                mService.createAutoGroupSummary(nr1.getUserId(), nr1.getSbn().getPackageName(),
+                    nr1.getKey(), GroupHelper.BASE_FLAGS | FLAG_ONGOING_EVENT, mock(Icon.class), 0,
+                    VISIBILITY_PRIVATE));
 
         // cancel both children
         mBinderService.cancelNotificationWithTag(PKG, PKG, nr0.getSbn().getTag(),
@@ -12183,7 +12249,7 @@
         mService.addNotification(nr1);
         mService.addNotification(
                 mService.createAutoGroupSummary(nr1.getUserId(), nr1.getSbn().getPackageName(),
-                nr1.getKey(), GroupHelper.BASE_FLAGS, mock(Icon.class), 0));
+                nr1.getKey(), GroupHelper.BASE_FLAGS, mock(Icon.class), 0, VISIBILITY_PRIVATE));
 
         // add notifications + summary for USER_ALL
         NotificationRecord nr0_all =
@@ -12196,7 +12262,7 @@
         mService.addNotification(
                 mService.createAutoGroupSummary(nr0_all.getUserId(),
                 nr0_all.getSbn().getPackageName(),
-                nr0_all.getKey(), GroupHelper.BASE_FLAGS, mock(Icon.class), 0));
+                nr0_all.getKey(), GroupHelper.BASE_FLAGS, mock(Icon.class), 0, VISIBILITY_PRIVATE));
 
         // cancel both children for USER_ALL
         mBinderService.cancelNotificationWithTag(PKG, PKG, nr0_all.getSbn().getTag(),
@@ -14368,7 +14434,6 @@
     }
 
     @Test
-    @Ignore("b/324348078")
     public void cancelNotificationsFromListener_rapidClear_old_cancelOne() throws RemoteException {
         mSetFlagsRule.enableFlags(android.view.contentprotection.flags.Flags
                 .FLAG_RAPID_CLEAR_NOTIFICATIONS_BY_LISTENER_APP_OP_ENABLED);
@@ -14458,7 +14523,6 @@
     }
 
     @Test
-    @Ignore("b/324348078")
     public void cancelNotificationsFromListener_rapidClear_old_cancelAll() throws RemoteException {
         mSetFlagsRule.enableFlags(android.view.contentprotection.flags.Flags
                 .FLAG_RAPID_CLEAR_NOTIFICATIONS_BY_LISTENER_APP_OP_ENABLED);
@@ -14532,6 +14596,120 @@
         assertFalse(mBinderService.getPrivateNotificationsAllowed());
     }
 
+    @Test
+    @EnableFlags(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public void testCallNotificationListener_NotifiedOnPostCallStyle() throws Exception {
+        ICallNotificationEventCallback listener = mock(
+                ICallNotificationEventCallback.class);
+        when(listener.asBinder()).thenReturn(mock(IBinder.class));
+        mBinderService.registerCallNotificationEventListener(PKG, UserHandle.CURRENT, listener);
+        waitForIdle();
+
+        final UserHandle userHandle = UserHandle.getUserHandleForUid(mUid);
+        final NotificationRecord r = createAndPostCallStyleNotification(PKG, userHandle,
+                "testCallNotificationListener_NotifiedOnPostCallStyle");
+
+        verify(listener, times(1)).onCallNotificationPosted(PKG, userHandle);
+
+        mBinderService.cancelNotificationWithTag(PKG, PKG, r.getSbn().getTag(), r.getSbn().getId(),
+                r.getSbn().getUserId());
+        waitForIdle();
+
+        verify(listener, times(1)).onCallNotificationRemoved(PKG, userHandle);
+    }
+
+    @Test
+    @EnableFlags(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public void testCallNotificationListener_NotNotifiedOnPostNonCallStyle() throws Exception {
+        ICallNotificationEventCallback listener = mock(
+                ICallNotificationEventCallback.class);
+        when(listener.asBinder()).thenReturn(mock(IBinder.class));
+        mBinderService.registerCallNotificationEventListener(PKG,
+                UserHandle.getUserHandleForUid(mUid), listener);
+        waitForIdle();
+
+        Notification.Builder nb = new Notification.Builder(mContext,
+                mTestNotificationChannel.getId()).setSmallIcon(android.R.drawable.sym_def_app_icon);
+        final NotificationRecord r = createAndPostNotification(nb,
+                "testCallNotificationListener_NotNotifiedOnPostNonCallStyle");
+
+        verify(listener, never()).onCallNotificationPosted(anyString(), any());
+
+        mBinderService.cancelNotificationWithTag(PKG, PKG, r.getSbn().getTag(), r.getSbn().getId(),
+                r.getSbn().getUserId());
+        waitForIdle();
+
+        verify(listener, never()).onCallNotificationRemoved(anyString(), any());
+    }
+
+    @Test
+    @EnableFlags(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public void testCallNotificationListener_registerForUserAll_notifiedOnAnyUserId()
+            throws Exception {
+        ICallNotificationEventCallback listener = mock(
+                ICallNotificationEventCallback.class);
+        when(listener.asBinder()).thenReturn(mock(IBinder.class));
+        mBinderService.registerCallNotificationEventListener(PKG, UserHandle.ALL, listener);
+        waitForIdle();
+
+        final UserHandle otherUser = UserHandle.of(2);
+        final NotificationRecord r = createAndPostCallStyleNotification(PKG,
+                otherUser, "testCallNotificationListener_registerForUserAll_notifiedOnAnyUserId");
+
+        verify(listener, times(1)).onCallNotificationPosted(PKG, otherUser);
+
+        mBinderService.cancelNotificationWithTag(PKG, PKG, r.getSbn().getTag(), r.getSbn().getId(),
+                r.getSbn().getUserId());
+        waitForIdle();
+
+        verify(listener, times(1)).onCallNotificationRemoved(PKG, otherUser);
+    }
+
+    @Test
+    @EnableFlags(android.service.notification.Flags.FLAG_CALLSTYLE_CALLBACK_API)
+    public void testCallNotificationListener_differentPackage_notNotified() throws Exception {
+        final String packageName = "package";
+        ICallNotificationEventCallback listener = mock(
+                ICallNotificationEventCallback.class);
+        when(listener.asBinder()).thenReturn(mock(IBinder.class));
+        mBinderService.registerCallNotificationEventListener(packageName, UserHandle.ALL, listener);
+        waitForIdle();
+
+        final NotificationRecord r = createAndPostCallStyleNotification(PKG,
+                UserHandle.of(mUserId),
+                "testCallNotificationListener_differentPackage_notNotified");
+
+        verify(listener, never()).onCallNotificationPosted(anyString(), any());
+
+        mBinderService.cancelNotificationWithTag(PKG, PKG, r.getSbn().getTag(), r.getSbn().getId(),
+                r.getSbn().getUserId());
+        waitForIdle();
+
+        verify(listener, never()).onCallNotificationRemoved(anyString(), any());
+    }
+
+    private NotificationRecord createAndPostCallStyleNotification(String packageName,
+            UserHandle userHandle, String testName) throws Exception {
+        Person person = new Person.Builder().setName("caller").build();
+        Notification.Builder nb = new Notification.Builder(mContext,
+                mTestNotificationChannel.getId())
+                .setFlag(FLAG_USER_INITIATED_JOB, true)
+                .setStyle(Notification.CallStyle.forOngoingCall(
+                    person, mock(PendingIntent.class)))
+                .setSmallIcon(android.R.drawable.sym_def_app_icon);
+        StatusBarNotification sbn = new StatusBarNotification(packageName, packageName, 1,
+                testName, mUid, 0, nb.build(), userHandle, null, 0);
+        NotificationRecord r = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
+
+        mService.addEnqueuedNotification(r);
+        mService.new PostNotificationRunnable(r.getKey(), r.getSbn().getPackageName(),
+                r.getUid(), mPostNotificationTrackerFactory.newTracker(null)).run();
+        waitForIdle();
+
+        return mService.findNotificationLocked(
+                packageName, r.getSbn().getTag(), r.getSbn().getId(), r.getSbn().getUserId());
+    }
+
     private NotificationRecord createAndPostNotification(Notification.Builder nb, String testName)
             throws RemoteException {
         StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, 1, testName, mUid, 0,
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java
index f604f1e..3ac7890 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java
@@ -18,6 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assert.assertThrows;
+
 import android.app.Flags;
 import android.os.Parcel;
 import android.platform.test.flag.junit.SetFlagsRule;
@@ -27,6 +29,8 @@
 
 import com.android.server.UiServiceTestCase;
 
+import com.google.common.collect.ImmutableSet;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -52,6 +56,10 @@
                 .setShouldMaximizeDoze(true)
                 .setShouldUseNightMode(false)
                 .setShouldSuppressAmbientDisplay(false).setShouldSuppressAmbientDisplay(true)
+                .addExtraEffect("WILL BE GONE")
+                .setExtraEffects(ImmutableSet.of("1", "2"))
+                .addExtraEffects(ImmutableSet.of("3", "4"))
+                .addExtraEffect("5")
                 .build();
 
         assertThat(deviceEffects.shouldDimWallpaper()).isTrue();
@@ -64,6 +72,7 @@
         assertThat(deviceEffects.shouldMinimizeRadioUsage()).isFalse();
         assertThat(deviceEffects.shouldUseNightMode()).isFalse();
         assertThat(deviceEffects.shouldSuppressAmbientDisplay()).isTrue();
+        assertThat(deviceEffects.getExtraEffects()).containsExactly("1", "2", "3", "4", "5");
     }
 
     @Test
@@ -73,11 +82,13 @@
                 .setShouldDisableTiltToWake(true)
                 .setShouldUseNightMode(true)
                 .setShouldSuppressAmbientDisplay(true)
+                .addExtraEffect("1")
                 .build();
 
         ZenDeviceEffects modified = new ZenDeviceEffects.Builder(original)
                 .setShouldDisplayGrayscale(true)
                 .setShouldUseNightMode(false)
+                .addExtraEffect("2")
                 .build();
 
         assertThat(modified.shouldDimWallpaper()).isTrue(); // from original
@@ -85,6 +96,32 @@
         assertThat(modified.shouldDisplayGrayscale()).isTrue(); // updated
         assertThat(modified.shouldUseNightMode()).isFalse(); // updated
         assertThat(modified.shouldSuppressAmbientDisplay()).isTrue(); // from original
+        assertThat(modified.getExtraEffects()).containsExactly("1", "2"); // updated
+    }
+
+    @Test
+    public void builder_add_merges() {
+        ZenDeviceEffects zde1 = new ZenDeviceEffects.Builder()
+                .setShouldDimWallpaper(true)
+                .addExtraEffect("one")
+                .build();
+        ZenDeviceEffects zde2 = new ZenDeviceEffects.Builder()
+                .setShouldDisableTouch(true)
+                .addExtraEffect("two")
+                .build();
+        ZenDeviceEffects zde3 = new ZenDeviceEffects.Builder()
+                .setShouldMinimizeRadioUsage(true)
+                .addExtraEffect("three")
+                .build();
+
+        ZenDeviceEffects add = new ZenDeviceEffects.Builder().add(zde1).add(zde2).add(zde3).build();
+
+        assertThat(add).isEqualTo(new ZenDeviceEffects.Builder()
+                .setShouldDimWallpaper(true)
+                .setShouldDisableTouch(true)
+                .setShouldMinimizeRadioUsage(true)
+                .setExtraEffects(ImmutableSet.of("one", "two", "three"))
+                .build());
     }
 
     @Test
@@ -95,6 +132,7 @@
                 .setShouldMinimizeRadioUsage(true)
                 .setShouldUseNightMode(true)
                 .setShouldSuppressAmbientDisplay(true)
+                .setExtraEffects(ImmutableSet.of("1", "2", "3"))
                 .build();
 
         Parcel parcel = Parcel.obtain();
@@ -113,6 +151,7 @@
         assertThat(copy.shouldUseNightMode()).isTrue();
         assertThat(copy.shouldSuppressAmbientDisplay()).isTrue();
         assertThat(copy.shouldDisplayGrayscale()).isFalse();
+        assertThat(copy.getExtraEffects()).containsExactly("1", "2", "3");
     }
 
     @Test
@@ -128,4 +167,36 @@
                 .build();
         assertThat(effects.hasEffects()).isTrue();
     }
+
+    @Test
+    public void hasEffects_extras_returnsTrue() {
+        ZenDeviceEffects effects = new ZenDeviceEffects.Builder()
+                .addExtraEffect("extra")
+                .build();
+        assertThat(effects.hasEffects()).isTrue();
+    }
+
+    @Test
+    public void validate_extrasLength() {
+        ZenDeviceEffects okay = new ZenDeviceEffects.Builder()
+                .addExtraEffect("short")
+                .addExtraEffect("anotherShort")
+                .build();
+
+        ZenDeviceEffects pushingIt = new ZenDeviceEffects.Builder()
+                .addExtraEffect("0123456789".repeat(60))
+                .addExtraEffect("1234567890".repeat(60))
+                .build();
+
+        ZenDeviceEffects excessive = new ZenDeviceEffects.Builder()
+                .addExtraEffect("0123456789".repeat(60))
+                .addExtraEffect("1234567890".repeat(60))
+                .addExtraEffect("2345678901".repeat(60))
+                .addExtraEffect("3456789012".repeat(30))
+                .build();
+
+        okay.validate(); // No exception.
+        pushingIt.validate(); // No exception.
+        assertThrows(Exception.class, () -> excessive.validate());
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
index 539bb37..12f9e26 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
@@ -49,6 +49,8 @@
 import com.android.modules.utils.TypedXmlSerializer;
 import com.android.server.UiServiceTestCase;
 
+import com.google.common.collect.ImmutableSet;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -86,7 +88,8 @@
     private final int CREATION_TIME = 123;
 
     @Rule
-    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
+    public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(
+            SetFlagsRule.DefaultInitValueType.DEVICE_DEFAULT);
 
     @Before
     public final void setUp() {
@@ -496,6 +499,7 @@
                 .setShouldDisableTouch(true)
                 .setShouldMinimizeRadioUsage(false)
                 .setShouldMaximizeDoze(true)
+                .setExtraEffects(ImmutableSet.of("one", "two"))
                 .build();
         rule.creationTime = CREATION_TIME;
 
@@ -543,6 +547,28 @@
     }
 
     @Test
+    public void testRuleXml_weirdEffects() throws Exception {
+        ZenModeConfig.ZenRule rule = new ZenModeConfig.ZenRule();
+        rule.zenDeviceEffects = new ZenDeviceEffects.Builder()
+                .setShouldMaximizeDoze(true)
+                .addExtraEffect("one,stillOne,,andStillOne,,,andYetStill")
+                .addExtraEffect(",two,stillTwo,")
+                .addExtraEffect("three\\andThree")
+                .addExtraEffect("four\\,andFour")
+                .build();
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        writeRuleXml(rule, baos);
+        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+        ZenModeConfig.ZenRule fromXml = readRuleXml(bais);
+
+        assertThat(fromXml.zenDeviceEffects.getExtraEffects()).isNotNull();
+        assertThat(fromXml.zenDeviceEffects.getExtraEffects())
+                .containsExactly("one,stillOne,,andStillOne,,,andYetStill", ",two,stillTwo,",
+                        "three\\andThree", "four\\,andFour");
+    }
+
+    @Test
     public void testRuleXml_pkg_component() throws Exception {
         ZenModeConfig.ZenRule rule = new ZenModeConfig.ZenRule();
         rule.configurationActivity = new ComponentName("a", "a");
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeEventLoggerFake.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeEventLoggerFake.java
index 5b35e34..ff1308c 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeEventLoggerFake.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeEventLoggerFake.java
@@ -132,4 +132,9 @@
         checkInRange(i);
         return mChanges.get(i).getAreChannelsBypassing();
     }
+
+    public int[] getActiveRuleTypes(int i) throws IllegalArgumentException {
+        checkInRange(i);
+        return mChanges.get(i).getActiveRuleTypes();
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
index 0d88b98d..6e5c180 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -17,6 +17,7 @@
 package com.android.server.notification;
 
 import static android.app.AutomaticZenRule.TYPE_BEDTIME;
+import static android.app.AutomaticZenRule.TYPE_IMMERSIVE;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_ACTIVATED;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DEACTIVATED;
 import static android.app.NotificationManager.AUTOMATIC_RULE_STATUS_DISABLED;
@@ -68,6 +69,7 @@
 import static com.android.os.dnd.DNDProtoEnums.ROOT_CONFIG;
 import static com.android.os.dnd.DNDProtoEnums.STATE_ALLOW;
 import static com.android.os.dnd.DNDProtoEnums.STATE_DISALLOW;
+import static com.android.server.notification.ZenModeEventLogger.ACTIVE_RULE_TYPE_MANUAL;
 import static com.android.server.notification.ZenModeHelper.RULE_LIMIT_PER_PACKAGE;
 
 import static com.google.common.collect.Iterables.getOnlyElement;
@@ -161,6 +163,7 @@
 import com.android.server.notification.ManagedServices.UserProfiles;
 
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.truth.Correspondence;
 import com.google.common.util.concurrent.SettableFuture;
 import com.google.protobuf.InvalidProtocolBufferException;
@@ -646,6 +649,74 @@
     }
 
     @Test
+    @EnableFlags(Flags.FLAG_MODES_API)
+    public void testTotalSilence_consolidatedPolicyDisallowsAll() {
+        // Start with zen mode off just to make sure global/manual mode isn't doing anything.
+        mZenModeHelper.mZenMode = ZEN_MODE_OFF;
+
+        // Create a zen rule that calls for total silence via zen mode, but does not specify any
+        // particular policy. This confirms that the application of the policy is based only on the
+        // actual zen mode setting.
+        AutomaticZenRule azr = new AutomaticZenRule.Builder("OriginalName", CONDITION_ID)
+                .setInterruptionFilter(INTERRUPTION_FILTER_NONE)
+                .build();
+        String ruleId = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(),
+                azr, UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI, "reason", Process.SYSTEM_UID);
+
+        // Enable rule
+        mZenModeHelper.setAutomaticZenRuleState(ruleId,
+                new Condition(azr.getConditionId(), "", STATE_TRUE),
+                UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI,
+                Process.SYSTEM_UID);
+
+        // Confirm that the consolidated policy doesn't allow anything
+        NotificationManager.Policy policy = mZenModeHelper.getConsolidatedNotificationPolicy();
+        assertThat(policy.allowAlarms()).isFalse();
+        assertThat(policy.allowMedia()).isFalse();
+        assertThat(policy.allowCalls()).isFalse();
+        assertThat(policy.allowMessages()).isFalse();
+        assertThat(policy.allowConversations()).isFalse();
+        assertThat(policy.allowEvents()).isFalse();
+        assertThat(policy.allowReminders()).isFalse();
+        assertThat(policy.allowRepeatCallers()).isFalse();
+        assertThat(policy.allowPriorityChannels()).isFalse();
+    }
+
+    @Test
+    @EnableFlags(Flags.FLAG_MODES_API)
+    public void testAlarmsOnly_consolidatedPolicyOnlyAllowsAlarmsAndMedia() {
+        // Start with zen mode off just to make sure global/manual mode isn't doing anything.
+        mZenModeHelper.mZenMode = ZEN_MODE_OFF;
+
+        // Create a zen rule that calls for alarms only via zen mode, but does not specify any
+        // particular policy. This confirms that the application of the policy is based only on the
+        // actual zen mode setting.
+        AutomaticZenRule azr = new AutomaticZenRule.Builder("OriginalName", CONDITION_ID)
+                .setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
+                .build();
+        String ruleId = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(),
+                azr, UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI, "reason", Process.SYSTEM_UID);
+
+        // Enable rule
+        mZenModeHelper.setAutomaticZenRuleState(ruleId,
+                new Condition(azr.getConditionId(), "", STATE_TRUE),
+                UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI,
+                Process.SYSTEM_UID);
+
+        // Confirm that the consolidated policy allows only alarms and media and nothing else
+        NotificationManager.Policy policy = mZenModeHelper.getConsolidatedNotificationPolicy();
+        assertThat(policy.allowAlarms()).isTrue();
+        assertThat(policy.allowMedia()).isTrue();
+        assertThat(policy.allowCalls()).isFalse();
+        assertThat(policy.allowMessages()).isFalse();
+        assertThat(policy.allowConversations()).isFalse();
+        assertThat(policy.allowEvents()).isFalse();
+        assertThat(policy.allowReminders()).isFalse();
+        assertThat(policy.allowRepeatCallers()).isFalse();
+        assertThat(policy.allowPriorityChannels()).isFalse();
+    }
+
+    @Test
     public void testZenUpgradeNotification() {
         /**
          * Commit a485ec65b5ba947d69158ad90905abf3310655cf disabled DND status change
@@ -2581,6 +2652,7 @@
         mSetFlagsRule.enableFlags(Flags.FLAG_MODES_API);
         ZenDeviceEffects original = new ZenDeviceEffects.Builder()
                 .setShouldDisableTapToWake(true)
+                .addExtraEffect("extra")
                 .build();
         String ruleId = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(),
                 new AutomaticZenRule.Builder("Rule", CONDITION_ID)
@@ -2592,6 +2664,7 @@
         ZenDeviceEffects updateFromApp = new ZenDeviceEffects.Builder()
                 .setShouldUseNightMode(true) // Good
                 .setShouldMaximizeDoze(true) // Bad
+                .addExtraEffect("should be rejected") // Bad
                 .build();
         mZenModeHelper.updateAutomaticZenRule(ruleId,
                 new AutomaticZenRule.Builder("Rule", CONDITION_ID)
@@ -2605,6 +2678,7 @@
                 new ZenDeviceEffects.Builder()
                         .setShouldUseNightMode(true) // From update.
                         .setShouldDisableTapToWake(true) // From original.
+                        .addExtraEffect("extra")
                         .build());
     }
 
@@ -3550,6 +3624,89 @@
     }
 
     @Test
+    @EnableFlags(Flags.FLAG_MODES_API)
+    public void testZenModeEventLog_activeRuleTypes() {
+        mTestFlagResolver.setFlagOverride(LOG_DND_STATE_EVENTS, true);
+        setupZenConfig();
+
+        // Event 1: turn on manual zen mode. Manual rule will have ACTIVE_RULE_TYPE_MANUAL
+        mZenModeHelper.setManualZenMode(ZEN_MODE_IMPORTANT_INTERRUPTIONS, null,
+                UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI, "", null, Process.SYSTEM_UID);
+
+        // Create bedtime rule
+        AutomaticZenRule bedtime = new AutomaticZenRule.Builder("Bedtime Mode (TM)", CONDITION_ID)
+                .setType(TYPE_BEDTIME)
+                .build();
+        String bedtimeRuleId = mZenModeHelper.addAutomaticZenRule("pkg", bedtime, UPDATE_ORIGIN_APP,
+                "reason", CUSTOM_PKG_UID);
+
+        // Create immersive rule
+        AutomaticZenRule immersive = new AutomaticZenRule.Builder("Immersed", CONDITION_ID)
+                .setType(TYPE_IMMERSIVE)
+                .build();
+        String immersiveId = mZenModeHelper.addAutomaticZenRule("pkg", immersive, UPDATE_ORIGIN_APP,
+                "reason", CUSTOM_PKG_UID);
+
+        // Event 2: Activate bedtime rule
+        mZenModeHelper.setAutomaticZenRuleState(bedtimeRuleId,
+                new Condition(bedtime.getConditionId(), "", STATE_TRUE, SOURCE_SCHEDULE),
+                UPDATE_ORIGIN_APP, CUSTOM_PKG_UID);
+
+        // Event 3: Turn immersive on
+        mZenModeHelper.setAutomaticZenRuleState(immersiveId,
+                new Condition(immersive.getConditionId(), "", STATE_TRUE, SOURCE_SCHEDULE),
+                UPDATE_ORIGIN_APP, CUSTOM_PKG_UID);
+
+        // Event 4: Turn off bedtime mode, leaving just unknown + immersive
+        mZenModeHelper.setAutomaticZenRuleState(bedtimeRuleId,
+                new Condition(bedtime.getConditionId(), "", STATE_FALSE, SOURCE_SCHEDULE),
+                UPDATE_ORIGIN_APP, CUSTOM_PKG_UID);
+
+        // Total of 4 events
+        assertEquals(4, mZenModeEventLogger.numLoggedChanges());
+
+        // First event: DND_TURNED_ON; active rules: 1; type is ACTIVE_RULE_TYPE_MANUAL
+        assertThat(mZenModeEventLogger.getEventId(0)).isEqualTo(
+                ZenModeEventLogger.ZenStateChangedEvent.DND_TURNED_ON.getId());
+        assertThat(mZenModeEventLogger.getChangedRuleType(0)).isEqualTo(
+                DNDProtoEnums.MANUAL_RULE);
+        assertThat(mZenModeEventLogger.getNumRulesActive(0)).isEqualTo(1);
+        int[] ruleTypes0 = mZenModeEventLogger.getActiveRuleTypes(0);
+        assertThat(ruleTypes0.length).isEqualTo(1);
+        assertThat(ruleTypes0[0]).isEqualTo(ACTIVE_RULE_TYPE_MANUAL);
+
+        // Second event: active rules: 2; types are TYPE_MANUAL and TYPE_BEDTIME
+        assertThat(mZenModeEventLogger.getChangedRuleType(1)).isEqualTo(
+                DNDProtoEnums.AUTOMATIC_RULE);
+        assertThat(mZenModeEventLogger.getNumRulesActive(1)).isEqualTo(2);
+        int[] ruleTypes1 = mZenModeEventLogger.getActiveRuleTypes(1);
+        assertThat(ruleTypes1.length).isEqualTo(2);
+        assertThat(ruleTypes1[0]).isEqualTo(TYPE_BEDTIME);
+        assertThat(ruleTypes1[1]).isEqualTo(ACTIVE_RULE_TYPE_MANUAL);
+
+        // Third event: active rules: 3
+        assertThat(mZenModeEventLogger.getEventId(2)).isEqualTo(
+                ZenModeEventLogger.ZenStateChangedEvent.DND_ACTIVE_RULES_CHANGED.getId());
+        assertThat(mZenModeEventLogger.getChangedRuleType(2)).isEqualTo(
+                DNDProtoEnums.AUTOMATIC_RULE);
+        int[] ruleTypes2 = mZenModeEventLogger.getActiveRuleTypes(2);
+        assertThat(ruleTypes2.length).isEqualTo(3);
+        assertThat(ruleTypes2[0]).isEqualTo(TYPE_BEDTIME);
+        assertThat(ruleTypes2[1]).isEqualTo(TYPE_IMMERSIVE);
+        assertThat(ruleTypes2[2]).isEqualTo(ACTIVE_RULE_TYPE_MANUAL);
+
+        // Fourth event: active rules 2, types are TYPE_MANUAL and TYPE_IMMERSIVE
+        assertThat(mZenModeEventLogger.getEventId(3)).isEqualTo(
+                ZenModeEventLogger.ZenStateChangedEvent.DND_ACTIVE_RULES_CHANGED.getId());
+        assertThat(mZenModeEventLogger.getChangedRuleType(3)).isEqualTo(
+                DNDProtoEnums.AUTOMATIC_RULE);
+        int[] ruleTypes3 = mZenModeEventLogger.getActiveRuleTypes(3);
+        assertThat(ruleTypes3.length).isEqualTo(2);
+        assertThat(ruleTypes3[0]).isEqualTo(TYPE_IMMERSIVE);
+        assertThat(ruleTypes3[1]).isEqualTo(ACTIVE_RULE_TYPE_MANUAL);
+    }
+
+    @Test
     @DisableFlags(Flags.FLAG_MODES_API)
     public void testUpdateConsolidatedPolicy_preModesApiDefaultRulesOnly_takesGlobalDefault() {
         setupZenConfig();
@@ -4701,19 +4858,26 @@
         verify(mDeviceEffectsApplier).apply(eq(NO_EFFECTS), eq(UPDATE_ORIGIN_INIT));
 
         String ruleId = addRuleWithEffects(
-                new ZenDeviceEffects.Builder().setShouldDisplayGrayscale(true).build());
+                new ZenDeviceEffects.Builder()
+                        .setShouldDisplayGrayscale(true)
+                        .addExtraEffect("ONE")
+                        .build());
         mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, UPDATE_ORIGIN_APP,
                 CUSTOM_PKG_UID);
         mTestableLooper.processAllMessages();
         verify(mDeviceEffectsApplier).apply(
                 eq(new ZenDeviceEffects.Builder()
                         .setShouldDisplayGrayscale(true)
+                        .addExtraEffect("ONE")
                         .build()),
                 eq(UPDATE_ORIGIN_APP));
 
         // Now create and activate a second rule that adds more effects.
         String secondRuleId = addRuleWithEffects(
-                new ZenDeviceEffects.Builder().setShouldDimWallpaper(true).build());
+                new ZenDeviceEffects.Builder()
+                        .setShouldDimWallpaper(true)
+                        .addExtraEffect("TWO")
+                        .build());
         mZenModeHelper.setAutomaticZenRuleState(secondRuleId, CONDITION_TRUE, UPDATE_ORIGIN_APP,
                 CUSTOM_PKG_UID);
         mTestableLooper.processAllMessages();
@@ -4722,6 +4886,7 @@
                 eq(new ZenDeviceEffects.Builder()
                         .setShouldDisplayGrayscale(true)
                         .setShouldDimWallpaper(true)
+                        .setExtraEffects(ImmutableSet.of("ONE", "TWO"))
                         .build()),
                 eq(UPDATE_ORIGIN_APP));
     }
@@ -4732,7 +4897,10 @@
         mZenModeHelper.setDeviceEffectsApplier(mDeviceEffectsApplier);
         verify(mDeviceEffectsApplier).apply(eq(NO_EFFECTS), eq(UPDATE_ORIGIN_INIT));
 
-        ZenDeviceEffects zde = new ZenDeviceEffects.Builder().setShouldUseNightMode(true).build();
+        ZenDeviceEffects zde = new ZenDeviceEffects.Builder()
+                .setShouldUseNightMode(true)
+                .addExtraEffect("extra_effect")
+                .build();
         String ruleId = addRuleWithEffects(zde);
         mZenModeHelper.setAutomaticZenRuleState(ruleId, CONDITION_TRUE, UPDATE_ORIGIN_APP,
                 CUSTOM_PKG_UID);
@@ -4798,7 +4966,7 @@
                 .setDeviceEffects(effects)
                 .build();
         return mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), rule,
-                UPDATE_ORIGIN_APP, "reasons", CUSTOM_PKG_UID);
+                UPDATE_ORIGIN_SYSTEM_OR_SYSTEMUI, "reasons", Process.SYSTEM_UID);
     }
 
     @Test
diff --git a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
index bdbb6c6..7db707a 100644
--- a/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
+++ b/services/tests/vibrator/src/com/android/server/vibrator/VibratorManagerServiceTest.java
@@ -1797,7 +1797,6 @@
         cancelVibrate(service);  // Clean up long effect.
     }
 
-    @FlakyTest
     @Test
     public void onExternalVibration_withNewSameImportanceButRepeating_cancelsOngoingVibration()
             throws Exception {
diff --git a/services/tests/voiceinteractiontests/src/com/android/server/voiceinteraction/SetSandboxedTrainingDataAllowedTest.java b/services/tests/voiceinteractiontests/src/com/android/server/voiceinteraction/SetSandboxedTrainingDataAllowedTest.java
deleted file mode 100644
index 159c760..0000000
--- a/services/tests/voiceinteractiontests/src/com/android/server/voiceinteraction/SetSandboxedTrainingDataAllowedTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 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 com.android.server.voiceinteraction;
-
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.junit.Assert.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
-import android.Manifest;
-import android.app.ActivityManagerInternal;
-import android.app.AppOpsManager;
-import android.app.role.RoleManager;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.os.PermissionEnforcer;
-import android.os.Process;
-import android.os.test.FakePermissionEnforcer;
-import android.platform.test.annotations.Presubmit;
-
-import androidx.test.core.app.ApplicationProvider;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.modules.utils.testing.ExtendedMockitoRule;
-import com.android.server.LocalServices;
-import com.android.server.pm.UserManagerInternal;
-import com.android.server.pm.permission.LegacyPermissionManagerInternal;
-import com.android.server.pm.permission.PermissionManagerServiceInternal;
-import com.android.server.wm.ActivityTaskManagerInternal;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.mockito.quality.Strictness;
-
-@SmallTest
-@Presubmit
-@RunWith(AndroidJUnit4.class)
-public class SetSandboxedTrainingDataAllowedTest {
-
-    @Captor private ArgumentCaptor<Integer> mOpIdCaptor, mUidCaptor, mOpModeCaptor;
-
-    @Mock
-    private AppOpsManager mAppOpsManager;
-
-    @Mock
-    private VoiceInteractionManagerServiceImpl mVoiceInteractionManagerServiceImpl;
-
-    private FakePermissionEnforcer mPermissionEnforcer = new FakePermissionEnforcer();
-
-    private Context mContext;
-
-    private VoiceInteractionManagerService mVoiceInteractionManagerService;
-    private VoiceInteractionManagerService.VoiceInteractionManagerServiceStub
-            mVoiceInteractionManagerServiceStub;
-
-    private ApplicationInfo mApplicationInfo = new ApplicationInfo();
-
-    @Rule
-    public final ExtendedMockitoRule mExtendedMockitoRule =
-            new ExtendedMockitoRule.Builder(this)
-                    .setStrictness(Strictness.WARN)
-                    .mockStatic(LocalServices.class)
-                    .mockStatic(PermissionEnforcer.class)
-                    .build();
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-
-        mContext = spy(ApplicationProvider.getApplicationContext());
-
-        doReturn(mPermissionEnforcer).when(() -> PermissionEnforcer.fromContext(any()));
-        doReturn(mock(PermissionManagerServiceInternal.class)).when(
-                () -> LocalServices.getService(PermissionManagerServiceInternal.class));
-        doReturn(mock(ActivityManagerInternal.class)).when(
-                () -> LocalServices.getService(ActivityManagerInternal.class));
-        doReturn(mock(UserManagerInternal.class)).when(
-                () -> LocalServices.getService(UserManagerInternal.class));
-        doReturn(mock(ActivityTaskManagerInternal.class)).when(
-                () -> LocalServices.getService(ActivityTaskManagerInternal.class));
-        doReturn(mock(LegacyPermissionManagerInternal.class)).when(
-                () -> LocalServices.getService(LegacyPermissionManagerInternal.class));
-        doReturn(mock(RoleManager.class)).when(mContext).getSystemService(RoleManager.class);
-        doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE);
-        doReturn(mApplicationInfo).when(mVoiceInteractionManagerServiceImpl).getApplicationInfo();
-
-        mVoiceInteractionManagerService = new VoiceInteractionManagerService(mContext);
-        mVoiceInteractionManagerServiceStub =
-                mVoiceInteractionManagerService.new VoiceInteractionManagerServiceStub();
-        mVoiceInteractionManagerServiceStub.mImpl = mVoiceInteractionManagerServiceImpl;
-        mPermissionEnforcer.grant(Manifest.permission.MANAGE_HOTWORD_DETECTION);
-    }
-
-    @Test
-    public void setShouldReceiveSandboxedTrainingData_currentAndPreinstalledAssistant_setsOp() {
-        // Set application info so current app is the current and preinstalled assistant.
-        mApplicationInfo.uid = Process.myUid();
-        mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-
-        mVoiceInteractionManagerServiceStub.setShouldReceiveSandboxedTrainingData(
-                /* allowed= */ true);
-
-        verify(mAppOpsManager).setUidMode(mOpIdCaptor.capture(), mUidCaptor.capture(),
-                mOpModeCaptor.capture());
-        assertThat(mOpIdCaptor.getValue()).isEqualTo(
-                AppOpsManager.OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA);
-        assertThat(mOpModeCaptor.getValue()).isEqualTo(AppOpsManager.MODE_ALLOWED);
-        assertThat(mUidCaptor.getValue()).isEqualTo(Process.myUid());
-    }
-
-    @Test
-    public void setShouldReceiveSandboxedTrainingData_missingPermission_doesNotSetOp() {
-        // Set application info so current app is the current and preinstalled assistant.
-        mApplicationInfo.uid = Process.myUid();
-        mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-
-        // Simulate missing MANAGE_HOTWORD_DETECTION permission.
-        mPermissionEnforcer.revoke(Manifest.permission.MANAGE_HOTWORD_DETECTION);
-
-        assertThrows(SecurityException.class,
-                () -> mVoiceInteractionManagerServiceStub.setShouldReceiveSandboxedTrainingData(
-                        /* allowed= */ true));
-
-        verify(mAppOpsManager, never()).setUidMode(anyInt(), anyInt(), anyInt());
-    }
-
-    @Test
-    public void setShouldReceiveSandboxedTrainingData_notPreinstalledAssistant_doesNotSetOp() {
-        // Set application info so current app is not preinstalled assistant.
-        mApplicationInfo.uid = Process.myUid();
-        mApplicationInfo.flags = ApplicationInfo.FLAG_INSTALLED; // Does not contain FLAG_SYSTEM.
-
-        assertThrows(SecurityException.class,
-                () -> mVoiceInteractionManagerServiceStub.setShouldReceiveSandboxedTrainingData(
-                                /* allowed= */ true));
-
-        verify(mAppOpsManager, never()).setUidMode(anyInt(), anyInt(), anyInt());
-    }
-
-    @Test
-    public void setShouldReceiveSandboxedTrainingData_notCurrentAssistant_doesNotSetOp() {
-        // Set application info so current app is not current assistant.
-        mApplicationInfo.uid = Process.SHELL_UID; // Set current assistant uid to shell UID.
-        mApplicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
-
-        assertThrows(SecurityException.class,
-                () -> mVoiceInteractionManagerServiceStub.setShouldReceiveSandboxedTrainingData(
-                                /* allowed= */ true));
-
-        verify(mAppOpsManager, never()).setUidMode(anyInt(), anyInt(), anyInt());
-    }
-}
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
index 29faed1..d5eeaa7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -413,6 +413,7 @@
                 });
         doReturn(null).when(mMockPackageManager).getDefaultHomeActivity(anyInt());
         doReturn(mMockPackageManager).when(mAtm).getPackageManagerInternalLocked();
+        doReturn("packageName").when(mMockPackageManager).getNameForUid(anyInt());
         doReturn(false).when(mMockPackageManager).isInstantAppInstallerComponent(any());
         doReturn(null).when(mMockPackageManager).resolveIntent(any(), any(), anyLong(), anyLong(),
                 anyInt(), anyBoolean(), anyInt());
@@ -1560,7 +1561,7 @@
                 .build();
 
         final int result = starter.recycleTask(task, null, null, null,
-                BalVerdict.ALLOW_BY_DEFAULT);
+                BalVerdict.ALLOW_PRIVILEGED);
         assertThat(result == START_SUCCESS).isTrue();
         assertThat(starter.mAddingToTask).isTrue();
     }
@@ -2074,7 +2075,7 @@
         starter.startActivityInner(target, source, null /* voiceSession */,
                 null /* voiceInteractor */, 0 /* startFlags */,
                 options, inTask, inTaskFragment,
-                BalVerdict.ALLOW_BY_DEFAULT,
+                BalVerdict.ALLOW_PRIVILEGED,
                 null /* intentGrants */, -1 /* realCallingUid */);
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
index 2034751..0b466b2 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskSupervisorTests.java
@@ -242,7 +242,8 @@
         verify(activity).getFilteredReferrer(eq(activity.launchedFromPackage));
 
         activity.deliverNewIntentLocked(ActivityBuilder.DEFAULT_FAKE_UID,
-                new Intent(), null /* intentGrants */, "other.package2");
+                new Intent(), null /* intentGrants */, "other.package2",
+                /* isShareIdentityEnabled */ false);
         verify(activity).getFilteredReferrer(eq("other.package2"));
     }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerTests.java
new file mode 100644
index 0000000..c99fda9
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/BackgroundActivityStartControllerTests.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2022 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 com.android.server.wm;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+
+import android.app.ActivityOptions;
+import android.app.AppOpsManager;
+import android.app.BackgroundStartPrivileges;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManagerInternal;
+import android.platform.test.annotations.Presubmit;
+import android.provider.DeviceConfig;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.compatibility.common.util.DeviceConfigStateHelper;
+import com.android.server.am.PendingIntentRecord;
+import com.android.server.wm.BackgroundActivityStartController.BalVerdict;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests for the {@link ActivityStarter} class.
+ *
+ * Build/Install/Run:
+ * atest WmTests:BackgroundActivityStartControllerTests
+ */
+@SmallTest
+@Presubmit
+@RunWith(JUnit4.class)
+public class BackgroundActivityStartControllerTests {
+
+    private static final int REGULAR_UID_1 = 10001;
+    private static final int REGULAR_UID_2 = 10002;
+    private static final int NO_UID = 01;
+    private static final int REGULAR_PID_1 = 11001;
+    private static final int REGULAR_PID_2 = 11002;
+    private static final int NO_PID = 01;
+    private static final String REGULAR_PACKAGE_1 = "package.app1";
+    private static final String REGULAR_PACKAGE_2 = "package.app2";
+
+    public @Rule MockitoRule mMockitoRule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+    BackgroundActivityStartController mController;
+    @Mock
+    ActivityMetricsLogger mActivityMetricsLogger;
+    @Mock
+    WindowProcessController mCallerApp;
+    DeviceConfigStateHelper mDeviceConfig = new DeviceConfigStateHelper(
+            DeviceConfig.NAMESPACE_WINDOW_MANAGER);
+    @Mock
+    ActivityRecord mResultRecord;
+
+    @Mock
+    ActivityTaskManagerService mService;
+    @Mock
+    Context /* mService. */ mContext;
+    @Mock
+    PackageManagerInternal /* mService. */ mPackageManagerInternal;
+    @Mock
+    RootWindowContainer /* mService. */ mRootWindowContainer;
+    @Mock
+    AppOpsManager mAppOpsManager;
+    MirrorActiveUids mActiveUids = new MirrorActiveUids();
+    WindowProcessControllerMap mProcessMap = new WindowProcessControllerMap();
+
+    @Mock
+    ActivityTaskSupervisor mSupervisor;
+    @Mock
+    RecentTasks /* mSupervisor. */ mRecentTasks;
+
+    @Mock
+    PendingIntentRecord mPendingIntentRecord; // just so we can pass a non-null instance
+
+    record BalAllowedLog(String packageName, int code) {
+    }
+
+    List<String> mShownToasts = new ArrayList<>();
+    List<BalAllowedLog> mBalAllowedLogs = new ArrayList<>();
+
+    @Before
+    public void setUp() throws Exception {
+        // wire objects
+        mService.mTaskSupervisor = mSupervisor;
+        mService.mContext = mContext;
+        setViaReflection(mService, "mActiveUids", mActiveUids);
+        Mockito.when(mService.getPackageManagerInternalLocked()).thenReturn(
+                mPackageManagerInternal);
+        mService.mRootWindowContainer = mRootWindowContainer;
+        Mockito.when(mService.getAppOpsManager()).thenReturn(mAppOpsManager);
+        setViaReflection(mService, "mProcessMap", mProcessMap);
+
+        //Mockito.when(mSupervisor.getBackgroundActivityLaunchController()).thenReturn(mController);
+        setViaReflection(mSupervisor, "mRecentTasks", mRecentTasks);
+
+        mController = new BackgroundActivityStartController(mService, mSupervisor) {
+            @Override
+            protected void showToast(String toastText) {
+                mShownToasts.add(toastText);
+            }
+
+            @Override
+            protected void writeBalAllowedLog(String activityName, int code,
+                    BackgroundActivityStartController.BalState state) {
+                mBalAllowedLogs.add(new BalAllowedLog(activityName, code));
+            }
+        };
+
+        // safe defaults
+        Mockito.when(mAppOpsManager.checkOpNoThrow(
+                eq(AppOpsManager.OP_SYSTEM_EXEMPT_FROM_ACTIVITY_BG_START_RESTRICTION),
+                anyInt(), anyString())).thenReturn(AppOpsManager.MODE_DEFAULT);
+        Mockito.when(mCallerApp.areBackgroundActivityStartsAllowed(anyInt())).thenReturn(
+                BalVerdict.BLOCK);
+
+    }
+
+    private void setViaReflection(Object o, String property, Object value) {
+        try {
+            Field field = o.getClass().getDeclaredField(property);
+            field.setAccessible(true);
+            field.set(o, value);
+        } catch (IllegalAccessException | NoSuchFieldException e) {
+            throw new IllegalArgumentException("Cannot set " + property + " of " + o.getClass(), e);
+        }
+    }
+
+    @After
+    public void tearDown() throws Exception {
+    }
+
+    @Test
+    public void testRegularActivityStart_noExemption_isBlocked() {
+        // setup state
+
+        // prepare call
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = NO_UID;
+        int realCallingPid = NO_PID;
+        PendingIntentRecord originatingPendingIntent = null;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = new Intent();
+        ActivityOptions checkedOptions = ActivityOptions.makeBasic();
+
+        // call
+        BalVerdict verdict = mController.checkBackgroundActivityStart(callingUid, callingPid,
+                callingPackage, realCallingUid, realCallingPid, mCallerApp,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // assertions
+        assertThat(verdict.getCode()).isEqualTo(BackgroundActivityStartController.BAL_BLOCK);
+
+        assertThat(mBalAllowedLogs).isEmpty();
+    }
+
+    @Test
+    public void testRegularActivityStart_allowedBLPC_isAllowed() {
+        // setup state
+        BalVerdict blpcVerdict = new BalVerdict(
+                BackgroundActivityStartController.BAL_ALLOW_PERMISSION, true, "Allowed by BLPC");
+        Mockito.when(mCallerApp.areBackgroundActivityStartsAllowed(anyInt())).thenReturn(
+                blpcVerdict);
+
+        // prepare call
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = NO_UID;
+        int realCallingPid = NO_PID;
+        PendingIntentRecord originatingPendingIntent = null;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = new Intent();
+        ActivityOptions checkedOptions = ActivityOptions.makeBasic();
+
+        // call
+        BalVerdict verdict = mController.checkBackgroundActivityStart(callingUid, callingPid,
+                callingPackage, realCallingUid, realCallingPid, mCallerApp,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // assertions
+        assertThat(verdict).isEqualTo(blpcVerdict);
+        assertThat(mBalAllowedLogs).containsExactly(
+                new BalAllowedLog("", BackgroundActivityStartController.BAL_ALLOW_PERMISSION));
+    }
+
+    @Test
+    public void testRegularActivityStart_allowedByCallerBLPC_isAllowed() {
+        // setup state
+        BalVerdict blpcVerdict = new BalVerdict(
+                BackgroundActivityStartController.BAL_ALLOW_PERMISSION, true, "Allowed by BLPC");
+        Mockito.when(mCallerApp.areBackgroundActivityStartsAllowed(anyInt())).thenReturn(
+                blpcVerdict);
+
+        // prepare call
+        int callingUid = REGULAR_UID_1;
+        int callingPid = REGULAR_PID_1;
+        final String callingPackage = REGULAR_PACKAGE_1;
+        int realCallingUid = REGULAR_UID_2;
+        int realCallingPid = REGULAR_PID_2;
+        PendingIntentRecord originatingPendingIntent = mPendingIntentRecord;
+        BackgroundStartPrivileges forcedBalByPiSender = BackgroundStartPrivileges.NONE;
+        Intent intent = new Intent();
+        ActivityOptions checkedOptions = ActivityOptions.makeBasic();
+
+        // call
+        BalVerdict verdict = mController.checkBackgroundActivityStart(callingUid, callingPid,
+                callingPackage, realCallingUid, realCallingPid, mCallerApp,
+                originatingPendingIntent, forcedBalByPiSender, mResultRecord, intent,
+                checkedOptions);
+
+        // assertions
+        assertThat(verdict).isEqualTo(blpcVerdict);
+        assertThat(mBalAllowedLogs).containsExactly(
+                new BalAllowedLog("", BackgroundActivityStartController.BAL_ALLOW_PERMISSION));
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java
index c404c77..bb5887d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayWindowPolicyControllerTests.java
@@ -187,7 +187,7 @@
                 /* options */null,
                 /* inTask */null,
                 /* inTaskFragment */ null,
-                BalVerdict.ALLOW_BY_DEFAULT,
+                BalVerdict.ALLOW_PRIVILEGED,
                 /* intentGrants */null,
                 /* realCaiingUid */ -1);
 
@@ -217,7 +217,7 @@
                 /* options= */null,
                 /* inTask= */null,
                 /* inTaskFragment= */ null,
-                BalVerdict.ALLOW_BY_DEFAULT,
+                BalVerdict.ALLOW_PRIVILEGED,
                 /* intentGrants= */null,
                 /* realCaiingUid */ -1);
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java
index 06d30fc..29f48b8 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotCacheTest.java
@@ -58,7 +58,7 @@
     public void setUp() {
         super.setUp();
         MockitoAnnotations.initMocks(this);
-        mCache = new TaskSnapshotCache(mWm, mLoader);
+        mCache = new TaskSnapshotCache(mLoader);
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java
index df5f3d1..7432537 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskSnapshotLowResDisabledTest.java
@@ -61,7 +61,7 @@
     public void setUp() {
         super.setUp();
         MockitoAnnotations.initMocks(this);
-        mCache = new TaskSnapshotCache(mWm, mLoader);
+        mCache = new TaskSnapshotCache(mLoader);
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
index aa9c0c8..03b695d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java
@@ -48,6 +48,7 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -901,7 +902,8 @@
                 new Binder(),
                 0 /* index */,
                 WindowInsets.Type.systemOverlays(),
-                new Rect(0, 0, 1080, 200));
+                new Rect(0, 0, 1080, 200),
+                null /* boundingRects */);
         mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct);
 
         assertThat(navigationBarInsetsReceiverTask.mLocalInsetsSources
@@ -910,6 +912,31 @@
     }
 
     @Test
+    public void testAddInsetsSource_withBoundingRects() {
+        final Task rootTask = createTask(mDisplayContent);
+
+        final Task navigationBarInsetsReceiverTask = createTaskInRootTask(rootTask, 0);
+        navigationBarInsetsReceiverTask.getConfiguration().windowConfiguration.setBounds(new Rect(
+                0, 200, 1080, 700));
+
+        final Rect[] boundingRects = new Rect[]{
+                new Rect(0, 0, 10, 10), new Rect(100, 100, 200, 100)
+        };
+        final WindowContainerTransaction wct = new WindowContainerTransaction();
+        wct.addInsetsSource(
+                navigationBarInsetsReceiverTask.mRemoteToken.toWindowContainerToken(),
+                new Binder(),
+                0 /* index */,
+                WindowInsets.Type.systemOverlays(),
+                new Rect(0, 0, 1080, 200),
+                boundingRects);
+        mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct);
+
+        assertArrayEquals(boundingRects, navigationBarInsetsReceiverTask.mLocalInsetsSources
+                .valueAt(0).getBoundingRects());
+    }
+
+    @Test
     public void testRemoveInsetsSource() {
         final Task rootTask = createTask(mDisplayContent);
 
@@ -923,7 +950,8 @@
                 owner,
                 0 /* index */,
                 WindowInsets.Type.systemOverlays(),
-                new Rect(0, 0, 1080, 200));
+                new Rect(0, 0, 1080, 200),
+                null /* boundingRects */);
         mWm.mAtmService.mWindowOrganizerController.applyTransaction(wct);
 
         final WindowContainerTransaction wct2 = new WindowContainerTransaction();
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
index f02dd3f..cd3ce91 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
@@ -20,6 +20,7 @@
 import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.permission.flags.Flags.FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION;
 import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.InsetsSource.ID_IME;
 import static android.view.Surface.ROTATION_0;
@@ -55,7 +56,6 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-import static com.android.server.notification.Flags.FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION;
 import static com.android.server.wm.DisplayContent.IME_TARGET_CONTROL;
 import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING;
 import static com.android.server.wm.WindowContainer.SYNC_STATE_WAITING_FOR_DRAW;
@@ -1424,6 +1424,25 @@
         assertFalse(window2.isSecureLocked());
     }
 
+    @Test
+    @RequiresFlagsEnabled(FLAG_SENSITIVE_NOTIFICATION_APP_PROTECTION)
+    public void testIsSecureLocked_sensitiveContentBlockOrClearScreenCaptureForApp() {
+        String testPackage = "test";
+        int ownerId = 20;
+        final WindowState window = createWindow(null, TYPE_APPLICATION, "window", ownerId);
+        window.mAttrs.packageName = testPackage;
+        assertFalse(window.isSecureLocked());
+
+        PackageInfo blockedPackage = new PackageInfo(testPackage, ownerId);
+        ArraySet<PackageInfo> blockedPackages = new ArraySet();
+        blockedPackages.add(blockedPackage);
+        mWm.mSensitiveContentPackages.addBlockScreenCaptureForApps(blockedPackages);
+        assertTrue(window.isSecureLocked());
+
+        mWm.mSensitiveContentPackages.removeBlockScreenCaptureForApps(blockedPackages);
+        assertFalse(window.isSecureLocked());
+    }
+
     private static class TestImeTargetChangeListener implements ImeTargetChangeListener {
         private IBinder mImeTargetToken;
         private boolean mIsRemoved;
diff --git a/services/usb/java/com/android/server/usb/UsbPortManager.java b/services/usb/java/com/android/server/usb/UsbPortManager.java
index fc7c6a6..55a8923 100644
--- a/services/usb/java/com/android/server/usb/UsbPortManager.java
+++ b/services/usb/java/com/android/server/usb/UsbPortManager.java
@@ -319,6 +319,16 @@
     }
 
     /**
+     * Returns true if the provided port supports changing its mode.
+     */
+    public boolean isModeChangeSupported(String portId) {
+        synchronized (mLock) {
+            final PortInfo portInfo = mPorts.get(portId);
+            return portInfo != null ? portInfo.mCanChangeMode : false;
+        }
+    }
+
+    /**
      * Enables/disables contaminant detection.
      *
      * @param portId port identifier.
diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java
index fb13b33..530a39e 100644
--- a/services/usb/java/com/android/server/usb/UsbService.java
+++ b/services/usb/java/com/android/server/usb/UsbService.java
@@ -781,6 +781,20 @@
         }
     }
 
+    @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB)
+    @Override
+    public boolean isModeChangeSupported(String portId) {
+        isModeChangeSupported_enforcePermission();
+        Objects.requireNonNull(portId, "portId must not be null");
+
+        final long ident = Binder.clearCallingIdentity();
+        try {
+            return mPortManager != null ? mPortManager.isModeChangeSupported(portId) : false;
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+    }
+
     @Override
     public void setPortRoles(String portId, int powerRole, int dataRole) {
         Objects.requireNonNull(portId, "portId must not be null");
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
index fb18375..368a96b 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DetectorSession.java
@@ -19,7 +19,6 @@
 import static android.Manifest.permission.CAPTURE_AUDIO_HOTWORD;
 import static android.Manifest.permission.LOG_COMPAT_CHANGE;
 import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG;
-import static android.Manifest.permission.RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA;
 import static android.Manifest.permission.RECORD_AUDIO;
 import static android.app.AppOpsManager.MODE_ALLOWED;
 import static android.app.AppOpsManager.MODE_DEFAULT;
@@ -30,8 +29,6 @@
 import static android.service.voice.HotwordDetectionService.INITIALIZATION_STATUS_UNKNOWN;
 import static android.service.voice.HotwordDetectionService.KEY_INITIALIZATION_STATUS;
 import static android.service.voice.HotwordDetectionServiceFailure.ERROR_CODE_COPY_AUDIO_DATA_FAILURE;
-import static android.service.voice.HotwordDetectionServiceFailure.ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED;
-import static android.service.voice.HotwordDetectionServiceFailure.ERROR_CODE_ON_TRAINING_DATA_SECURITY_EXCEPTION;
 
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED__RESULT__CALLBACK_INIT_STATE_ERROR;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED__RESULT__CALLBACK_INIT_STATE_SUCCESS;
@@ -51,10 +48,6 @@
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__DETECT_SECURITY_EXCEPTION;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__DETECT_UNEXPECTED_CALLBACK;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__REJECT_UNEXPECTED_CALLBACK;
-import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA;
-import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_EGRESS_LIMIT_REACHED;
-import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_REMOTE_EXCEPTION;
-import static com.android.internal.util.FrameworkStatsLog.HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_SECURITY_EXCEPTION;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_EVENT_EGRESS_SIZE__EVENT_TYPE__HOTWORD_DETECTION;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_EVENT_EGRESS_SIZE__EVENT_TYPE__HOTWORD_REJECTION;
 import static com.android.internal.util.FrameworkStatsLog.HOTWORD_EVENT_EGRESS_SIZE__EVENT_TYPE__HOTWORD_TRAINING_DATA;
@@ -76,22 +69,21 @@
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.IRemoteCallback;
-import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
-import android.os.Parcelable;
 import android.os.PersistableBundle;
 import android.os.RemoteException;
 import android.os.SharedMemory;
+import android.service.voice.AlwaysOnHotwordDetector;
+import android.service.voice.HotwordAudioStream;
 import android.service.voice.HotwordDetectedResult;
 import android.service.voice.HotwordDetectionService;
 import android.service.voice.HotwordDetectionServiceFailure;
 import android.service.voice.HotwordDetector;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
-import android.service.voice.HotwordTrainingDataLimitEnforcer;
 import android.service.voice.IDspHotwordDetectionCallback;
 import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback;
 import android.service.voice.VisualQueryDetectionServiceFailure;
+import android.service.voice.VoiceInteractionManagerInternal.WearableHotwordDetectionCallback;
 import android.text.TextUtils;
 import android.util.Pair;
 import android.util.Slog;
@@ -99,7 +91,6 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.IHotwordRecognitionStatusCallback;
 import com.android.internal.infra.AndroidFuture;
-import com.android.internal.os.BackgroundThread;
 import com.android.server.LocalServices;
 import com.android.server.policy.AppOpsPolicy;
 import com.android.server.voiceinteraction.VoiceInteractionManagerServiceImpl.DetectorRemoteExceptionListener;
@@ -142,9 +133,6 @@
     private static final String HOTWORD_DETECTION_OP_MESSAGE =
             "Providing hotword detection result to VoiceInteractionService";
 
-    private static final String HOTWORD_TRAINING_DATA_OP_MESSAGE =
-            "Providing hotword training data to VoiceInteractionService";
-
     // The error codes are used for onHotwordDetectionServiceFailure callback.
     // Define these due to lines longer than 100 characters.
     static final int ONDETECTED_GOT_SECURITY_EXCEPTION =
@@ -420,7 +408,83 @@
                 audioStream,
                 audioFormat,
                 options,
-                callback);
+                callback,
+                /* shouldCloseAudioStreamWithDelayOnDetect= */ true);
+    }
+
+    void startListeningFromWearableLocked(
+            ParcelFileDescriptor audioStream,
+            AudioFormat audioFormat,
+            PersistableBundle options,
+            WearableHotwordDetectionCallback wearableCallback) {
+        if (DEBUG) {
+            Slog.d(TAG, "startListeningFromWearableLocked");
+        }
+        IMicrophoneHotwordDetectionVoiceInteractionCallback voiceInteractionCallback =
+                new IMicrophoneHotwordDetectionVoiceInteractionCallback() {
+                    @Override
+                    public void onDetected(
+                            HotwordDetectedResult hotwordDetectedResult,
+                            AudioFormat audioFormatFromCallback,
+                            ParcelFileDescriptor audioStreamFromCallback) {
+                        wearableCallback.onDetected();
+                        try {
+                            // This uses the DSP hotword code path to send the result to
+                            // AlwaysOnHotwordDetector. DSP trigger and wearable trigger operates
+                            // independently.
+                            mCallback.onKeyphraseDetectedFromExternalSource(hotwordDetectedResult);
+                        } catch (RemoteException ex) {
+                            Slog.w(
+                                    TAG,
+                                    "RemoteException when sending HotwordDetectedResult to"
+                                        + " VoiceInteractionService.",
+                                    ex);
+                            wearableCallback.onError(
+                                    "RemoteException when sending HotwordDetectedResult to"
+                                        + " VoiceInteractionService.");
+                            notifyOnDetectorRemoteException();
+                        }
+
+                        // Close the local copies of the file descriptors after sending them to
+                        // another process.
+                        for (HotwordAudioStream resultAudioStream :
+                                hotwordDetectedResult.getAudioStreams()) {
+                            try {
+                                resultAudioStream.getAudioStreamParcelFileDescriptor().close();
+                            } catch (IOException ex) {
+                                Slog.i(
+                                        TAG,
+                                        "Unable to close audio stream parcel file descriptor,",
+                                        ex);
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onHotwordDetectionServiceFailure(
+                            HotwordDetectionServiceFailure hotwordDetectionServiceFailure) {
+                        wearableCallback.onError(
+                                "onHotwordDetectionServiceFailure: "
+                                        + hotwordDetectionServiceFailure);
+                    }
+
+                    @Override
+                    public void onRejected(HotwordRejectedResult hotwordRejectedResult) {
+                        wearableCallback.onRejected();
+                    }
+
+                    @Override
+                    public IBinder asBinder() {
+                        // This callback will only be used locally within the same process.
+                        return null;
+                    }
+                };
+        handleExternalSourceHotwordDetectionLocked(
+                audioStream,
+                audioFormat,
+                options,
+                voiceInteractionCallback,
+                /* shouldCloseAudioStreamWithDelayOnDetect= */ false);
     }
 
     @SuppressWarnings("GuardedBy")
@@ -428,7 +492,8 @@
             ParcelFileDescriptor audioStream,
             AudioFormat audioFormat,
             @Nullable PersistableBundle options,
-            IMicrophoneHotwordDetectionVoiceInteractionCallback callback) {
+            IMicrophoneHotwordDetectionVoiceInteractionCallback callback,
+            boolean shouldCloseAudioStreamWithDelayOnDetect) {
         if (DEBUG) {
             Slog.d(TAG, "#handleExternalSourceHotwordDetectionLocked");
         }
@@ -497,12 +562,22 @@
         // TODO: what if we cancelled and started a new one?
         mRemoteDetectionService.run(
                 service -> {
+                    PersistableBundle optionsToSend = options;
+                    if (android.app.wearable.Flags.enableHotwordWearableSensingApi()) {
+                        if (optionsToSend == null) {
+                            optionsToSend = new PersistableBundle();
+                        }
+                        optionsToSend.putBoolean(
+                                HotwordDetectionService
+                                        .KEY_SYSTEM_WILL_CLOSE_AUDIO_STREAM_AFTER_CALLBACK,
+                                shouldCloseAudioStreamWithDelayOnDetect);
+                    }
                     service.detectFromMicrophoneSource(
                             serviceAudioSource,
                             // TODO: consider making a proxy callback + copy of audio format
                             AUDIO_SOURCE_EXTERNAL,
                             audioFormat,
-                            options,
+                            optionsToSend,
                             new IDspHotwordDetectionCallback.Stub() {
                                 @Override
                                 public void onRejected(HotwordRejectedResult result)
@@ -529,7 +604,6 @@
                                         if (result != null) {
                                             Slog.i(TAG, "Egressed 'hotword rejected result' "
                                                     + "from hotword trusted process");
-                                            logEgressSizeStats(result);
                                             if (mDebugHotwordLogging) {
                                                 Slog.i(TAG, "Egressed detected result: " + result);
                                             }
@@ -538,25 +612,6 @@
                                 }
 
                                 @Override
-                                public void onTrainingData(HotwordTrainingData data)
-                                        throws RemoteException {
-                                    sendTrainingData(new TrainingDataEgressCallback() {
-                                        @Override
-                                        public void onHotwordDetectionServiceFailure(
-                                                HotwordDetectionServiceFailure failure)
-                                                throws RemoteException {
-                                            callback.onHotwordDetectionServiceFailure(failure);
-                                        }
-
-                                        @Override
-                                        public void onTrainingData(HotwordTrainingData data)
-                                                throws RemoteException {
-                                            callback.onTrainingData(data);
-                                        }
-                                    }, data);
-                                }
-
-                                @Override
                                 public void onDetected(HotwordDetectedResult triggerResult)
                                         throws RemoteException {
                                     synchronized (mLock) {
@@ -565,18 +620,23 @@
                                                 getDetectorType(),
                                                 METRICS_EXTERNAL_SOURCE_DETECTED,
                                                 mVoiceInteractionServiceUid);
-                                        mScheduledExecutorService.schedule(
-                                                () -> {
-                                                    bestEffortClose(serviceAudioSink, audioSource);
-                                                },
-                                                EXTERNAL_HOTWORD_CLEANUP_MILLIS,
-                                                TimeUnit.MILLISECONDS);
-
+                                        if (shouldCloseAudioStreamWithDelayOnDetect) {
+                                            mScheduledExecutorService.schedule(
+                                                    () -> {
+                                                        bestEffortClose(
+                                                                serviceAudioSink, audioSource);
+                                                    },
+                                                    EXTERNAL_HOTWORD_CLEANUP_MILLIS,
+                                                    TimeUnit.MILLISECONDS);
+                                        }
                                         try {
                                             enforcePermissionsForDataDelivery();
                                         } catch (SecurityException e) {
-                                            Slog.w(TAG, "Ignoring #onDetected due to a "
-                                                    + "SecurityException", e);
+                                            Slog.w(
+                                                    TAG,
+                                                    "Ignoring #onDetected due to a "
+                                                            + "SecurityException",
+                                                    e);
                                             HotwordMetricsLogger.writeDetectorEvent(
                                                     getDetectorType(),
                                                     EXTERNAL_SOURCE_DETECT_SECURITY_EXCEPTION,
@@ -595,11 +655,16 @@
                                         }
                                         HotwordDetectedResult newResult;
                                         try {
-                                            newResult = mHotwordAudioStreamCopier
-                                                    .startCopyingAudioStreams(triggerResult);
+                                            newResult =
+                                                    mHotwordAudioStreamCopier
+                                                            .startCopyingAudioStreams(
+                                                                    triggerResult);
                                         } catch (IOException e) {
-                                            Slog.w(TAG, "Ignoring #onDetected due to a "
-                                                    + "IOException", e);
+                                            Slog.w(
+                                                    TAG,
+                                                    "Ignoring #onDetected due to a "
+                                                            + "IOException",
+                                                    e);
                                             // TODO: Write event
                                             try {
                                                 callback.onHotwordDetectionServiceFailure(
@@ -613,7 +678,12 @@
                                             return;
                                         }
                                         try {
-                                            callback.onDetected(newResult, /* audioFormat= */ null,
+                                            // The ParcelFileDescriptors in newResult might be
+                                            // closed after this call. Parcelling newResult can
+                                            // throw an exception
+                                            callback.onDetected(
+                                                    newResult,
+                                                    /* audioFormat= */ null,
                                                     /* audioStream= */ null);
                                         } catch (RemoteException e) {
                                             notifyOnDetectorRemoteException();
@@ -622,10 +692,8 @@
                                         Slog.i(TAG, "Egressed "
                                                 + HotwordDetectedResult.getUsageSize(newResult)
                                                 + " bits from hotword trusted process");
-                                        logEgressSizeStats(newResult);
                                         if (mDebugHotwordLogging) {
-                                            Slog.i(TAG,
-                                                    "Egressed detected result: " + newResult);
+                                            Slog.i(TAG, "Egressed detected result: " + newResult);
                                         }
                                     }
                                 }
@@ -639,134 +707,6 @@
                 mVoiceInteractionServiceUid);
     }
 
-    void logEgressSizeStats(HotwordTrainingData data) {
-        logEgressSizeStats(data, HOTWORD_EVENT_TYPE_TRAINING_DATA);
-    }
-
-    void logEgressSizeStats(HotwordDetectedResult data) {
-        logEgressSizeStats(data, HOTWORD_EVENT_TYPE_DETECTION);
-
-    }
-
-    void logEgressSizeStats(HotwordRejectedResult data) {
-        logEgressSizeStats(data, HOTWORD_EVENT_TYPE_REJECTION);
-    }
-
-    /** Logs event size stats for events egressed from trusted hotword detection service. */
-    private void logEgressSizeStats(Parcelable data, int eventType) {
-        BackgroundThread.getExecutor().execute(() -> {
-            Parcel parcel = Parcel.obtain();
-            parcel.writeValue(data);
-            int dataSizeBytes = parcel.dataSize();
-            parcel.recycle();
-
-            HotwordMetricsLogger.writeHotwordDataEgressSize(eventType, dataSizeBytes,
-                    getDetectorType(), mVoiceInteractionServiceUid);
-        });
-    }
-
-    /** Used to send training data.
-     *
-     * @hide
-     */
-    interface TrainingDataEgressCallback {
-        /** Called to send training data */
-        void onTrainingData(HotwordTrainingData trainingData) throws RemoteException;
-
-        /** Called to inform failure to send training data. */
-        void onHotwordDetectionServiceFailure(HotwordDetectionServiceFailure failure) throws
-                RemoteException;
-
-    }
-
-    /** Default implementation to send training data from {@link HotwordDetectionService}
-     *  to {@link HotwordDetector}.
-     *
-     * <p> Verifies RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA permission has been
-     * granted and training data egress is within daily limit.
-     *
-     * @param callback used to send training data or inform of failures to send training data.
-     * @param data training data to egress.
-     *
-     * @hide
-     */
-    void sendTrainingData(
-            TrainingDataEgressCallback callback, HotwordTrainingData data) throws RemoteException {
-        Slog.d(TAG, "onTrainingData()");
-        int detectorType = getDetectorType();
-        HotwordMetricsLogger.writeKeyphraseTriggerEvent(
-                detectorType,
-                HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA,
-                mVoiceInteractionServiceUid);
-
-        // Check training data permission is granted.
-        try {
-            enforcePermissionForTrainingDataDelivery();
-        } catch (SecurityException e) {
-            Slog.w(TAG, "Ignoring training data due to a SecurityException", e);
-            HotwordMetricsLogger.writeKeyphraseTriggerEvent(
-                    detectorType,
-                    HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_SECURITY_EXCEPTION,
-                    mVoiceInteractionServiceUid);
-            try {
-                callback.onHotwordDetectionServiceFailure(
-                        new HotwordDetectionServiceFailure(
-                                ERROR_CODE_ON_TRAINING_DATA_SECURITY_EXCEPTION,
-                                "Security exception occurred"
-                                        + "in #onTrainingData method."));
-            } catch (RemoteException e1) {
-                notifyOnDetectorRemoteException();
-                HotwordMetricsLogger.writeDetectorEvent(
-                        detectorType,
-                        HOTWORD_DETECTOR_EVENTS__EVENT__CALLBACK_ON_ERROR_EXCEPTION,
-                        mVoiceInteractionServiceUid);
-                throw e1;
-            }
-            return;
-        }
-
-        // Check whether within daily egress limit.
-        boolean withinEgressLimit = HotwordTrainingDataLimitEnforcer.getInstance(mContext)
-                                                                    .incrementEgressCount();
-        if (!withinEgressLimit) {
-            Slog.d(TAG, "Ignoring training data as exceeded egress limit.");
-            HotwordMetricsLogger.writeKeyphraseTriggerEvent(
-                    detectorType,
-                    HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_EGRESS_LIMIT_REACHED,
-                    mVoiceInteractionServiceUid);
-            try {
-                callback.onHotwordDetectionServiceFailure(
-                        new HotwordDetectionServiceFailure(
-                                ERROR_CODE_ON_TRAINING_DATA_EGRESS_LIMIT_EXCEEDED,
-                                "Training data egress limit exceeded."));
-            } catch (RemoteException e) {
-                notifyOnDetectorRemoteException();
-                HotwordMetricsLogger.writeDetectorEvent(
-                        detectorType,
-                        HOTWORD_DETECTOR_EVENTS__EVENT__CALLBACK_ON_ERROR_EXCEPTION,
-                        mVoiceInteractionServiceUid);
-                throw e;
-            }
-            return;
-        }
-
-        try {
-            Slog.i(TAG, "Egressing training data from hotword trusted process.");
-            if (mDebugHotwordLogging) {
-                Slog.d(TAG, "Egressing hotword training data " + data);
-            }
-            callback.onTrainingData(data);
-        } catch (RemoteException e) {
-            notifyOnDetectorRemoteException();
-            HotwordMetricsLogger.writeKeyphraseTriggerEvent(
-                    detectorType,
-                    HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__TRAINING_DATA_REMOTE_EXCEPTION,
-                    mVoiceInteractionServiceUid);
-            throw e;
-        }
-        logEgressSizeStats(data);
-    }
-
     void initialize(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory) {
         synchronized (mLock) {
             if (mInitialized || mDestroyed) {
@@ -955,27 +895,6 @@
     }
 
     /**
-     * Enforces permission for training data delivery.
-     *
-     * <p> Throws a {@link SecurityException} if training data egress permission is not granted.
-     */
-    void enforcePermissionForTrainingDataDelivery() {
-        Binder.withCleanCallingIdentity(() -> {
-            synchronized (mLock) {
-                enforcePermissionForDataDelivery(mContext, mVoiceInteractorIdentity,
-                        RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA,
-                        HOTWORD_TRAINING_DATA_OP_MESSAGE);
-
-                mAppOpsManager.noteOpNoThrow(
-                        AppOpsManager.OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA,
-                        mVoiceInteractorIdentity.uid, mVoiceInteractorIdentity.packageName,
-                        mVoiceInteractorIdentity.attributionTag,
-                        HOTWORD_TRAINING_DATA_OP_MESSAGE);
-            }
-        });
-    }
-
-    /**
      * Throws a {@link SecurityException} if the given identity has no permission to receive data.
      *
      * @param context    A {@link Context}, used for permission checks.
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
index 2938a58..9a4fbdc 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/DspTrustedHotwordDetectorSession.java
@@ -42,7 +42,6 @@
 import android.service.voice.HotwordDetectionServiceFailure;
 import android.service.voice.HotwordDetector;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
 import android.service.voice.IDspHotwordDetectionCallback;
 import android.util.Slog;
 
@@ -186,7 +185,6 @@
                     if (mDebugHotwordLogging) {
                         Slog.i(TAG, "Egressed detected result: " + newResult);
                     }
-                    logEgressSizeStats(newResult);
                 }
             }
 
@@ -229,26 +227,8 @@
                     if (mDebugHotwordLogging && result != null) {
                         Slog.i(TAG, "Egressed rejected result: " + result);
                     }
-                    logEgressSizeStats(result);
                 }
             }
-
-            @Override
-            public void onTrainingData(HotwordTrainingData data) throws RemoteException {
-                sendTrainingData(new TrainingDataEgressCallback() {
-                    @Override
-                    public void onHotwordDetectionServiceFailure(
-                            HotwordDetectionServiceFailure failure) throws RemoteException {
-                        externalCallback.onHotwordDetectionServiceFailure(failure);
-                    }
-
-                    @Override
-                    public void onTrainingData(HotwordTrainingData data)
-                            throws RemoteException {
-                        externalCallback.onTrainingData(data);
-                    }
-                }, data);
-            }
         };
 
         mValidatingDspTrigger = true;
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
index dc8b5a1..f1f5458 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java
@@ -63,6 +63,7 @@
 import android.service.voice.VisualQueryDetectionService;
 import android.service.voice.VisualQueryDetectionServiceFailure;
 import android.service.voice.VoiceInteractionManagerInternal.HotwordDetectionServiceIdentity;
+import android.service.voice.VoiceInteractionManagerInternal.WearableHotwordDetectionCallback;
 import android.speech.IRecognitionServiceManager;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -239,6 +240,7 @@
                 new ServiceConnectionFactory(visualQueryDetectionServiceIntent,
                         bindInstantServiceAllowed, DETECTION_SERVICE_TYPE_VISUAL_QUERY);
 
+
         mLastRestartInstant = Instant.now();
 
         AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
@@ -450,6 +452,25 @@
         session.startListeningFromExternalSourceLocked(audioStream, audioFormat, options, callback);
     }
 
+    public void startListeningFromWearableLocked(
+            ParcelFileDescriptor audioStream,
+            AudioFormat audioFormat,
+            PersistableBundle options,
+            WearableHotwordDetectionCallback callback) {
+        if (DEBUG) {
+            Slog.d(TAG, "startListeningFromWearableLocked");
+        }
+        DetectorSession trustedSession = getDspTrustedHotwordDetectorSessionLocked();
+        if (trustedSession == null) {
+            callback.onError(
+                    "Unable to start listening from wearable because the trusted hotword detection"
+                            + " session is not available.");
+            return;
+        }
+        trustedSession.startListeningFromWearableLocked(
+                audioStream, audioFormat, options, callback);
+    }
+
     /**
      * This method is only used by SoftwareHotwordDetector.
      */
@@ -995,8 +1016,7 @@
             session = new SoftwareTrustedHotwordDetectorSession(
                     mRemoteHotwordDetectionService, mLock, mContext, token, callback,
                     mVoiceInteractionServiceUid, mVoiceInteractorIdentity,
-                    mScheduledExecutorService, mDebugHotwordLogging,
-                    mRemoteExceptionListener);
+                    mScheduledExecutorService, mDebugHotwordLogging, mRemoteExceptionListener);
         }
         mHotwordRecognitionCallback = callback;
         mDetectorSessions.put(detectorType, session);
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
index 9de7f9a..f06c997 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/SoftwareTrustedHotwordDetectorSession.java
@@ -40,7 +40,6 @@
 import android.service.voice.HotwordDetectionServiceFailure;
 import android.service.voice.HotwordDetector;
 import android.service.voice.HotwordRejectedResult;
-import android.service.voice.HotwordTrainingData;
 import android.service.voice.IDspHotwordDetectionCallback;
 import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback;
 import android.service.voice.ISandboxedDetectionService;
@@ -179,7 +178,6 @@
                     }
                     Slog.i(TAG, "Egressed " + HotwordDetectedResult.getUsageSize(newResult)
                             + " bits from hotword trusted process");
-                    logEgressSizeStats(newResult);
                     if (mDebugHotwordLogging) {
                         Slog.i(TAG, "Egressed detected result: " + newResult);
                     }
@@ -195,24 +193,8 @@
                         HotwordDetector.DETECTOR_TYPE_TRUSTED_HOTWORD_SOFTWARE,
                         HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED__RESULT__REJECTED,
                         mVoiceInteractionServiceUid);
-                logEgressSizeStats(result);
                 // onRejected isn't allowed here, and we are not expecting it.
             }
-
-            public void onTrainingData(HotwordTrainingData data) throws RemoteException {
-                sendTrainingData(new TrainingDataEgressCallback() {
-                    @Override
-                    public void onHotwordDetectionServiceFailure(
-                            HotwordDetectionServiceFailure failure) throws RemoteException {
-                        mSoftwareCallback.onHotwordDetectionServiceFailure(failure);
-                    }
-
-                    @Override
-                    public void onTrainingData(HotwordTrainingData data) throws RemoteException {
-                        mSoftwareCallback.onTrainingData(data);
-                    }
-                }, data);
-            }
         };
 
         mRemoteDetectionService.run(
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VisualQueryDetectorSession.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VisualQueryDetectorSession.java
index d7b860f..e4ac993 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VisualQueryDetectorSession.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VisualQueryDetectorSession.java
@@ -33,6 +33,7 @@
 import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback;
 import android.service.voice.ISandboxedDetectionService;
 import android.service.voice.IVisualQueryDetectionVoiceInteractionCallback;
+import android.service.voice.VisualQueryAttentionResult;
 import android.service.voice.VisualQueryDetectedResult;
 import android.service.voice.VisualQueryDetectionServiceFailure;
 import android.util.Slog;
@@ -105,7 +106,7 @@
                 new IDetectorSessionVisualQueryDetectionCallback.Stub(){
 
             @Override
-            public void onAttentionGained() {
+            public void onAttentionGained(VisualQueryAttentionResult attentionResult) {
                 Slog.v(TAG, "BinderCallback#onAttentionGained");
                 synchronized (mLock) {
                     mEgressingData = true;
@@ -113,7 +114,7 @@
                         return;
                     }
                     try {
-                        mAttentionListener.onAttentionGained();
+                        mAttentionListener.onAttentionGained(attentionResult);
                     } catch (RemoteException e) {
                         Slog.e(TAG, "Error delivering attention gained event.", e);
                         try {
@@ -129,7 +130,7 @@
             }
 
             @Override
-            public void onAttentionLost() {
+            public void onAttentionLost(int interactionIntention) {
                 Slog.v(TAG, "BinderCallback#onAttentionLost");
                 synchronized (mLock) {
                     mEgressingData = false;
@@ -137,7 +138,7 @@
                         return;
                     }
                     try {
-                        mAttentionListener.onAttentionLost();
+                        mAttentionListener.onAttentionLost(interactionIntention);
                     } catch (RemoteException e) {
                         Slog.e(TAG, "Error delivering attention lost event.", e);
                         try {
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index c902d459..ecb0f96 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -16,16 +16,15 @@
 
 package com.android.server.voiceinteraction;
 
+
 import android.Manifest;
 import android.annotation.CallbackExecutor;
-import android.annotation.EnforcePermission;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
 import android.app.AppGlobals;
-import android.app.AppOpsManager;
 import android.app.role.OnRoleHoldersChangedListener;
 import android.app.role.RoleManager;
 import android.content.ComponentName;
@@ -76,6 +75,7 @@
 import android.service.voice.IVisualQueryDetectionVoiceInteractionCallback;
 import android.service.voice.IVoiceInteractionSession;
 import android.service.voice.VoiceInteractionManagerInternal;
+import android.service.voice.VoiceInteractionManagerInternal.WearableHotwordDetectionCallback;
 import android.service.voice.VoiceInteractionService;
 import android.service.voice.VoiceInteractionServiceInfo;
 import android.service.voice.VoiceInteractionSession;
@@ -321,6 +321,46 @@
             mServiceStub.mRoleObserver.onRoleHoldersChanged(RoleManager.ROLE_ASSISTANT,
                                                 UserHandle.of(userId));
         }
+
+        @Override
+        public void startListeningFromWearable(
+                ParcelFileDescriptor audioStreamFromWearable,
+                AudioFormat audioFormatFromWearable,
+                PersistableBundle options,
+                ComponentName targetVisComponentName,
+                int userId,
+                WearableHotwordDetectionCallback callback) {
+            Slog.d(TAG, "#startListeningFromWearable");
+            VoiceInteractionManagerServiceImpl impl = mServiceStub.mImpl;
+            if (impl == null) {
+                callback.onError(
+                        "Unable to start listening from wearable because the service impl is"
+                                + " null.");
+                return;
+            }
+            if (targetVisComponentName != null && !targetVisComponentName.equals(impl.mComponent)) {
+                callback.onError(
+                        TextUtils.formatSimple(
+                                "Unable to start listening from wearable because the target"
+                                    + " VoiceInteractionService %s is different from the current"
+                                    + " VoiceInteractionService %s",
+                                targetVisComponentName, impl.mComponent));
+                return;
+            }
+            if (userId != impl.mUser) {
+                callback.onError(
+                        TextUtils.formatSimple(
+                                "Unable to start listening from wearable because the target userId"
+                                    + " %s is different from the current"
+                                    + " VoiceInteractionManagerServiceImpl's userId %s",
+                                userId, impl.mUser));
+                return;
+            }
+            synchronized (mServiceStub) {
+                impl.startListeningFromWearableLocked(
+                        audioStreamFromWearable, audioFormatFromWearable, options, callback);
+            }
+        }
     }
 
     // implementation entry point and binder service
@@ -652,8 +692,8 @@
         }
 
         private String getForceVoiceInteractionServicePackage(Resources res) {
-            String interactorPackage =
-                    res.getString(com.android.internal.R.string.config_forceVoiceInteractionServicePackage);
+            String interactorPackage = res.getString(
+                    com.android.internal.R.string.config_forceVoiceInteractionServicePackage);
             return TextUtils.isEmpty(interactorPackage) ? null : interactorPackage;
         }
 
@@ -1544,57 +1584,6 @@
             }
         }
 
-        @Override
-        @android.annotation.EnforcePermission(
-                android.Manifest.permission.RESET_HOTWORD_TRAINING_DATA_EGRESS_COUNT)
-        public void resetHotwordTrainingDataEgressCountForTest() {
-            super.resetHotwordTrainingDataEgressCountForTest_enforcePermission();
-            synchronized (this) {
-                enforceIsCurrentVoiceInteractionService();
-
-                if (mImpl == null) {
-                    Slog.w(TAG, "resetHotwordTrainingDataEgressCountForTest without running"
-                            + " voice interaction service");
-                    return;
-                }
-                final long caller = Binder.clearCallingIdentity();
-                try {
-                    mImpl.resetHotwordTrainingDataEgressCountForTest();
-                } finally {
-                    Binder.restoreCallingIdentity(caller);
-                }
-
-            }
-        }
-
-        @Override
-        @EnforcePermission(android.Manifest.permission.MANAGE_HOTWORD_DETECTION)
-        public void setShouldReceiveSandboxedTrainingData(boolean allowed) {
-            super.setShouldReceiveSandboxedTrainingData_enforcePermission();
-
-            synchronized (this) {
-                if (mImpl == null) {
-                    throw new IllegalStateException(
-                            "setShouldReceiveSandboxedTrainingData without running voice "
-                                    + "interaction service");
-                }
-
-                enforceIsCallerPreinstalledAssistant();
-
-                int callingUid = Binder.getCallingUid();
-                final long caller = Binder.clearCallingIdentity();
-                try {
-                    AppOpsManager appOpsManager = (AppOpsManager)
-                            mContext.getSystemService(Context.APP_OPS_SERVICE);
-                    appOpsManager.setUidMode(
-                            AppOpsManager.OP_RECEIVE_SANDBOXED_DETECTION_TRAINING_DATA,
-                            callingUid, allowed ? AppOpsManager.MODE_ALLOWED :
-                                    AppOpsManager.MODE_ERRORED);
-                } finally {
-                    Binder.restoreCallingIdentity(caller);
-                }
-            }
-        }
 
       //----------------- Model management APIs --------------------------------//
 
@@ -1759,7 +1748,10 @@
                     if (keyphrase.equals(phrase.getText())) {
                         ArraySet<Locale> locales = new ArraySet<>();
                         locales.add(phrase.getLocale());
-                        return new KeyphraseMetadata(phrase.getId(), phrase.getText(), locales,
+                        return new KeyphraseMetadata(
+                                phrase.getId(),
+                                phrase.getText(),
+                                locales,
                                 phrase.getRecognitionModes());
                     }
                 }
@@ -1807,7 +1799,8 @@
                     enforceIsCurrentVoiceInteractionService();
 
                     if (callback == null || recognitionConfig == null || bcp47Locale == null) {
-                        throw new IllegalArgumentException("Illegal argument(s) in startRecognition");
+                        throw new IllegalArgumentException(
+                                "Illegal argument(s) in startRecognition");
                     }
                     if (runInBatterySaverMode) {
                         enforceCallingPermission(
@@ -2413,7 +2406,8 @@
                         UserHandle.USER_ALL);
             }
 
-            @Override public void onChange(boolean selfChange) {
+            @Override
+            public void onChange(boolean selfChange) {
                 synchronized (VoiceInteractionManagerServiceStub.this) {
                     switchImplementationIfNeededLocked(false);
                 }
@@ -2446,7 +2440,8 @@
         PackageMonitor mPackageMonitor = new PackageMonitor() {
 
             @Override
-            public boolean onHandleForceStop(Intent intent, String[] packages, int uid, boolean doit) {
+            public boolean onHandleForceStop(Intent intent, String[] packages, int uid,
+                    boolean doit) {
                 if (DEBUG) Slog.d(TAG, "onHandleForceStop uid=" + uid + " doit=" + doit);
 
                 int userHandle = UserHandle.getUserId(uid);
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 7e0cbad..84b36d5 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -61,11 +61,11 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.service.voice.HotwordDetector;
-import android.service.voice.HotwordTrainingDataLimitEnforcer;
 import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback;
 import android.service.voice.IVisualQueryDetectionVoiceInteractionCallback;
 import android.service.voice.IVoiceInteractionService;
 import android.service.voice.IVoiceInteractionSession;
+import android.service.voice.VoiceInteractionManagerInternal.WearableHotwordDetectionCallback;
 import android.service.voice.VoiceInteractionService;
 import android.service.voice.VoiceInteractionServiceInfo;
 import android.system.OsConstants;
@@ -74,7 +74,6 @@
 import android.util.Slog;
 import android.view.IWindowManager;
 
-import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IHotwordRecognitionStatusCallback;
 import com.android.internal.app.IVisualQueryDetectionAttentionListener;
 import com.android.internal.app.IVoiceActionCheckCallback;
@@ -859,6 +858,24 @@
                 options, token, callback);
     }
 
+    public void startListeningFromWearableLocked(
+            ParcelFileDescriptor audioStream,
+            AudioFormat audioFormat,
+            PersistableBundle options,
+            WearableHotwordDetectionCallback callback) {
+        if (DEBUG) {
+            Slog.d(TAG, "startListeningFromWearable");
+        }
+        if (mHotwordDetectionConnection == null) {
+            callback.onError(
+                    "Unable to start listening from wearable because the hotword detection"
+                            + " connection is null.");
+            return;
+        }
+        mHotwordDetectionConnection.startListeningFromWearableLocked(
+                audioStream, audioFormat, options, callback);
+    }
+
     public void stopListeningFromMicLocked() {
         if (DEBUG) {
             Slog.d(TAG, "stopListeningFromMicLocked");
@@ -998,12 +1015,6 @@
         }
     }
 
-    @VisibleForTesting
-    void resetHotwordTrainingDataEgressCountForTest() {
-        HotwordTrainingDataLimitEnforcer.getInstance(mContext.getApplicationContext())
-                        .resetTrainingDataEgressCount();
-    }
-
     void startLocked() {
         Intent intent = new Intent(VoiceInteractionService.SERVICE_INTERFACE);
         intent.setComponent(mComponent);
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index 874c10c..a52614d 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -269,6 +269,27 @@
             "android.telecom.extra.DIAGNOSTIC_MESSAGE";
 
     /**
+     * Boolean indicating that the call is a verified business call.
+     *
+     * {@link Connection#setExtras(Bundle)} or {@link Connection#putExtras(Bundle)}
+     * should be used to notify Telecom this extra has been set.
+     */
+    @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+    public static final String EXTRA_IS_BUSINESS_CALL =
+            "android.telecom.extra.IS_BUSINESS_CALL";
+
+    /**
+     * String value indicating the asserted display name reported via
+     * ImsCallProfile#EXTRA_ASSERTED_DISPLAY_NAME.
+     *
+     * {@link Connection#setExtras(Bundle)} or {@link Connection#putExtras(Bundle)}
+     * should be used to notify Telecom this extra has been set.
+     */
+    @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+    public static final String EXTRA_ASSERTED_DISPLAY_NAME =
+            "android.telecom.extra.ASSERTED_DISPLAY_NAME";
+
+    /**
      * Reject reason used with {@link #reject(int)} to indicate that the user is rejecting this
      * call because they have declined to answer it.  This typically means that they are unable
      * to answer the call at this time and would prefer it be sent to voicemail.
diff --git a/telecomm/java/android/telecom/CallAttributes.java b/telecomm/java/android/telecom/CallAttributes.java
index 8c6e101..afd34fc 100644
--- a/telecomm/java/android/telecom/CallAttributes.java
+++ b/telecomm/java/android/telecom/CallAttributes.java
@@ -16,6 +16,7 @@
 
 package android.telecom;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -24,6 +25,8 @@
 import android.os.Parcelable;
 import android.text.TextUtils;
 
+import com.android.server.telecom.flags.Flags;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
@@ -113,7 +116,8 @@
     public static final int VIDEO_CALL = 2;
 
     /** @hide */
-    @IntDef(value = {SUPPORTS_SET_INACTIVE, SUPPORTS_STREAM, SUPPORTS_TRANSFER}, flag = true)
+    @IntDef(value = {SUPPORTS_SET_INACTIVE, SUPPORTS_STREAM, SUPPORTS_TRANSFER,
+            SUPPORTS_VIDEO_CALLING}, flag = true)
     @Retention(RetentionPolicy.SOURCE)
     public @interface CallCapability {
     }
@@ -133,6 +137,12 @@
      * The call can be completely transferred from one endpoint to another.
      */
     public static final int SUPPORTS_TRANSFER = 1 << 3;
+    /**
+     * The call supports video calling. This allows clients to gate video calling on a per call
+     * basis as opposed to re-registering the phone account.
+     */
+    @FlaggedApi(Flags.FLAG_TRANSACTIONAL_VIDEO_STATE)
+    public static final int SUPPORTS_VIDEO_CALLING = 1 << 4;
 
     /**
      * Build an instance of {@link CallAttributes}. In order to build a valid instance, a
diff --git a/telecomm/java/android/telecom/CallControl.java b/telecomm/java/android/telecom/CallControl.java
index a1407869..808a575 100644
--- a/telecomm/java/android/telecom/CallControl.java
+++ b/telecomm/java/android/telecom/CallControl.java
@@ -293,12 +293,50 @@
         try {
             mServerInterface.setMuteState(isMuted,
                     new CallControlResultReceiver("requestMuteState", executor, callback));
-
         } catch (RemoteException e) {
             throw e.rethrowAsRuntimeException();
         }
     }
 
+     /**
+     * Request a new video state for the ongoing call. This can only be changed if the application
+     * has registered a {@link PhoneAccount} with the
+     * {@link PhoneAccount#CAPABILITY_SUPPORTS_VIDEO_CALLING} and set the
+     * {@link CallAttributes#SUPPORTS_VIDEO_CALLING} when adding the call via
+     * {@link TelecomManager#addCall(CallAttributes, Executor, OutcomeReceiver,
+     *                                                      CallControlCallback, CallEventCallback)}
+     *
+     * @param videoState to report to Telecom. To see the valid argument to pass,
+      *                   see {@link CallAttributes.CallType}.
+     * @param executor   The {@link Executor} on which the {@link OutcomeReceiver} callback
+     *                   will be called on.
+     * @param callback   that will be completed on the Telecom side that details success or failure
+     *                   of the requested operation.
+     *
+     *                   {@link OutcomeReceiver#onResult} will be called if Telecom has successfully
+     *                   switched the video state.
+     *
+     *                   {@link OutcomeReceiver#onError} will be called if Telecom has failed to set
+     *                   the new video state.  A {@link CallException} will be passed
+     *                   that details why the operation failed.
+     * @throws IllegalArgumentException if the argument passed for videoState is invalid.  To see a
+     * list of valid states, see {@link CallAttributes.CallType}.
+     */
+     @FlaggedApi(Flags.FLAG_TRANSACTIONAL_VIDEO_STATE)
+     public void requestVideoState(@CallAttributes.CallType int videoState,
+             @CallbackExecutor @NonNull Executor executor,
+             @NonNull OutcomeReceiver<Void, CallException> callback) {
+         validateVideoState(videoState);
+         Objects.requireNonNull(executor);
+         Objects.requireNonNull(callback);
+         try {
+             mServerInterface.requestVideoState(videoState, mCallId,
+                     new CallControlResultReceiver("requestVideoState", executor, callback));
+         } catch (RemoteException e) {
+             throw e.rethrowAsRuntimeException();
+         }
+     }
+
     /**
      * Raises an event to the {@link android.telecom.InCallService} implementations tracking this
      * call via {@link android.telecom.Call.Callback#onConnectionEvent(Call, String, Bundle)}.
diff --git a/telecomm/java/android/telecom/CallEventCallback.java b/telecomm/java/android/telecom/CallEventCallback.java
index a41c011..b0438bf 100644
--- a/telecomm/java/android/telecom/CallEventCallback.java
+++ b/telecomm/java/android/telecom/CallEventCallback.java
@@ -16,9 +16,12 @@
 
 package android.telecom;
 
+import android.annotation.FlaggedApi;
 import android.annotation.NonNull;
 import android.os.Bundle;
 
+import com.android.server.telecom.flags.Flags;
+
 import java.util.List;
 
 /**
@@ -51,6 +54,14 @@
     void onMuteStateChanged(boolean isMuted);
 
     /**
+     * Called when the video state changes.
+     *
+     * @param videoState The current video state.
+     */
+    @FlaggedApi(Flags.FLAG_TRANSACTIONAL_VIDEO_STATE)
+    default void onVideoStateChanged(@CallAttributes.CallType int videoState) {}
+
+    /**
      * Telecom is informing the client user requested call streaming but the stream can't be
      * started.
      *
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index 6bdc43e..e6fe406 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -190,6 +190,8 @@
      * this may be used to skip call filtering when it has already been performed on another device.
      * @hide
      */
+    @SystemApi
+    @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES)
     public static final String EXTRA_SKIP_CALL_FILTERING =
         "android.telecom.extra.SKIP_CALL_FILTERING";
 
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index 3daa014..15a978d 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -1611,6 +1611,26 @@
      * {@link PhoneAccount} when the upper bound limit, 10, has already been reached.
      *
      * @param account The complete {@link PhoneAccount}.
+     * @throws UnsupportedOperationException if the caller cannot modify phone state and the device
+     * does not have the Telecom feature.
+     * @throws SecurityException if:
+     * <ol>
+     *     <li>the caller cannot modify phone state and the phone account doesn't belong to the
+     *     calling user.</li>
+     *     <li>the caller is registering a self-managed phone and either they are not allowed to
+     *     manage their own calls or if the account is call capable, a connection manager, or a
+     *     sim account.</li>
+     *     <li>the caller is registering a sim account without the ability to do so.</li>
+     *     <li>the caller is registering a multi-user phone account but isn't a system app.</li>
+     *     <li>the account can make SIM-based voice calls but the caller cannot register sim
+     *     accounts or isn't a sim call manager.</li>
+     *     <li>the account defines the EXTRA_SKIP_CALL_FILTERING extra but the caller isn't
+     *     able to modify the phone state.</li>
+     *     <li>the caller is registering an account for a different user but isn't able to
+     *     interact across users.</li>
+     *     <li>if simultaneous calling is available and the phone account package name doesn't
+     *     correspond to the simultaneous calling accounts associated with this phone account.</li>
+     * </ol>
      */
     public void registerPhoneAccount(PhoneAccount account) {
         ITelecomService service = getTelecomService();
diff --git a/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java b/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
index 467e89c..a2c6086 100644
--- a/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
+++ b/telecomm/java/com/android/internal/telecom/ClientTransactionalServiceWrapper.java
@@ -33,6 +33,8 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import com.android.server.telecom.flags.Flags;
+
 import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
@@ -148,6 +150,7 @@
         private static final String ON_REQ_ENDPOINT_CHANGE = "onRequestEndpointChange";
         private static final String ON_AVAILABLE_CALL_ENDPOINTS = "onAvailableCallEndpointsChanged";
         private static final String ON_MUTE_STATE_CHANGED = "onMuteStateChanged";
+        private static final String ON_VIDEO_STATE_CHANGED = "onVideoStateChanged";
         private static final String ON_CALL_STREAMING_FAILED = "onCallStreamingFailed";
         private static final String ON_EVENT = "onEvent";
 
@@ -261,6 +264,11 @@
             handleEventCallback(callId, ON_MUTE_STATE_CHANGED, isMuted);
         }
 
+        @Override
+        public void onVideoStateChanged(String callId, int videoState) {
+            handleEventCallback(callId, ON_VIDEO_STATE_CHANGED, videoState);
+        }
+
         public void handleEventCallback(String callId, String action, Object arg) {
             Log.d(TAG, TextUtils.formatSimple("hEC: [%s], callId=[%s]", action, callId));
             // lookup the callEventCallback associated with the particular call
@@ -281,6 +289,11 @@
                             case ON_MUTE_STATE_CHANGED:
                                 callback.onMuteStateChanged((boolean) arg);
                                 break;
+                            case ON_VIDEO_STATE_CHANGED:
+                                if (Flags.transactionalVideoState()) {
+                                    callback.onVideoStateChanged((int) arg);
+                                }
+                                break;
                             case ON_CALL_STREAMING_FAILED:
                                 callback.onCallStreamingFailed((int) arg /* reason */);
                                 break;
diff --git a/telecomm/java/com/android/internal/telecom/ICallControl.aidl b/telecomm/java/com/android/internal/telecom/ICallControl.aidl
index 372e4a12..ac49660 100644
--- a/telecomm/java/com/android/internal/telecom/ICallControl.aidl
+++ b/telecomm/java/com/android/internal/telecom/ICallControl.aidl
@@ -34,4 +34,5 @@
     void requestCallEndpointChange(in CallEndpoint callEndpoint, in ResultReceiver callback);
     void setMuteState(boolean isMuted, in ResultReceiver callback);
     void sendEvent(String callId, String event, in Bundle extras);
+    void requestVideoState(int videoState, String callId, in ResultReceiver callback);
 }
\ No newline at end of file
diff --git a/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl b/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
index 213cafb..e4d6b0c 100644
--- a/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
+++ b/telecomm/java/com/android/internal/telecom/ICallEventCallback.aidl
@@ -45,6 +45,8 @@
     void onCallEndpointChanged(String callId, in CallEndpoint endpoint);
     void onAvailableCallEndpointsChanged(String callId, in List<CallEndpoint> endpoint);
     void onMuteStateChanged(String callId, boolean isMuted);
+    // -- Video Related
+    void onVideoStateChanged(String callId, int videoState);
     // -- Events
     void onEvent(String callId, String event, in Bundle extras);
     // hidden methods that help with cleanup
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index f7793f3..697c8ec 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -9778,6 +9778,13 @@
     public static final String KEY_SUPPORTS_CALL_COMPOSER_BOOL = "supports_call_composer_bool";
 
     /**
+     * Indicates if the carrier supports a business call composer.
+     */
+    @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_BUSINESS_CALL_COMPOSER)
+    public static final String KEY_SUPPORTS_BUSINESS_CALL_COMPOSER_BOOL =
+            "supports_business_call_composer_bool";
+
+    /**
      * Indicates the carrier server url that serves the call composer picture.
      */
     public static final String KEY_CALL_COMPOSER_PICTURE_SERVER_URL_STRING =
@@ -10861,6 +10868,7 @@
         sDefaults.putBoolean(KEY_DISABLE_DUN_APN_WHILE_ROAMING_WITH_PRESET_APN_BOOL, false);
         sDefaults.putString(KEY_DEFAULT_PREFERRED_APN_NAME_STRING, "");
         sDefaults.putBoolean(KEY_SUPPORTS_CALL_COMPOSER_BOOL, false);
+        sDefaults.putBoolean(KEY_SUPPORTS_BUSINESS_CALL_COMPOSER_BOOL, false);
         sDefaults.putString(KEY_CALL_COMPOSER_PICTURE_SERVER_URL_STRING, "");
         sDefaults.putBoolean(KEY_USE_ACS_FOR_RCS_BOOL, false);
         sDefaults.putBoolean(KEY_NETWORK_TEMP_NOT_METERED_SUPPORTED_BOOL, true);
diff --git a/telephony/java/android/telephony/DomainSelectionService.java b/telephony/java/android/telephony/DomainSelectionService.java
index 4ff9712..633694a 100644
--- a/telephony/java/android/telephony/DomainSelectionService.java
+++ b/telephony/java/android/telephony/DomainSelectionService.java
@@ -20,6 +20,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.app.Service;
 import android.content.Intent;
@@ -855,7 +856,8 @@
      *
      * @return an {@link Executor} used to execute methods called remotely by the framework.
      */
-    public @NonNull Executor onCreateExecutor() {
+    @SuppressLint("OnNameExpected")
+    public @NonNull Executor getCreateExecutor() {
         return Runnable::run;
     }
 
@@ -869,7 +871,7 @@
     public final @NonNull Executor getCachedExecutor() {
         synchronized (mExecutorLock) {
             if (mExecutor == null) {
-                Executor e = onCreateExecutor();
+                Executor e = getCreateExecutor();
                 mExecutor = (e != null) ? e : Runnable::run;
             }
             return mExecutor;
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 7118207..c5f2d42 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -1156,6 +1156,28 @@
      */
     public static final String TRANSFER_STATUS = SimInfo.COLUMN_TRANSFER_STATUS;
 
+    /**
+     * TelephonyProvider column name for satellite entitlement status. The value of this column is
+     * set based on entitlement query result for satellite configuration.
+     * By default, it's disabled.
+     * <P>Type: INTEGER (int)</P>
+     *
+     * @hide
+     */
+    public static final String SATELLITE_ENTITLEMENT_STATUS =
+            SimInfo.COLUMN_SATELLITE_ENTITLEMENT_STATUS;
+
+    /**
+     * TelephonyProvider column name for satellite entitlement plmns. The value of this column is
+     * set based on entitlement query result for satellite configuration.
+     * By default, it's empty.
+     * <P>Type: TEXT </P>
+     *
+     * @hide
+     */
+    public static final String SATELLITE_ENTITLEMENT_PLMNS =
+            SimInfo.COLUMN_SATELLITE_ENTITLEMENT_PLMNS;
+
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(prefix = {"USAGE_SETTING_"},
@@ -4668,7 +4690,6 @@
      * @param subscriptionId the subId of the subscription
      * @param userHandle user handle of the user
      * @return {@code true} if subscription is associated with user
-     * {code true} if there are no subscriptions on device
      * else {@code false} if subscription is not associated with user.
      *
      * @throws IllegalArgumentException if subscription doesn't exist.
@@ -4699,6 +4720,37 @@
     }
 
     /**
+     * Returns whether the given subscription is associated with the calling user.
+     *
+     * @param subscriptionId the subscription ID of the subscription
+     * @return {@code true} if the subscription is associated with the user that the current process
+     *         is running in; {@code false} otherwise.
+     *
+     * @throws IllegalArgumentException if subscription doesn't exist.
+     * @throws SecurityException if the caller doesn't have permissions required.
+     */
+    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_USER_ASSOCIATION_QUERY)
+    public boolean isSubscriptionAssociatedWithUser(int subscriptionId) {
+        if (!isValidSubscriptionId(subscriptionId)) {
+            throw new IllegalArgumentException("[isSubscriptionAssociatedWithCallingUser]: "
+                    + "Invalid subscriptionId: " + subscriptionId);
+        }
+
+        try {
+            ISub iSub = TelephonyManager.getSubscriptionService();
+            if (iSub != null) {
+                return iSub.isSubscriptionAssociatedWithCallingUser(subscriptionId);
+            } else {
+                throw new IllegalStateException("subscription service unavailable.");
+            }
+        } catch (RemoteException ex) {
+            ex.rethrowAsRuntimeException();
+        }
+        return false;
+    }
+
+    /**
      * Get list of subscriptions associated with user.
      *
      * @param userHandle user handle of the user
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 61c7a42..fd9aae9 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -10629,20 +10629,27 @@
     }
 
     /**
-     * Call composer status OFF from user setting.
+     * Call composer status <b>OFF</b> from user setting.
      */
     public static final int CALL_COMPOSER_STATUS_OFF = 0;
 
     /**
-     * Call composer status ON from user setting.
+     * Call composer status <b>ON</b> from user setting.
      */
     public static final int CALL_COMPOSER_STATUS_ON = 1;
 
+    /**
+     * Call composer status <b>Business Only</b> from user setting.
+     */
+    @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_BUSINESS_CALL_COMPOSER)
+    public static final int CALL_COMPOSER_STATUS_BUSINESS_ONLY = 2;
+
     /** @hide */
     @IntDef(prefix = {"CALL_COMPOSER_STATUS_"},
             value = {
                 CALL_COMPOSER_STATUS_ON,
                 CALL_COMPOSER_STATUS_OFF,
+                CALL_COMPOSER_STATUS_BUSINESS_ONLY
             })
     @Retention(RetentionPolicy.SOURCE)
     public @interface CallComposerStatus {}
@@ -10663,9 +10670,16 @@
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
     @RequiresFeature(PackageManager.FEATURE_TELEPHONY_CALLING)
     public void setCallComposerStatus(@CallComposerStatus int status) {
-        if (status > CALL_COMPOSER_STATUS_ON
-                || status < CALL_COMPOSER_STATUS_OFF) {
-            throw new IllegalArgumentException("requested status is invalid");
+        if (com.android.server.telecom.flags.Flags.businessCallComposer()) {
+            if (status > CALL_COMPOSER_STATUS_BUSINESS_ONLY
+                    || status < CALL_COMPOSER_STATUS_OFF) {
+                throw new IllegalArgumentException("requested status is invalid");
+            }
+        } else {
+            if (status > CALL_COMPOSER_STATUS_ON
+                    || status < CALL_COMPOSER_STATUS_OFF) {
+                throw new IllegalArgumentException("requested status is invalid");
+            }
         }
         try {
             ITelephony telephony = getITelephony();
@@ -14997,6 +15011,27 @@
     }
 
     /**
+     * Get the emergency assistance package name.
+     *
+     * @return the package name of the emergency assistance app.
+     * @throws IllegalStateException if emergency assistance is not enabled.
+     *
+     * @hide
+     */
+    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
+    @FlaggedApi(android.permission.flags.Flags.FLAG_GET_EMERGENCY_ROLE_HOLDER_API_ENABLED)
+    @NonNull
+    @SystemApi
+    public String getEmergencyAssistancePackage() {
+        if (!isEmergencyAssistanceEnabled()) {
+            throw new IllegalStateException("isEmergencyAssistanceEnabled() is false.");
+        }
+        String emergencyRole = mContext.getSystemService(RoleManager.class)
+                .getEmergencyRoleHolder(mContext.getUserId());
+        return Objects.requireNonNull(emergencyRole, "Emergency role holder must not be null");
+    }
+
+    /**
      * Get the emergency number list based on current locale, sim, default, modem and network.
      *
      * <p>In each returned list, the emergency number {@link EmergencyNumber} coming from higher
diff --git a/telephony/java/android/telephony/euicc/EuiccManager.java b/telephony/java/android/telephony/euicc/EuiccManager.java
index 7935d24..e3ce766 100644
--- a/telephony/java/android/telephony/euicc/EuiccManager.java
+++ b/telephony/java/android/telephony/euicc/EuiccManager.java
@@ -1024,11 +1024,22 @@
     /**
      * Attempt to download the given {@link DownloadableSubscription}.
      *
-     * <p>Requires the {@code android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission,
-     * or the calling app must be authorized to manage both the currently-active subscription on the
+     * <p>Requires the {@code android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS}
+     * or the calling app must be authorized to manage both the currently-active
+     * subscription on the
      * current eUICC and the subscription to be downloaded according to the subscription metadata.
      * Without the former, an {@link #EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR} will be
-     * returned in the callback intent to prompt the user to accept the download.
+     * eturned in the callback intent to prompt the user to accept the download.
+     *
+     * <p> Starting from Android {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM},
+     * if the caller has the
+     * {@code android.Manifest.permission#MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS} permission or
+     * is a profile owner or device owner, and
+     * {@code switchAfterDownload} is {@code false}, then the downloaded subscription
+     * will be managed by that caller. If {@code switchAfterDownload} is true,
+     * an {@link #EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR} will be
+     * returned in the callback intent to prompt the user to accept the download and the
+     * subscription will not be managed.
      *
      * <p>On a multi-active SIM device, requires the
      * {@code android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission, or a calling app
@@ -1061,7 +1072,9 @@
      * @throws UnsupportedOperationException If the device does not have
      *          {@link PackageManager#FEATURE_TELEPHONY_EUICC}.
      */
-    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
+    @RequiresPermission(anyOf = {
+            Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS,
+            Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS})
     public void downloadSubscription(DownloadableSubscription subscription,
             boolean switchAfterDownload, PendingIntent callbackIntent) {
         if (!isEnabled()) {
@@ -1243,6 +1256,12 @@
      * <p>Requires that the calling app has carrier privileges according to the metadata of the
      * profile to be deleted, or the
      * {@code android.Manifest.permission#WRITE_EMBEDDED_SUBSCRIPTIONS} permission.
+     * Starting from Android {@link android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM}, if the
+     * caller is a device owner, profile owner, or holds the
+     * {@code android.Manifest.permission#MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS} permission,
+     * then the caller can delete a subscription that was downloaded by that caller.
+     * If such a caller tries to delete any other subscription then the
+     * operation will fail with {@link #EMBEDDED_SUBSCRIPTION_RESULT_ERROR}.
      *
      * @param subscriptionId the ID of the subscription to delete.
      * @param callbackIntent a PendingIntent to launch when the operation completes.
@@ -1250,7 +1269,9 @@
      * @throws UnsupportedOperationException If the device does not have
      *          {@link PackageManager#FEATURE_TELEPHONY_EUICC}.
      */
-    @RequiresPermission(Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS)
+    @RequiresPermission(anyOf = {
+            Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS,
+            Manifest.permission.MANAGE_DEVICE_POLICY_MANAGED_SUBSCRIPTIONS})
     public void deleteSubscription(int subscriptionId, PendingIntent callbackIntent) {
         if (!isEnabled()) {
             sendUnavailableError(callbackIntent);
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index d07edeb..cebfe01 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -16,6 +16,7 @@
 
 package android.telephony.ims;
 
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -299,6 +300,16 @@
             "android.telephony.ims.extra.IS_BUSINESS_CALL";
 
     /**
+     * The vendor IMS stack populates this {@code string} extra; it is used to hold the display name
+     * passed via the P-Asserted-Identity SIP header’s display-name field
+     *
+     * Reference: RFC3325
+     */
+    @FlaggedApi(com.android.server.telecom.flags.Flags.FLAG_BUSINESS_CALL_COMPOSER)
+    public static final String EXTRA_ASSERTED_DISPLAY_NAME =
+            "android.telephony.ims.extra.ASSERTED_DISPLAY_NAME";
+
+    /**
      * Values for EXTRA_OIR / EXTRA_CNAP
      */
     /**
diff --git a/telephony/java/android/telephony/ims/feature/MmTelFeature.java b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
index 746246c..9789082 100644
--- a/telephony/java/android/telephony/ims/feature/MmTelFeature.java
+++ b/telephony/java/android/telephony/ims/feature/MmTelFeature.java
@@ -17,6 +17,7 @@
 package android.telephony.ims.feature;
 
 import android.annotation.CallbackExecutor;
+import android.annotation.FlaggedApi;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -59,6 +60,7 @@
 import com.android.ims.internal.IImsMultiEndpoint;
 import com.android.ims.internal.IImsUt;
 import com.android.internal.telephony.util.TelephonyUtils;
+import com.android.server.telecom.flags.Flags;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -513,7 +515,8 @@
                         CAPABILITY_TYPE_VIDEO,
                         CAPABILITY_TYPE_UT,
                         CAPABILITY_TYPE_SMS,
-                        CAPABILITY_TYPE_CALL_COMPOSER
+                        CAPABILITY_TYPE_CALL_COMPOSER,
+                        CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY
                 })
         @Retention(RetentionPolicy.SOURCE)
         public @interface MmTelCapability {}
@@ -550,11 +553,19 @@
          */
         public static final int CAPABILITY_TYPE_CALL_COMPOSER = 1 << 4;
 
+
+        /**
+         * This MmTelFeature supports Business-only Call Composer
+         */
+        @FlaggedApi(Flags.FLAG_BUSINESS_CALL_COMPOSER)
+        public static final int CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY = 1 << 5;
+
         /**
          * This is used to check the upper range of MmTel capability
          * @hide
          */
-        public static final int CAPABILITY_TYPE_MAX = CAPABILITY_TYPE_CALL_COMPOSER + 1;
+        public static final int CAPABILITY_TYPE_MAX =
+                CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY + 1;
 
         /**
          * @hide
@@ -601,6 +612,8 @@
             builder.append(isCapable(CAPABILITY_TYPE_SMS));
             builder.append(" CALL_COMPOSER: ");
             builder.append(isCapable(CAPABILITY_TYPE_CALL_COMPOSER));
+            builder.append(" BUSINESS_COMPOSER_ONLY: ");
+            builder.append(isCapable(CAPABILITY_TYPE_CALL_COMPOSER_BUSINESS_ONLY));
             builder.append("]");
             return builder.toString();
         }
diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl
index cc770aa..6678f40 100644
--- a/telephony/java/com/android/internal/telephony/ISub.aidl
+++ b/telephony/java/com/android/internal/telephony/ISub.aidl
@@ -332,12 +332,23 @@
      UserHandle getSubscriptionUserHandle(int subId);
 
     /**
+     * Returns whether the given subscription is associated with the calling user.
+     *
+     * @param subscriptionId the subscription ID of the subscription
+     * @return {@code true} if the subscription is associated with the user that the current process
+     *         is running in; {@code false} otherwise.
+     *
+     * @throws IllegalArgumentException if subscription doesn't exist.
+     * @throws SecurityException if the caller doesn't have permissions required.
+     */
+    boolean isSubscriptionAssociatedWithCallingUser(int subscriptionId);
+
+    /**
      * Check if subscription and user are associated with each other.
      *
      * @param subscriptionId the subId of the subscription
      * @param userHandle user handle of the user
      * @return {@code true} if subscription is associated with user
-     * {code true} if there are no subscriptions on device
      * else {@code false} if subscription is not associated with user.
      *
      * @throws IllegalArgumentException if subscription is invalid.
diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt
index 9ed0108..14f1b64 100644
--- a/test-mock/api/test-current.txt
+++ b/test-mock/api/test-current.txt
@@ -3,6 +3,7 @@
 
   public class MockContext extends android.content.Context {
     method public int getDisplayId();
+    method public void updateDisplay(int);
   }
 
   @Deprecated public class MockPackageManager extends android.content.pm.PackageManager {
diff --git a/tests/Input/AndroidTest.xml b/tests/Input/AndroidTest.xml
index c62db1ea..f602c512 100644
--- a/tests/Input/AndroidTest.xml
+++ b/tests/Input/AndroidTest.xml
@@ -4,6 +4,7 @@
  -->
 <configuration description="Runs Input Tests">
     <option name="test-tag" value="InputTests" />
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer" />
     <target_preparer class="com.android.tradefed.targetprep.DeviceSetup">
         <!-- keeps the screen on during tests -->
         <option name="screen-always-on" value="on" />
@@ -22,4 +23,9 @@
         <option name="test-timeout" value="600s" />
         <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
     </test>
+    <object class="com.android.tradefed.testtype.suite.module.TestFailureModuleController"
+            type="module_controller">
+        <!-- Take screenshot upon test failure -->
+        <option name="screenshot-on-failure" value="true" />
+     </object>
 </configuration>
diff --git a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
index 6bcfebc..3ab8d37 100644
--- a/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
+++ b/tests/StatusBar/src/com/android/statusbartest/StatusBarTest.java
@@ -176,19 +176,25 @@
         },
         new Test("Disable Alerts") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ALERTS);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setNotificationPeekingDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable Ticker") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_TICKER);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setNotificationTickerDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable Expand in 3 sec.") {
             public void run() {
                 mHandler.postDelayed(new Runnable() {
                         public void run() {
-                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);
+                            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                            info.setStatusBarExpansionDisabled(true);
+                            mStatusBarManager.requestDisabledComponent(info, "test");
                         }
                     }, 3000);
             }
@@ -197,7 +203,9 @@
             public void run() {
                 mHandler.postDelayed(new Runnable() {
                         public void run() {
-                            mStatusBarManager.disable(StatusBarManager.DISABLE_NOTIFICATION_ICONS);
+                            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                            info.setNotificationIconsDisabled(true);
+                            mStatusBarManager.requestDisabledComponent(info, "test");
                         }
                     }, 3000);
             }
@@ -206,56 +214,73 @@
             public void run() {
                 mHandler.postDelayed(new Runnable() {
                         public void run() {
-                            mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND
-                                    | StatusBarManager.DISABLE_NOTIFICATION_ICONS);
+                            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                            info.setStatusBarExpansionDisabled(true);
+                            info.setNotificationIconsDisabled(true);
+                            mStatusBarManager.requestDisabledComponent(info, "test");
                         }
                     }, 3000);
             }
         },
         new Test("Disable Home (StatusBarManager)") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_HOME);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setNavigationHomeDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable Back (StatusBarManager)") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_BACK);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setBackDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable Recent (StatusBarManager)") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setRecentsDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable Clock") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setClockDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable System Info") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_SYSTEM_INFO);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                info.setSystemIconsDisabled(true);
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Disable everything in 3 sec") {
             public void run() {
                 mHandler.postDelayed(new Runnable() {
                         public void run() {
-                            mStatusBarManager.disable(~StatusBarManager.DISABLE_NONE);
+                            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                            info.setDisableAll();
+                            mStatusBarManager.requestDisabledComponent(info, "test");
                         }
                     }, 3000);
             }
         },
         new Test("Enable everything") {
             public void run() {
-                mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
+                StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                mStatusBarManager.requestDisabledComponent(info, "test");
             }
         },
         new Test("Enable everything in 3 sec.") {
             public void run() {
                 mHandler.postDelayed(new Runnable() {
                         public void run() {
-                            mStatusBarManager.disable(0);
+                            StatusBarManager.DisableInfo info = new StatusBarManager.DisableInfo();
+                            info.setEnableAll();
+                            mStatusBarManager.requestDisabledComponent(info, "test");
                         }
                     }, 3000);
             }
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
index 14230fe..0fb4f90 100644
--- a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/EmbeddedWindowService.java
@@ -42,6 +42,7 @@
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 import android.widget.TextView;
+import android.window.InputTransferToken;
 
 public class EmbeddedWindowService extends Service {
     private static final String TAG = "EmbeddedWindowService";
@@ -118,7 +119,7 @@
 
         @Override
         public void attachEmbeddedSurfaceControl(SurfaceControl parentSc, int displayId,
-                IBinder hostToken) {
+                InputTransferToken inputTransferToken) {
             mHandler.post(() -> {
                 Paint paint = new Paint();
                 paint.setTextSize(40);
@@ -134,7 +135,7 @@
                 c.drawText("Remote", 250, 250, paint);
                 surface.unlockCanvasAndPost(c);
                 WindowManager wm = getSystemService(WindowManager.class);
-                wm.registerBatchedSurfaceControlInputReceiver(displayId, hostToken,
+                wm.registerBatchedSurfaceControlInputReceiver(displayId, inputTransferToken,
                         mSurfaceControl,
                         Choreographer.getInstance(), event -> {
                             Log.d(TAG, "onInputEvent-remote " + event);
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl
index 6b65b40e..e81f5f8 100644
--- a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/IAttachEmbeddedWindow.aidl
@@ -20,10 +20,12 @@
 import com.android.test.viewembed.IAttachEmbeddedWindowCallback;
 import android.view.WindowManager.LayoutParams;
 import android.view.SurfaceControl;
+import android.window.InputTransferToken;
 
 interface IAttachEmbeddedWindow {
     void attachEmbedded(IBinder hostToken, int width, int height, in IAttachEmbeddedWindowCallback callback);
     void relayout(in LayoutParams lp);
-    oneway void attachEmbeddedSurfaceControl(in SurfaceControl parentSurfaceControl, int displayId, IBinder hostToken);
+    oneway void attachEmbeddedSurfaceControl(in SurfaceControl parentSurfaceControl, int displayId,
+            in InputTransferToken inputTransferToken);
     oneway void tearDownEmbeddedSurfaceControl();
 }
\ No newline at end of file
diff --git a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
index 7330ec1..e700bc2 100644
--- a/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
+++ b/tests/SurfaceControlViewHostTest/src/com/android/test/viewembed/SurfaceInputTestActivity.java
@@ -139,7 +139,7 @@
         surface.unlockCanvasAndPost(c);
         WindowManager wm = getSystemService(WindowManager.class);
         wm.registerBatchedSurfaceControlInputReceiver(getDisplayId(),
-                attachedSurfaceControl.getHostToken(), mLocalSurfaceControl,
+                attachedSurfaceControl.getInputTransferToken(), mLocalSurfaceControl,
                 Choreographer.getInstance(), event -> {
                     Log.d(TAG, "onInputEvent-sc " + event);
                     return false;
@@ -160,7 +160,8 @@
 
             WindowManager wm = getSystemService(WindowManager.class);
             wm.registerBatchedSurfaceControlInputReceiver(getDisplayId(),
-                    mLocalSurfaceView.getHostToken(), mLocalSurfaceView.getSurfaceControl(),
+                    mLocalSurfaceView.getRootSurfaceControl().getInputTransferToken(),
+                    mLocalSurfaceView.getSurfaceControl(),
                     Choreographer.getInstance(), event -> {
                         Log.d(TAG, "onInputEvent-local " + event);
                         return false;
@@ -210,7 +211,8 @@
         }
         try {
             mIAttachEmbeddedWindow.attachEmbeddedSurfaceControl(mParentSurfaceControl,
-                    getDisplayId(), mRemoteSurfaceView.getHostToken());
+                    getDisplayId(),
+                    mRemoteSurfaceView.getRootSurfaceControl().getInputTransferToken());
         } catch (RemoteException e) {
             Log.e(TAG, "Failed to load embedded SurfaceControl", e);
         }
diff --git a/tests/UsbManagerTests/Android.bp b/tests/UsbManagerTests/Android.bp
index 70c7dad..a16a7ea 100644
--- a/tests/UsbManagerTests/Android.bp
+++ b/tests/UsbManagerTests/Android.bp
@@ -33,6 +33,8 @@
         "platform-test-annotations",
         "truth",
         "UsbManagerTestLib",
+        "flag-junit",
+        "TestParameterInjector",
     ],
     jni_libs: [
         // Required for ExtendedMockito
diff --git a/tests/UsbManagerTests/src/android/hardware/usb/UsbPortStatusTest.java b/tests/UsbManagerTests/src/android/hardware/usb/UsbPortStatusTest.java
new file mode 100644
index 0000000..64d761d
--- /dev/null
+++ b/tests/UsbManagerTests/src/android/hardware/usb/UsbPortStatusTest.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.usb;
+
+import static android.hardware.usb.UsbPortStatus.CONTAMINANT_DETECTION_NOT_SUPPORTED;
+import static android.hardware.usb.UsbPortStatus.CONTAMINANT_PROTECTION_NONE;
+import static android.hardware.usb.UsbPortStatus.DATA_ROLE_DEVICE;
+import static android.hardware.usb.UsbPortStatus.DATA_ROLE_HOST;
+import static android.hardware.usb.UsbPortStatus.DATA_ROLE_NONE;
+import static android.hardware.usb.UsbPortStatus.MODE_NONE;
+import static android.hardware.usb.UsbPortStatus.POWER_ROLE_NONE;
+import static android.hardware.usb.UsbPortStatus.POWER_ROLE_SINK;
+import static android.hardware.usb.UsbPortStatus.POWER_ROLE_SOURCE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.hardware.usb.flags.Flags;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+
+import com.google.testing.junit.testparameterinjector.TestParameter;
+import com.google.testing.junit.testparameterinjector.TestParameterInjector;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Tests for {@link android.hardware.usb.UsbPortStatus} */
+@RunWith(TestParameterInjector.class)
+public class UsbPortStatusTest {
+
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_IS_PD_COMPLIANT_API)
+    public void testIsPdCompliant(
+            @TestParameter boolean isSinkDeviceRoleSupported,
+            @TestParameter boolean isSinkHostRoleSupported,
+            @TestParameter boolean isSourceDeviceRoleSupported,
+            @TestParameter boolean isSourceHostRoleSupported) {
+        int supportedRoleCombinations = getSupportedRoleCombinations(
+                isSinkDeviceRoleSupported,
+                isSinkHostRoleSupported,
+                isSourceDeviceRoleSupported,
+                isSourceHostRoleSupported);
+        UsbPortStatus usbPortStatus = new UsbPortStatus(
+                MODE_NONE,
+                POWER_ROLE_NONE,
+                DATA_ROLE_NONE,
+                supportedRoleCombinations,
+                CONTAMINANT_PROTECTION_NONE,
+                CONTAMINANT_DETECTION_NOT_SUPPORTED);
+        boolean expectedResult = isSinkDeviceRoleSupported
+                && isSinkHostRoleSupported
+                && isSourceDeviceRoleSupported
+                && isSourceHostRoleSupported;
+
+        assertThat(usbPortStatus.isPdCompliant()).isEqualTo(expectedResult);
+    }
+
+    private int getSupportedRoleCombinations(
+            boolean isSinkDeviceRoleSupported,
+            boolean isSinkHostRoleSupported,
+            boolean isSourceDeviceRoleSupported,
+            boolean isSourceHostRoleSupported) {
+        int result = UsbPort.combineRolesAsBit(POWER_ROLE_NONE, DATA_ROLE_NONE);
+
+        if (isSinkDeviceRoleSupported) {
+            result |= UsbPort.combineRolesAsBit(POWER_ROLE_SINK, DATA_ROLE_DEVICE);
+        }
+        if (isSinkHostRoleSupported) {
+            result |= UsbPort.combineRolesAsBit(POWER_ROLE_SINK, DATA_ROLE_HOST);
+        }
+        if (isSourceDeviceRoleSupported) {
+            result |= UsbPort.combineRolesAsBit(POWER_ROLE_SOURCE, DATA_ROLE_DEVICE);
+        }
+        if (isSourceHostRoleSupported) {
+            result |= UsbPort.combineRolesAsBit(POWER_ROLE_SOURCE, DATA_ROLE_HOST);
+        }
+
+        return result;
+    }
+}
diff --git a/tests/UsbManagerTests/src/android/hardware/usb/UsbPortTest.java b/tests/UsbManagerTests/src/android/hardware/usb/UsbPortTest.java
new file mode 100644
index 0000000..afd1419
--- /dev/null
+++ b/tests/UsbManagerTests/src/android/hardware/usb/UsbPortTest.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2024 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 android.hardware.usb;
+
+import static android.hardware.usb.UsbPortStatus.CONTAMINANT_PROTECTION_NONE;
+import static android.hardware.usb.UsbPortStatus.MODE_NONE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.hardware.usb.flags.Flags;
+import android.os.RemoteException;
+import android.platform.test.annotations.RequiresFlagsEnabled;
+import android.platform.test.flag.junit.CheckFlagsRule;
+import android.platform.test.flag.junit.DeviceFlagsValueProvider;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.google.testing.junit.testparameterinjector.TestParameter;
+import com.google.testing.junit.testparameterinjector.TestParameterInjector;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/** Tests for {@link android.hardware.usb.UsbPortStatus} */
+@RunWith(TestParameterInjector.class)
+public class UsbPortTest {
+
+    private IUsbManager mMockUsbService;
+
+    @Rule
+    public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
+
+    private UsbManager mUsbManager;
+
+    @Before
+    public void setUp() throws Exception {
+        mMockUsbService = mock(IUsbManager.class);
+        mUsbManager = new UsbManager(InstrumentationRegistry.getContext(), mMockUsbService);
+    }
+
+    @Test
+    @RequiresFlagsEnabled(Flags.FLAG_ENABLE_IS_MODE_CHANGE_SUPPORTED_API)
+    public void testIsModeSupported(@TestParameter boolean isModeChangeSupported)
+            throws RemoteException {
+        String testPortId = "port-1";
+        when(mMockUsbService.isModeChangeSupported(testPortId)).thenReturn(isModeChangeSupported);
+        UsbPort usbPort = new UsbPort(
+                mUsbManager,
+                testPortId,
+                MODE_NONE,
+                CONTAMINANT_PROTECTION_NONE,
+                false /* supportsEnableContaminantPresenceProtection= */ ,
+                false /* supportsEnableContaminantPresenceDetection= */);
+
+        assertThat(usbPort.isModeChangeSupported()).isEqualTo(isModeChangeSupported);
+    }
+}
diff --git a/tools/hoststubgen/hoststubgen/Android.bp b/tools/hoststubgen/hoststubgen/Android.bp
index 57bcc04..30333da 100644
--- a/tools/hoststubgen/hoststubgen/Android.bp
+++ b/tools/hoststubgen/hoststubgen/Android.bp
@@ -54,6 +54,7 @@
 // This library is _not_ specific to Android APIs.
 java_library_host {
     name: "hoststubgen-helper-runtime",
+    defaults: ["ravenwood-internal-only-visibility-java"],
     srcs: [
         "helper-runtime-src/**/*.java",
     ],
@@ -64,11 +65,11 @@
         "guava",
     ],
     jarjar_rules: "jarjar-rules.txt",
-    visibility: ["//visibility:public"],
 }
 
 java_library {
     name: "hoststubgen-helper-runtime.ravenwood",
+    defaults: ["ravenwood-internal-only-visibility-java"],
     srcs: [
         "helper-runtime-src/**/*.java",
     ],
@@ -79,7 +80,6 @@
         "guava",
     ],
     jarjar_rules: "jarjar-rules.txt",
-    visibility: ["//visibility:public"],
 }
 
 // Host-side stub generator tool.
@@ -152,35 +152,3 @@
         "hoststubgen_dump.txt",
     ],
 }
-
-java_library_host {
-    name: "hoststubgen-helper-libcore-runtime",
-    srcs: [
-        "helper-framework-runtime-src/libcore-fake/**/*.java",
-    ],
-    visibility: ["//visibility:private"],
-}
-
-java_host_for_device {
-    name: "hoststubgen-helper-libcore-runtime.ravenwood",
-    libs: [
-        "hoststubgen-helper-libcore-runtime",
-    ],
-    visibility: ["//visibility:private"],
-}
-
-java_library {
-    name: "hoststubgen-helper-framework-runtime.ravenwood",
-    defaults: ["ravenwood-internal-only-visibility-java"],
-    srcs: [
-        "helper-framework-runtime-src/framework/**/*.java",
-    ],
-    libs: [
-        "hoststubgen-helper-runtime.ravenwood",
-        "framework-minus-apex.ravenwood",
-    ],
-    static_libs: [
-        "core-xml-for-device",
-        "hoststubgen-helper-libcore-runtime.ravenwood",
-    ],
-}
diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
index 06eeb47c..1089f82 100644
--- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
+++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGen.kt
@@ -382,7 +382,7 @@
                     stubOutStream.putNextEntry(newEntry)
                     convertClass(classInternalName, /*forImpl=*/false, bis,
                             stubOutStream, filter, packageRedirector, enableChecker, classes,
-                            errors, stats)
+                            errors, null)
                     stubOutStream.closeEntry()
                 }
             }
@@ -415,7 +415,7 @@
             enableChecker: Boolean,
             classes: ClassNodes,
             errors: HostStubGenErrors,
-            stats: HostStubGenStats,
+            stats: HostStubGenStats?,
             ) {
         val cr = ClassReader(input)
 
diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenStats.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenStats.kt
index fe4072f..50518e1 100644
--- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenStats.kt
+++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/HostStubGenStats.kt
@@ -17,6 +17,7 @@
 
 import com.android.hoststubgen.asm.toHumanReadableClassName
 import com.android.hoststubgen.filters.FilterPolicyWithReason
+import org.objectweb.asm.Opcodes
 import java.io.PrintWriter
 
 open class HostStubGenStats {
@@ -28,12 +29,26 @@
 
     private val stats = mutableMapOf<String, Stats>()
 
-    fun onVisitPolicyForMethod(fullClassName: String, policy: FilterPolicyWithReason) {
+    fun onVisitPolicyForMethod(fullClassName: String, methodName: String, descriptor: String,
+                               policy: FilterPolicyWithReason, access: Int) {
+        // Ignore methods that aren't public
+        if ((access and Opcodes.ACC_PUBLIC) == 0) return
+        // Ignore methods that are abstract
+        if ((access and Opcodes.ACC_ABSTRACT) != 0) return
+        // Ignore methods where policy isn't relevant
         if (policy.isIgnoredForStats) return
 
         val packageName = resolvePackageName(fullClassName)
         val className = resolveClassName(fullClassName)
 
+        // Ignore methods for certain generated code
+        if (className.endsWith("Proto")
+                or className.endsWith("ProtoEnums")
+                or className.endsWith("LogTags")
+                or className.endsWith("StatsLog")) {
+            return
+        }
+
         val packageStats = stats.getOrPut(packageName) { Stats() }
         val classStats = packageStats.children.getOrPut(className) { Stats() }
 
diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt
index 53eb5a8..eb03f66 100644
--- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt
+++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/filters/FilterPolicyWithReason.kt
@@ -72,6 +72,6 @@
                     || reason.contains("is-enum")
                     || reason.contains("is-synthetic-method")
                     || reason.contains("special-class")
-                    || reason.contains("substitute-from")
+                    || reason.contains("substitute-to")
         }
 }
diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt
index c20aa8b..45e140c 100644
--- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt
+++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/BaseAdapter.kt
@@ -51,7 +51,7 @@
      */
     data class Options (
             val errors: HostStubGenErrors,
-            val stats: HostStubGenStats,
+            val stats: HostStubGenStats?,
             val enablePreTrace: Boolean,
             val enablePostTrace: Boolean,
             val enableNonStubMethodCallDetection: Boolean,
@@ -178,6 +178,7 @@
         }
         val p = filter.getPolicyForMethod(currentClassName, name, descriptor)
         log.d("visitMethod: %s%s [%x] [%s] Policy: %s", name, descriptor, access, signature, p)
+        options.stats?.onVisitPolicyForMethod(currentClassName, name, descriptor, p, access)
 
         log.withIndent {
             // If it's a substitute-from method, then skip (== remove).
diff --git a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt
index beca945..416b782 100644
--- a/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt
+++ b/tools/hoststubgen/hoststubgen/src/com/android/hoststubgen/visitors/ImplGeneratingAdapter.kt
@@ -141,11 +141,6 @@
             substituted: Boolean,
             superVisitor: MethodVisitor?,
     ): MethodVisitor? {
-        // Record statistics about visiting this method when visible.
-        if ((access and Opcodes.ACC_PRIVATE) == 0) {
-            options.stats.onVisitPolicyForMethod(currentClassName, policy)
-        }
-
         // Inject method log, if needed.
         var innerVisitor = superVisitor
 
diff --git a/tools/hoststubgen/scripts/run-all-tests.sh b/tools/hoststubgen/scripts/run-all-tests.sh
deleted file mode 100755
index a6847ae..0000000
--- a/tools/hoststubgen/scripts/run-all-tests.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-# Copyright (C) 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.
-
-source "${0%/*}"/../common.sh
-
-# Move to the top directory of hoststubgen
-cd ..
-
-ATEST_ARGS="--host"
-
-# These tests are known to pass.
-READY_TEST_MODULES=(
-  hoststubgen-test-tiny-test
-  CtsUtilTestCasesRavenwood
-  CtsOsTestCasesRavenwood # This one uses native sustitution, so let's run it too.
-)
-
-MUST_BUILD_MODULES=(
-    "${NOT_READY_TEST_MODULES[*]}"
-)
-
-# First, build all the test / etc modules. This shouldn't fail.
-run m "${MUST_BUILD_MODULES[@]}"
-
-# Run the hoststubgen unittests / etc
-run atest $ATEST_ARGS hoststubgentest hoststubgen-invoke-test
-
-# Next, run the golden check. This should always pass too.
-# The following scripts _should_ pass too, but they depend on the internal paths to soong generated
-# files, and they may fail when something changes in the build system.
-run ./hoststubgen/test-tiny-framework/diff-and-update-golden.sh
-
-run ./hoststubgen/test-tiny-framework/run-test-manually.sh
-run atest $ATEST_ARGS tiny-framework-dump-test
-
-# This script is already broken on goog/master
-# run ./scripts/build-framework-hostside-jars-without-genrules.sh
-
-# These tests should all pass.
-run atest $ATEST_ARGS ${READY_TEST_MODULES[*]}
-
-echo ""${0##*/}" finished, with no failures. Ready to submit!"
diff --git a/tools/protologtool/OWNERS b/tools/protologtool/OWNERS
new file mode 100644
index 0000000..18cf2be
--- /dev/null
+++ b/tools/protologtool/OWNERS
@@ -0,0 +1,3 @@
+# ProtoLog owners
+# Bug component: 1157642
+include platform/development:/tools/winscope/OWNERS
diff --git a/tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt b/tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt
index 3c55237..ce856cd 100644
--- a/tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt
+++ b/tools/protologtool/src/com/android/protolog/tool/ProtoLogTool.kt
@@ -25,6 +25,7 @@
 import java.io.FileInputStream
 import java.io.FileOutputStream
 import java.io.OutputStream
+import java.time.LocalDateTime
 import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
 import java.util.jar.JarOutputStream
@@ -42,6 +43,13 @@
         return source.contains(protoLogSimpleClassName)
     }
 
+    private fun zipEntry(path: String): ZipEntry {
+        val entry = ZipEntry(path)
+        // Use a constant time to improve the cachability of build actions.
+        entry.timeLocal = LocalDateTime.of(2008, 1, 1, 0, 0, 0)
+        return entry
+    }
+
     private fun processClasses(command: CommandOptions) {
         val groups = injector.readLogGroups(
                 command.protoLogGroupsJarArg,
@@ -77,7 +85,7 @@
                 }
             }.map { future ->
                 val (path, outSrc) = future.get()
-                outJar.putNextEntry(ZipEntry(path))
+                outJar.putNextEntry(zipEntry(path))
                 outJar.write(outSrc.toByteArray())
                 outJar.closeEntry()
             }
@@ -90,7 +98,7 @@
         val cachePackage = cacheSplit.dropLast(1).joinToString(".")
         val cachePath = "gen/${cacheSplit.joinToString("/")}.java"
 
-        outJar.putNextEntry(ZipEntry(cachePath))
+        outJar.putNextEntry(zipEntry(cachePath))
         outJar.write(generateLogGroupCache(cachePackage, cacheName, groups,
                 command.protoLogImplClassNameArg, command.protoLogGroupsClassNameArg).toByteArray())
 
diff --git a/wifi/TEST_MAPPING b/wifi/TEST_MAPPING
index 14f5af3..757ecaa 100644
--- a/wifi/TEST_MAPPING
+++ b/wifi/TEST_MAPPING
@@ -4,14 +4,14 @@
       "name": "FrameworksWifiNonUpdatableApiTests"
     }
   ],
+  "postsubmit": [
+    {
+      "name": "CtsWifiNonUpdatableTestCases"
+    }
+  ],
   "presubmit-large": [
     {
-      "name": "CtsWifiTestCases",
-      "options": [
-        {
-          "exclude-annotation": "android.net.wifi.cts.VirtualDeviceNotSupported"
-        }
-      ]
+      "name": "CtsWifiTestCases"
     }
   ]
 }
diff --git a/wifi/java/src/android/net/wifi/WifiKeystore.java b/wifi/java/src/android/net/wifi/WifiKeystore.java
index ca86dde..1cda032 100644
--- a/wifi/java/src/android/net/wifi/WifiKeystore.java
+++ b/wifi/java/src/android/net/wifi/WifiKeystore.java
@@ -16,6 +16,7 @@
 package android.net.wifi;
 
 import android.annotation.NonNull;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.os.Process;
 import android.os.ServiceManager;
@@ -24,9 +25,11 @@
 import android.util.Log;
 
 /**
- * @hide This class allows wifi framework to store and access wifi certificate blobs.
+ * This class allows the storage and retrieval of non-standard Wifi certificate blobs.
+ * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+@SystemApi
+@SuppressLint("UnflaggedApi") // Promoting from @SystemApi(MODULE_LIBRARIES)
 public final class WifiKeystore {
     private static final String TAG = "WifiKeystore";
     private static final String LEGACY_KEYSTORE_SERVICE_NAME = "android.security.legacykeystore";
@@ -48,7 +51,8 @@
      * @return true if the blob was successfully added. False otherwise.
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi
+    @SuppressLint("UnflaggedApi")
     public static boolean put(@NonNull String alias, @NonNull byte[] blob) {
         try {
             Log.i(TAG, "put blob. alias " + alias);
@@ -68,7 +72,8 @@
      *         Returns null if no blob was found.
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi
+    @SuppressLint("UnflaggedApi")
     public static @NonNull byte[] get(@NonNull String alias) {
         try {
             Log.i(TAG, "get blob. alias " + alias);
@@ -89,7 +94,8 @@
      * @return True if a blob was removed. False if no such blob was found.
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi
+    @SuppressLint("UnflaggedApi")
     public static boolean remove(@NonNull String alias) {
         try {
             getService().remove(alias, Process.WIFI_UID);
@@ -110,7 +116,8 @@
      *         The return value may be empty but never null.
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    @SystemApi
+    @SuppressLint("UnflaggedApi")
     public static @NonNull String[] list(@NonNull String prefix) {
         try {
             final String[] aliases = getService().list(prefix, Process.WIFI_UID);
@@ -123,4 +130,4 @@
         }
         return new String[0];
     }
-}
\ No newline at end of file
+}